2016-12-15 3 views
0

Ich habe das einfache AGI-Skript, wenn eingehende Anruf beantwortet Skript ausgeführt wird. Aber funktioniert nicht. Wie kann ich mein Skript korrekt ausführen?Asterisk Agi funktioniert nicht

Übrigens Entschuldigung für mein Englisch.

Hier Code:

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}) 

Anruf-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")); 

Console Ausgabe:

-- 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 

Danke

+0

Bearbeiten 'extensions_additional.conf' ist eine schlechte Idee; Es wird jedes Mal überschrieben, wenn die PBX neu geladen wird. Wo ist diese PHP-Datei gespeichert, welche Berechtigungen hat sie? – miken32

Antwort

-1

Das bedeutet, dass Sie Syntaxfehler oder Berechtigungsproblem in Ihrem Skript haben. Oder vielleicht nur kein Skript im Pfad.

d. H. Es reagiert überhaupt nicht.

1

Sind Sie sicher, dass Sie Ihre Datei call-answered.php benannt haben? Sie nennen es in Dialplan als call-answered.agi, die inkonsistent aussieht. Versuchen Sie, den Wählplan auf call-answered.php zu ändern.

Überprüfen Sie, ob die .php-Dateien die Berechtigungen zum Lesen und Ausführen von Dateien haben. Führen Sie chmod 755 /var/lib/asterisk/agi-bin/*.php aus, um das festzulegen.

Überprüfen Sie auch, ob sie sich im richtigen Verzeichnis befinden (Standard ist/var/lib/asterisk/agi-bin), oder geben Sie den vollständigen Pfad in Ihrem Wählplan an. Werfen Sie es in Anführungszeichen sicher zu sein:

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

Sie können weitere Hilfe bei der Official AGI Docs oder am Voip Info (unofficial) page finden.

Edit: Sie können auch Ihr Skript durch direkt aus dem PHP cli versuchen laufen laufen:

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

Drücken Sie die Eingabetaste wiederholt Kommunikation mit Asterisk zu simulieren. Wenn es Berechtigungen oder Skriptfehler gibt, werden diese normalerweise in dieser CLI-Sitzung angezeigt. Wenn das immer noch nicht funktioniert, verwenden Sie den Befehl error_log() von php, um einige nützliche Informationen in das Protokoll zu schreiben, damit Sie sehen können, ob Ihr Skript überhaupt läuft.

Verwandte Themen