Hola, muchas gracias por responder, éste es el código:
#!/usr/bin/php -q
<?php
// Variables de configuración
$dbhost= '127.0.0.1';
$dbuser='root';
$dbpass='asterisk';
$dbname='pago';
$tmpDir='/tmp/';
$outDir='/var/spool/asterisk/outgoing/';
// Conexión con la base
$link = mysql_connect($dbhost, $dbuser, $dbpass);
if (!$link)
die('Conexión fallida: ' . mysql_error());
// Escoger BD
mysql_select_db($dbname);
// Hacer query
$query = "SELECT * FROM transacciones";
$result = mysql_query($query,$link);
if(!$result)
die('Query inválido: ' . mysql_error());
// Esqueleto del archivo de texto
$file = "
Channel: %s
Application: Macro
Data: pago,%s,%s,%s,%s";
// Recorremos el resultado arrojado por el query y creamos un archivo
// de texto por cada fila obtenida.
// Movemos el archivo resultado a donde debe ir
while($row = mysql_fetch_assoc($result)) {
$randomFilename = md5(print_r($row,1));
$fileResult = sprintf($file, $row['dialString'], $row['Tratamiento'], $row['apPatCliente'], $row['pagoServ'], $row['montoTrans']);
$handle = fopen($tmpDir.$randomFilename, 'w+');
fputs($handle,$fileResult);
fclose($handle);
// touch($tmpDir.$randomFilename,time()+10*++$n);
rename($tmpDir.$randomFilename, $outDir.$randomFilename);
}
// Cerrar conexión.
mysql_close($link);
?>
Y ésta es la pantalla del CLI:
-- Executing [s@macro-pago:1] Playback("SIP/100-00000001", "good") in new stack
-- <SIP/100-00000001> Playing 'good.gsm' (language 'es')
-- Executing [s@macro-pago:2] GotoIfTime("SIP/100-00000001", "0:00-11:59,,,?dia") in new stack
-- Executing [s@macro-pago:3] GotoIfTime("SIP/100-00000001", "12:00-23:59,,,?tarde") in new stack
-- Goto (macro-pago,s,6)
-- Executing [s@macro-pago:6] Playback("SIP/100-00000001", "afternoon") in new stack
-- <SIP/100-00000001> Playing 'afternoon.gsm' (language 'es')
-- Executing [s@macro-pago:7] GotoIf("SIP/100-00000001", "tarde?cont") in new stack
-- Goto (macro-pago,s,8)
-- Executing [s@macro-pago:8] Playback("SIP/100-00000001", "welcome") in new stack
-- <SIP/100-00000001> Playing 'welcome.gsm' (language 'es')
-- Executing [s@macro-pago:9] Festival("SIP/100-00000001", "Se�or") in new stack
== Parsing '/etc/asterisk/festival.conf': Found
-- Executing [s@macro-pago:10] Festival("SIP/100-00000001", "Benitez") in new stack
== Parsing '/etc/asterisk/festival.conf': Found
-- Executing [s@macro-pago:11] Festival("SIP/100-00000001", "Ha llegado su cuenta de") in new stack
== Parsing '/etc/asterisk/festival.conf': Found
-- Executing [s@macro-pago:12] Festival("SIP/100-00000001", "Agua") in new stack
== Parsing '/etc/asterisk/festival.conf': Found
-- Executing [s@macro-pago:13] Festival("SIP/100-00000001", "Con un saldo de") in new stack
== Parsing '/etc/asterisk/festival.conf': Found
-- Executing [s@macro-pago:14] SayNumber("SIP/100-00000001", "3456") in new stack
-- <SIP/100-00000001> Playing 'digits/3.gsm' (language 'es')
-- <SIP/100-00000001> Playing 'digits/thousand.gsm' (language 'es')
-- <SIP/100-00000001> Playing 'digits/400.gsm' (language 'es')
-- <SIP/100-00000001> Playing 'digits/50.gsm' (language 'es')
-- <SIP/100-00000001> Playing 'digits/and.gsm' (language 'es')
-- <SIP/100-00000001> Playing 'digits/6.gsm' (language 'es')
-- Executing [s@macro-pago:15] Playback("SIP/100-00000001", "dollars") in new stack
-- <SIP/100-00000001> Playing 'dollars.gsm' (language 'es')
-- Executing [s@macro-pago:16] SayNumber("SIP/100-00000001", "78") in new stack
-- <SIP/100-00000001> Playing 'digits/70.gsm' (language 'es')
-- <SIP/100-00000001> Playing 'digits/and.gsm' (language 'es')
-- <SIP/100-00000001> Playing 'digits/8.gsm' (language 'es')
-- Executing [s@macro-pago:17] Playback("SIP/100-00000001", "cents") in new stack
-- <SIP/100-00000001> Playing 'cents.gsm' (language 'es')
-- Executing [s@macro-pago:18] Festival("SIP/100-00000001", "Desea pagarla") in new stack
== Parsing '/etc/asterisk/festival.conf': Found
-- Executing [s@macro-pago:19] Gosub("SIP/100-00000001", "menu,s,1") in new stack
-- Executing [s@menu:1] Wait("SIP/100-00000001", "1") in new stack
-- Executing [s@menu:2] Festival("SIP/100-00000001", "Por favor") in new stack
== Parsing '/etc/asterisk/festival.conf': Found
-- Executing [s@menu:3] Festival("SIP/100-00000001", "Diga un comando de voz") in new stack
== Parsing '/etc/asterisk/festival.conf': Found
-- Executing [s@menu:4] Festival("SIP/100-00000001", "para aceptar diga si") in new stack
== Parsing '/etc/asterisk/festival.conf': Found
-- Executing [s@menu:5] Festival("SIP/100-00000001", "o") in new stack
== Parsing '/etc/asterisk/festival.conf': Found
-- Executing [s@menu:6] Festival("SIP/100-00000001", "para rechazar diga no") in new stack
== Parsing '/etc/asterisk/festival.conf': Found
-- Executing [s@menu:7] Festival("SIP/100-00000001", "o siga las instrucciones") in new stack
== Parsing '/etc/asterisk/festival.conf': Found
-- Executing [s@menu:8] Set("SIP/100-00000001", "x=0") in new stack
-- Executing [s@menu:9] Set("SIP/100-00000001", "x=1") in new stack
-- Executing [s@menu:10] GotoIf("SIP/100-00000001", "0?Cuelga") in new stack
-- Executing [s@menu:11] BackGround("SIP/100-00000001", "for-yes-press&digits/1") in new stack
-- <SIP/100-00000001> Playing 'for-yes-press.gsm' (language 'es')
-- <SIP/100-00000001> Playing 'digits/1.gsm' (language 'es')
-- Executing [s@menu:12] BackGround("SIP/100-00000001", "for-no-press&digits/2") in new stack
-- <SIP/100-00000001> Playing 'for-no-press.gsm' (language 'es')
-- <SIP/100-00000001> Playing 'digits/2.gsm' (language 'es')
-- Executing [s@menu:13] WaitExten("SIP/100-00000001", "3") in new stack
[May 6 21:40:38] NOTICE: pbx_spool.c:402 attempt_thread: Call completed to SIP/100
alxbmart*CLI>
Básicamente lo que sucede es que al teclear alguna opción del menú me saca de la llamada.
De antemano muchas gracias.