Asterisk

Asterisk IVR - 輸入變數並轉到出站 URL

  • January 7, 2013

我設置了一個 Asterisk 出站 IVR 系統,我希望它與我在不同伺服器上的 LAMP 堆棧通信。我已經設置 PHP 端從 IVR 伺服器接收數據並將其記錄在 MySQL 中,但我不知道如何讓 Asterisk 端轉到 php URL,我還沒有弄清楚如何從 PHP 伺服器向 IVR 腳本輸入一個變數。

在我目前的設置中,PHP 腳本對星號伺服器進行身份驗證,然後發送出站呼叫命令。然後,出站呼叫轉到 extensions.conf 中列出的呼叫腳本。我的第一個問題是,如何通過 URL 將變數發送到 extensions.conf,例如我正在呼叫的人的姓名?我是否必須每次都創建一個帶有該名稱的 .call 文件並將其 FTP 到 Asterisk 伺服器?

在呼叫腳本中的某些點,我希望 Asterisk 打開一個 URL(格式為 192.168.123.123/ivr/record?question= $ question&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)})

引用自:https://serverfault.com/questions/460707