[asterisk-users] AGI command
Eric Wieling
EWieling at nyigc.com
Sun Jan 20 10:15:23 CST 2013
Stop Asterisk. Start Asterisk as "asterisk -cvvvd" then in the CLI issue the command "agi set debug on".
Starting Asterisk as this command will make it run in the foreground and show you STDERR. You do not normally get to see STDERR when running AGIs in Asterisk. Since Asterisk is running in the foreground, if you do a ctrl-S to stop output it pauses Asterisk's call processing. Remember that.
This should help you figure out what is wrong. Personally, I use the PHPAGI library and don't worry about all the low level stuff.
-----Original Message-----
From: asterisk-users-bounces at lists.digium.com [mailto:asterisk-users-bounces at lists.digium.com] On Behalf Of Muhammad
Sent: Sunday, January 20, 2013 6:46 AM
To: Asterisk Users Mailing List - Non-Commercial Discussion
Subject: Re: [asterisk-users] AGI command
Thanks Salman.
Here is my cli debug when run agi:
-- Launched AGI Script /var/lib/asterisk/agi-bin/testAGI.php
-- <SIP/101-00000007>AGI Script testAGI.php completed, returning 0
and here is my php agi source code:
#!/usr/bin/php -q
<?php
error_reporting(E_ALL);
ob_implicit_flush(false);
set_time_limit(6);
$stdin = fopen('php://stdin', 'r');
$stdlog = fopen('tmp/agi_log.log', 'w');
$debug = false;
// Read input from Asterisk and output via $astOutput *
function astRead()
{
global $stdin, $debug, $stdlog;
$astOutput = str_replace("\n", "", fgets($stdin, 4096));
if ($debug) fputs($stdlog, "read: $input\n");
return $astOutput;
}
// Write AGI command to Asterisk
function astWrite($agiCommand)
{
global $debug, $stdlog;
if ($debug) fputs($stdlog, "write: $agiCommand\n");
echo $agiCommand."\n";
}
// Handling execution input from Asterisk
while (!feof($stdin))
{
$temp = fgets($stdin);
$temp = str_replace("\n","",$temp);
$s = explode(":",$temp);
$agivar[$s[0]] = trim($s[1]);
if ($temp == "")
{
break;
}
}
// Operational Code starts here
astWrite("STREAM FILE demo-congrats #");
astRead();
astWrite("SAY NUMBER 123456 #");
astRead();
// Finalization of AGI script and clean-ups
fclose ($stdin);
fclose ($stdlog);
exit(0);
as you see, it was return 0. agi is running successful or not?
[from-internal]
exten => _X.,1,NOOP(++++++Invoking AGI Script now(before agi): MGH++++++++)
exten => _X.,2,AGI(testAGI.php)
exten => _X.,3,NOOP(***************After AGI********************)
exten => _X.,100,DeadAGI(getCDRLog.php)
On Sat, Jan 19, 2013 at 11:49 AM, Salman Zafar <msalman212 at gmail.com> wrote:
You seriously need to go through Asterisk text books available online or at-least read the manual.
NoOP is just a No Operation, so its just printing text in your case.
To execute an AGI you need to call it from dialpan like exten => _X.,n,AGI(name_of_AGI), agi should be appropriate directory, which I reckon you already know.
On Sat, Jan 19, 2013 at 1:06 PM, Muhammad <mohammad.ghazavi at gmail.com> wrote:
Thanks Steve.
but explain me more about your dialplan codes. Im a beginner.
exten => _X.,1,NOOP(Invoking AGI Script now)
what is "Invoking AGI Script now" and what should I do in this method?
what is _X. it seems it is dynamic extension number.
and "n"?
Thanks
On Wed, Jan 16, 2013 at 11:12 AM, SamyGo <govoiper at gmail.com> wrote:
Hi,
Please see my comments in line.
Regards,
Sammy
On Wed, Jan 16, 2013 at 12:13 PM, Zohair Raza <engineerzuhairraza at gmail.com> wrote:
On Wed, Jan 16, 2013 at 11:01 AM, Muhammad <mohammad.ghazavi at gmail.com> wrote:
Thanks Zohair!
I wrote some php code to working with AGI, but it dosen't work.
I don't know how can run it. please explain me when I put my php code inside /var/lib/asterisk/agi-bin so, what should I do after that.
Make sure Asterisk has access to your AGI script, and make it executable (chmod u+x agi.php). Also make sure it has shebang (!#/usr/bin/php)
Besides that you'll need to create SIP users and define their context=my-agi and in your context call this AGI.
[my-agi]
exten => _X.,1,NOOP(Invoking AGI Script now)
same => n,AGI(my-agi-filename.php)
same => n,NOOP(Any other post AGI things here)
same => n,Hangup()
and the second one, how can limit users to call just my number in list at database and permit to call another numbers.
That depends on logic in your script, you can also separate users by contexts
Alternative to the above approach there are other possibilities, like applying a GotoIF() condition in the [my-agi] dialplan code above restricting a particluar number, or Instead of _X. in the above code implement some regex to enable only local area dialing i.e
exten => _78XXXXXX,1,NOOP(Invoking AGI Script now for dialled string starting with 78 and 8 digit in length)
If you don't like any of the above because you've a list of numbers which should be dialled only in a DB.table then in your php-AGI script do some restrictions based on that table.
On Tue, Jan 15, 2013 at 12:39 PM, Zohair Raza <engineerzuhairraza at gmail.com> wrote:
you need to run full command, like
agi show commands topic answer
agi show commands topic gosub
agi set debug on
Regards,
Zohair Raza
On Tue, Jan 15, 2013 at 1:05 PM, Muhammad <mohammad.ghazavi at gmail.com> wrote:
Hi,
in CLI, I type agi show or other agi commad, but response me "command not found".
How can see agi is work normally in my server?
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
--
Regards
**************************
Muhammad Salman
***************************
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
More information about the asterisk-users
mailing list