FREEPBX. SURVEY. IVR. REPORT
Задача: написать модуль для freepbx который бы переводил пользователя на ivr оценки качества или просто опрос звонящего
Система обслуживания это несколько вопросов на которые пользователи должны дать ответ нажатием кнопки от 1 до 5.
Ответы должны сохраняться в базу данных с дополнительной информацией о том, какая система опрашивала, какие ответы даны, кто отвечал, запись разговора.
Статья с примером реализации. Кстати отлично показывает как работают некоторые механизмы в freepbx.
итого для создания системы опроса в freepbx можно обойтись вообще без всего и даже отчеты получать в более-менее хорошем виде
1. add content to extensions_custom.conf
;-------Survey logic------------------------------
[macro-survey]
exten => _.,1,answer()
exten => _.,n,Read(answer1,/var/lib/asterisk/sounds/en/custom/${EXTEN}-1,1,,1,2)
exten => _.,n,Read(answer2,/var/lib/asterisk/sounds/en/custom/${EXTEN}-2,1,,1,2)
exten => _.,n,Read(answer3,/var/lib/asterisk/sounds/en/custom/${EXTEN}-3,1,,1,2)
exten => _.,n,Read(answer4,/var/lib/asterisk/sounds/en/custom/${EXTEN}-4,1,,1,2)
exten => _.,n,Read(answer5,/var/lib/asterisk/sounds/en/custom/${EXTEN}-5,1,,1,2)
exten => _.,n,Read(answer6,/var/lib/asterisk/sounds/en/custom/${EXTEN}-6,1,,1,2)
exten => _.,n,Read(answer7,/var/lib/asterisk/sounds/en/custom/${EXTEN}-7,1,,1,2)
exten => _.,n,Read(answer8,/var/lib/asterisk/sounds/en/custom/${EXTEN}-8,1,,1,2)
exten => _.,n,Read(answer9,/var/lib/asterisk/sounds/en/custom/${EXTEN}-9,1,,1,2)
exten => _.,n(finish),set(answer=${answer1}|${answer2}|${answer3}|${answer4}|${answer5}|${answer6}|${answer7}|${answer8}|${answer9})
exten => _.,n,Set(CDR(userfield)=${answer})
exten => _.,n,noop(EXTEN - ${EXTEN})
exten => _.,n,noop(DIDFROM - ${FROM_DID})
exten => _.,n,noop(DEXTEN - ${DEXTEN})
exten => _.,n,noop(TIMESTP - ${TIMESTR})
exten => _.,n,noop(CALLERID - ${CALLERID(num)})
exten => _.,n,noop(RECORDS - ${UNIQUEID})
exten => _.,n,noop(EXTFROM - ${EXTTOCALL})
exten => _.,n,noop(ANSWER1 - ${answer1})
exten => _.,n,noop(ANSWER2 - ${answer2})
exten => _.,n,MYSQL(Connect connid 127.0.0.1 surveyuser 123123 asterisk)
exten => _.,n,MYSQL(Query resultid ${connid} INSERT INTO surveys_report (surveynum,did,surveyname,agent,queue,start_date,calleridorig,callid,answer1,answer2) values ('${EXTEN}','${FROM_DID}',' ','${DEXTEN}',' ','${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}','${CALLERID(num)}','${UNIQUEID}','${answer1}','${answer2}'))
exten => _.,n,playback(/var/lib/asterisk/sounds/en/custom/${EXTEN}-thankyou)
;-------------------------------------
2. Prepare Recordings as at image 1
3. create Custom Destination as at image 2
4. create Ring Group as at image 3
5. all is ready for surveys, results and records will be stored at CDRs pages. for saving results in new table at mysql you should add new table in asterisk database;
6. SQL statement for create new table, also you should know user and password for database;
CREATE TABLE `surveys_report` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`surveynum` varchar(12) DEFAULT NULL,
`surveyname` varchar(255) NOT NULL,
`agent` varchar(64) DEFAULT NULL,
`queue` varchar(64) DEFAULT NULL,
`start_date` varchar(128) DEFAULT NULL,
`calleridorig` varchar(64) DEFAULT NULL,
`callid` varchar(128) DEFAULT NULL,
`answer1` varchar(64) DEFAULT NULL,
`answer2` varchar(64) DEFAULT NULL,
`did` varchar(64) DEFAULT NULL,
PRIMARY KEY (`id`)
)
CREATE USER 'surveyuser'@'localhost' IDENTIFIED BY '123123';
grand all on asterisk.* to 'surveyuser'@'localhost' IDENTIFIED BY '123123';
| Posted in Asterisk | No Comments »