2016-12-15 47 views
0

我有簡單的AGI腳本,當來電回答時運行腳本。 但不起作用。我如何正確運行我的腳本?Asterisk agi無法正常工作

對不起,我的英語。

這裏是代碼:

extensions_additional.conf

[macro-auto-blkvm] 

include => macro-auto-blkvm-custom 

exten => s,1,Set(__MACRO_RESULT=)  
exten => s,n,DBDel(${BLKVM_OVERRIDE}) 

exten => s,n,AGI(call-answered.agi,${CALLERID(ANI)},${CHANNEL}) 

呼叫answered.php:

#!/usr/bin/php -q 
<?php 
include("phpagi.php"); 
$agi = new AGI(); 
$agi->verbose("------------------------------------------"); 
$ani = $agi->request['agi_callerid']; 
$agi->noop("My CalleID: <<<<<<<=".$ani); 

$user = 'root'; 
$pass = 'eLaStIx.2oo7'; 
$db = new PDO('mysql:host=localhost;dbname=call', $user, $pass); 

$query = $db->prepare("INSERT INTO deneme SET 
gsm = ?, 
agent = ?"); 
$insert = $query->execute(array("123123", "213123")); 

控制檯輸出:

-- SIP/103-0000000e answered Local/[email protected],2 
-- Executing [[email protected]:1] Set("SIP/103-0000000e", "__MACRO_RESULT=") in new stack 
-- Executing [[email protected]:2] Set("SIP/103-0000000e", "CFIGNORE=") in new stack 
-- Executing [[email protected]:3] Set("SIP/103-0000000e", "MASTER_CHANNEL(CFIGNORE)=") in new stack 
-- Executing [[email protected]:4] Set("SIP/103-0000000e", "FORWARD_CONTEXT=from-internal") in new stack 
-- Executing [[email protected]:5] Set("SIP/103-0000000e", "MASTER_CHANNEL(FORWARD_CONTEXT)=from-internal") in new stack 
-- Executing [[email protected]:6] Macro("SIP/103-0000000e", "blkvm-clr|") in new stack 
-- Executing [[email protected]:7] AGI("SIP/103-0000000e", "call-answered.agi|*******|SIP/103-0000000e") in new stack 
-- Launched AGI Script /var/lib/asterisk/agi-bin/call-answered.agi 
AGI Tx >> agi_request: call-answered.agi 
AGI Tx >> agi_channel: SIP/103-0000000e 
AGI Tx >> agi_language: en 
AGI Tx >> agi_type: SIP 
AGI Tx >> agi_uniqueid: 1481798039.22 
AGI Tx >> agi_callerid: 103 
AGI Tx >> agi_calleridname: unknown 
AGI Tx >> agi_callingpres: 0 
AGI Tx >> agi_callingani2: 0 
AGI Tx >> agi_callington: 0 
AGI Tx >> agi_callingtns: 0 
AGI Tx >> agi_dnid: unknown 
AGI Tx >> agi_rdnis: unknown 
AGI Tx >> agi_context: macro-auto-blkvm 
AGI Tx >> agi_extension: s 
AGI Tx >> agi_priority: 7 
AGI Tx >> agi_enhanced: 0.0 
AGI Tx >> agi_accountcode: 
AGI Tx >> 
-- AGI Script call-answered.agi completed, returning 0 
-- Executing [[email protected]:8] ExecIf("SIP/103-0000000e", "0?Set(MASTER_CHANNEL(CONNECTEDLINE(num))=103)") in new stack 
== Spawn extension (macro-auto-blkvm, s, 8) exited non-zero on 'SIP/103-0000000e' in macro 'auto-blkvm' 
-- Local/[email protected],1 answered SIP/103-0000000d 
-- Stopped music on hold on SIP/**-0000000d 

謝謝

+0

編輯'extensions_additional.conf'是個不錯的主意;每當集團電話重新加載時它都會被覆蓋。這個PHP文件存儲在哪裏,它有什麼權限? – miken32

回答

-1

這意味着您的腳本中有語法錯誤或權限問題。 或者也許只是沒有腳本的路徑。

即,它根本沒有響應。

1

您確定您已將您的文件命名爲call-answered.php?您在dialplan中將其稱爲call-answered.agi,這看起來不一致。嘗試將撥號方案更改爲call-answered.php

檢查.php文件是否具有讀取和執行文件權限。運行chmod 755 /var/lib/asterisk/agi-bin/*.php來設置。

還要檢查它們是否位於正確的目錄中(默認爲/ var/lib/asterisk/agi-bin),或者在撥號規劃中指定完整路徑。把它放在引號是安全的:

exten => s,n,AGI('/var/lib/asterisk/agi-bin/call-answered.php',${CALLERID(ANI)},${CHANNEL}) 

您可以在Official AGI Docs尋求更多幫助,或在Voip Info (unofficial) page

編輯: 您也可以嘗試通過運行直接從PHP CLI運行腳本:

php /var/lib/asterisk/agi-bin/call-answered.php 

按回車鍵多次與Asterisk模擬通信。如果有任何權限或腳本錯誤,您通常會在此cli會話中看到這些錯誤。如果仍然不起作用,請使用php的error_log()命令向日志中寫入一些有用的信息,以便您可以確定腳本是否正在運行。