Asterisk IVR - 输入变量并转到出站 URL

Asterisk IVR - 输入变量并转到出站 URL

我已设置 Asterisk 出站 IVR 系统,并希望它与另一台服务器上的 LAMP 堆栈通信。我已设置 PHP 端以从 IVR 服务器接收数据并将其记录在 MySQL 中,但我不知道如何让 Asterisk 端转到 php URL,而且我还没有弄清楚如何从 PHP 服务器将变量输入到 IVR 脚本中。

在我当前的设置中,PHP 脚本向 asterisk 服务器进行身份验证,然后发送出站呼叫命令。出站呼叫随后转到 extensions.conf 中列出的呼叫脚本。我的第一个问题是,如何通过 URL 将变量发送到 extensions.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

答案1

您正在寻找func_curl。默认情况下,它可能不会在您的系统上构建,但我引用的页面有构建它的说明。以下是提供的示例:

exten => s,1,Set(foo=${CURL(http://somewhere.com/somepage.html?x=5&y=4)})

相关内容