У меня настроена исходящая система IVR Asterisk, и я хотел бы, чтобы она разговаривала с моим стеком LAMP на другом сервере. Я настроил конец PHP для получения данных с сервера IVR и записи их в MySQL, но я не могу понять, как заставить конец Asterisk перейти на URL-адрес php, и я еще не понял, как введите переменную в сценарий IVR с сервера PHP.
В моей текущей настройке сценарий PHP аутентифицируется на сервере звездочки, а затем отправляет команду исходящего вызова. Затем исходящий вызов переходит к сценарию вызова, указанному в extension.conf. Мой первый вопрос: как отправить переменную через URL-адрес в extension.conf, например имя человека, которому я звоню? Нужно ли мне каждый раз создавать файл .call с таким именем и отправлять его по FTP на сервер Asterisk?
В определенные моменты сценария вызова я бы хотел, чтобы Asterisk открывал URL-адрес (в формате 192.168.123.123/ivr/record?question=$question&answer=$answer). Ему не нужно обрабатывать какие-либо данные из URL-адреса, он просто говорит PHP интегрировать данные вызова IVR в существующую систему LAMP. Есть ли у меня способ сделать это? И если да, то как мне это сделать?
<?php
//IVR controller on the PHP server. Our employee clicks a button and IVR makes a call.
//...
curl_setopt($ch, CURLOPT_URL, $call_url = $asterisk_server ."/rawman" .
"?action=originate&channel=". $sip_trunk . $outbound_prefix .
$next_call['phone_number'] .
"&extension=$extension&context=outgoingIVR&priority=1");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $auth_cookie);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$urlresult = curl_exec($ch);
curl_close($ch);
//...
?>
;Extensions.conf on the IVR server
[outgoingIVR]
exten => 500,1,Wait(0.25)
exten => 500,n,Answer()
exten => 500,n,Wait(0.75)
exten => 500,n,Festival("Hi. This is company name. We are the guys that do the thing.")
exten => 500,n, Goto(question1,s,1)
[question1]
exten => s,1(start),Wait(0.5)
;@TODO: read variable into festival here.
exten=> s,n, festival("Are You Jane Doe")
same => n,WaitExten()
exten => 1,1, Goto(are-you-sure,s,1)
;@TODO: save yes response here
exten => 2,1, goto(get-jane,s,1)
;@TODO: save no response here
Вы ищете func_curl. Он может не быть построен в вашей системе по умолчанию, но на странице, на которую я ссылался, есть инструкции по его созданию. Вот предоставленный пример:
exten => s,1,Set(foo=${CURL(http://somewhere.com/somepage.html?x=5&y=4)})