Оценка работы операторов

Всё связанное со звёздочкой и FreePBX
Ответить
Аватара пользователя
deepblue
Site Admin
Сообщения: 50
Зарегистрирован: 2008-06-11 23:51:07

Оценка работы операторов

Сообщение deepblue »

Возникла задача после завершения разговора с оператором предлагать клиенту оценить работу оператора нажатием кнопок от 0 до 5.

Дано:
Два внутренних абонента на приём звонков с внутренними номерами 117 и 114.
В FreePBX(2.9.X) установлен модуль Queues и настроен на приём звонков упомянутыми абонентами.
Asterisk 1.8.X
Приём звонков работает нормально.
Операционная система Ubuntu 12.04 LTS

Решение:
Для решения данной задачи нам потребуется создать дополнительную таблицу opinion в базе Asterix asteriskcdrdb.

1. Таблицу создаём с следующими параметрами(предполагается что с этим у вас проблем не возникнет):

Код: Выделить всё

DROP TABLE IF EXISTS `opinion`;
CREATE TABLE IF NOT EXISTS `opinion` (
  `id` int(11) NOT NULL auto_increment,
  `date` datetime NOT NULL default '0000-00-00 00:00:00',
  `idasternumder` varchar(15) NOT NULL default '',
  `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/cdr_mysql.conf и узнаём оттуда значения user и password, в дальнейшем этими идентификаторами будут обозначаться места где вы должны ставить уже их значения.

3. Далее заходим в /etc/asterisk/queues_post_custom.conf и дописываем:

Код: Выделить всё

member=Local/117@opinion-ivr/n,0,117,hint:117@ext-local
member=Local/114@opinion-ivr/n,0,114,hint:114@ext-local
4. Открываем /etc/asterisk/extensions_custom.conf и добавляем:

Код: Выделить всё

[opinion-ivr]
exten => _X.,1,NoOp(Statrt IVR)
exten => _X.,n,DIAL(SIP/${EXTEN},,trg) ;опция g позволяет звонку пройти далее по диалплану
exten => _X.,n,GotoIf($[${DIALSTATUS}=BUSY]?ZANAT,1) ; пусть оно у нас срабатывает только если был ответ на вызов
exten => _X.,n,Goto(opinion,${EXTEN},1)

[opinion]
exten => _X.,1,Answer
exten => _X.,n,Wait(1)
exten => _X.,n(skip),Set(IVR_MSG=en/beep)
exten => _X.,n(start),Set(TIMEOUT(digit)=1)
exten => _X.,n,Background(custom/otsenite_rabotu_operatora,m)  ; otsenite_rabotu_operatora замените на свой заранее записаный файл, который уже должен быть загружен через System recordings в FreePBX 
exten => _X.,n,WaitExten(5,)

exten => 0,1,MYSQL(Connect connid localhost user password asteriskcdrdb)
exten => 0,n,MYSQL(Query resultid ${connid} INSERT INTO opinion (id,date,callerid,idasternumder,exten,queues,opinion) VALUES(NULL,"${STRFTIME(${EPOCH},,%Y-%m-%d-%H:%M:%S)}","${FROMEXTEN}","${UNIQUEID}","${DIALEDPEERNUMBER}","${NODEST}","0"))
exten => 0,n,MYSQL(Disconnect ${connid})
exten => 0,n,Playback(custom/Thanks,skip) ; Thanks - запись благодарности за звонок

exten => 1,1,MYSQL(Connect connid localhost user password asteriskcdrdb)
exten => 1,n,MYSQL(Query resultid ${connid} INSERT INTO opinion (id,date,callerid,idasternumder,exten,queues,opinion) VALUES(NULL,"${STRFTIME(${EPOCH},,%Y-%m-%d-%H:%M:%S)}","${FROMEXTEN}","${UNIQUEID}","${DIALEDPEERNUMBER}","${NODEST}","1"))
exten => 1,n,MYSQL(Disconnect ${connid})
exten => 1,n,Playback(custom/Thanks,skip) ; Thanks - запись благодарности за звонок

exten => 2,1,MYSQL(Connect connid localhost user password asteriskcdrdb)
exten => 2,n,MYSQL(Query resultid ${connid} INSERT INTO opinion (id,date,callerid,idasternumder,exten,queues,opinion) VALUES(NULL,"${STRFTIME(${EPOCH},,%Y-%m-%d-%H:%M:%S)}","${FROMEXTEN}","${UNIQUEID}","${DIALEDPEERNUMBER}","${NODEST}","2"))
exten => 2,n,MYSQL(Disconnect ${connid})
exten => 2,n,Playback(custom/Thanks,skip) ; Thanks - запись благодарности за звонок

exten => 3,1,MYSQL(Connect connid localhost user password asteriskcdrdb)
exten => 3,n,MYSQL(Query resultid ${connid} INSERT INTO opinion (id,date,callerid,idasternumder,exten,queues,opinion) VALUES(NULL,"${STRFTIME(${EPOCH},,%Y-%m-%d-%H:%M:%S)}","${FROMEXTEN}","${UNIQUEID}","${DIALEDPEERNUMBER}","${NODEST}","3"))
exten => 3,n,MYSQL(Disconnect ${connid})
exten => 3,n,Playback(custom/Thanks,skip) ; Thanks - запись благодарности за звонок

exten => 4,1,MYSQL(Connect connid localhost user password asteriskcdrdb)
exten => 4,n,MYSQL(Query resultid ${connid} INSERT INTO opinion (id,date,callerid,idasternumder,exten,queues,opinion) VALUES(NULL,"${STRFTIME(${EPOCH},,%Y-%m-%d-%H:%M:%S)}","${FROMEXTEN}","${UNIQUEID}","${DIALEDPEERNUMBER}","${NODEST}","4"))
exten => 4,n,MYSQL(Disconnect ${connid})
exten => 4,n,Playback(custom/Thanks,skip) ; Thanks - запись благодарности за звонок

exten => 5,1,MYSQL(Connect connid localhost user password asteriskcdrdb)
exten => 5,n,MYSQL(Query resultid ${connid} INSERT INTO opinion (id,date,callerid,idasternumder,exten,queues,opinion) VALUES(NULL,"${STRFTIME(${EPOCH},,%Y-%m-%d-%H:%M:%S)}","${FROMEXTEN}","${UNIQUEID}","${DIALEDPEERNUMBER}","${NODEST}","5"))
exten => 5,n,MYSQL(Disconnect ${connid})
exten => 5,n,Playback(custom/Thanks,skip) ; Thanks - запись благодарности за звонок

exten => t,1,Playback(custom/Thanks,skip) ; Thanks - запись благодарности за звонок
exten => e,1,Playback(custom/Thanks,skip) ; Thanks - запись благодарности за звонок
Хороших вам оценок!
Ответить