Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
ocenka_raboty_operatorov [2013/11/18 13:18]
ansealk создано
ocenka_raboty_operatorov [2013/11/18 13:33] (текущий)
Строка 1: Строка 1:
 +====== Оценка работы операторов ======
 +
 +===== Задача =====
 +Cделать на Elastixе возможность оценки оператора. Требуется дописать дополнительный модуль для Астериска (elastix):
 +
 +Для работы горячей линии необходимо голосовое меню со сбором статистики.
 +
 +Вопрос:​ «Помогли ли вам специалисты Горячей линии?​»
 +
 +Варианты ответа:​ Нет — кнопка «0» и Да — кнопка «1»
 +
 +===== Решение =====
 +
 +Все шло к тому, чтобы после разговора с оператором клиент попадал в IVR где смог бы проголосовать,​ но меня потянуло дальше и я решил эту задачу так: ​
 +
 +==== Приготовление mysql ДБ ====
 +По умолчанию asterisk ведет запись CDR в базу asteriskcdrdb,​ для нашей дополнительной статистике добавим туда новую таблицу. ​
 +<code sql>
 +DROP TABLE IF EXISTS `opinion`;
 +CREATE TABLE IF NOT EXISTS `opinion` (
 +  `id` int(11) NOT NULL auto_increment,​
 +  `callerid` varchar(15) NOT NULL default '',​
 +  `exten` varchar(15) NOT NULL default '',​
 +  `queues` varchar(7) NOT NULL,
 +  `opinion` char(1) NOT NULL,
 +  PRIMARY KEY  (`id`)
 +) ENGINE=InnoDB ​ DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
 +</​code>​
 +
 +==== Готовим Макро ====
 +В /​etc/​asterisk/​extensions_custom.conf добавим:​
 +<file lua /​etc/​asterisk/​extensions_custom.conf>​
 +[macro-press-1]
 +exten => s,​1,​MYSQL(Connect connid localhost ВАШ_ЮЗЕР ВАШ_ПАСС asteriskcdrdb)
 +exten => s,​n,​MYSQL(Query resultid ${connid} INSERT INTO opinion (`id`, `callerid`, `exten`, `queues`, `opinion`) VALUES (NULL, ${FROMEXTEN},​ ${CDR(dst)},​ ${CDR(src)},​ 1))
 +exten => s,​n,​MYSQL(Clear ${resultid})
 +exten => s,​n,​MYSQL(Disconnect ${connid})
 +
 +[macro-press-0]
 +exten => s,​1,​MYSQL(Connect connid localhost ВАШ_ЮЗЕР ВАШ_ПАСС asteriskcdrdb)
 +exten => s,​n,​MYSQL(Query resultid ${connid} INSERT INTO opinion (`id`, `callerid`, `exten`, `queues`, `opinion`) VALUES (NULL, ${FROMEXTEN},​ ${CDR(dst)},​ ${CDR(src)},​ 0))
 +exten => s,​n,​MYSQL(Clear ${resultid})
 +exten => s,​n,​MYSQL(Disconnect ${connid})
 +</​file>​
 +Юзер и пароль к базе asteriskcdrdb обычно есть в файле /​etc/​asterisk/​cdr_mysql.conf
 +
 +==== Добавим Feature Application ====
 +В features_applicationmap_custom.conf добавляем нужные нам цифры и привязываем к выполнения макро
 +<file lua features_applicationmap_custom.conf>​
 +press1 => 1,​peer/​caller,​Macro,​press-1
 +press0 => 0,​peer/​caller,​Macro,​press-0
 +</​file>​
 +для того чтобы feature application сработал надо еще добавить его в глобальную переменную в диалпалне.
 +в /​etc/​asterisk/​extensions_override_freepbx.conf добавим ​
 +<file ini /​etc/​asterisk/​extensions_override_freepbx.conf>​
 +[globals]
 +DYNAMIC_FEATURES = apprecord#​press0#​press1
 +</​file>​
 +apprecord обычно уже используется в Freepbx его тоже оставим.
 +
 +===== Результат =====
 +В момент разговора с оператором у клиента есть возможность оценить его нажатием 0 или 1 
 +
 +Лог успешной оценки:​
 +<code lua>
 +    --  Feature Found: press1 exten: press1
 +    -- Executing [s@macro-press-1:​1] MYSQL("​Local/​299@from-queue-56b8;​1",​ "​Connect connid localhost root 123 asteriskcdrdb"​) in new stack
 +    -- Executing [s@macro-press-1:​2] MYSQL("​Local/​299@from-queue-56b8;​1",​ "Query resultid 1 INSERT INTO opinion (`id`, `callerid`, `exten`, `queues`, `opinion`) VALUES (NULL, +74993462198,​ 299, 1234, 1)") in new stack
 +</​code>​
 +смотрим что в базе
 +<​code>​
 +mysql> SELECT * FROM opinion;
 ++----+-------------+-------+--------+---------+
 +| id | callerid ​   | exten | queues | opinion |
 ++----+-------------+-------+--------+---------+
 +|  8 | 74993462198 | 299   | 1234   | 1       ​| ​
 +|  9 | 74993462198 | 299   | 1234   | 1       ​| ​
 ++----+-------------+-------+--------+---------+
 +2 rows in set (0.00 sec)
 +
 +</​code>​
 +
 +Можно ИВР для оценки прикрутить и после того как оператор повесил трубку:​
 +
 +Настройки очереди нужно делать в ВЕБ интерфейсе,​ если версия FreePbx разрешает в Members указать LOCAL/​999@opinion-ivr/​n то первый пункт можно пропустить,​ если нет то Members добавлять в вебе не надо, их добавим в 
 +<file ini queues_post_custom.conf>​
 +
 +member=Local/​299@opinion-ivr/​n
 +member=Local/​999@opinion-ivr/​n
 +</​file>​
 +
 +<file ini extensions_custom.conf>​
 +[opinion-ivr]
 +exten => _.,​1,​NoOp(Statrt IVR)
 +exten => _.,​n,​DIAL(SIP/​${EXTEN},,​trg) ;опция g позволяет звонку пройти далее по диалплану ​
 +exten => _.,​n,​Goto(opinion,,​1)
 +
 +[opinion]
 +exten => _X.,​1,​NoOp(Statrt IVR)
 +exten => _X.,​n,​Background(Plese_press_0_or_1,​m) ​ ; заменить на свой голосовой файл ​
 +exten => _X.,​n,​Set(TIMEOUT(absolute)=2)
 +
 +exten => 0,​1,​MYSQL(Connect connid localhost root 123 asteriskcdrdb)
 +exten => 0,​n,​MYSQL(Query resultid ${connid} INSERT INTO opinion (`id`, `callerid`, `exten`, `queues`, `opinion`) VALUES (NULL, ${FROMEXTEN},​ ${DIALEDPEERNUMBER},​ ${NODEST}, 0))  ​
 +exten => 0,​n,​MYSQL(Disconnect ${connid})
 +
 +exten => 1,​1,​MYSQL(Connect connid localhost root 123 asteriskcdrdb)
 +exten => 1,​n,​MYSQL(Query resultid ${connid} INSERT INTO opinion (`id`, `callerid`, `exten`, `queues`, `opinion`) VALUES (NULL, ${FROMEXTEN},​ ${DIALEDPEERNUMBER},​ ${NODEST}, 1))  ​
 +exten => 1,​n,​MYSQL(Disconnect ${connid})
 +</​file>​
  
ocenka_raboty_operatorov.txt · Последние изменения: 2013/11/18 13:33 (внешнее изменение)
GNU Free Documentation License 1.3
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Яндекс.Метрика