Debugging Asterisk AGI with PHPAGI and Festival


 
Thread Tools Search this Thread
Special Forums News, Links, Events and Announcements UNIX and Linux RSS News Debugging Asterisk AGI with PHPAGI and Festival
# 1  
Old 03-10-2008
Debugging Asterisk AGI with PHPAGI and Festival

Mon, 10 Mar 2008 19:00:00 GMT
Programming the Asterisk open source PBX via the Asterisk Gateway Interface (AGI) is a fun but exasperating exercise for the telephony programmer. It is fun since it can make a telephone dance, but frustrating because errors and debugging information can be difficult to catch since status information arrives on multiple channels: audible, Asterisk console, and STDERR. You can make the process of debugging a bit easier with the assistance of PHPAGI and Festival.


Source...
Login or Register to Ask a Question

Previous Thread | Next Thread

2 More Discussions You Might Find Interesting

1. UNIX and Linux Applications

Change voice in festival

I installed festival under /opt/TTS so presume that precedes in the following unless noted otherwise. I examined festival/lib/siteinit.scm and found the default voice was: voice_cmu_us_awb_arctic_hts (which I did not include with the install) which doesn't matter because the lin is commented... (0 Replies)
Discussion started by: slak0
0 Replies

2. UNIX and Linux Applications

Festival halting

I finally got festival text 2 speech to work. I followed a set of instructions but had to make edits to set it up to work (albeit a few warnings). At the end I tried using quit with double quotes inside parentheses and without but could not stop the program (i.e. comes back with "festival>"). ... (0 Replies)
Discussion started by: slak0
0 Replies
Login or Register to Ask a Question
funparamget(3)							SAORD Documentation						    funparamget(3)

NAME
FunParamGet - get a Funtools param value SYNOPSIS
#include <funtools.h> int FunParamGetb(Fun fun, char *name, int n, int defval, int *got) int FunParamGeti(Fun fun, char *name, int n, int defval, int *got) double FunParamGetd(Fun fun, char *name, int n, double defval, int *got) char *FunParamGets(Fun fun, char *name, int n, char *defval, int *got) DESCRIPTION
The four routines FunParamGetb(), FunParamGeti(), FunParamGetd(), and FunParamGets(), return the value of a FITS header parameter as a boolean, int, double, and string, respectively. The string returned by FunParamGets() is a malloc'ed copy of the header value and should be freed when no longer needed. The first argument is the Fun handle associated with the FITS header being accessed. Normally, the header is associated with the FITS extension that you opened with FunOpen(). However, you can use FunInfoPut() to specify access of the primary header. In particular, if you set the FUN_PRIMARYHEADER parameter to 1, then the primary header is used for all parameter access until the value is reset to 0. For exam- ple: int val; FunParamGeti(fun, "NAXIS", 1, 0, &got); # current header val=1; FunInfoPut(fun, FUN_PRIMARYHEADER, &val, 0); # switch to ... FunParamGeti(fun, "NAXIS", 1, 0, &got); # ... primary header FunParamGeti(fun, "NAXIS", 2, 0, &got); # ... primary header val=0; FunInfoPut(fun, FUN_PRIMARYHEADER, &val, 0); # switch back to ... FunParamGeti(fun, "NAXIS", 2, 0, &got); # current header Alternatively, you can use the FUN_PRIMARY macro to access parameters from the primary header on a per-parameter basis: FunParamGeti(fun, "NAXIS1", 0, 0, &got); # current header FunParamGeti(FUN_PRIMARY(fun), "NAXIS1", 0, 0, &got); # primary header NB - FUN_PRIMARY is deprecated. It makes use of a global parameter and therefore will not not appropriate for threaded applications, when we make funtools thread-safe. We recommend use of FunInfoPut() to switch between the extension header and the primary header. For output data, access to the primary header is only possible until the header is written out, which usually takes place when the first data are written. The second argument is the name of the parameter to access. The third n argument, if non-zero, is an integer that will be added as a suf- fix to the parameter name. This makes it easy to use a simple loop to process parameters having the same root name. For example, to gather up all values of TLMIN and TLMAX for each column in a binary table, you can use: for(i=0, got=1; got; i++){ fun->cols[i]->tlmin = (int)FunParamGeti(fun, "TLMIN", i+1, 0.0, &got); fun->cols[i]->tlmax = (int)FunParamGeti(fun, "TLMAX", i+1, 0.0, &got); } The fourth defval argument is the default value to return if the parameter does not exist. Note that the data type of this parameter is different for each specific FunParamGet() call. The final got argument will be 0 if no param was found. Otherwise the data type of the parameter is returned as follows: FUN_PAR_UNKNOWN ('u'), FUN_PAR_COMMENT ('c'), FUN_PAR_LOGICAL ('l'), FUN_PAR_INTEGER ('i'), FUN_PAR_STRING ('s'), FUN_PAR_REAL ('r'), FUN_PAR_COMPLEX ('x'). These routines return the value of the header parameter, or the specified default value if the header parameter does not exist. The returned value is a malloc'ed string and should be freed when no longer needed. By default, FunParamGets() returns the string value of the named parameter. However, you can use FunInfoPut() to retrieve the raw 80-character FITS card instead. In particular, if you set the FUN_RAWPARAM parameter to 1, then card images will be returned by Fun- ParamGets() until the value is reset to 0. Alternatively, if the FUN_RAW macro is applied to the name, then the 80-character raw FITS card is returned instead. NB - FUN_RAW is deprecated. It makes use of a global parameter and therefore will not not appropriate for threaded applications, when we make funtools thread-safe. We recommend use of FunInfoPut() to switch between the extension header and the primary header. Note that in addition to the behaviors described above, the routine FunParamGets() will return the 80 raw characters of the nth FITS card (including the comment) if name is specified as NULL and n is positive. For example, to loop through all FITS header cards in a given extension and print out the raw card, use: for(i=1; ;i++){ if( (s = FunParamGets(fun, NULL, i, NULL, &got)) ){ fprintf(stdout, "%.80s ", s); free(s); } else{ break; } } SEE ALSO
See funtools(7) for a list of Funtools help pages version 1.4.2 January 2, 2008 funparamget(3)