Добрый день, %habrauser%
Пару дней назад ко мне обратился руководитель тех отдела интернет магазина. Как у всех больших инет магазинов, у них есть свой Колл-центр, построенный на базе Elastix. Перед ним стояла задача сделать на Elastixе возможность оценки оператора.
Требуется дописать дополнительный модуль для Астериска (elastix):
Для работы горячей линии необходимо голосовое меню со сбором статистики.
Вопрос: «Помогли ли вам специалисты Горячей линии?»
Варианты ответа: Нет — кнопка «0» и Да — кнопка «1»
Все шло к тому, чтобы после разговора с оператором клиент попадал в IVR где смог бы проголосовать, но меня потянуло дальше и я решил эту задачу так:
1) Приготовление mysql ДБ:
По умолчанию asterisk ведет запись CDR в базу asteriskcdrdb, для нашей дополнительной статистике добавим туда новую таблицу.
2) Готовим Макро
В /etc/asterisk/extensions_custom.conf добавим:
Юзер и пароль к базе asteriskcdrdb обычно есть в файле /etc/asterisk/cdr_mysql.conf
3) Добавим Feature Application
В features_applicationmap_custom.conf добавляем нужные нам цифры и привязываем к выполнения макро
для того чтобы feature application сработал надо еще добавить его в глобальную переменную в диалпалне.
в /etc/asterisk/extensions_override_freepbx.conf добавим
apprecord обычно уже используется в Freepbx его тоже оставим.
В момент разговора с оператором у клиента есть возможность оценить его нажатием 0 или 1
Лог успешной оценки:
смотрим что в базе
Можно ИВР для оценки прикрутить и после того как оператор повесил трубку:
Настройки очереди нужно делать в ВЕБ интерфейсе, если версия FreePbx разрешает в Members указать LOCAL/999@opinion-ivr/n то первый пункт можно пропустить, если нет то Members добавлять в вебе не надо, их добавим в queues_post_custom.conf
В extensions_custom.conf
Всем позитивных оценок!!!
Пару дней назад ко мне обратился руководитель тех отдела интернет магазина. Как у всех больших инет магазинов, у них есть свой Колл-центр, построенный на базе Elastix. Перед ним стояла задача сделать на Elastixе возможность оценки оператора.
Задача:
Требуется дописать дополнительный модуль для Астериска (elastix):
Для работы горячей линии необходимо голосовое меню со сбором статистики.
Вопрос: «Помогли ли вам специалисты Горячей линии?»
Варианты ответа: Нет — кнопка «0» и Да — кнопка «1»
Решение
Все шло к тому, чтобы после разговора с оператором клиент попадал в IVR где смог бы проголосовать, но меня потянуло дальше и я решил эту задачу так:
1) Приготовление mysql ДБ:
По умолчанию asterisk ведет запись CDR в базу asteriskcdrdb, для нашей дополнительной статистике добавим туда новую таблицу.
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 ;
2) Готовим Макро
В /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})
Юзер и пароль к базе asteriskcdrdb обычно есть в файле /etc/asterisk/cdr_mysql.conf
3) Добавим Feature Application
В features_applicationmap_custom.conf добавляем нужные нам цифры и привязываем к выполнения макро
press1 => 1,peer/caller,Macro,press-1 press0 => 0,peer/caller,Macro,press-0
для того чтобы feature application сработал надо еще добавить его в глобальную переменную в диалпалне.
в /etc/asterisk/extensions_override_freepbx.conf добавим
[globals] DYNAMIC_FEATURES = apprecord#press0#press1
apprecord обычно уже используется в Freepbx его тоже оставим.
Результат
В момент разговора с оператором у клиента есть возможность оценить его нажатием 0 или 1
Лог успешной оценки:
-- 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
смотрим что в базе
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)
UPDATE:
Можно ИВР для оценки прикрутить и после того как оператор повесил трубку:
Настройки очереди нужно делать в ВЕБ интерфейсе, если версия FreePbx разрешает в Members указать LOCAL/999@opinion-ivr/n то первый пункт можно пропустить, если нет то Members добавлять в вебе не надо, их добавим в queues_post_custom.conf
member=Local/299@opinion-ivr/n member=Local/999@opinion-ivr/n
В 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})
Всем позитивных оценок!!!
