TTS problem (festival - google tts) - SOLVED

Hi all.
I’m trying to make my Asterisk (1.6.2.13) talk with customer.
I use PHP AGI for make this.
First i try with Festival. When i add in my [color=#FF4000]php script[/color] a line like this one, my Asterisk talk:

$agi->text2wav(“You entered 123456”);

The problem is that i’m not able to make festival speack in Italian language.

For solve this issue, i approach google TTS (googletts.agi).
I follow all i found and i found this usefull

elastix.org/index.php/es/com … -text.html

Now, if i configure a custom extension (extension_custom.conf) like this, it speack in perfect italian:

[testgooglephp]
exten => 303,1,Answer
exten => 303,n,Wait(2)
exten => 303,n,AGI(googletts.agi,“Ora facciamo un test in italiano.”,it)
exten => 303,n,hangup()

Now, the question is: is it possible [color=#FF0000]to make it speak from a PHP script?[/color]
How can i call the “AGI(googletts.agi,“Ora facciamo un test in italiano.”,it)” from the PHP script?
Like before with Festival [($agi->text2wav(“You entered 123456”);] there is a way for make the same with googletts.agi?

Thanks all for attention,
regard,
Mauro.

Try with the phpagi exec command.

Thanks navaismo … it’s a good point of start.
i try in many way, reading the sintax of exec and exec_agi … but i’m not able to make it works.
In many case the line is jumped (in the php execution) or in some case the php go in error and the call is hanged up.
So, i have to translate this in the dialplan:

exten => 302,n,AGI(googletts.agi,“Breve testo in italiano”,it)

in php script format … maybe like you say with exec command.
I try for example this:

$agi->exec(AGI,"(googletts.agi,“Breve testo in italiano.”,it)");

but not works.
Any suggest?

P.S. if anyone know how to complete a phpscript debug, this is apreciate too (i try insert a $logfile variable … but not works)

[quote]Executes the specified Asterisk application with given options.
return: see evaluate for return information. [‘result’] is whatever the application returns, or -2 on failure to find application
link: voip-info.org/wiki-Asterisk+ … n+commands
link: voip-info.org/wiki-exec
array, exec (string $application, mixed $options)
string $application
mixed $options[/quote]

So: $agi->exec(“AGI”,“myagifile”) or in your case: $agi->exec(“AGI”,“googletts.agi,“Breve testo in italiano.”,it”);

Navaismo, i’m sorry, but your sintax

$agi->exec(“AGI”,“googletts.agi,“Breve testo in italiano.”,it”);

not works.
The php script was execute, but this line was skipped :frowning:
In your opinion this mean that is not possible execute googletts.agi in PHP?
Thanks again.
Mauro.

Actually it works:

Executing [650@from-internal:1] Answer("SIP/5000-00000000", "") in new stack -- Executing [650@from-internal:2] AGI("SIP/5000-00000000", "agita.agi") in new stack -- Launched AGI Script /var/lib/asterisk/agi-bin/agita.agi -- AGI Script Executing Application: (AGI) Options: (googletts.agi,Breve testo in italiano.,it) -- Launched AGI Script /var/lib/asterisk/agi-bin/googletts.agi [2012-06-26 09:33:00] WARNING[2519]: format_wav.c:110 check_header_fmt: Unexpected frequency mismatch 22050 (expecting 8000) [2012-06-26 09:33:00] WARNING[2519]: file.c:386 fn_wrapper: Unable to open format wav -- Playing '/tmp/ggl_MNELDc' (escape_digits=) (sample_offset 0) -- <SIP/5000-00000000>AGI Script googletts.agi completed, returning 0 -- AGI Script Executing Application: (AGI) Options: (googletts.agi,hola... esto es una prueba,es) -- Launched AGI Script /var/lib/asterisk/agi-bin/googletts.agi -- Playing '/tmp/9b7f72b037791b2df76848dbed22db27' (escape_digits=) (sample_offset 0) -- <SIP/5000-00000000>AGI Script googletts.agi completed, returning 0 -- <SIP/5000-00000000>AGI Script agita.agi completed, returning 4 == Spawn extension (from-internal, 650, 2) exited non-zero on 'SIP/5000-00000000' -- Executing [h@from-internal:1] Hangup("SIP/5000-00000000", "") in new stack == Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/5000-00000000'

This is my agi test:

[code]#!/usr/bin/php -q

<?php set_time_limit(30); require('phpagi/phpagi.php'); $agi = new AGI(); $agi->answer(); $agi->exec("AGI","googletts.agi,\"Breve testo in italiano.\",it"); $agi->exec("AGI","googletts.agi,\"hola... esto es una prueba\",es"); $agi->hangup(); ?>

[/code]

And please show us your cli output with the agi debug and your php file.

Thank you very much for your help. Really.
So,
I make this change in my dialplan (/etc/asterisk/extensions_custom.conf):

[googletest] exten => 304,1,Answer exten => 304,n,Wait(2) exten => 304,n,AGI(googletest3.php) exten => 304,n,hangup()

This is my actual PHP script (/var/lib/asterisk/agi-bin/googletest3.php):

[code]#!/usr/bin/php -q

<?php set_time_limit(30); require('phpagi.php'); $agi = new AGI(); $agi->answer(); $agi->exec("AGI","googletts.agi,\"Breve testo in italiano.\",it"); $agi->exec("AGI","googletts.agi,\"hola... esto es una prueba\",es"); $agi->hangup(); ?>

[/code]

I Just copy yours.
When i cal 304 extension, after 2 seconds the cal will HangUp.
This is my CLI Output:

rossella*CLI> rossella*CLI> == Using SIP RTP TOS bits 184 == Using SIP RTP CoS mark 5 -- Executing [304@from-internal:1] Answer("SIP/390-00000154", "") in new stack -- Executing [304@from-internal:2] Wait("SIP/390-00000154", "2") in new stack -- Executing [304@from-internal:3] AGI("SIP/390-00000154", "googletest3.php") in new stack -- Launched AGI Script /var/lib/asterisk/agi-bin/googletest3.php -- <SIP/390-00000154>AGI Script googletest3.php completed, returning 0 -- Executing [304@from-internal:4] Hangup("SIP/390-00000154", "") in new stack == Spawn extension (from-internal, 304, 4) exited non-zero on 'SIP/390-00000154' -- Executing [h@from-internal:1] Macro("SIP/390-00000154", "hangupcall") in new stack -- Executing [s@macro-hangupcall:1] GotoIf("SIP/390-00000154", "1?endmixmoncheck") in new stack -- Goto (macro-hangupcall,s,9) -- Executing [s@macro-hangupcall:9] NoOp("SIP/390-00000154", "End of MIXMON check") in new stack -- Executing [s@macro-hangupcall:10] GotoIf("SIP/390-00000154", "1?nomeetmemon") in new stack -- Goto (macro-hangupcall,s,15) -- Executing [s@macro-hangupcall:15] NoOp("SIP/390-00000154", "MEETME_RECORDINGFILE=") in new stack -- Executing [s@macro-hangupcall:16] GotoIf("SIP/390-00000154", "1?noautomon") in new stack -- Goto (macro-hangupcall,s,18) -- Executing [s@macro-hangupcall:18] NoOp("SIP/390-00000154", "TOUCH_MONITOR_OUTPUT=") in new stack -- Executing [s@macro-hangupcall:19] GotoIf("SIP/390-00000154", "1?noautomon2") in new stack -- Goto (macro-hangupcall,s,25) -- Executing [s@macro-hangupcall:25] NoOp("SIP/390-00000154", "MONITOR_FILENAME=") in new stack -- Executing [s@macro-hangupcall:26] GotoIf("SIP/390-00000154", "1?skiprg") in new stack -- Goto (macro-hangupcall,s,29) -- Executing [s@macro-hangupcall:29] GotoIf("SIP/390-00000154", "1?skipblkvm") in new stack -- Goto (macro-hangupcall,s,32) -- Executing [s@macro-hangupcall:32] GotoIf("SIP/390-00000154", "1?theend") in new stack -- Goto (macro-hangupcall,s,34) -- Executing [s@macro-hangupcall:34] Hangup("SIP/390-00000154", "") in new stack == Spawn extension (macro-hangupcall, s, 34) exited non-zero on 'SIP/390-00000154' in macro 'hangupcall' == Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/390-00000154' rossella*CLI>

If i must search the first difference in my cli output from yours, i not see anything pointing at googletts.agi execution (like in yours: – AGI Script Executing Application: (AGI) Options: (googletts.agi,Breve testo in italiano.,it) )
But … what can means this?
Mauro.

and … sorry, if help this is the asterisk log output when i place a call at 304 (/var/log/asterisk/full)

[Jun 26 18:44:09] VERBOSE[17043] netsock.c:   == Using SIP RTP TOS bits 184
[Jun 26 18:44:09] VERBOSE[17043] netsock.c:   == Using SIP RTP CoS mark 5
[Jun 26 18:44:09] VERBOSE[5009] pbx.c:     -- Executing [304@from-internal:1] Answer("SIP/390-00000157", "") in new stack
[Jun 26 18:44:09] VERBOSE[5009] pbx.c:     -- Executing [304@from-internal:2] Wait("SIP/390-00000157", "2") in new stack
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Executing [304@from-internal:3] AGI("SIP/390-00000157", "googletest3.php") in new stack
[Jun 26 18:44:11] VERBOSE[5009] res_agi.c:     -- Launched AGI Script /var/lib/asterisk/agi-bin/googletest3.php
[Jun 26 18:44:11] VERBOSE[5009] res_agi.c:     -- AGI Script Executing Application: (AGI) Options: (googletts.agi,Breve testo in italiano.,it)
[Jun 26 18:44:11] WARNING[5009] res_agi.c: Failed to execute '/var/lib/asterisk/agi-bin/googletts.agi,Breve testo in italiano.,it': File does not exist.
[Jun 26 18:44:11] VERBOSE[5009] res_agi.c:     -- AGI Script Executing Application: (AGI) Options: (googletts.agi,hola... esto es una prueba,es)
[Jun 26 18:44:11] WARNING[5009] res_agi.c: Failed to execute '/var/lib/asterisk/agi-bin/googletts.agi,hola... esto es una prueba,es': File does not exist.
[Jun 26 18:44:11] VERBOSE[5009] res_agi.c:     -- <SIP/390-00000157>AGI Script googletest3.php completed, returning -1
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Executing [h@from-internal:1] Macro("SIP/390-00000157", "hangupcall") in new stack
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Executing [s@macro-hangupcall:1] GotoIf("SIP/390-00000157", "1?endmixmoncheck") in new stack
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Goto (macro-hangupcall,s,9)
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Executing [s@macro-hangupcall:9] NoOp("SIP/390-00000157", "End of MIXMON check") in new stack
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Executing [s@macro-hangupcall:10] GotoIf("SIP/390-00000157", "1?nomeetmemon") in new stack
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Goto (macro-hangupcall,s,15)
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Executing [s@macro-hangupcall:15] NoOp("SIP/390-00000157", "MEETME_RECORDINGFILE=") in new stack
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Executing [s@macro-hangupcall:16] GotoIf("SIP/390-00000157", "1?noautomon") in new stack
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Goto (macro-hangupcall,s,18)
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Executing [s@macro-hangupcall:18] NoOp("SIP/390-00000157", "TOUCH_MONITOR_OUTPUT=") in new stack
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Executing [s@macro-hangupcall:19] GotoIf("SIP/390-00000157", "1?noautomon2") in new stack
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Goto (macro-hangupcall,s,25)
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Executing [s@macro-hangupcall:25] NoOp("SIP/390-00000157", "MONITOR_FILENAME=") in new stack
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Executing [s@macro-hangupcall:26] GotoIf("SIP/390-00000157", "1?skiprg") in new stack
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Goto (macro-hangupcall,s,29)
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Executing [s@macro-hangupcall:29] GotoIf("SIP/390-00000157", "1?skipblkvm") in new stack
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Goto (macro-hangupcall,s,32)
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Executing [s@macro-hangupcall:32] GotoIf("SIP/390-00000157", "1?theend") in new stack
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Goto (macro-hangupcall,s,34)
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:     -- Executing [s@macro-hangupcall:34] Hangup("SIP/390-00000157", "") in new stack
[Jun 26 18:44:11] VERBOSE[5009] app_macro.c:   == Spawn extension (macro-hangupcall, s, 34) exited non-zero on 'SIP/390-00000157' in macro 'hangupcall'
[Jun 26 18:44:11] VERBOSE[5009] pbx.c:   == Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/390-00000157'

And this line in the log i thinks help a little:

But the file exist:

[root@rossella agi-bin]# pwd /var/lib/asterisk/agi-bin [root@rossella agi-bin]# ls -l googletts.agi -rwxrwxr-x 1 asterisk asterisk 7808 19 mag 19:54 googletts.agi [root@rossella agi-bin]#

What you think about?
Mauro.

weird :confused: Can you paste the cli output activating the agi debug with: “agi set debug on” and then make a test call again.

The output should look like:

-- Executing [650@from-internal:1] Answer("SIP/5000-00000001", "") in new stack -- Executing [650@from-internal:2] AGI("SIP/5000-00000001", "agita.agi") in new stack -- Launched AGI Script /var/lib/asterisk/agi-bin/agita.agi <SIP/5000-00000001>AGI Tx >> agi_request: agita.agi <SIP/5000-00000001>AGI Tx >> agi_channel: SIP/5000-00000001 <SIP/5000-00000001>AGI Tx >> agi_language: en <SIP/5000-00000001>AGI Tx >> agi_type: SIP <SIP/5000-00000001>AGI Tx >> agi_uniqueid: 1340733561.1 <SIP/5000-00000001>AGI Tx >> agi_version: 1.8.12.0 <SIP/5000-00000001>AGI Tx >> agi_callerid: 5000 <SIP/5000-00000001>AGI Tx >> agi_calleridname: Max <SIP/5000-00000001>AGI Tx >> agi_callingpres: 0 <SIP/5000-00000001>AGI Tx >> agi_callingani2: 0 <SIP/5000-00000001>AGI Tx >> agi_callington: 0 <SIP/5000-00000001>AGI Tx >> agi_callingtns: 0 <SIP/5000-00000001>AGI Tx >> agi_dnid: unknown <SIP/5000-00000001>AGI Tx >> agi_rdnis: unknown <SIP/5000-00000001>AGI Tx >> agi_context: from-internal <SIP/5000-00000001>AGI Tx >> agi_extension: 650 <SIP/5000-00000001>AGI Tx >> agi_priority: 2 <SIP/5000-00000001>AGI Tx >> agi_enhanced: 0.0 <SIP/5000-00000001>AGI Tx >> agi_accountcode: <SIP/5000-00000001>AGI Tx >> agi_threadid: 140138630993664 <SIP/5000-00000001>AGI Tx >> <SIP/5000-00000001>AGI Rx << ANSWER <SIP/5000-00000001>AGI Tx >> 200 result=0 <SIP/5000-00000001>AGI Rx << EXEC AGI googletts.agi,"Breve testo in italiano.",it -- AGI Script Executing Application: (AGI) Options: (googletts.agi,Breve testo in italiano.,it) -- Launched AGI Script /var/lib/asterisk/agi-bin/googletts.agi <SIP/5000-00000001>AGI Tx >> agi_request: googletts.agi <SIP/5000-00000001>AGI Tx >> agi_channel: SIP/5000-00000001 <SIP/5000-00000001>AGI Tx >> agi_language: en <SIP/5000-00000001>AGI Tx >> agi_type: SIP <SIP/5000-00000001>AGI Tx >> agi_uniqueid: 1340733561.1 <SIP/5000-00000001>AGI Tx >> agi_version: 1.8.12.0 <SIP/5000-00000001>AGI Tx >> agi_callerid: 5000 <SIP/5000-00000001>AGI Tx >> agi_calleridname: Max <SIP/5000-00000001>AGI Tx >> agi_callingpres: 0 <SIP/5000-00000001>AGI Tx >> agi_callingani2: 0 <SIP/5000-00000001>AGI Tx >> agi_callington: 0 <SIP/5000-00000001>AGI Tx >> agi_callingtns: 0 <SIP/5000-00000001>AGI Tx >> agi_dnid: unknown <SIP/5000-00000001>AGI Tx >> agi_rdnis: unknown <SIP/5000-00000001>AGI Tx >> agi_context: from-internal <SIP/5000-00000001>AGI Tx >> agi_extension: 650 <SIP/5000-00000001>AGI Tx >> agi_priority: 2 <SIP/5000-00000001>AGI Tx >> agi_enhanced: 0.0 <SIP/5000-00000001>AGI Tx >> agi_accountcode: <SIP/5000-00000001>AGI Tx >> agi_threadid: 140138630993664 <SIP/5000-00000001>AGI Tx >> agi_arg_1: Breve testo in italiano. <SIP/5000-00000001>AGI Tx >> agi_arg_2: it <SIP/5000-00000001>AGI Tx >> <SIP/5000-00000001>AGI Rx << CHANNEL STATUS <SIP/5000-00000001>AGI Tx >> 200 result=6 <SIP/5000-00000001>AGI Rx << STREAM FILE /tmp/e55a5b8146be3fdaf343ce9670b00ea5 "" -- Playing '/tmp/e55a5b8146be3fdaf343ce9670b00ea5' (escape_digits=) (sample_offset 0) <SIP/5000-00000001>AGI Tx >> 200 result=0 endpos=19208 -- <SIP/5000-00000001>AGI Script googletts.agi completed, returning 0 <SIP/5000-00000001>AGI Tx >> 200 result=0 <SIP/5000-00000001>AGI Rx << EXEC AGI googletts.agi,"hola... esto es una prueba",es -- AGI Script Executing Application: (AGI) Options: (googletts.agi,hola... esto es una prueba,es) -- Launched AGI Script /var/lib/asterisk/agi-bin/googletts.agi <SIP/5000-00000001>AGI Tx >> agi_request: googletts.agi <SIP/5000-00000001>AGI Tx >> agi_channel: SIP/5000-00000001 <SIP/5000-00000001>AGI Tx >> agi_language: en <SIP/5000-00000001>AGI Tx >> agi_type: SIP <SIP/5000-00000001>AGI Tx >> agi_uniqueid: 1340733561.1 <SIP/5000-00000001>AGI Tx >> agi_version: 1.8.12.0 <SIP/5000-00000001>AGI Tx >> agi_callerid: 5000 <SIP/5000-00000001>AGI Tx >> agi_calleridname: Max <SIP/5000-00000001>AGI Tx >> agi_callingpres: 0 <SIP/5000-00000001>AGI Tx >> agi_callingani2: 0 <SIP/5000-00000001>AGI Tx >> agi_callington: 0 <SIP/5000-00000001>AGI Tx >> agi_callingtns: 0 <SIP/5000-00000001>AGI Tx >> agi_dnid: unknown <SIP/5000-00000001>AGI Tx >> agi_rdnis: unknown <SIP/5000-00000001>AGI Tx >> agi_context: from-internal <SIP/5000-00000001>AGI Tx >> agi_extension: 650 <SIP/5000-00000001>AGI Tx >> agi_priority: 2 <SIP/5000-00000001>AGI Tx >> agi_enhanced: 0.0 <SIP/5000-00000001>AGI Tx >> agi_accountcode: <SIP/5000-00000001>AGI Tx >> agi_threadid: 140138630993664 <SIP/5000-00000001>AGI Tx >> agi_arg_1: hola... esto es una prueba <SIP/5000-00000001>AGI Tx >> agi_arg_2: es <SIP/5000-00000001>AGI Tx >> <SIP/5000-00000001>AGI Rx << CHANNEL STATUS <SIP/5000-00000001>AGI Tx >> 200 result=6 <SIP/5000-00000001>AGI Rx << STREAM FILE /tmp/9b7f72b037791b2df76848dbed22db27 "" -- Playing '/tmp/9b7f72b037791b2df76848dbed22db27' (escape_digits=) (sample_offset 0) <SIP/5000-00000001>AGI Tx >> 200 result=0 endpos=27637 -- <SIP/5000-00000001>AGI Script googletts.agi completed, returning 0 <SIP/5000-00000001>AGI Tx >> 200 result=0 <SIP/5000-00000001>AGI Rx << HANGUP <SIP/5000-00000001>AGI Tx >> 200 result=1 -- <SIP/5000-00000001>AGI Script agita.agi completed, returning 4 == Spawn extension (from-internal, 650, 2) exited non-zero on 'SIP/5000-00000001' -- Executing [h@from-internal:1] Hangup("SIP/5000-00000001", "") in new stack == Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/5000-00000001'

Here the AGI Debug (and other) outptut from cli

rossella*CLI> == Using SIP RTP TOS bits 184 == Using SIP RTP CoS mark 5 -- Executing [304@from-internal:1] Answer("SIP/390-0000015b", "") in new stack -- Executing [304@from-internal:2] Wait("SIP/390-0000015b", "2") in new stack -- Executing [304@from-internal:3] AGI("SIP/390-0000015b", "googletest3.php") in new stack -- Launched AGI Script /var/lib/asterisk/agi-bin/googletest3.php <SIP/390-0000015b>AGI Tx >> agi_request: googletest3.php <SIP/390-0000015b>AGI Tx >> agi_channel: SIP/390-0000015b <SIP/390-0000015b>AGI Tx >> agi_language: en <SIP/390-0000015b>AGI Tx >> agi_type: SIP <SIP/390-0000015b>AGI Tx >> agi_uniqueid: 1340779510.667 <SIP/390-0000015b>AGI Tx >> agi_version: 1.6.2.13 <SIP/390-0000015b>AGI Tx >> agi_callerid: 390 <SIP/390-0000015b>AGI Tx >> agi_calleridname: device <SIP/390-0000015b>AGI Tx >> agi_callingpres: 0 <SIP/390-0000015b>AGI Tx >> agi_callingani2: 0 <SIP/390-0000015b>AGI Tx >> agi_callington: 0 <SIP/390-0000015b>AGI Tx >> agi_callingtns: 0 <SIP/390-0000015b>AGI Tx >> agi_dnid: 304 <SIP/390-0000015b>AGI Tx >> agi_rdnis: unknown <SIP/390-0000015b>AGI Tx >> agi_context: from-internal <SIP/390-0000015b>AGI Tx >> agi_extension: 304 <SIP/390-0000015b>AGI Tx >> agi_priority: 3 <SIP/390-0000015b>AGI Tx >> agi_enhanced: 0.0 <SIP/390-0000015b>AGI Tx >> agi_accountcode: <SIP/390-0000015b>AGI Tx >> agi_threadid: -1234076784 <SIP/390-0000015b>AGI Tx >> <SIP/390-0000015b>AGI Rx << ANSWER <SIP/390-0000015b>AGI Tx >> 200 result=0 <SIP/390-0000015b>AGI Rx << EXEC AGI googletts.agi,"Breve testo in italiano.",it -- AGI Script Executing Application: (AGI) Options: (googletts.agi,Breve testo in italiano.,it) <SIP/390-0000015b>AGI Tx >> 200 result=0 <SIP/390-0000015b>AGI Rx << EXEC AGI googletts.agi,"hola... esto es una prueba",es -- AGI Script Executing Application: (AGI) Options: (googletts.agi,hola... esto es una prueba,es) <SIP/390-0000015b>AGI Tx >> 200 result=0 <SIP/390-0000015b>AGI Rx << HANGUP <SIP/390-0000015b>AGI Tx >> 200 result=1 -- <SIP/390-0000015b>AGI Script googletest3.php completed, returning -1 -- Executing [h@from-internal:1] Macro("SIP/390-0000015b", "hangupcall") in new stack -- Executing [s@macro-hangupcall:1] GotoIf("SIP/390-0000015b", "1?endmixmoncheck") in new stack -- Goto (macro-hangupcall,s,9) -- Executing [s@macro-hangupcall:9] NoOp("SIP/390-0000015b", "End of MIXMON check") in new stack -- Executing [s@macro-hangupcall:10] GotoIf("SIP/390-0000015b", "1?nomeetmemon") in new stack -- Goto (macro-hangupcall,s,15) -- Executing [s@macro-hangupcall:15] NoOp("SIP/390-0000015b", "MEETME_RECORDINGFILE=") in new stack -- Executing [s@macro-hangupcall:16] GotoIf("SIP/390-0000015b", "1?noautomon") in new stack -- Goto (macro-hangupcall,s,18) -- Executing [s@macro-hangupcall:18] NoOp("SIP/390-0000015b", "TOUCH_MONITOR_OUTPUT=") in new stack -- Executing [s@macro-hangupcall:19] GotoIf("SIP/390-0000015b", "1?noautomon2") in new stack -- Goto (macro-hangupcall,s,25) -- Executing [s@macro-hangupcall:25] NoOp("SIP/390-0000015b", "MONITOR_FILENAME=") in new stack -- Executing [s@macro-hangupcall:26] GotoIf("SIP/390-0000015b", "1?skiprg") in new stack -- Goto (macro-hangupcall,s,29) -- Executing [s@macro-hangupcall:29] GotoIf("SIP/390-0000015b", "1?skipblkvm") in new stack -- Goto (macro-hangupcall,s,32) -- Executing [s@macro-hangupcall:32] GotoIf("SIP/390-0000015b", "1?theend") in new stack -- Goto (macro-hangupcall,s,34) -- Executing [s@macro-hangupcall:34] Hangup("SIP/390-0000015b", "") in new stack == Spawn extension (macro-hangupcall, s, 34) exited non-zero on 'SIP/390-0000015b' in macro 'hangupcall' == Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/390-0000015b' rossella*CLI>

In my debug this line (and the others after) are lost

And in mine, the return from the script is

In yours

The fundamental difference between the two is that, in one, the “,” is being treated as separating the program name from its parameters, and in the other, the concatenation of program name and parameters is being treated as the program name.

Is the “,” actually a comma, or is it possibly a variant character, like smart quotes, introduced by a word processor?

In early versions of Asterisk, the delimiter was “|”, but that had changed before 1.6.2.

david, i think you are right.
If i call the php script with this line

(only a “space” between program and parameters)

i can see this in the log

[Jun 27 09:12:43] VERBOSE[17043] netsock.c: == Using SIP RTP TOS bits 184 [Jun 27 09:12:43] VERBOSE[17043] netsock.c: == Using SIP RTP CoS mark 5 [Jun 27 09:12:43] VERBOSE[13290] pbx.c: -- Executing [304@from-internal:1] Answer("SIP/390-00000169", "") in new stack [Jun 27 09:12:43] VERBOSE[13290] pbx.c: -- Executing [304@from-internal:2] Wait("SIP/390-00000169", "2") in new stack [Jun 27 09:12:45] VERBOSE[13290] pbx.c: -- Executing [304@from-internal:3] AGI("SIP/390-00000169", "googletest3.php") in new stack [Jun 27 09:12:45] VERBOSE[13290] res_agi.c: -- Launched AGI Script /var/lib/asterisk/agi-bin/googletest3.php [Jun 27 09:12:46] VERBOSE[13290] res_agi.c: -- AGI Script Executing Application: (AGI) Options: (googletts.agi) [Jun 27 09:12:46] VERBOSE[13290] res_agi.c: -- Launched AGI Script /var/lib/asterisk/agi-bin/googletts.agi [Jun 27 09:12:46] VERBOSE[13290] res_agi.c: -- <SIP/390-00000169>AGI Script googletts.agi completed, returning 0

Naturally it not SPEACK nothing (because the parameters are not passed), but in this case the /var/lib/asterisk/agi-bin/googletts.agi file was executed.

Now … how i can modify the separator between program and parameters??? :frowning:

david … NICE!!!

I try what you say (with “|”)

[code]#!/usr/bin/php -q

<?php set_time_limit(30); require('phpagi.php'); $agi = new AGI(); $agi->answer(); $agi->exec("AGI","googletts.agi|\"Breve testo in italiano.\"|it"); $agi->exec("AGI","googletts.agi|\"hola... esto es una prueba\"|es"); $agi->hangup(); ?>

[/code]

And surprise!!! It Works!!

[Jun 27 10:19:56] VERBOSE[17043] netsock.c: == Using SIP RTP TOS bits 184 [Jun 27 10:19:56] VERBOSE[17043] netsock.c: == Using SIP RTP CoS mark 5 [Jun 27 10:19:56] VERBOSE[14089] pbx.c: -- Executing [304@from-internal:1] Answer("SIP/390-0000019b", "") in new stack [Jun 27 10:19:56] VERBOSE[14089] pbx.c: -- Executing [304@from-internal:2] Wait("SIP/390-0000019b", "2") in new stack [Jun 27 10:19:58] VERBOSE[14089] pbx.c: -- Executing [304@from-internal:3] AGI("SIP/390-0000019b", "googletest3.php") in new stack [Jun 27 10:19:58] VERBOSE[14089] res_agi.c: -- Launched AGI Script /var/lib/asterisk/agi-bin/googletest3.php [Jun 27 10:19:58] VERBOSE[14089] res_agi.c: -- AGI Script Executing Application: (AGI) Options: (googletts.agi|Breve testo in italiano.|it) [Jun 27 10:19:58] VERBOSE[14089] res_agi.c: -- Launched AGI Script /var/lib/asterisk/agi-bin/googletts.agi [Jun 27 10:19:58] VERBOSE[14089] res_agi.c: -- Playing '/tmp/f14dfa348f4918fe3b41ab462dd8b2d9' (escape_digits=) (sample_offset 0) [Jun 27 10:20:01] VERBOSE[14089] res_agi.c: -- <SIP/390-0000019b>AGI Script googletts.agi completed, returning 0 [Jun 27 10:20:01] VERBOSE[14089] res_agi.c: -- AGI Script Executing Application: (AGI) Options: (googletts.agi|hola... esto es una prueba|es) [Jun 27 10:20:01] VERBOSE[14089] res_agi.c: -- Launched AGI Script /var/lib/asterisk/agi-bin/googletts.agi [Jun 27 10:20:01] VERBOSE[14089] res_agi.c: -- Playing '/tmp/6e8c09b9a9a14e65a2d8dc852b0e5aea' (escape_digits=) (sample_offset 0) [Jun 27 10:20:02] VERBOSE[17034] asterisk.c: -- Remote UNIX connection [Jun 27 10:20:02] VERBOSE[14100] asterisk.c: -- Remote UNIX connection disconnected [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [h@macro-dialout-trunk:1] Macro("Local/101@from-internal-f8f7;2", "hangupcall,") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:1] GotoIf("Local/101@from-internal-f8f7;2", "1?endmixmoncheck") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Goto (macro-hangupcall,s,9) [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:9] NoOp("Local/101@from-internal-f8f7;2", "End of MIXMON check") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:10] GotoIf("Local/101@from-internal-f8f7;2", "1?nomeetmemon") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Goto (macro-hangupcall,s,15) [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:15] NoOp("Local/101@from-internal-f8f7;2", "MEETME_RECORDINGFILE=") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:16] GotoIf("Local/101@from-internal-f8f7;2", "1?noautomon") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Goto (macro-hangupcall,s,18) [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:18] NoOp("Local/101@from-internal-f8f7;2", "TOUCH_MONITOR_OUTPUT=") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:19] GotoIf("Local/101@from-internal-f8f7;2", "1?noautomon2") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Goto (macro-hangupcall,s,25) [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:25] NoOp("Local/101@from-internal-f8f7;2", "MONITOR_FILENAME=") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:26] GotoIf("Local/101@from-internal-f8f7;2", "1?skiprg") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Goto (macro-hangupcall,s,29) [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:29] GotoIf("Local/101@from-internal-f8f7;2", "1?skipblkvm") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Goto (macro-hangupcall,s,32) [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:32] GotoIf("Local/101@from-internal-f8f7;2", "1?theend") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Goto (macro-hangupcall,s,34) [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:34] Hangup("Local/101@from-internal-f8f7;2", "") in new stack [Jun 27 10:20:04] VERBOSE[13952] app_macro.c: == Spawn extension (macro-hangupcall, s, 34) exited non-zero on 'Local/101@from-internal-f8f7;2' in macro 'hangupcall' [Jun 27 10:20:04] VERBOSE[13952] features.c: == Spawn extension (macro-dialout-trunk, h, 1) exited non-zero on 'Local/101@from-internal-f8f7;2' [Jun 27 10:20:04] VERBOSE[13952] app_macro.c: == Spawn extension (macro-dialout-trunk, s, 19) exited non-zero on 'Local/101@from-internal-f8f7;2' in macro 'dialout-trunk' [Jun 27 10:20:04] VERBOSE[13952] pbx.c: == Spawn extension (from-internal, 101, 5) exited non-zero on 'Local/101@from-internal-f8f7;2' [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [h@from-internal:1] Macro("Local/101@from-internal-f8f7;2", "hangupcall") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:1] GotoIf("Local/101@from-internal-f8f7;2", "1?endmixmoncheck") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Goto (macro-hangupcall,s,9) [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:9] NoOp("Local/101@from-internal-f8f7;2", "End of MIXMON check") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:10] GotoIf("Local/101@from-internal-f8f7;2", "1?nomeetmemon") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Goto (macro-hangupcall,s,15) [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:15] NoOp("Local/101@from-internal-f8f7;2", "MEETME_RECORDINGFILE=") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:16] GotoIf("Local/101@from-internal-f8f7;2", "1?noautomon") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Goto (macro-hangupcall,s,18) [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:18] NoOp("Local/101@from-internal-f8f7;2", "TOUCH_MONITOR_OUTPUT=") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:19] GotoIf("Local/101@from-internal-f8f7;2", "1?noautomon2") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Goto (macro-hangupcall,s,25) [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:25] NoOp("Local/101@from-internal-f8f7;2", "MONITOR_FILENAME=") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:26] GotoIf("Local/101@from-internal-f8f7;2", "1?skiprg") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Goto (macro-hangupcall,s,29) [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:29] GotoIf("Local/101@from-internal-f8f7;2", "1?skipblkvm") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Goto (macro-hangupcall,s,32) [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:32] GotoIf("Local/101@from-internal-f8f7;2", "1?theend") in new stack [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Goto (macro-hangupcall,s,34) [Jun 27 10:20:04] VERBOSE[13952] pbx.c: -- Executing [s@macro-hangupcall:34] Hangup("Local/101@from-internal-f8f7;2", "") in new stack [Jun 27 10:20:04] VERBOSE[13952] app_macro.c: == Spawn extension (macro-hangupcall, s, 34) exited non-zero on 'Local/101@from-internal-f8f7;2' in macro 'hangupcall' [Jun 27 10:20:04] VERBOSE[13952] pbx.c: == Spawn extension (from-internal, h, 1) exited non-zero on 'Local/101@from-internal-f8f7;2' [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [h@ext-queues:1] Macro("SIP/192.168.69.3-00000197", "hangupcall,") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:1] GotoIf("SIP/192.168.69.3-00000197", "1?endmixmoncheck") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Goto (macro-hangupcall,s,9) [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:9] NoOp("SIP/192.168.69.3-00000197", "End of MIXMON check") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:10] GotoIf("SIP/192.168.69.3-00000197", "1?nomeetmemon") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Goto (macro-hangupcall,s,15) [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:15] NoOp("SIP/192.168.69.3-00000197", "MEETME_RECORDINGFILE=") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:16] GotoIf("SIP/192.168.69.3-00000197", "1?noautomon") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Goto (macro-hangupcall,s,18) [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:18] NoOp("SIP/192.168.69.3-00000197", "TOUCH_MONITOR_OUTPUT=") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:19] GotoIf("SIP/192.168.69.3-00000197", "0?noautomon2") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:20] System("SIP/192.168.69.3-00000197", "test -e /var/spool/asterisk/monitor/q351-20120627-101705-1340785017.799*") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:21] NoOp("SIP/192.168.69.3-00000197", "SYSTEMSTATUS = SUCCESS") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:22] GotoIf("SIP/192.168.69.3-00000197", "0?errornoautomon") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:23] Set("SIP/192.168.69.3-00000197", "CDR(userfield)=audio:/var/spool/asterisk/monitor/q351-20120627-101705-1340785017.799") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:24] NoOp("SIP/192.168.69.3-00000197", "End of MONITOR QUEUE check") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:25] NoOp("SIP/192.168.69.3-00000197", "MONITOR_FILENAME=/var/spool/asterisk/monitor/q351-20120627-101705-1340785017.799") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:26] GotoIf("SIP/192.168.69.3-00000197", "1?skiprg") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Goto (macro-hangupcall,s,29) [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:29] GotoIf("SIP/192.168.69.3-00000197", "0?skipblkvm") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:30] NoOp("SIP/192.168.69.3-00000197", "Cleaning Up Block VM Flag: BLKVM/351/SIP/192.168.69.3-00000197") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:31] NoOp("SIP/192.168.69.3-00000197", "Deleting: BLKVM/351/SIP/192.168.69.3-00000197 TRUE") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:32] GotoIf("SIP/192.168.69.3-00000197", "1?theend") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Goto (macro-hangupcall,s,34) [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:34] Hangup("SIP/192.168.69.3-00000197", "") in new stack [Jun 27 10:20:04] VERBOSE[13951] app_macro.c: == Spawn extension (macro-hangupcall, s, 34) exited non-zero on 'SIP/192.168.69.3-00000197' in macro 'hangupcall' [Jun 27 10:20:04] VERBOSE[13951] features.c: == Spawn extension (ext-queues, h, 1) exited non-zero on 'SIP/192.168.69.3-00000197' [Jun 27 10:20:04] VERBOSE[13951] pbx.c: == Spawn extension (ext-queues, 351, 10) exited non-zero on 'SIP/192.168.69.3-00000197' [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [h@ext-queues:1] Macro("SIP/192.168.69.3-00000197", "hangupcall,") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:1] GotoIf("SIP/192.168.69.3-00000197", "1?endmixmoncheck") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Goto (macro-hangupcall,s,9) [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:9] NoOp("SIP/192.168.69.3-00000197", "End of MIXMON check") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:10] GotoIf("SIP/192.168.69.3-00000197", "1?nomeetmemon") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Goto (macro-hangupcall,s,15) [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:15] NoOp("SIP/192.168.69.3-00000197", "MEETME_RECORDINGFILE=") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:16] GotoIf("SIP/192.168.69.3-00000197", "1?noautomon") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Goto (macro-hangupcall,s,18) [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:18] NoOp("SIP/192.168.69.3-00000197", "TOUCH_MONITOR_OUTPUT=") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:19] GotoIf("SIP/192.168.69.3-00000197", "0?noautomon2") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:20] System("SIP/192.168.69.3-00000197", "test -e /var/spool/asterisk/monitor/q351-20120627-101705-1340785017.799*") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:21] NoOp("SIP/192.168.69.3-00000197", "SYSTEMSTATUS = SUCCESS") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:22] GotoIf("SIP/192.168.69.3-00000197", "0?errornoautomon") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:23] Set("SIP/192.168.69.3-00000197", "CDR(userfield)=audio:/var/spool/asterisk/monitor/q351-20120627-101705-1340785017.799") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:24] NoOp("SIP/192.168.69.3-00000197", "End of MONITOR QUEUE check") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:25] NoOp("SIP/192.168.69.3-00000197", "MONITOR_FILENAME=/var/spool/asterisk/monitor/q351-20120627-101705-1340785017.799") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:26] GotoIf("SIP/192.168.69.3-00000197", "1?skiprg") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Goto (macro-hangupcall,s,29) [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:29] GotoIf("SIP/192.168.69.3-00000197", "0?skipblkvm") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:30] NoOp("SIP/192.168.69.3-00000197", "Cleaning Up Block VM Flag: BLKVM/351/SIP/192.168.69.3-00000197") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:31] NoOp("SIP/192.168.69.3-00000197", "Deleting: BLKVM/351/SIP/192.168.69.3-00000197 ") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:32] GotoIf("SIP/192.168.69.3-00000197", "1?theend") in new stack [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Goto (macro-hangupcall,s,34) [Jun 27 10:20:04] VERBOSE[13951] pbx.c: -- Executing [s@macro-hangupcall:34] Hangup("SIP/192.168.69.3-00000197", "") in new stack [Jun 27 10:20:04] VERBOSE[13951] app_macro.c: == Spawn extension (macro-hangupcall, s, 34) exited non-zero on 'SIP/192.168.69.3-00000197' in macro 'hangupcall' [Jun 27 10:20:04] VERBOSE[13951] pbx.c: == Spawn extension (ext-queues, h, 1) exited non-zero on 'SIP/192.168.69.3-00000197' [Jun 27 10:20:05] VERBOSE[14089] res_agi.c: -- <SIP/390-0000019b>AGI Script googletts.agi completed, returning 0 [Jun 27 10:20:05] VERBOSE[14089] res_agi.c: -- <SIP/390-0000019b>AGI Script googletest3.php completed, returning -1 [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Executing [h@from-internal:1] Macro("SIP/390-0000019b", "hangupcall") in new stack [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Executing [s@macro-hangupcall:1] GotoIf("SIP/390-0000019b", "1?endmixmoncheck") in new stack [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Goto (macro-hangupcall,s,9) [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Executing [s@macro-hangupcall:9] NoOp("SIP/390-0000019b", "End of MIXMON check") in new stack [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Executing [s@macro-hangupcall:10] GotoIf("SIP/390-0000019b", "1?nomeetmemon") in new stack [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Goto (macro-hangupcall,s,15) [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Executing [s@macro-hangupcall:15] NoOp("SIP/390-0000019b", "MEETME_RECORDINGFILE=") in new stack [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Executing [s@macro-hangupcall:16] GotoIf("SIP/390-0000019b", "1?noautomon") in new stack [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Goto (macro-hangupcall,s,18) [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Executing [s@macro-hangupcall:18] NoOp("SIP/390-0000019b", "TOUCH_MONITOR_OUTPUT=") in new stack [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Executing [s@macro-hangupcall:19] GotoIf("SIP/390-0000019b", "1?noautomon2") in new stack [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Goto (macro-hangupcall,s,25) [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Executing [s@macro-hangupcall:25] NoOp("SIP/390-0000019b", "MONITOR_FILENAME=") in new stack [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Executing [s@macro-hangupcall:26] GotoIf("SIP/390-0000019b", "1?skiprg") in new stack [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Goto (macro-hangupcall,s,29) [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Executing [s@macro-hangupcall:29] GotoIf("SIP/390-0000019b", "1?skipblkvm") in new stack [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Goto (macro-hangupcall,s,32) [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Executing [s@macro-hangupcall:32] GotoIf("SIP/390-0000019b", "1?theend") in new stack [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Goto (macro-hangupcall,s,34) [Jun 27 10:20:05] VERBOSE[14089] pbx.c: -- Executing [s@macro-hangupcall:34] Hangup("SIP/390-0000019b", "") in new stack [Jun 27 10:20:05] VERBOSE[14089] app_macro.c: == Spawn extension (macro-hangupcall, s, 34) exited non-zero on 'SIP/390-0000019b' in macro 'hangupcall' [Jun 27 10:20:05] VERBOSE[14089] pbx.c: == Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/390-0000019b'

I don’t know why my AGI accept old delimeter … but this is.
Many thanks at navaismo and david … i can “mark this topic as SOLVED!!” :smile:
Thank you all for the precious help.
Mauro.