2016-12-09 15 views
0

Я использую asterisk IVR, чтобы кто-то звонил, чтобы выбрать A или B или C (я уже делал это с googletts), единственное, что я блокирую, - записать выбор в базе данных MySQL. Как это сделатьВыбор записи в Asterisk IVR в MySQL

ответ

0

Первое, что нужно понять, - это интерфейс Asterisk Gateway Interface (AGI). AGI в основном реализует двухсторонний текстовый канал для связи между скриптами. Затем вы можете реализовать то, что должно произойти, на основе передачи этого текстового канала. Сценарий может получить выбранный номер на основе Asterisk, определяющего значения DTMF, и он может ответить на соответствующий ответ

Вы не указали язык, в котором вы работаете, поэтому первое, что нужно сделать, это ознакомиться с вашими библиотеками. Оттуда вы просто записываете выделение и переходите к следующим шагам. В зависимости от вашего языка вы можете передать это отдельному потоку и запустить его в фоновом режиме.

Во всяком случае, в противном случае просто напишите код, как было бы на выбранном вами языке, и используйте библиотеки AGI для ввода и предоставления вывода на сервер Asterisk.

0

Нет необходимости использовать AGI (который порождает дополнительный процесс) для этой простой задачи.

После выбора ivr, просто запишите его, используя func_odbc, в таблицу, которую вы хотите, вот и все.

[ivr] 
exten => s,1,Background(press-1-or-2-or-3) 
same => n,Wait(20); 

exten =>1,1,Set(ODBC_save_record(${CDR(uniqueid)},${CALLERID(num)})=1); 
same =>n,Dial(SIP/101,,or); 

exten =>2,1,Set(ODBC_save_record(${CDR(uniqueid)},${CALLERID(num)})=2); 
same =>n,Dial(SIP/102,,or); 

exten =>3,1,Set(ODBC_save_record(${CDR(uniqueid)},${CALLERID(num)})=3); 
same =>n,Dial(SIP/103,,or); 

в func_odbc.conf

[save_record] 
dsn=mysql1 
writesql=insert into SAVE_TABLE_HERE (uniqueid,cid,result) values('${ARG1}','${ARG2}','${VAL1}'); 

Конечно, вы также должны изменить res_config_odbc.conf и /etc/odbc.ini acordinly

Нет необходимости поддерживать conenction, проверьте somethign. просто используйте эту функцию в диалплане.