我正在使用简单的AGI脚本,当来电响应运行脚本时。 但是没有用。如何正确运行我的脚本?
对不起我的英语。
这是代码:
extensions_additional.conf
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-jaxb</artifactId>
<version>2.17</version>
</dependency>
拨打-answered.php:
[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})
控制台输出:
#!/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"));
由于
答案 0 :(得分:1)
您确定将文件命名为call-answered.php
吗?您在拨号方案中将其称为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
反复按Enter键以模拟与Asterisk的通信。如果存在任何权限或脚本错误,您通常会在此cli会话中看到这些错误。如果仍然无效,请使用php的error_log()命令将一些有用的信息写入日志,以便判断脚本是否正在运行。
答案 1 :(得分:-2)
这意味着您的脚本中存在语法错误或权限问题。 或者也许只是路径上没有脚本。
即它根本没有回应。