Дано:
Два внутренних абонента на приём звонков с внутренними номерами 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 ;
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
Код: Выделить всё
[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 - запись благодарности за звонок