Queue callback script

Hello, everyone!

I was trying to enable the option for anyone, who enters the queue, to press the button and quit the queue and being called back later.
I’ve found a page with the implementation of such feature, here’s the link, which includes some of php AGI scripts.

Basic system info:
Asterisk 11.14.2, Linux 2.6.32-431.el6.x86_64, AsteriskNOW 6.12.

I haven’t change much of the dialplan, which, btw, does not cause me any errors.

exten => 8,1,Set(CALLERID(name)=Test)
exten => 8,n,NoOp( Allow callback for ${CALLERID(num)} ) ; test callback
exten => 8,n,Set(ALLOW_CALLBACK=1)
exten => 8,n,Set(CALLBACK_QUEUE=test)
exten => 8,n,queue(test,t,,,10000)
exten => 8,n,Hangup

include => main_menu_press

[callback_press]
exten => 0,1, NoOp('-------------------- ${CALLERID(num)} PRESS BUTTON ${EXTEN}. ALLOW_CALLBACK=${ALLOW_CALLBACK}')
exten => 0,n,GotoIf($[${ALLOW_CALLBACK}==1]?callback,s,1:i,1)

[callback]
exten => s,1,NoOp( CALLBACK )
exten => s,n,Playback(telin-emergencysupport)
exten => s,n,Hangup

exten => h,1,agi(callback.php,gen,0,${CALLBACK_QUEUE})

[do-callback]
exten => _X.,1,NoOp( Try to dial to queue (${CALLBACK_QUEUE}) and callback to ${CALLBACK_NUM} )
exten => _X.,s,Set(__DST="?")
exten => _X.,s,Set(CALLERID(num)=${CALLBACK_NUM})
exten => _X.,s(call),queue(${CALLBACK_QUEUE},tT)
exten => _X.,s,NoOp( CALLBACK QUEUESTATUS=${QUEUESTATUS} )

[macro-queue-answ]
exten => s,1,NoOp( Queue member answered uniq=${UNIQUEID} cid=${CALLERID(num)} chan=${CHANNEL} callback_id=${CALLBACK_ID} callback_num=${CALLBACK_NU
exten => s,n,GotoIf($[ "${CALLBACK_ID}x" = "x" ]?skip)
exten => s,n,Set(DST=${CHANNEL})
exten => s,n,Set(CALLERID(num)=067)
exten => s,n,Playback(waitforconnect) ; Playback "wait for connection"
exten => s,n,agi(callback.php,queue-answ,${CALLBACK_ID},${CHANNEL},${UNIQUEID})
exten => s,n,Dial(SIP/${CALLBACK_NUM}@edm)
exten => s,n,NoOp( [macro-queue-answ] dial timeout )
exten => s,n(skip),NoOp( )

exten => h,1,NoOp( [macro-queue-answ] dial hangup )
exten => h,n,GotoIf($[ "${CALLBACK_ID}x" = "x" ]?end)
exten => h,n,NoOp( dialstatus=${DIALSTATUS} hangupcause=${HANGUPCAUSE} queuestatus=${QUEUESTATUS})
exten => h,n,NoOp( my_dialstatus=${MY_DIALSTATUS} my_hangupcause=${MY_HANGUPCAUSE})
exten => h,n,agi(callback.php,hangup-queue-answ,${CALLBACK_ID},${CHANNEL},${UNIQUEID})
exten => h,n(end),NoOp

[callback-complete]
exten => s,1,NoOp( Callback complete. CALLBACK_ID=${CALLBACK_ID}, uniq=${UNIQUEID}, dst=${DST} chan=${CHANNEL} )
exten => s,n,NoOp( dialstatus=${DIALSTATUS} hangupcause=${HANGUPCAUSE} queuestatus=${QUEUESTATUS})
exten => s,n,NoOp( my_dialstatus=${MY_DIALSTATUS} my_hangupcause=${MY_HANGUPCAUSE})

Here are the scripts:
config.php

<?php

ob_implicit_flush(true);
set_time_limit(6);

date_default_timezone_set('America/Edmonton');

mysql_connect("localhost","asterisk","***") or die('Mysql connect error');
mysql_select_db("asterisk");

// *******************************
function genCallbackFile($id,$cid,$queue) {

 $fname='/var/spool/asterisk/outgoing/callback-'.$id;
 if (file_exists($fname)) return;

 $callfile="Channel: Local/".$cid."@do-callback\n".
            "WaitTime: 60\n".
            "MaxRetries: 1\n"."RetryTime: 120\n".
            "Context: callback-complete\n".
            "Extension: s\n".
            "Set: __CALLBACK_ID=$id\n".
            "Set: __CALLBACK_QUEUE=$queue\n".
            "Set: __CALLBACK_NUM=$cid\n";

 $fp=fopen($fname,'w+');fputs($fp,$callfile);fclose($fp);

}

?>

callback.php

[code]#!/usr/bin/php

<? $arg=$_SERVER["argv"]; $a=$arg[1]; $id=abs($arg[2]); include('/var/lib/asterisk/agi-bin/config.php'); $in = fopen("php://stdin","r"); $stdlog = fopen("/var/log/asterisk/callback.log", "a+"); // toggle debugging output (more verbose) $debug = false; // parse agi headers into array while ($env=read()) { $s = split(": ",$env); $agi[str_replace("agi_","",$s[0])] = trim($s[1]); if (($env == "") || ($env == "\n")) { break; } } // main program ************************ $dt=date('d.m.Y H:i:s'); $cid=$agi[callerid]; switch ($a) { case 'cid-answ' : { // наконец-то дозвонились до клиента $stmt='select * from callback where id='.$id; $result=mysql_query($stmt); $row=mysql_fetch_object($result); $cid=$row->cid; $stmt="select * from callback where id=$id or (dt>(now()-interval 24 hour) and cid='$cid' and STATUS<>2)"; $result=mysql_query($stmt); while ($row=mysql_fetch_object($result)) { $id=$row->id; $stmt="update callback set status=2,compl_dt=now() where id=$id"; $result=mysql_query($stmt); rename('/var/spool/asterisk/outgoing/callback-'.$id,'/tmp/callback-'.$id); } break; } case 'queue-answ' : { // дозвонились до оператора в очереди. увеличиваем счетчик попыток дозвона до клиента $dst=$arg[3]; $stmt=sprintf('update callback set status=1,last_call=now(),tot_calls=tot_calls+1,dst="%s",uniqueid="%s" where id=%d",$dst,$agi[uniqueid],$id); $result=mysql_query($stmt); break; } case 'complete' : { // звонок закончен, но если клиент нажал сброс или было занято, то создаем callfile снова $id=abs($arg[2]); $stmt='select * from callback where id='.$id; $result=mysql_query($stmt); $row=mysql_fetch_object($result); if ($row->status!=2) genCallBackFile($id,$row->cid,$row->queue); break; } case 'gen': { // собственно создаем в базе запись обратного обзвона $qname=trim($arg[3]); if (!$qname) $qname='operators'; $stmt=sprintf('select * from callback where cid="%s" and queue="%s" status<>2 and dt>now()-interval 24 hour',$cid,$qname); $result=mysql_query($stmt); if (!$row=mysql_fetch_object($result)) { $stmt="insert into callback (cid,queue) values ('$cid','$qname')"; $result=mysql_query($stmt); $id=mysql_insert_id(); fputs($stdlog,"$dt|$stmt\n"); } else { $log_status='cid '.$cid.' already in spool '.$qname; } genCallBackFile($id,$cid,$qname); break; } } $stmt=sprintf('insert into callback_log (callback_id,status) values (%d,"%s -> %s")',$id,$a,$log_status); $result=mysql_query($stmt); $log_id=mysql_insert_id(); // clean up file handlers etc. fclose($in); fclose($stdlog); exit; // **************************************** ?>

[/code]

I am getting an error during the execution of the callback.php.

I though that my php version is old (5.3), though this is the last one I get when I use yum update on php.
Am I doing something wrong with it?

Here is the log and the AGI Debug:

<SIP/789-000024d7>AGI Tx >> agi_request: callback.php <SIP/789-000024d7>AGI Tx >> agi_channel: SIP/789-000024d7 <SIP/789-000024d7>AGI Tx >> agi_language: en <SIP/789-000024d7>AGI Tx >> agi_type: SIP <SIP/789-000024d7>AGI Tx >> agi_uniqueid: 1436301569.9471 <SIP/789-000024d7>AGI Tx >> agi_version: 11.14.2 <SIP/789-000024d7>AGI Tx >> agi_callerid: 789 <SIP/789-000024d7>AGI Tx >> agi_calleridname: Test <SIP/789-000024d7>AGI Tx >> agi_callingpres: 0 <SIP/789-000024d7>AGI Tx >> agi_callingani2: 0 <SIP/789-000024d7>AGI Tx >> agi_callington: 0 <SIP/789-000024d7>AGI Tx >> agi_callingtns: 0 <SIP/789-000024d7>AGI Tx >> agi_dnid: 2 <SIP/789-000024d7>AGI Tx >> agi_rdnis: unknown <SIP/789-000024d7>AGI Tx >> agi_context: callback <SIP/789-000024d7>AGI Tx >> agi_extension: h <SIP/789-000024d7>AGI Tx >> agi_priority: 1 <SIP/789-000024d7>AGI Tx >> agi_enhanced: 0.0 <SIP/789-000024d7>AGI Tx >> agi_accountcode: <SIP/789-000024d7>AGI Tx >> agi_threadid: 140458543675136 <SIP/789-000024d7>AGI Tx >> agi_arg_1: gen <SIP/789-000024d7>AGI Tx >> agi_arg_2: 0 <SIP/789-000024d7>AGI Tx >> agi_arg_3: test <SIP/789-000024d7>AGI Tx >> <SIP/789-000024d7>AGI Rx << <? <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $arg=$_SERVER["argv"]; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $a=$arg[1]; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $id=abs($arg[2]); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << include('/var/lib/asterisk/agi-bin/config.php'); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $in = fopen("php://stdin","r"); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $stdlog = fopen("/var/log/asterisk/callback.log", "a+"); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << // toggle debugging output (more verbose) <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $debug = false; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << // parse agi headers into array <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << while ($env=read()) { <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $s = split(": ",$env); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $agi[str_replace("agi_","",$s[0])] = trim($s[1]); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << if (($env == "") || ($env == "\n")) { <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << break; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << } <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << } <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << // main program ************************ <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $dt=date('d.m.Y H:i:s'); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $cid=$agi[callerid]; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << switch ($a) { <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << case 'cid-answ' : { // наконец-то дозвонились до клиента <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $stmt='select * from callback where id='.$id; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $result=mysql_query($stmt); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $row=mysql_fetch_object($result); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $cid=$row->cid; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $stmt="select * from callback where id=$id or (dt>(now()-interval 24 hour) and cid='$cid' and STATUS<>2)"; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $result=mysql_query($stmt); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << while ($row=mysql_fetch_object($result)) { <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $id=$row->id; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $stmt="update callback set status=2,compl_dt=now() where id=$id"; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $result=mysql_query($stmt); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << rename('/var/spool/asterisk/outgoing/callback-'.$id,'/tmp/callback-'.$id); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << } <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << break; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << } <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << case 'queue-answ' : { // дозвонились до оператора в очереди. увеличиваем счетчик попыток дозвона до клиента <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $dst=$arg[3]; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $stmt=sprintf('update callback set status=1,last_call=now(),tot_calls=tot_calls+1,dst="%s",uniqueid="%s" where id=%d",$dst,$agi[uniqueid],$id); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $result=mysql_query($stmt); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << break; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << } <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << case 'complete' : { // звонок закончен, но если клиент нажал сброс или было занято, то создаем callfile снова <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $id=abs($arg[2]); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command <SIP/789-000024d7>AGI Rx << $stmt='select * from callback where id='.$id; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << $result=mysql_query($stmt); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << $row=mysql_fetch_object($result); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << if ($row->status!=2) genCallBackFile($id,$row->cid,$row->queue); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << break; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << } <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << case 'gen': { // собственно создаем в базе запись обратного обзвона <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << $qname=trim($arg[3]); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << if (!$qname) $qname='operators'; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << // особо нетерпеливые звонят несколько раз и нажимают 0, предполагая, что это ускорит процесс. Но только не у нас <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << $stmt=sprintf('select * from callback where cid="%s" and queue="%s" status<>2 and dt>now()-interval 24 hour',$cid,$qname); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << $result=mysql_query($stmt); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << if (!$row=mysql_fetch_object($result)) { <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << $stmt="insert into callback (cid,queue) values ('$cid','$qname')"; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << $result=mysql_query($stmt); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << $id=mysql_insert_id(); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << fputs($stdlog,"$dt|$stmt\n"); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << } else { <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << $log_status='cid '.$cid.' already in spool '.$qname; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << } <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << genCallBackFile($id,$cid,$qname); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << break; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << } <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << } <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << $stmt=sprintf('insert into callback_log (callback_id,status) values (%d,"%s -> %s")',$id,$a,$log_status); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << $result=mysql_query($stmt); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << $log_id=mysql_insert_id(); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << // clean up file handlers etc. <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << fclose($in); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << fclose($stdlog); <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << exit; <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << // **************************************** <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe <SIP/789-000024d7>AGI Rx << ?> <SIP/789-000024d7>AGI Tx >> 510 Invalid or unknown command [2015-07-07 14:39:49] ERROR[62238][C-00000c57]: utils.c:1362 ast_carefulwrite: write() returned error: Broken pipe -- <SIP/789-000024d7>AGI Script callback.php completed, returning 0

Closed.
Decided to use another solution.