<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <!-- template designed by Marco Von Ballmoos --> <title>File Source for phpagi.php</title> <link rel="stylesheet" href="../media/stylesheet.css" /> <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/> </head> <body> <h1>Source for file phpagi.php</h1> <p>Documentation is available at <a href="../phpAGI/_phpagi.php.html">phpagi.php</a></p> <div class="src-code"> <div class="src-code"><ol><li><div class="src-line"><a name="a1"></a><span class="src-php"><?php</span></div></li> <li><div class="src-line"><a name="a2"></a> </div></li> <li><div class="src-line"><a name="a3"></a><span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a4"></a><span class="src-doc">* phpagi.php : PHP AGI Functions for Asterisk</span></div></li> <li><div class="src-line"><a name="a5"></a><span class="src-doc">* Website: http://phpagi.sourceforge.net/</span></div></li> <li><div class="src-line"><a name="a6"></a><span class="src-doc">*</span></div></li> <li><div class="src-line"><a name="a7"></a><span class="src-doc">* $Id$</span></div></li> <li><div class="src-line"><a name="a8"></a><span class="src-doc">*</span></div></li> <li><div class="src-line"><a name="a9"></a><span class="src-doc">* Copyright (c) 2003 - 2010 Matthew Asham <matthew@ochrelabs.com>, David Eder <david@eder.us> and others</span></div></li> <li><div class="src-line"><a name="a10"></a><span class="src-doc">* All Rights Reserved.</span></div></li> <li><div class="src-line"><a name="a11"></a><span class="src-doc">*</span></div></li> <li><div class="src-line"><a name="a12"></a><span class="src-doc">* This software is released under the terms of the GNU Lesser General Public License v2.1</span></div></li> <li><div class="src-line"><a name="a13"></a><span class="src-doc">* A copy of which is available from http://www.gnu.org/copyleft/lesser.html</span></div></li> <li><div class="src-line"><a name="a14"></a><span class="src-doc">*</span></div></li> <li><div class="src-line"><a name="a15"></a><span class="src-doc">* We would be happy to list your phpagi based application on the phpagi</span></div></li> <li><div class="src-line"><a name="a16"></a><span class="src-doc">* website. Drop me an Email if you'd like us to list your program.</span></div></li> <li><div class="src-line"><a name="a17"></a><span class="src-doc">* </span></div></li> <li><div class="src-line"><a name="a18"></a><span class="src-doc">*</span></div></li> <li><div class="src-line"><a name="a19"></a><span class="src-doc">* Written for PHP 4.3.4, should work with older PHP 4.x versions.</span></div></li> <li><div class="src-line"><a name="a20"></a><span class="src-doc">*</span></div></li> <li><div class="src-line"><a name="a21"></a><span class="src-doc">* Please submit bug reports, patches, etc to http://sourceforge.net/projects/phpagi/</span></div></li> <li><div class="src-line"><a name="a22"></a><span class="src-doc">* Gracias. :)</span></div></li> <li><div class="src-line"><a name="a23"></a><span class="src-doc">*</span></div></li> <li><div class="src-line"><a name="a24"></a><span class="src-doc">*</span></div></li> <li><div class="src-line"><a name="a25"></a><span class="src-doc">* </span><span class="src-doc-coretag">@package</span><span class="src-doc"> phpAGI</span></div></li> <li><div class="src-line"><a name="a26"></a><span class="src-doc">* </span><span class="src-doc-coretag">@version</span><span class="src-doc"> 2.0</span></div></li> <li><div class="src-line"><a name="a27"></a><span class="src-doc">*/</span></div></li> <li><div class="src-line"><a name="a28"></a> </div></li> <li><div class="src-line"><a name="a29"></a><span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/class_exists">class_exists</a><span class="src-sym">(</span><span class="src-str">'AGI_AsteriskManager'</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a30"></a><span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a31"></a> <span class="src-inc">require_once</span><span class="src-sym">(</span><span class="src-id">dirname</span><span class="src-sym">(</span>__FILE__<span class="src-sym">) </span>. <span class="src-id">DIRECTORY_SEPARATOR </span>. <span class="src-str">'phpagi-asmanager.php'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a32"></a><span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a33"></a> </div></li> <li><div class="src-line"><a name="a34"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'AST_CONFIG_DIR'</span><span class="src-sym">, </span><span class="src-str">'/etc/asterisk/'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a35"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'AST_SPOOL_DIR'</span><span class="src-sym">, </span><span class="src-str">'/var/spool/asterisk/'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a36"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'AST_TMP_DIR'</span><span class="src-sym">, </span><span class="src-id">AST_SPOOL_DIR </span>. <span class="src-str">'/tmp/'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a37"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'DEFAULT_PHPAGI_CONFIG'</span><span class="src-sym">, </span><span class="src-id">AST_CONFIG_DIR </span>. <span class="src-str">'/phpagi.conf'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a38"></a> </div></li> <li><div class="src-line"><a name="a39"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'AST_DIGIT_ANY'</span><span class="src-sym">, </span><span class="src-str">'0123456789#*'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a40"></a> </div></li> <li><div class="src-line"><a name="a41"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'AGIRES_OK'</span><span class="src-sym">, </span><span class="src-num">200</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a42"></a> </div></li> <li><div class="src-line"><a name="a43"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'AST_STATE_DOWN'</span><span class="src-sym">, </span><span class="src-num">0</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a44"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'AST_STATE_RESERVED'</span><span class="src-sym">, </span><span class="src-num">1</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a45"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'AST_STATE_OFFHOOK'</span><span class="src-sym">, </span><span class="src-num">2</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a46"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'AST_STATE_DIALING'</span><span class="src-sym">, </span><span class="src-num">3</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a47"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'AST_STATE_RING'</span><span class="src-sym">, </span><span class="src-num">4</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a48"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'AST_STATE_RINGING'</span><span class="src-sym">, </span><span class="src-num">5</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a49"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'AST_STATE_UP'</span><span class="src-sym">, </span><span class="src-num">6</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a50"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'AST_STATE_BUSY'</span><span class="src-sym">, </span><span class="src-num">7</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a51"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'AST_STATE_DIALING_OFFHOOK'</span><span class="src-sym">, </span><span class="src-num">8</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a52"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'AST_STATE_PRERING'</span><span class="src-sym">, </span><span class="src-num">9</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a53"></a> </div></li> <li><div class="src-line"><a name="a54"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'AUDIO_FILENO'</span><span class="src-sym">, </span><span class="src-num">3</span><span class="src-sym">)</span><span class="src-sym">; </span><span class="src-comm">// STDERR_FILENO + 1</span></div></li> <li><div class="src-line"><a name="a55"></a> </div></li> <li><div class="src-line"><a name="a56"></a><span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a57"></a><span class="src-doc">* AGI class</span></div></li> <li><div class="src-line"><a name="a58"></a><span class="src-doc">*</span></div></li> <li><div class="src-line"><a name="a59"></a><span class="src-doc">* </span><span class="src-doc-coretag">@package</span><span class="src-doc"> phpAGI</span></div></li> <li><div class="src-line"><a name="a60"></a><span class="src-doc">* </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-Asterisk+agi</span></div></li> <li><div class="src-line"><a name="a61"></a><span class="src-doc">* </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/dtmf.php Get DTMF tones from the user and say the digits</span></div></li> <li><div class="src-line"><a name="a62"></a><span class="src-doc">* </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/input.php Get text input from the user and say it back</span></div></li> <li><div class="src-line"><a name="a63"></a><span class="src-doc">* </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/ping.php Ping an IP address</span></div></li> <li><div class="src-line"><a name="a64"></a><span class="src-doc">*/</span></div></li> <li><div class="src-line"><a name="a65"></a><span class="src-key">class </span><a href="../phpAGI/AGI.html">AGI</a></div></li> <li><div class="src-line"><a name="a66"></a><span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a67"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a68"></a><span class="src-doc"> * Request variables read in on initialization.</span></div></li> <li><div class="src-line"><a name="a69"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a70"></a><span class="src-doc"> * Often contains any/all of the following:</span></div></li> <li><div class="src-line"><a name="a71"></a><span class="src-doc"> * agi_request - name of agi script</span></div></li> <li><div class="src-line"><a name="a72"></a><span class="src-doc"> * agi_channel - current channel</span></div></li> <li><div class="src-line"><a name="a73"></a><span class="src-doc"> * agi_language - current language</span></div></li> <li><div class="src-line"><a name="a74"></a><span class="src-doc"> * agi_type - channel type (SIP, ZAP, IAX, ...)</span></div></li> <li><div class="src-line"><a name="a75"></a><span class="src-doc"> * agi_uniqueid - unique id based on unix time</span></div></li> <li><div class="src-line"><a name="a76"></a><span class="src-doc"> * agi_callerid - callerID string</span></div></li> <li><div class="src-line"><a name="a77"></a><span class="src-doc"> * agi_dnid - dialed number id</span></div></li> <li><div class="src-line"><a name="a78"></a><span class="src-doc"> * agi_rdnis - referring DNIS number</span></div></li> <li><div class="src-line"><a name="a79"></a><span class="src-doc"> * agi_context - current context</span></div></li> <li><div class="src-line"><a name="a80"></a><span class="src-doc"> * agi_extension - extension dialed</span></div></li> <li><div class="src-line"><a name="a81"></a><span class="src-doc"> * agi_priority - current priority</span></div></li> <li><div class="src-line"><a name="a82"></a><span class="src-doc"> * agi_enhanced - value is 1.0 if started as an EAGI script</span></div></li> <li><div class="src-line"><a name="a83"></a><span class="src-doc"> * agi_accountcode - set by SetAccount in the dialplan</span></div></li> <li><div class="src-line"><a name="a84"></a><span class="src-doc"> * agi_network - value is yes if this is a fastagi</span></div></li> <li><div class="src-line"><a name="a85"></a><span class="src-doc"> * agi_network_script - name of the script to execute</span></div></li> <li><div class="src-line"><a name="a86"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a87"></a><span class="src-doc"> * NOTE: program arguments are still in $_SERVER['argv'].</span></div></li> <li><div class="src-line"><a name="a88"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a89"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">array </span></div></li> <li><div class="src-line"><a name="a90"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></div></li> <li><div class="src-line"><a name="a91"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a92"></a> <span class="src-key">var </span><a href="../phpAGI/AGI.html#var$request">$request</a><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a93"></a> </div></li> <li><div class="src-line"><a name="a94"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a95"></a><span class="src-doc"> * Config variables</span></div></li> <li><div class="src-line"><a name="a96"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a97"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">array </span></div></li> <li><div class="src-line"><a name="a98"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></div></li> <li><div class="src-line"><a name="a99"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a100"></a> <span class="src-key">var </span><a href="../phpAGI/AGI.html#var$config">$config</a><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a101"></a> </div></li> <li><div class="src-line"><a name="a102"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a103"></a><span class="src-doc"> * Asterisk Manager</span></div></li> <li><div class="src-line"><a name="a104"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a105"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">AGI_AsteriskManager </span></div></li> <li><div class="src-line"><a name="a106"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></div></li> <li><div class="src-line"><a name="a107"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a108"></a> <span class="src-key">var </span><a href="../phpAGI/AGI.html#var$asmanager">$asmanager</a><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a109"></a> </div></li> <li><div class="src-line"><a name="a110"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a111"></a><span class="src-doc"> * Input Stream</span></div></li> <li><div class="src-line"><a name="a112"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a113"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></div></li> <li><div class="src-line"><a name="a114"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a115"></a> <span class="src-key">var </span><a href="../phpAGI/AGI.html#var$in">$in</a> = <span class="src-id">NULL</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a116"></a> </div></li> <li><div class="src-line"><a name="a117"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a118"></a><span class="src-doc"> * Output Stream</span></div></li> <li><div class="src-line"><a name="a119"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a120"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></div></li> <li><div class="src-line"><a name="a121"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a122"></a> <span class="src-key">var </span><a href="../phpAGI/AGI.html#var$out">$out</a> = <span class="src-id">NULL</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a123"></a> </div></li> <li><div class="src-line"><a name="a124"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a125"></a><span class="src-doc"> * Audio Stream</span></div></li> <li><div class="src-line"><a name="a126"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a127"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></div></li> <li><div class="src-line"><a name="a128"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a129"></a> <span class="src-key">var </span><a href="../phpAGI/AGI.html#var$audio">$audio</a> = <span class="src-id">NULL</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a130"></a> </div></li> <li><div class="src-line"><a name="a131"></a> </div></li> <li><div class="src-line"><a name="a132"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a133"></a><span class="src-doc"> * Application option delimiter</span></div></li> <li><div class="src-line"><a name="a134"></a><span class="src-doc"> * </span></div></li> <li><div class="src-line"><a name="a135"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></div></li> <li><div class="src-line"><a name="a136"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a137"></a> <span class="src-key">public </span><a href="../phpAGI/AGI.html#var$option_delim">$option_delim</a> = <span class="src-str">","</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a138"></a> </div></li> <li><div class="src-line"><a name="a139"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a140"></a><span class="src-doc"> * Constructor</span></div></li> <li><div class="src-line"><a name="a141"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a142"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$config </span><span class="src-doc">is the name of the config file to parse</span></div></li> <li><div class="src-line"><a name="a143"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">array </span><span class="src-doc-var">$optconfig </span><span class="src-doc">is an array of configuration vars and vals, stuffed into $this->config['phpagi']</span></div></li> <li><div class="src-line"><a name="a144"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a145"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#method__construct">__construct</a><span class="src-sym">(</span><span class="src-var">$config</span>=<span class="src-id">NULL</span><span class="src-sym">, </span><span class="src-var">$optconfig</span>=<span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a146"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a147"></a> <span class="src-comm">// load config</span></div></li> <li><div class="src-line"><a name="a148"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/is_null">is_null</a><span class="src-sym">(</span><span class="src-var">$config</span><span class="src-sym">) </span>&& <a href="http://www.php.net/file_exists">file_exists</a><span class="src-sym">(</span><span class="src-var">$config</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a149"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a> = <a href="http://www.php.net/parse_ini_file">parse_ini_file</a><span class="src-sym">(</span><span class="src-var">$config</span><span class="src-sym">, </span><span class="src-id">true</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a150"></a> <span class="src-key">elseif</span><span class="src-sym">(</span><a href="http://www.php.net/file_exists">file_exists</a><span class="src-sym">(</span><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineDEFAULT_PHPAGI_CONFIG">DEFAULT_PHPAGI_CONFIG</a></span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a151"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a> = <a href="http://www.php.net/parse_ini_file">parse_ini_file</a><span class="src-sym">(</span><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineDEFAULT_PHPAGI_CONFIG">DEFAULT_PHPAGI_CONFIG</a></span><span class="src-sym">, </span><span class="src-id">true</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a152"></a> </div></li> <li><div class="src-line"><a name="a153"></a> <span class="src-comm">// If optconfig is specified, stuff vals and vars into 'phpagi' config array.</span></div></li> <li><div class="src-line"><a name="a154"></a> <span class="src-key">foreach</span><span class="src-sym">(</span><span class="src-var">$optconfig </span><span class="src-key">as </span><span class="src-var">$var</span>=><span class="src-var">$val</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a155"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'phpagi'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-var">$var</span><span class="src-sym">] </span>= <span class="src-var">$val</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a156"></a> </div></li> <li><div class="src-line"><a name="a157"></a> <span class="src-comm">// add default values to config for uninitialized values</span></div></li> <li><div class="src-line"><a name="a158"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span>isset<span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'phpagi'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'error_handler'</span><span class="src-sym">]</span><span class="src-sym">)) </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'phpagi'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'error_handler'</span><span class="src-sym">] </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a159"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span>isset<span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'phpagi'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'debug'</span><span class="src-sym">]</span><span class="src-sym">)) </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'phpagi'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'debug'</span><span class="src-sym">] </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a160"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span>isset<span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'phpagi'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'admin'</span><span class="src-sym">]</span><span class="src-sym">)) </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'phpagi'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'admin'</span><span class="src-sym">] </span>= <span class="src-id">NULL</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a161"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span>isset<span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'phpagi'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'tempdir'</span><span class="src-sym">]</span><span class="src-sym">)) </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'phpagi'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'tempdir'</span><span class="src-sym">] </span>= <span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAST_TMP_DIR">AST_TMP_DIR</a></span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a162"></a> </div></li> <li><div class="src-line"><a name="a163"></a> <span class="src-comm">// festival TTS config</span></div></li> <li><div class="src-line"><a name="a164"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span>isset<span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'festival'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'text2wave'</span><span class="src-sym">]</span><span class="src-sym">)) </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'festival'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'text2wave'</span><span class="src-sym">] </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodwhich">which</a><span class="src-sym">(</span><span class="src-str">'text2wave'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a165"></a> </div></li> <li><div class="src-line"><a name="a166"></a> <span class="src-comm">// swift TTS config</span></div></li> <li><div class="src-line"><a name="a167"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span>isset<span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'cepstral'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'swift'</span><span class="src-sym">]</span><span class="src-sym">)) </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'cepstral'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'swift'</span><span class="src-sym">] </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodwhich">which</a><span class="src-sym">(</span><span class="src-str">'swift'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a168"></a> </div></li> <li><div class="src-line"><a name="a169"></a> <a href="http://www.php.net/ob_implicit_flush">ob_implicit_flush</a><span class="src-sym">(</span><span class="src-id">true</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a170"></a> </div></li> <li><div class="src-line"><a name="a171"></a> <span class="src-comm">// open stdin & stdout</span></div></li> <li><div class="src-line"><a name="a172"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$in">in</a> = <a href="http://www.php.net/defined">defined</a><span class="src-sym">(</span><span class="src-str">'STDIN'</span><span class="src-sym">) </span>? <span class="src-id">STDIN </span>: <a href="http://www.php.net/fopen">fopen</a><span class="src-sym">(</span><span class="src-str">'php://stdin'</span><span class="src-sym">, </span><span class="src-str">'r'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a173"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$out">out</a> = <a href="http://www.php.net/defined">defined</a><span class="src-sym">(</span><span class="src-str">'STDOUT'</span><span class="src-sym">) </span>? <span class="src-id">STDOUT </span>: <a href="http://www.php.net/fopen">fopen</a><span class="src-sym">(</span><span class="src-str">'php://stdout'</span><span class="src-sym">, </span><span class="src-str">'w'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a174"></a> </div></li> <li><div class="src-line"><a name="a175"></a> <span class="src-comm">// initialize error handler</span></div></li> <li><div class="src-line"><a name="a176"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'phpagi'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'error_handler'</span><span class="src-sym">] </span>== <span class="src-id">true</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a177"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a178"></a> <a href="http://www.php.net/set_error_handler">set_error_handler</a><span class="src-sym">(</span><span class="src-str">'phpagi_error_handler'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a179"></a> <span class="src-key">global </span><span class="src-var">$phpagi_error_handler_email</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a180"></a> <span class="src-var">$phpagi_error_handler_email </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'phpagi'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'admin'</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a181"></a> <a href="http://www.php.net/error_reporting">error_reporting</a><span class="src-sym">(</span><span class="src-id">E_ALL</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a182"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a183"></a> </div></li> <li><div class="src-line"><a name="a184"></a> <span class="src-comm">// make sure temp folder exists</span></div></li> <li><div class="src-line"><a name="a185"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodmake_folder">make_folder</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'phpagi'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'tempdir'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a186"></a> </div></li> <li><div class="src-line"><a name="a187"></a> <span class="src-comm">// read the request</span></div></li> <li><div class="src-line"><a name="a188"></a> <span class="src-var">$str </span>= <a href="http://www.php.net/fgets">fgets</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$in">in</a><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a189"></a> <span class="src-key">while</span><span class="src-sym">(</span><span class="src-var">$str </span>!= <span class="src-str">"\n"</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a190"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a191"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$request">request</a><span class="src-sym">[</span><a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-var">$str</span><span class="src-sym">, </span><span class="src-num">0</span><span class="src-sym">, </span><a href="http://www.php.net/strpos">strpos</a><span class="src-sym">(</span><span class="src-var">$str</span><span class="src-sym">, </span><span class="src-str">':'</span><span class="src-sym">))</span><span class="src-sym">] </span>= <a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-var">$str</span><span class="src-sym">, </span><a href="http://www.php.net/strpos">strpos</a><span class="src-sym">(</span><span class="src-var">$str</span><span class="src-sym">, </span><span class="src-str">':'</span><span class="src-sym">) </span>+ <span class="src-num">1</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a192"></a> <span class="src-var">$str </span>= <a href="http://www.php.net/fgets">fgets</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$in">in</a><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a193"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a194"></a> </div></li> <li><div class="src-line"><a name="a195"></a> <span class="src-comm">// open audio if eagi detected</span></div></li> <li><div class="src-line"><a name="a196"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$request">request</a><span class="src-sym">[</span><span class="src-str">'agi_enhanced'</span><span class="src-sym">] </span>== <span class="src-str">'1.0'</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a197"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a198"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/file_exists">file_exists</a><span class="src-sym">(</span><span class="src-str">'/proc/' </span>. <a href="http://www.php.net/getmypid">getmypid</a><span class="src-sym">(</span><span class="src-sym">) </span>. <span class="src-str">'/fd/3'</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a199"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$audio">audio</a> = <a href="http://www.php.net/fopen">fopen</a><span class="src-sym">(</span><span class="src-str">'/proc/' </span>. <a href="http://www.php.net/getmypid">getmypid</a><span class="src-sym">(</span><span class="src-sym">) </span>. <span class="src-str">'/fd/3'</span><span class="src-sym">, </span><span class="src-str">'r'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a200"></a> <span class="src-key">elseif</span><span class="src-sym">(</span><a href="http://www.php.net/file_exists">file_exists</a><span class="src-sym">(</span><span class="src-str">'/dev/fd/3'</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a201"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a202"></a> <span class="src-comm">// may need to mount fdescfs</span></div></li> <li><div class="src-line"><a name="a203"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$audio">audio</a> = <a href="http://www.php.net/fopen">fopen</a><span class="src-sym">(</span><span class="src-str">'/dev/fd/3'</span><span class="src-sym">, </span><span class="src-str">'r'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a204"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a205"></a> <span class="src-key">else</span></div></li> <li><div class="src-line"><a name="a206"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodconlog">conlog</a><span class="src-sym">(</span><span class="src-str">'Unable to open audio stream'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a207"></a> </div></li> <li><div class="src-line"><a name="a208"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$audio">audio</a><span class="src-sym">) </span><a href="http://www.php.net/stream_set_blocking">stream_set_blocking</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$audio">audio</a><span class="src-sym">, </span><span class="src-num">0</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a209"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a210"></a> </div></li> <li><div class="src-line"><a name="a211"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodconlog">conlog</a><span class="src-sym">(</span><span class="src-str">'AGI Request:'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a212"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodconlog">conlog</a><span class="src-sym">(</span><a href="http://www.php.net/print_r">print_r</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$request">request</a><span class="src-sym">, </span><span class="src-id">true</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a213"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodconlog">conlog</a><span class="src-sym">(</span><span class="src-str">'PHPAGI internal configuration:'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a214"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodconlog">conlog</a><span class="src-sym">(</span><a href="http://www.php.net/print_r">print_r</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">, </span><span class="src-id">true</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a215"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a216"></a> </div></li> <li><div class="src-line"><a name="a217"></a> <span class="src-comm">// *********************************************************************************************************</span></div></li> <li><div class="src-line"><a name="a218"></a> <span class="src-comm">// ** COMMANDS **</span></div></li> <li><div class="src-line"><a name="a219"></a> <span class="src-comm">// *********************************************************************************************************</span></div></li> <li><div class="src-line"><a name="a220"></a> </div></li> <li><div class="src-line"><a name="a221"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a222"></a><span class="src-doc"> * Answer channel if not already in answer state.</span></div></li> <li><div class="src-line"><a name="a223"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a224"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-answer</span></div></li> <li><div class="src-line"><a name="a225"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/dtmf.php Get DTMF tones from the user and say the digits</span></div></li> <li><div class="src-line"><a name="a226"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/input.php Get text input from the user and say it back</span></div></li> <li><div class="src-line"><a name="a227"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/ping.php Ping an IP address</span></div></li> <li><div class="src-line"><a name="a228"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a229"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is 0 on success, -1 on failure.</span></div></li> <li><div class="src-line"><a name="a230"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a231"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodanswer">answer</a><span class="src-sym">(</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a232"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a233"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">'ANSWER'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a234"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a235"></a> </div></li> <li><div class="src-line"><a name="a236"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a237"></a><span class="src-doc"> * Get the status of the specified channel. If no channel name is specified, return the status of the current channel.</span></div></li> <li><div class="src-line"><a name="a238"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a239"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-channel+status</span></div></li> <li><div class="src-line"><a name="a240"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$channel </span></div></li> <li><div class="src-line"><a name="a241"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['data'] contains description.</span></div></li> <li><div class="src-line"><a name="a242"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a243"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodchannel_status">channel_status</a><span class="src-sym">(</span><span class="src-var">$channel</span>=<span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a244"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a245"></a> <span class="src-var">$ret </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">CHANNEL STATUS <span class="src-var">$channel</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a246"></a> <span class="src-key">switch</span><span class="src-sym">(</span><span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">]</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a247"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a248"></a> <span class="src-key">case </span>-<span class="src-num">1</span>: <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">There is no channel that matches <span class="src-var">$channel</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a249"></a> <span class="src-key">case </span><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAST_STATE_DOWN">AST_STATE_DOWN</a></span>: <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <span class="src-str">'Channel is down and available'</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a250"></a> <span class="src-key">case </span><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAST_STATE_RESERVED">AST_STATE_RESERVED</a></span>: <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <span class="src-str">'Channel is down, but reserved'</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a251"></a> <span class="src-key">case </span><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAST_STATE_OFFHOOK">AST_STATE_OFFHOOK</a></span>: <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <span class="src-str">'Channel is off hook'</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a252"></a> <span class="src-key">case </span><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAST_STATE_DIALING">AST_STATE_DIALING</a></span>: <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <span class="src-str">'Digits (or equivalent) have been dialed'</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a253"></a> <span class="src-key">case </span><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAST_STATE_RING">AST_STATE_RING</a></span>: <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <span class="src-str">'Line is ringing'</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a254"></a> <span class="src-key">case </span><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAST_STATE_RINGING">AST_STATE_RINGING</a></span>: <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <span class="src-str">'Remote end is ringing'</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a255"></a> <span class="src-key">case </span><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAST_STATE_UP">AST_STATE_UP</a></span>: <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <span class="src-str">'Line is up'</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a256"></a> <span class="src-key">case </span><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAST_STATE_BUSY">AST_STATE_BUSY</a></span>: <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <span class="src-str">'Line is busy'</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a257"></a> <span class="src-key">case </span><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAST_STATE_DIALING_OFFHOOK">AST_STATE_DIALING_OFFHOOK</a></span>: <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <span class="src-str">'Digits (or equivalent) have been dialed while offhook'</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a258"></a> <span class="src-key">case </span><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAST_STATE_PRERING">AST_STATE_PRERING</a></span>: <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <span class="src-str">'Channel has detected an incoming call and is waiting for ring'</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a259"></a> <span class="src-key">default</span>: <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <span class="src-str">"</span><span class="src-str">Unknown ({<span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">]</span><span class="src-sym">}</span>)</span><span class="src-str">"</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a260"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a261"></a> <span class="src-key">return </span><span class="src-var">$ret</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a262"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a263"></a> </div></li> <li><div class="src-line"><a name="a264"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a265"></a><span class="src-doc"> * Deletes an entry in the Asterisk database for a given family and key.</span></div></li> <li><div class="src-line"><a name="a266"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a267"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-database+del</span></div></li> <li><div class="src-line"><a name="a268"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$family </span></div></li> <li><div class="src-line"><a name="a269"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$key </span></div></li> <li><div class="src-line"><a name="a270"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is 1 on sucess, 0 otherwise.</span></div></li> <li><div class="src-line"><a name="a271"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a272"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methoddatabase_del">database_del</a><span class="src-sym">(</span><span class="src-var">$family</span><span class="src-sym">, </span><span class="src-var">$key</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a273"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a274"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">DATABASE DEL \"<span class="src-var">$family</span>\" \"<span class="src-var">$key</span>\"</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a275"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a276"></a> </div></li> <li><div class="src-line"><a name="a277"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a278"></a><span class="src-doc"> * Deletes a family or specific keytree within a family in the Asterisk database.</span></div></li> <li><div class="src-line"><a name="a279"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a280"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-database+deltree</span></div></li> <li><div class="src-line"><a name="a281"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$family </span></div></li> <li><div class="src-line"><a name="a282"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$keytree </span></div></li> <li><div class="src-line"><a name="a283"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is 1 on sucess, 0 otherwise.</span></div></li> <li><div class="src-line"><a name="a284"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a285"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methoddatabase_deltree">database_deltree</a><span class="src-sym">(</span><span class="src-var">$family</span><span class="src-sym">, </span><span class="src-var">$keytree</span>=<span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a286"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a287"></a> <span class="src-var">$cmd </span>= <span class="src-str">"</span><span class="src-str">DATABASE DELTREE \"<span class="src-var">$family</span>\"</span><span class="src-str">"</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a288"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$keytree </span>!= <span class="src-str">''</span><span class="src-sym">) </span><span class="src-var">$cmd </span>.= <span class="src-str">"</span><span class="src-str"> \"<span class="src-var">$keytree</span>\"</span><span class="src-str">"</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a289"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-var">$cmd</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a290"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a291"></a> </div></li> <li><div class="src-line"><a name="a292"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a293"></a><span class="src-doc"> * Retrieves an entry in the Asterisk database for a given family and key.</span></div></li> <li><div class="src-line"><a name="a294"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a295"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-database+get</span></div></li> <li><div class="src-line"><a name="a296"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$family </span></div></li> <li><div class="src-line"><a name="a297"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$key </span></div></li> <li><div class="src-line"><a name="a298"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is 1 on sucess, 0 failure. ['data'] holds the value</span></div></li> <li><div class="src-line"><a name="a299"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a300"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methoddatabase_get">database_get</a><span class="src-sym">(</span><span class="src-var">$family</span><span class="src-sym">, </span><span class="src-var">$key</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a301"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a302"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">DATABASE GET \"<span class="src-var">$family</span>\" \"<span class="src-var">$key</span>\"</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a303"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a304"></a> </div></li> <li><div class="src-line"><a name="a305"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a306"></a><span class="src-doc"> * Adds or updates an entry in the Asterisk database for a given family, key, and value.</span></div></li> <li><div class="src-line"><a name="a307"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a308"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$family </span></div></li> <li><div class="src-line"><a name="a309"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$key </span></div></li> <li><div class="src-line"><a name="a310"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$value </span></div></li> <li><div class="src-line"><a name="a311"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is 1 on sucess, 0 otherwise</span></div></li> <li><div class="src-line"><a name="a312"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a313"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methoddatabase_put">database_put</a><span class="src-sym">(</span><span class="src-var">$family</span><span class="src-sym">, </span><span class="src-var">$key</span><span class="src-sym">, </span><span class="src-var">$value</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a314"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a315"></a> <span class="src-var">$value </span>= <a href="http://www.php.net/str_replace">str_replace</a><span class="src-sym">(</span><span class="src-str">"\n"</span><span class="src-sym">, </span><span class="src-str">'\n'</span><span class="src-sym">, </span><a href="http://www.php.net/addslashes">addslashes</a><span class="src-sym">(</span><span class="src-var">$value</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a316"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">DATABASE PUT \"<span class="src-var">$family</span>\" \"<span class="src-var">$key</span>\" \"<span class="src-var">$value</span>\"</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a317"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a318"></a> </div></li> <li><div class="src-line"><a name="a319"></a> </div></li> <li><div class="src-line"><a name="a320"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a321"></a><span class="src-doc"> * Sets a global variable, using Asterisk 1.6 syntax.</span></div></li> <li><div class="src-line"><a name="a322"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a323"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki/view/Asterisk+cmd+Set</span></div></li> <li><div class="src-line"><a name="a324"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a325"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$pVariable </span></div></li> <li><div class="src-line"><a name="a326"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string</span><span class="src-doc">|</span><span class="src-doc-type">int</span><span class="src-doc">|</span><span class="src-doc-type">float</span><span class="src-doc-var">$pValue </span></div></li> <li><div class="src-line"><a name="a327"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is 1 on sucess, 0 otherwise</span></div></li> <li><div class="src-line"><a name="a328"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a329"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodset_global_var">set_global_var</a><span class="src-sym">(</span><span class="src-var">$pVariable</span><span class="src-sym">, </span><span class="src-var">$pValue</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a330"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a331"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/is_numeric">is_numeric</a><span class="src-sym">(</span><span class="src-var">$pValue</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a332"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">Set({<span class="src-var">$pVariable</span><span class="src-sym">}</span>={<span class="src-var">$pValue</span><span class="src-sym">}</span>,g);</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a333"></a> <span class="src-key">else</span></div></li> <li><div class="src-line"><a name="a334"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">Set({<span class="src-var">$pVariable</span><span class="src-sym">}</span>=\"{<span class="src-var">$pValue</span><span class="src-sym">}</span>\",g);</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a335"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a336"></a> </div></li> <li><div class="src-line"><a name="a337"></a> </div></li> <li><div class="src-line"><a name="a338"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a339"></a><span class="src-doc"> * Sets a variable, using Asterisk 1.6 syntax.</span></div></li> <li><div class="src-line"><a name="a340"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a341"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki/view/Asterisk+cmd+Set</span></div></li> <li><div class="src-line"><a name="a342"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a343"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$pVariable </span></div></li> <li><div class="src-line"><a name="a344"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string</span><span class="src-doc">|</span><span class="src-doc-type">int</span><span class="src-doc">|</span><span class="src-doc-type">float</span><span class="src-doc-var">$pValue </span></div></li> <li><div class="src-line"><a name="a345"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is 1 on sucess, 0 otherwise</span></div></li> <li><div class="src-line"><a name="a346"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a347"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodset_var">set_var</a><span class="src-sym">(</span><span class="src-var">$pVariable</span><span class="src-sym">, </span><span class="src-var">$pValue</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a348"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a349"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/is_numeric">is_numeric</a><span class="src-sym">(</span><span class="src-var">$pValue</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a350"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">Set({<span class="src-var">$pVariable</span><span class="src-sym">}</span>={<span class="src-var">$pValue</span><span class="src-sym">}</span>);</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a351"></a> <span class="src-key">else</span></div></li> <li><div class="src-line"><a name="a352"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">Set({<span class="src-var">$pVariable</span><span class="src-sym">}</span>=\"{<span class="src-var">$pValue</span><span class="src-sym">}</span>\");</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a353"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a354"></a> </div></li> <li><div class="src-line"><a name="a355"></a> </div></li> <li><div class="src-line"><a name="a356"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a357"></a><span class="src-doc"> * Executes the specified Asterisk application with given options.</span></div></li> <li><div class="src-line"><a name="a358"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a359"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-exec</span></div></li> <li><div class="src-line"><a name="a360"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-Asterisk+-+documentation+of+application+commands</span></div></li> <li><div class="src-line"><a name="a361"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$application </span></div></li> <li><div class="src-line"><a name="a362"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">mixed </span><span class="src-doc-var">$options </span></div></li> <li><div class="src-line"><a name="a363"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is whatever the application returns, or -2 on failure to find application</span></div></li> <li><div class="src-line"><a name="a364"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a365"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodexec">exec</a><span class="src-sym">(</span><span class="src-var">$application</span><span class="src-sym">, </span><span class="src-var">$options</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a366"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a367"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/is_array">is_array</a><span class="src-sym">(</span><span class="src-var">$options</span><span class="src-sym">)) </span><span class="src-var">$options </span>= <a href="http://www.php.net/join">join</a><span class="src-sym">(</span><span class="src-str">'|'</span><span class="src-sym">, </span><span class="src-var">$options</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a368"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">EXEC <span class="src-var">$application</span> <span class="src-var">$options</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a369"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a370"></a> </div></li> <li><div class="src-line"><a name="a371"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a372"></a><span class="src-doc"> * Plays the given file and receives DTMF data.</span></div></li> <li><div class="src-line"><a name="a373"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a374"></a><span class="src-doc"> * This is similar to STREAM FILE, but this command can accept and return many DTMF digits,</span></div></li> <li><div class="src-line"><a name="a375"></a><span class="src-doc"> * while STREAM FILE returns immediately after the first DTMF digit is detected.</span></div></li> <li><div class="src-line"><a name="a376"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a377"></a><span class="src-doc"> * Asterisk looks for the file to play in /var/lib/asterisk/sounds by default.</span></div></li> <li><div class="src-line"><a name="a378"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a379"></a><span class="src-doc"> * If the user doesn't press any keys when the message plays, there is $timeout milliseconds</span></div></li> <li><div class="src-line"><a name="a380"></a><span class="src-doc"> * of silence then the command ends.</span></div></li> <li><div class="src-line"><a name="a381"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a382"></a><span class="src-doc"> * The user has the opportunity to press a key at any time during the message or the</span></div></li> <li><div class="src-line"><a name="a383"></a><span class="src-doc"> * post-message silence. If the user presses a key while the message is playing, the</span></div></li> <li><div class="src-line"><a name="a384"></a><span class="src-doc"> * message stops playing. When the first key is pressed a timer starts counting for</span></div></li> <li><div class="src-line"><a name="a385"></a><span class="src-doc"> * $timeout milliseconds. Every time the user presses another key the timer is restarted.</span></div></li> <li><div class="src-line"><a name="a386"></a><span class="src-doc"> * The command ends when the counter goes to zero or the maximum number of digits is entered,</span></div></li> <li><div class="src-line"><a name="a387"></a><span class="src-doc"> * whichever happens first.</span></div></li> <li><div class="src-line"><a name="a388"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a389"></a><span class="src-doc"> * If you don't specify a time out then a default timeout of 2000 is used following a pressed</span></div></li> <li><div class="src-line"><a name="a390"></a><span class="src-doc"> * digit. If no digits are pressed then 6 seconds of silence follow the message.</span></div></li> <li><div class="src-line"><a name="a391"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a392"></a><span class="src-doc"> * If you don't specify $max_digits then the user can enter as many digits as they want.</span></div></li> <li><div class="src-line"><a name="a393"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a394"></a><span class="src-doc"> * Pressing the # key has the same effect as the timer running out: the command ends and</span></div></li> <li><div class="src-line"><a name="a395"></a><span class="src-doc"> * any previously keyed digits are returned. A side effect of this is that there is no</span></div></li> <li><div class="src-line"><a name="a396"></a><span class="src-doc"> * way to read a # key using this command.</span></div></li> <li><div class="src-line"><a name="a397"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a398"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/ping.php Ping an IP address</span></div></li> <li><div class="src-line"><a name="a399"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a400"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-get+data</span></div></li> <li><div class="src-line"><a name="a401"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$filename </span><span class="src-doc">file to play. Do not include file extension.</span></div></li> <li><div class="src-line"><a name="a402"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$timeout </span><span class="src-doc">milliseconds</span></div></li> <li><div class="src-line"><a name="a403"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$max_digits </span></div></li> <li><div class="src-line"><a name="a404"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] holds the digits and ['data'] holds the timeout if present.</span></div></li> <li><div class="src-line"><a name="a405"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a406"></a><span class="src-doc"> * This differs from other commands with return DTMF as numbers representing ASCII characters.</span></div></li> <li><div class="src-line"><a name="a407"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a408"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodget_data">get_data</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">, </span><span class="src-var">$timeout</span>=<span class="src-id">NULL</span><span class="src-sym">, </span><span class="src-var">$max_digits</span>=<span class="src-id">NULL</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a409"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a410"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><a href="http://www.php.net/rtrim">rtrim</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">GET DATA <span class="src-var">$filename</span> <span class="src-var">$timeout</span> <span class="src-var">$max_digits</span></span><span class="src-str">"</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a411"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a412"></a> </div></li> <li><div class="src-line"><a name="a413"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a414"></a><span class="src-doc"> * Fetch the value of a variable.</span></div></li> <li><div class="src-line"><a name="a415"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a416"></a><span class="src-doc"> * Does not work with global variables. Does not work with some variables that are generated by modules.</span></div></li> <li><div class="src-line"><a name="a417"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a418"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-get+variable</span></div></li> <li><div class="src-line"><a name="a419"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-Asterisk+variables</span></div></li> <li><div class="src-line"><a name="a420"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$variable </span><span class="src-doc">name</span></div></li> <li><div class="src-line"><a name="a421"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">boolean </span><span class="src-doc-var">$getvalue </span><span class="src-doc">return the value only</span></div></li> <li><div class="src-line"><a name="a422"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is 0 if variable hasn't been set, 1 if it has. ['data'] holds the value. returns value if $getvalue is TRUE</span></div></li> <li><div class="src-line"><a name="a423"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a424"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodget_variable">get_variable</a><span class="src-sym">(</span><span class="src-var">$variable</span><span class="src-sym">,</span><span class="src-var">$getvalue</span>=<span class="src-id">FALSE</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a425"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a426"></a> <span class="src-var">$res</span>=<span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">GET VARIABLE <span class="src-var">$variable</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a427"></a> </div></li> <li><div class="src-line"><a name="a428"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$getvalue</span>==<span class="src-id">FALSE</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a429"></a> <span class="src-key">return</span><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a430"></a> </div></li> <li><div class="src-line"><a name="a431"></a> <span class="src-key">return</span><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a432"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a433"></a> </div></li> <li><div class="src-line"><a name="a434"></a> </div></li> <li><div class="src-line"><a name="a435"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a436"></a><span class="src-doc"> * Fetch the value of a full variable.</span></div></li> <li><div class="src-line"><a name="a437"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a438"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a439"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki/view/get+full+variable</span></div></li> <li><div class="src-line"><a name="a440"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-Asterisk+variables</span></div></li> <li><div class="src-line"><a name="a441"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$variable </span><span class="src-doc">name</span></div></li> <li><div class="src-line"><a name="a442"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$channel </span><span class="src-doc">channel</span></div></li> <li><div class="src-line"><a name="a443"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">boolean </span><span class="src-doc-var">$getvalue </span><span class="src-doc">return the value only</span></div></li> <li><div class="src-line"><a name="a444"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is 0 if variable hasn't been set, 1 if it has. ['data'] holds the value. returns value if $getvalue is TRUE</span></div></li> <li><div class="src-line"><a name="a445"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a446"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodget_fullvariable">get_fullvariable</a><span class="src-sym">(</span><span class="src-var">$variable</span><span class="src-sym">,</span><span class="src-var">$channel</span>=<span class="src-id">FALSE</span><span class="src-sym">,</span><span class="src-var">$getvalue</span>=<span class="src-id">FALSE</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a447"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a448"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$channel</span>==<span class="src-id">FALSE</span><span class="src-sym">)</span><span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a449"></a> <span class="src-var">$req </span>= <span class="src-var">$variable</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a450"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a451"></a> <span class="src-var">$req </span>= <span class="src-var">$variable</span>.<span class="src-str">' '</span>.<span class="src-var">$channel</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a452"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a453"></a> </div></li> <li><div class="src-line"><a name="a454"></a> <span class="src-var">$res</span>=<span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">'GET VARIABLE FULL '</span>.<span class="src-var">$req</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a455"></a> </div></li> <li><div class="src-line"><a name="a456"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$getvalue</span>==<span class="src-id">FALSE</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a457"></a> <span class="src-key">return</span><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a458"></a> </div></li> <li><div class="src-line"><a name="a459"></a> <span class="src-key">return</span><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a460"></a> </div></li> <li><div class="src-line"><a name="a461"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a462"></a> </div></li> <li><div class="src-line"><a name="a463"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a464"></a><span class="src-doc"> * Hangup the specified channel. If no channel name is given, hang up the current channel.</span></div></li> <li><div class="src-line"><a name="a465"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a466"></a><span class="src-doc"> * With power comes responsibility. Hanging up channels other than your own isn't something</span></div></li> <li><div class="src-line"><a name="a467"></a><span class="src-doc"> * that is done routinely. If you are not sure why you are doing so, then don't.</span></div></li> <li><div class="src-line"><a name="a468"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a469"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-hangup</span></div></li> <li><div class="src-line"><a name="a470"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/dtmf.php Get DTMF tones from the user and say the digits</span></div></li> <li><div class="src-line"><a name="a471"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/input.php Get text input from the user and say it back</span></div></li> <li><div class="src-line"><a name="a472"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/ping.php Ping an IP address</span></div></li> <li><div class="src-line"><a name="a473"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a474"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$channel </span></div></li> <li><div class="src-line"><a name="a475"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is 1 on success, -1 on failure.</span></div></li> <li><div class="src-line"><a name="a476"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a477"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodhangup">hangup</a><span class="src-sym">(</span><span class="src-var">$channel</span>=<span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a478"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a479"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">HANGUP <span class="src-var">$channel</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a480"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a481"></a> </div></li> <li><div class="src-line"><a name="a482"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a483"></a><span class="src-doc"> * Does nothing.</span></div></li> <li><div class="src-line"><a name="a484"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a485"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-noop</span></div></li> <li><div class="src-line"><a name="a486"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a487"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a488"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodnoop">noop</a><span class="src-sym">(</span><span class="src-var">$string</span>=<span class="src-str">""</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a489"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a490"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">NOOP \"<span class="src-var">$string</span>\"</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a491"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a492"></a> </div></li> <li><div class="src-line"><a name="a493"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a494"></a><span class="src-doc"> * Receive a character of text from a connected channel. Waits up to $timeout milliseconds for</span></div></li> <li><div class="src-line"><a name="a495"></a><span class="src-doc"> * a character to arrive, or infinitely if $timeout is zero.</span></div></li> <li><div class="src-line"><a name="a496"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a497"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-receive+char</span></div></li> <li><div class="src-line"><a name="a498"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$timeout </span><span class="src-doc">milliseconds</span></div></li> <li><div class="src-line"><a name="a499"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is 0 on timeout or not supported, -1 on failure. Otherwise</span></div></li> <li><div class="src-line"><a name="a500"></a><span class="src-doc"> * it is the decimal value of the DTMF tone. Use chr() to convert to ASCII.</span></div></li> <li><div class="src-line"><a name="a501"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a502"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodreceive_char">receive_char</a><span class="src-sym">(</span><span class="src-var">$timeout</span>=-<span class="src-num">1</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a503"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a504"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">RECEIVE CHAR <span class="src-var">$timeout</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a505"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a506"></a> </div></li> <li><div class="src-line"><a name="a507"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a508"></a><span class="src-doc"> * Record sound to a file until an acceptable DTMF digit is received or a specified amount of</span></div></li> <li><div class="src-line"><a name="a509"></a><span class="src-doc"> * time has passed. Optionally the file BEEP is played before recording begins.</span></div></li> <li><div class="src-line"><a name="a510"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a511"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-record+file</span></div></li> <li><div class="src-line"><a name="a512"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$file </span><span class="src-doc">to record, without extension, often created in /var/lib/asterisk/sounds</span></div></li> <li><div class="src-line"><a name="a513"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$format </span><span class="src-doc">of the file. GSM and WAV are commonly used formats. MP3 is read-only and thus cannot be used.</span></div></li> <li><div class="src-line"><a name="a514"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$escape_digits </span></div></li> <li><div class="src-line"><a name="a515"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$timeout </span><span class="src-doc">is the maximum record time in milliseconds, or -1 for no timeout.</span></div></li> <li><div class="src-line"><a name="a516"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$offset </span><span class="src-doc">to seek to without exceeding the end of the file.</span></div></li> <li><div class="src-line"><a name="a517"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">boolean </span><span class="src-doc-var">$beep </span></div></li> <li><div class="src-line"><a name="a518"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$silence </span><span class="src-doc">number of seconds of silence allowed before the function returns despite the</span></div></li> <li><div class="src-line"><a name="a519"></a><span class="src-doc"> * lack of dtmf digits or reaching timeout.</span></div></li> <li><div class="src-line"><a name="a520"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is -1 on error, 0 on hangup, otherwise a decimal value of the</span></div></li> <li><div class="src-line"><a name="a521"></a><span class="src-doc"> * DTMF tone. Use chr() to convert to ASCII.</span></div></li> <li><div class="src-line"><a name="a522"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a523"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodrecord_file">record_file</a><span class="src-sym">(</span><span class="src-var">$file</span><span class="src-sym">, </span><span class="src-var">$format</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span>=<span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$timeout</span>=-<span class="src-num">1</span><span class="src-sym">, </span><span class="src-var">$offset</span>=<span class="src-id">NULL</span><span class="src-sym">, </span><span class="src-var">$beep</span>=<span class="src-id">false</span><span class="src-sym">, </span><span class="src-var">$silence</span>=<span class="src-id">NULL</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a524"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a525"></a> <span class="src-var">$cmd </span>= <a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">RECORD FILE <span class="src-var">$file</span> <span class="src-var">$format</span> \"<span class="src-var">$escape_digits</span>\" <span class="src-var">$timeout</span> <span class="src-var">$offset</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a526"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$beep</span><span class="src-sym">) </span><span class="src-var">$cmd </span>.= <span class="src-str">' BEEP'</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a527"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/is_null">is_null</a><span class="src-sym">(</span><span class="src-var">$silence</span><span class="src-sym">)) </span><span class="src-var">$cmd </span>.= <span class="src-str">"</span><span class="src-str"> s=<span class="src-var">$silence</span></span><span class="src-str">"</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a528"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-var">$cmd</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a529"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a530"></a> </div></li> <li><div class="src-line"><a name="a531"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a532"></a><span class="src-doc"> * Say the given digit string, returning early if any of the given DTMF escape digits are received on the channel.</span></div></li> <li><div class="src-line"><a name="a533"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a534"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-say+digits</span></div></li> <li><div class="src-line"><a name="a535"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$digits </span></div></li> <li><div class="src-line"><a name="a536"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$escape_digits </span></div></li> <li><div class="src-line"><a name="a537"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is -1 on hangup or error, 0 if playback completes with no</span></div></li> <li><div class="src-line"><a name="a538"></a><span class="src-doc"> * digit received, otherwise a decimal value of the DTMF tone. Use chr() to convert to ASCII.</span></div></li> <li><div class="src-line"><a name="a539"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a540"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodsay_digits">say_digits</a><span class="src-sym">(</span><span class="src-var">$digits</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span>=<span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a541"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a542"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">SAY DIGITS <span class="src-var">$digits</span> \"<span class="src-var">$escape_digits</span>\"</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a543"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a544"></a> </div></li> <li><div class="src-line"><a name="a545"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a546"></a><span class="src-doc"> * Say the given number, returning early if any of the given DTMF escape digits are received on the channel.</span></div></li> <li><div class="src-line"><a name="a547"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a548"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-say+number</span></div></li> <li><div class="src-line"><a name="a549"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$number </span></div></li> <li><div class="src-line"><a name="a550"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$escape_digits </span></div></li> <li><div class="src-line"><a name="a551"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is -1 on hangup or error, 0 if playback completes with no</span></div></li> <li><div class="src-line"><a name="a552"></a><span class="src-doc"> * digit received, otherwise a decimal value of the DTMF tone. Use chr() to convert to ASCII.</span></div></li> <li><div class="src-line"><a name="a553"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a554"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodsay_number">say_number</a><span class="src-sym">(</span><span class="src-var">$number</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span>=<span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a555"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a556"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">SAY NUMBER <span class="src-var">$number</span> \"<span class="src-var">$escape_digits</span>\"</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a557"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a558"></a> </div></li> <li><div class="src-line"><a name="a559"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a560"></a><span class="src-doc"> * Say the given character string, returning early if any of the given DTMF escape digits are received on the channel.</span></div></li> <li><div class="src-line"><a name="a561"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a562"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-say+phonetic</span></div></li> <li><div class="src-line"><a name="a563"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$text </span></div></li> <li><div class="src-line"><a name="a564"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$escape_digits </span></div></li> <li><div class="src-line"><a name="a565"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is -1 on hangup or error, 0 if playback completes with no</span></div></li> <li><div class="src-line"><a name="a566"></a><span class="src-doc"> * digit received, otherwise a decimal value of the DTMF tone. Use chr() to convert to ASCII.</span></div></li> <li><div class="src-line"><a name="a567"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a568"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodsay_phonetic">say_phonetic</a><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span>=<span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a569"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a570"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">SAY PHONETIC <span class="src-var">$text</span> \"<span class="src-var">$escape_digits</span>\"</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a571"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a572"></a> </div></li> <li><div class="src-line"><a name="a573"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a574"></a><span class="src-doc"> * Say a given time, returning early if any of the given DTMF escape digits are received on the channel.</span></div></li> <li><div class="src-line"><a name="a575"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a576"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-say+time</span></div></li> <li><div class="src-line"><a name="a577"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$time </span><span class="src-doc">number of seconds elapsed since 00:00:00 on January 1, 1970, Coordinated Universal Time (UTC).</span></div></li> <li><div class="src-line"><a name="a578"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$escape_digits </span></div></li> <li><div class="src-line"><a name="a579"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is -1 on hangup or error, 0 if playback completes with no</span></div></li> <li><div class="src-line"><a name="a580"></a><span class="src-doc"> * digit received, otherwise a decimal value of the DTMF tone. Use chr() to convert to ASCII.</span></div></li> <li><div class="src-line"><a name="a581"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a582"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodsay_time">say_time</a><span class="src-sym">(</span><span class="src-var">$time</span>=<span class="src-id">NULL</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span>=<span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a583"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a584"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/is_null">is_null</a><span class="src-sym">(</span><span class="src-var">$time</span><span class="src-sym">)) </span><span class="src-var">$time </span>= <a href="http://www.php.net/time">time</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a585"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">SAY TIME <span class="src-var">$time</span> \"<span class="src-var">$escape_digits</span>\"</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a586"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a587"></a> </div></li> <li><div class="src-line"><a name="a588"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a589"></a><span class="src-doc"> * Send the specified image on a channel.</span></div></li> <li><div class="src-line"><a name="a590"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a591"></a><span class="src-doc"> * Most channels do not support the transmission of images.</span></div></li> <li><div class="src-line"><a name="a592"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a593"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-send+image</span></div></li> <li><div class="src-line"><a name="a594"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$image </span><span class="src-doc">without extension, often in /var/lib/asterisk/images</span></div></li> <li><div class="src-line"><a name="a595"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is -1 on hangup or error, 0 if the image is sent or</span></div></li> <li><div class="src-line"><a name="a596"></a><span class="src-doc"> * channel does not support image transmission.</span></div></li> <li><div class="src-line"><a name="a597"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a598"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodsend_image">send_image</a><span class="src-sym">(</span><span class="src-var">$image</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a599"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a600"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">SEND IMAGE <span class="src-var">$image</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a601"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a602"></a> </div></li> <li><div class="src-line"><a name="a603"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a604"></a><span class="src-doc"> * Send the given text to the connected channel.</span></div></li> <li><div class="src-line"><a name="a605"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a606"></a><span class="src-doc"> * Most channels do not support transmission of text.</span></div></li> <li><div class="src-line"><a name="a607"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a608"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-send+text</span></div></li> <li><div class="src-line"><a name="a609"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">$text </span></div></li> <li><div class="src-line"><a name="a610"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is -1 on hangup or error, 0 if the text is sent or</span></div></li> <li><div class="src-line"><a name="a611"></a><span class="src-doc"> * channel does not support text transmission.</span></div></li> <li><div class="src-line"><a name="a612"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a613"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodsend_text">send_text</a><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a614"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a615"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">SEND TEXT \"<span class="src-var">$text</span>\"</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a616"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a617"></a> </div></li> <li><div class="src-line"><a name="a618"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a619"></a><span class="src-doc"> * Cause the channel to automatically hangup at $time seconds in the future.</span></div></li> <li><div class="src-line"><a name="a620"></a><span class="src-doc"> * If $time is 0 then the autohangup feature is disabled on this channel.</span></div></li> <li><div class="src-line"><a name="a621"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a622"></a><span class="src-doc"> * If the channel is hungup prior to $time seconds, this setting has no effect.</span></div></li> <li><div class="src-line"><a name="a623"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a624"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-set+autohangup</span></div></li> <li><div class="src-line"><a name="a625"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$time </span><span class="src-doc">until automatic hangup</span></div></li> <li><div class="src-line"><a name="a626"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a627"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a628"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodset_autohangup">set_autohangup</a><span class="src-sym">(</span><span class="src-var">$time</span>=<span class="src-num">0</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a629"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a630"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">SET AUTOHANGUP <span class="src-var">$time</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a631"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a632"></a> </div></li> <li><div class="src-line"><a name="a633"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a634"></a><span class="src-doc"> * Changes the caller ID of the current channel.</span></div></li> <li><div class="src-line"><a name="a635"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a636"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-set+callerid</span></div></li> <li><div class="src-line"><a name="a637"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$cid </span><span class="src-doc">example: "John Smith"<1234567></span></div></li> <li><div class="src-line"><a name="a638"></a><span class="src-doc"> * This command will let you take liberties with the <caller ID specification> but the format shown in the example above works</span></div></li> <li><div class="src-line"><a name="a639"></a><span class="src-doc"> * well: the name enclosed in double quotes followed immediately by the number inside angle brackets. If there is no name then</span></div></li> <li><div class="src-line"><a name="a640"></a><span class="src-doc"> * you can omit it. If the name contains no spaces you can omit the double quotes around it. The number must follow the name</span></div></li> <li><div class="src-line"><a name="a641"></a><span class="src-doc"> * immediately; don't put a space between them. The angle brackets around the number are necessary; if you omit them the</span></div></li> <li><div class="src-line"><a name="a642"></a><span class="src-doc"> * number will be considered to be part of the name.</span></div></li> <li><div class="src-line"><a name="a643"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a644"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a645"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodset_callerid">set_callerid</a><span class="src-sym">(</span><span class="src-var">$cid</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a646"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a647"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">SET CALLERID <span class="src-var">$cid</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a648"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a649"></a> </div></li> <li><div class="src-line"><a name="a650"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a651"></a><span class="src-doc"> * Sets the context for continuation upon exiting the application.</span></div></li> <li><div class="src-line"><a name="a652"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a653"></a><span class="src-doc"> * Setting the context does NOT automatically reset the extension and the priority; if you want to start at the top of the new</span></div></li> <li><div class="src-line"><a name="a654"></a><span class="src-doc"> * context you should set extension and priority yourself.</span></div></li> <li><div class="src-line"><a name="a655"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a656"></a><span class="src-doc"> * If you specify a non-existent context you receive no error indication (['result'] is still 0) but you do get a</span></div></li> <li><div class="src-line"><a name="a657"></a><span class="src-doc"> * warning message on the Asterisk console.</span></div></li> <li><div class="src-line"><a name="a658"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a659"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-set+context</span></div></li> <li><div class="src-line"><a name="a660"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$context </span></div></li> <li><div class="src-line"><a name="a661"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a662"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a663"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodset_context">set_context</a><span class="src-sym">(</span><span class="src-var">$context</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a664"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a665"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">SET CONTEXT <span class="src-var">$context</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a666"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a667"></a> </div></li> <li><div class="src-line"><a name="a668"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a669"></a><span class="src-doc"> * Set the extension to be used for continuation upon exiting the application.</span></div></li> <li><div class="src-line"><a name="a670"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a671"></a><span class="src-doc"> * Setting the extension does NOT automatically reset the priority. If you want to start with the first priority of the</span></div></li> <li><div class="src-line"><a name="a672"></a><span class="src-doc"> * extension you should set the priority yourself.</span></div></li> <li><div class="src-line"><a name="a673"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a674"></a><span class="src-doc"> * If you specify a non-existent extension you receive no error indication (['result'] is still 0) but you do</span></div></li> <li><div class="src-line"><a name="a675"></a><span class="src-doc"> * get a warning message on the Asterisk console.</span></div></li> <li><div class="src-line"><a name="a676"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a677"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-set+extension</span></div></li> <li><div class="src-line"><a name="a678"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$extension </span></div></li> <li><div class="src-line"><a name="a679"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a680"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a681"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodset_extension">set_extension</a><span class="src-sym">(</span><span class="src-var">$extension</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a682"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a683"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">SET EXTENSION <span class="src-var">$extension</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a684"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a685"></a> </div></li> <li><div class="src-line"><a name="a686"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a687"></a><span class="src-doc"> * Enable/Disable Music on hold generator.</span></div></li> <li><div class="src-line"><a name="a688"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a689"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-set+music</span></div></li> <li><div class="src-line"><a name="a690"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">boolean </span><span class="src-doc-var">$enabled </span></div></li> <li><div class="src-line"><a name="a691"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$class </span></div></li> <li><div class="src-line"><a name="a692"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a693"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a694"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodset_music">set_music</a><span class="src-sym">(</span><span class="src-var">$enabled</span>=<span class="src-id">true</span><span class="src-sym">, </span><span class="src-var">$class</span>=<span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a695"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a696"></a> <span class="src-var">$enabled </span>= <span class="src-sym">(</span><span class="src-var">$enabled</span><span class="src-sym">) </span>? <span class="src-str">'ON' </span>: <span class="src-str">'OFF'</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a697"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">SET MUSIC <span class="src-var">$enabled</span> <span class="src-var">$class</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a698"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a699"></a> </div></li> <li><div class="src-line"><a name="a700"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a701"></a><span class="src-doc"> * Set the priority to be used for continuation upon exiting the application.</span></div></li> <li><div class="src-line"><a name="a702"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a703"></a><span class="src-doc"> * If you specify a non-existent priority you receive no error indication (['result'] is still 0)</span></div></li> <li><div class="src-line"><a name="a704"></a><span class="src-doc"> * and no warning is issued on the Asterisk console.</span></div></li> <li><div class="src-line"><a name="a705"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a706"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-set+priority</span></div></li> <li><div class="src-line"><a name="a707"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$priority </span></div></li> <li><div class="src-line"><a name="a708"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a709"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a710"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodset_priority">set_priority</a><span class="src-sym">(</span><span class="src-var">$priority</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a711"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a712"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">SET PRIORITY <span class="src-var">$priority</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a713"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a714"></a> </div></li> <li><div class="src-line"><a name="a715"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a716"></a><span class="src-doc"> * Sets a variable to the specified value. The variables so created can later be used by later using ${<variablename>}</span></div></li> <li><div class="src-line"><a name="a717"></a><span class="src-doc"> * in the dialplan.</span></div></li> <li><div class="src-line"><a name="a718"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a719"></a><span class="src-doc"> * These variables live in the channel Asterisk creates when you pickup a phone and as such they are both local and temporary.</span></div></li> <li><div class="src-line"><a name="a720"></a><span class="src-doc"> * Variables created in one channel can not be accessed by another channel. When you hang up the phone, the channel is deleted</span></div></li> <li><div class="src-line"><a name="a721"></a><span class="src-doc"> * and any variables in that channel are deleted as well.</span></div></li> <li><div class="src-line"><a name="a722"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a723"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-set+variable</span></div></li> <li><div class="src-line"><a name="a724"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$variable </span><span class="src-doc">is case sensitive</span></div></li> <li><div class="src-line"><a name="a725"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$value </span></div></li> <li><div class="src-line"><a name="a726"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a727"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a728"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodset_variable">set_variable</a><span class="src-sym">(</span><span class="src-var">$variable</span><span class="src-sym">, </span><span class="src-var">$value</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a729"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a730"></a> <span class="src-var">$value </span>= <a href="http://www.php.net/str_replace">str_replace</a><span class="src-sym">(</span><span class="src-str">"\n"</span><span class="src-sym">, </span><span class="src-str">'\n'</span><span class="src-sym">, </span><a href="http://www.php.net/addslashes">addslashes</a><span class="src-sym">(</span><span class="src-var">$value</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a731"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">SET VARIABLE <span class="src-var">$variable</span> \"<span class="src-var">$value</span>\"</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a732"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a733"></a> </div></li> <li><div class="src-line"><a name="a734"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a735"></a><span class="src-doc"> * Play the given audio file, allowing playback to be interrupted by a DTMF digit. This command is similar to the GET DATA</span></div></li> <li><div class="src-line"><a name="a736"></a><span class="src-doc"> * command but this command returns after the first DTMF digit has been pressed while GET DATA can accumulated any number of</span></div></li> <li><div class="src-line"><a name="a737"></a><span class="src-doc"> * digits before returning.</span></div></li> <li><div class="src-line"><a name="a738"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a739"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/ping.php Ping an IP address</span></div></li> <li><div class="src-line"><a name="a740"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a741"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-stream+file</span></div></li> <li><div class="src-line"><a name="a742"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$filename </span><span class="src-doc">without extension, often in /var/lib/asterisk/sounds</span></div></li> <li><div class="src-line"><a name="a743"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$escape_digits </span></div></li> <li><div class="src-line"><a name="a744"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$offset </span></div></li> <li><div class="src-line"><a name="a745"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is -1 on hangup or error, 0 if playback completes with no</span></div></li> <li><div class="src-line"><a name="a746"></a><span class="src-doc"> * digit received, otherwise a decimal value of the DTMF tone. Use chr() to convert to ASCII.</span></div></li> <li><div class="src-line"><a name="a747"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a748"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodstream_file">stream_file</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span>=<span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$offset</span>=<span class="src-num">0</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a749"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a750"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">STREAM FILE <span class="src-var">$filename</span> \"<span class="src-var">$escape_digits</span>\" <span class="src-var">$offset</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a751"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a752"></a> </div></li> <li><div class="src-line"><a name="a753"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a754"></a><span class="src-doc"> * Enable or disable TDD transmission/reception on the current channel.</span></div></li> <li><div class="src-line"><a name="a755"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a756"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-tdd+mode</span></div></li> <li><div class="src-line"><a name="a757"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$setting </span><span class="src-doc">can be on, off or mate</span></div></li> <li><div class="src-line"><a name="a758"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is 1 on sucess, 0 if the channel is not TDD capable.</span></div></li> <li><div class="src-line"><a name="a759"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a760"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodtdd_mode">tdd_mode</a><span class="src-sym">(</span><span class="src-var">$setting</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a761"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a762"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">TDD MODE <span class="src-var">$setting</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a763"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a764"></a> </div></li> <li><div class="src-line"><a name="a765"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a766"></a><span class="src-doc"> * Sends $message to the Asterisk console via the 'verbose' message system.</span></div></li> <li><div class="src-line"><a name="a767"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a768"></a><span class="src-doc"> * If the Asterisk verbosity level is $level or greater, send $message to the console.</span></div></li> <li><div class="src-line"><a name="a769"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a770"></a><span class="src-doc"> * The Asterisk verbosity system works as follows. The Asterisk user gets to set the desired verbosity at startup time or later</span></div></li> <li><div class="src-line"><a name="a771"></a><span class="src-doc"> * using the console 'set verbose' command. Messages are displayed on the console if their verbose level is less than or equal</span></div></li> <li><div class="src-line"><a name="a772"></a><span class="src-doc"> * to desired verbosity set by the user. More important messages should have a low verbose level; less important messages</span></div></li> <li><div class="src-line"><a name="a773"></a><span class="src-doc"> * should have a high verbose level.</span></div></li> <li><div class="src-line"><a name="a774"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a775"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-verbose</span></div></li> <li><div class="src-line"><a name="a776"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$message </span></div></li> <li><div class="src-line"><a name="a777"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$level </span><span class="src-doc">from 1 to 4</span></div></li> <li><div class="src-line"><a name="a778"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a779"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a780"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodverbose">verbose</a><span class="src-sym">(</span><span class="src-var">$message</span><span class="src-sym">, </span><span class="src-var">$level</span>=<span class="src-num">1</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a781"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a782"></a> <span class="src-key">foreach</span><span class="src-sym">(</span><a href="http://www.php.net/explode">explode</a><span class="src-sym">(</span><span class="src-str">"\n"</span><span class="src-sym">, </span><a href="http://www.php.net/str_replace">str_replace</a><span class="src-sym">(</span><span class="src-str">"\r\n"</span><span class="src-sym">, </span><span class="src-str">"\n"</span><span class="src-sym">, </span><a href="http://www.php.net/print_r">print_r</a><span class="src-sym">(</span><span class="src-var">$message</span><span class="src-sym">, </span><span class="src-id">true</span><span class="src-sym">))) </span><span class="src-key">as </span><span class="src-var">$msg</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a783"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a784"></a> <span class="src-sym">@</span><a href="http://www.php.net/syslog">syslog</a><span class="src-sym">(</span><span class="src-id">LOG_WARNING</span><span class="src-sym">, </span><span class="src-var">$msg</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a785"></a> <span class="src-var">$ret </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">VERBOSE \"<span class="src-var">$msg</span>\" <span class="src-var">$level</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a786"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a787"></a> <span class="src-key">return </span><span class="src-var">$ret</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a788"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a789"></a> </div></li> <li><div class="src-line"><a name="a790"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a791"></a><span class="src-doc"> * Waits up to $timeout milliseconds for channel to receive a DTMF digit.</span></div></li> <li><div class="src-line"><a name="a792"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a793"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-wait+for+digit</span></div></li> <li><div class="src-line"><a name="a794"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$timeout </span><span class="src-doc">in millisecons. Use -1 for the timeout value if you want the call to wait indefinitely.</span></div></li> <li><div class="src-line"><a name="a795"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is 0 if wait completes with no</span></div></li> <li><div class="src-line"><a name="a796"></a><span class="src-doc"> * digit received, otherwise a decimal value of the DTMF tone. Use chr() to convert to ASCII.</span></div></li> <li><div class="src-line"><a name="a797"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a798"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodwait_for_digit">wait_for_digit</a><span class="src-sym">(</span><span class="src-var">$timeout</span>=-<span class="src-num">1</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a799"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a800"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">WAIT FOR DIGIT <span class="src-var">$timeout</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a801"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a802"></a> </div></li> <li><div class="src-line"><a name="a803"></a> </div></li> <li><div class="src-line"><a name="a804"></a> <span class="src-comm">// *********************************************************************************************************</span></div></li> <li><div class="src-line"><a name="a805"></a> <span class="src-comm">// ** APPLICATIONS **</span></div></li> <li><div class="src-line"><a name="a806"></a> <span class="src-comm">// *********************************************************************************************************</span></div></li> <li><div class="src-line"><a name="a807"></a> </div></li> <li><div class="src-line"><a name="a808"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a809"></a><span class="src-doc"> * Set absolute maximum time of call.</span></div></li> <li><div class="src-line"><a name="a810"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a811"></a><span class="src-doc"> * Note that the timeout is set from the current time forward, not counting the number of seconds the call has already been up.</span></div></li> <li><div class="src-line"><a name="a812"></a><span class="src-doc"> * Each time you call AbsoluteTimeout(), all previous absolute timeouts are cancelled.</span></div></li> <li><div class="src-line"><a name="a813"></a><span class="src-doc"> * Will return the call to the T extension so that you can playback an explanatory note to the calling party (the called party</span></div></li> <li><div class="src-line"><a name="a814"></a><span class="src-doc"> * will not hear that)</span></div></li> <li><div class="src-line"><a name="a815"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a816"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-Asterisk+-+documentation+of+application+commands</span></div></li> <li><div class="src-line"><a name="a817"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.dynx.net/ASTERISK/AGI/ccard/agi-ccard.agi</span></div></li> <li><div class="src-line"><a name="a818"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">$seconds </span><span class="src-doc">allowed, 0 disables timeout</span></div></li> <li><div class="src-line"><a name="a819"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a820"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a821"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodexec_absolutetimeout">exec_absolutetimeout</a><span class="src-sym">(</span><span class="src-var">$seconds</span>=<span class="src-num">0</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a822"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a823"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodexec">exec</a><span class="src-sym">(</span><span class="src-str">'AbsoluteTimeout'</span><span class="src-sym">, </span><span class="src-var">$seconds</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a824"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a825"></a> </div></li> <li><div class="src-line"><a name="a826"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a827"></a><span class="src-doc"> * Executes an AGI compliant application.</span></div></li> <li><div class="src-line"><a name="a828"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a829"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$command </span></div></li> <li><div class="src-line"><a name="a830"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is -1 on hangup or if application requested hangup, or 0 on non-hangup exit.</span></div></li> <li><div class="src-line"><a name="a831"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$args </span></div></li> <li><div class="src-line"><a name="a832"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a833"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodexec_agi">exec_agi</a><span class="src-sym">(</span><span class="src-var">$command</span><span class="src-sym">, </span><span class="src-var">$args</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a834"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a835"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodexec">exec</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">AGI <span class="src-var">$command</span></span><span class="src-str">"</span><span class="src-sym">, </span><span class="src-var">$args</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a836"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a837"></a> </div></li> <li><div class="src-line"><a name="a838"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a839"></a><span class="src-doc"> * Set Language.</span></div></li> <li><div class="src-line"><a name="a840"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a841"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$language </span><span class="src-doc">code</span></div></li> <li><div class="src-line"><a name="a842"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a843"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a844"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodexec_setlanguage">exec_setlanguage</a><span class="src-sym">(</span><span class="src-var">$language</span>=<span class="src-str">'en'</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a845"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a846"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodexec">exec</a><span class="src-sym">(</span><span class="src-str">'Set'</span><span class="src-sym">, </span><span class="src-str">'CHANNEL(language)='</span>. <span class="src-var">$language</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a847"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a848"></a> </div></li> <li><div class="src-line"><a name="a849"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a850"></a><span class="src-doc"> * Do ENUM Lookup.</span></div></li> <li><div class="src-line"><a name="a851"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a852"></a><span class="src-doc"> * Note: to retrieve the result, use</span></div></li> <li><div class="src-line"><a name="a853"></a><span class="src-doc"> * get_variable('ENUM');</span></div></li> <li><div class="src-line"><a name="a854"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a855"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">$exten </span></div></li> <li><div class="src-line"><a name="a856"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a857"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a858"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodexec_enumlookup">exec_enumlookup</a><span class="src-sym">(</span><span class="src-var">$exten</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a859"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a860"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodexec">exec</a><span class="src-sym">(</span><span class="src-str">'EnumLookup'</span><span class="src-sym">, </span><span class="src-var">$exten</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a861"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a862"></a> </div></li> <li><div class="src-line"><a name="a863"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a864"></a><span class="src-doc"> * Dial.</span></div></li> <li><div class="src-line"><a name="a865"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a866"></a><span class="src-doc"> * Dial takes input from ${VXML_URL} to send XML Url to Cisco 7960</span></div></li> <li><div class="src-line"><a name="a867"></a><span class="src-doc"> * Dial takes input from ${ALERT_INFO} to set ring cadence for Cisco phones</span></div></li> <li><div class="src-line"><a name="a868"></a><span class="src-doc"> * Dial returns ${CAUSECODE}: If the dial failed, this is the errormessage.</span></div></li> <li><div class="src-line"><a name="a869"></a><span class="src-doc"> * Dial returns ${DIALSTATUS}: Text code returning status of last dial attempt.</span></div></li> <li><div class="src-line"><a name="a870"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a871"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-Asterisk+cmd+Dial</span></div></li> <li><div class="src-line"><a name="a872"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$type </span></div></li> <li><div class="src-line"><a name="a873"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$identifier </span></div></li> <li><div class="src-line"><a name="a874"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$timeout </span></div></li> <li><div class="src-line"><a name="a875"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$options </span></div></li> <li><div class="src-line"><a name="a876"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$url </span></div></li> <li><div class="src-line"><a name="a877"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a878"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a879"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodexec_dial">exec_dial</a><span class="src-sym">(</span><span class="src-var">$type</span><span class="src-sym">, </span><span class="src-var">$identifier</span><span class="src-sym">, </span><span class="src-var">$timeout</span>=<span class="src-id">NULL</span><span class="src-sym">, </span><span class="src-var">$options</span>=<span class="src-id">NULL</span><span class="src-sym">, </span><span class="src-var">$url</span>=<span class="src-id">NULL</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a880"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a881"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodexec">exec</a><span class="src-sym">(</span><span class="src-str">'Dial'</span><span class="src-sym">, </span><a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str"><span class="src-var">$type</span>/<span class="src-var">$identifier</span></span><span class="src-str">"</span>.<span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$option_delim">option_delim</a>.<span class="src-var">$timeout</span>.<span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$option_delim">option_delim</a>.<span class="src-var">$options</span>.<span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$option_delim">option_delim</a>.<span class="src-var">$url</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$option_delim">option_delim</a><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a882"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a883"></a> </div></li> <li><div class="src-line"><a name="a884"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a885"></a><span class="src-doc"> * Goto.</span></div></li> <li><div class="src-line"><a name="a886"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a887"></a><span class="src-doc"> * This function takes three arguments: context,extension, and priority, but the leading arguments</span></div></li> <li><div class="src-line"><a name="a888"></a><span class="src-doc"> * are optional, not the trailing arguments. Thuse goto($z) sets the priority to $z.</span></div></li> <li><div class="src-line"><a name="a889"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a890"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$a </span></div></li> <li><div class="src-line"><a name="a891"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$b; </span></div></li> <li><div class="src-line"><a name="a892"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$c; </span></div></li> <li><div class="src-line"><a name="a893"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a894"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a895"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodexec_goto">exec_goto</a><span class="src-sym">(</span><span class="src-var">$a</span><span class="src-sym">, </span><span class="src-var">$b</span>=<span class="src-id">NULL</span><span class="src-sym">, </span><span class="src-var">$c</span>=<span class="src-id">NULL</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a896"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a897"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodexec">exec</a><span class="src-sym">(</span><span class="src-str">'Goto'</span><span class="src-sym">, </span><a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><span class="src-var">$a</span>.<span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$option_delim">option_delim</a>.<span class="src-var">$b</span>.<span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$option_delim">option_delim</a>.<span class="src-var">$c</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$option_delim">option_delim</a><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a898"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a899"></a> </div></li> <li><div class="src-line"><a name="a900"></a> </div></li> <li><div class="src-line"><a name="a901"></a> <span class="src-comm">// *********************************************************************************************************</span></div></li> <li><div class="src-line"><a name="a902"></a> <span class="src-comm">// ** FAST PASSING **</span></div></li> <li><div class="src-line"><a name="a903"></a> <span class="src-comm">// *********************************************************************************************************</span></div></li> <li><div class="src-line"><a name="a904"></a> </div></li> <li><div class="src-line"><a name="a905"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a906"></a><span class="src-doc"> * Say the given digit string, returning early if any of the given DTMF escape digits are received on the channel.</span></div></li> <li><div class="src-line"><a name="a907"></a><span class="src-doc"> * Return early if $buffer is adequate for request.</span></div></li> <li><div class="src-line"><a name="a908"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a909"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-say+digits</span></div></li> <li><div class="src-line"><a name="a910"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$buffer </span></div></li> <li><div class="src-line"><a name="a911"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$digits </span></div></li> <li><div class="src-line"><a name="a912"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$escape_digits </span></div></li> <li><div class="src-line"><a name="a913"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is -1 on hangup or error, 0 if playback completes with no</span></div></li> <li><div class="src-line"><a name="a914"></a><span class="src-doc"> * digit received, otherwise a decimal value of the DTMF tone. Use chr() to convert to ASCII.</span></div></li> <li><div class="src-line"><a name="a915"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a916"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodfastpass_say_digits">fastpass_say_digits</a><span class="src-sym">(</span><span class="src-sym">&</span><span class="src-var">$buffer</span><span class="src-sym">, </span><span class="src-var">$digits</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span>=<span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a917"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a918"></a> <span class="src-var">$proceed </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a919"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$escape_digits </span>!= <span class="src-str">'' </span>&& <span class="src-var">$buffer </span>!= <span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a920"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a921"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/strpos">strpos</a><span class="src-sym">(</span><a href="http://www.php.net/chr">chr</a><span class="src-sym">(</span><span class="src-num">255</span><span class="src-sym">) </span>. <span class="src-var">$escape_digits</span><span class="src-sym">, </span><span class="src-var">$buffer</span><span class="src-sym">{</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">}</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a922"></a> <span class="src-var">$proceed </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a923"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a924"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$buffer </span>== <span class="src-str">'' </span>|| <span class="src-var">$proceed</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a925"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a926"></a> <span class="src-var">$res </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodsay_digits">say_digits</a><span class="src-sym">(</span><span class="src-var">$digits</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a927"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'code'</span><span class="src-sym">] </span>== <span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a> </span>&& <span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">] </span>> <span class="src-num">0</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a928"></a> <span class="src-var">$buffer </span>.= <a href="http://www.php.net/chr">chr</a><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a929"></a> <span class="src-key">return </span><span class="src-var">$res</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a930"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a931"></a> <span class="src-key">return </span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'code'</span>=><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a></span><span class="src-sym">, </span><span class="src-str">'result'</span>=><a href="http://www.php.net/ord">ord</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">{</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">}</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a932"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a933"></a> </div></li> <li><div class="src-line"><a name="a934"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a935"></a><span class="src-doc"> * Say the given number, returning early if any of the given DTMF escape digits are received on the channel.</span></div></li> <li><div class="src-line"><a name="a936"></a><span class="src-doc"> * Return early if $buffer is adequate for request.</span></div></li> <li><div class="src-line"><a name="a937"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a938"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-say+number</span></div></li> <li><div class="src-line"><a name="a939"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$buffer </span></div></li> <li><div class="src-line"><a name="a940"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$number </span></div></li> <li><div class="src-line"><a name="a941"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$escape_digits </span></div></li> <li><div class="src-line"><a name="a942"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is -1 on hangup or error, 0 if playback completes with no</span></div></li> <li><div class="src-line"><a name="a943"></a><span class="src-doc"> * digit received, otherwise a decimal value of the DTMF tone. Use chr() to convert to ASCII.</span></div></li> <li><div class="src-line"><a name="a944"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a945"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodfastpass_say_number">fastpass_say_number</a><span class="src-sym">(</span><span class="src-sym">&</span><span class="src-var">$buffer</span><span class="src-sym">, </span><span class="src-var">$number</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span>=<span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a946"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a947"></a> <span class="src-var">$proceed </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a948"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$escape_digits </span>!= <span class="src-str">'' </span>&& <span class="src-var">$buffer </span>!= <span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a949"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a950"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/strpos">strpos</a><span class="src-sym">(</span><a href="http://www.php.net/chr">chr</a><span class="src-sym">(</span><span class="src-num">255</span><span class="src-sym">) </span>. <span class="src-var">$escape_digits</span><span class="src-sym">, </span><span class="src-var">$buffer</span><span class="src-sym">{</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">}</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a951"></a> <span class="src-var">$proceed </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a952"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a953"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$buffer </span>== <span class="src-str">'' </span>|| <span class="src-var">$proceed</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a954"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a955"></a> <span class="src-var">$res </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodsay_number">say_number</a><span class="src-sym">(</span><span class="src-var">$number</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a956"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'code'</span><span class="src-sym">] </span>== <span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a> </span>&& <span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">] </span>> <span class="src-num">0</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a957"></a> <span class="src-var">$buffer </span>.= <a href="http://www.php.net/chr">chr</a><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a958"></a> <span class="src-key">return </span><span class="src-var">$res</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a959"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a960"></a> <span class="src-key">return </span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'code'</span>=><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a></span><span class="src-sym">, </span><span class="src-str">'result'</span>=><a href="http://www.php.net/ord">ord</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">{</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">}</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a961"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a962"></a> </div></li> <li><div class="src-line"><a name="a963"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a964"></a><span class="src-doc"> * Say the given character string, returning early if any of the given DTMF escape digits are received on the channel.</span></div></li> <li><div class="src-line"><a name="a965"></a><span class="src-doc"> * Return early if $buffer is adequate for request.</span></div></li> <li><div class="src-line"><a name="a966"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a967"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-say+phonetic</span></div></li> <li><div class="src-line"><a name="a968"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$buffer </span></div></li> <li><div class="src-line"><a name="a969"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$text </span></div></li> <li><div class="src-line"><a name="a970"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$escape_digits </span></div></li> <li><div class="src-line"><a name="a971"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is -1 on hangup or error, 0 if playback completes with no</span></div></li> <li><div class="src-line"><a name="a972"></a><span class="src-doc"> * digit received, otherwise a decimal value of the DTMF tone. Use chr() to convert to ASCII.</span></div></li> <li><div class="src-line"><a name="a973"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a974"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodfastpass_say_phonetic">fastpass_say_phonetic</a><span class="src-sym">(</span><span class="src-sym">&</span><span class="src-var">$buffer</span><span class="src-sym">, </span><span class="src-var">$text</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span>=<span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a975"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a976"></a> <span class="src-var">$proceed </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a977"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$escape_digits </span>!= <span class="src-str">'' </span>&& <span class="src-var">$buffer </span>!= <span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a978"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a979"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/strpos">strpos</a><span class="src-sym">(</span><a href="http://www.php.net/chr">chr</a><span class="src-sym">(</span><span class="src-num">255</span><span class="src-sym">) </span>. <span class="src-var">$escape_digits</span><span class="src-sym">, </span><span class="src-var">$buffer</span><span class="src-sym">{</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">}</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a980"></a> <span class="src-var">$proceed </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a981"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a982"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$buffer </span>== <span class="src-str">'' </span>|| <span class="src-var">$proceed</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a983"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a984"></a> <span class="src-var">$res </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodsay_phonetic">say_phonetic</a><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a985"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'code'</span><span class="src-sym">] </span>== <span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a> </span>&& <span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">] </span>> <span class="src-num">0</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a986"></a> <span class="src-var">$buffer </span>.= <a href="http://www.php.net/chr">chr</a><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a987"></a> <span class="src-key">return </span><span class="src-var">$res</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a988"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a989"></a> <span class="src-key">return </span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'code'</span>=><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a></span><span class="src-sym">, </span><span class="src-str">'result'</span>=><a href="http://www.php.net/ord">ord</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">{</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">}</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a990"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a991"></a> </div></li> <li><div class="src-line"><a name="a992"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a993"></a><span class="src-doc"> * Say a given time, returning early if any of the given DTMF escape digits are received on the channel.</span></div></li> <li><div class="src-line"><a name="a994"></a><span class="src-doc"> * Return early if $buffer is adequate for request.</span></div></li> <li><div class="src-line"><a name="a995"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a996"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-say+time</span></div></li> <li><div class="src-line"><a name="a997"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$buffer </span></div></li> <li><div class="src-line"><a name="a998"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$time </span><span class="src-doc">number of seconds elapsed since 00:00:00 on January 1, 1970, Coordinated Universal Time (UTC).</span></div></li> <li><div class="src-line"><a name="a999"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$escape_digits </span></div></li> <li><div class="src-line"><a name="a1000"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is -1 on hangup or error, 0 if playback completes with no</span></div></li> <li><div class="src-line"><a name="a1001"></a><span class="src-doc"> * digit received, otherwise a decimal value of the DTMF tone. Use chr() to convert to ASCII.</span></div></li> <li><div class="src-line"><a name="a1002"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1003"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodfastpass_say_time">fastpass_say_time</a><span class="src-sym">(</span><span class="src-sym">&</span><span class="src-var">$buffer</span><span class="src-sym">, </span><span class="src-var">$time</span>=<span class="src-id">NULL</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span>=<span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1004"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1005"></a> <span class="src-var">$proceed </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1006"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$escape_digits </span>!= <span class="src-str">'' </span>&& <span class="src-var">$buffer </span>!= <span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1007"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1008"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/strpos">strpos</a><span class="src-sym">(</span><a href="http://www.php.net/chr">chr</a><span class="src-sym">(</span><span class="src-num">255</span><span class="src-sym">) </span>. <span class="src-var">$escape_digits</span><span class="src-sym">, </span><span class="src-var">$buffer</span><span class="src-sym">{</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">}</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1009"></a> <span class="src-var">$proceed </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1010"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1011"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$buffer </span>== <span class="src-str">'' </span>|| <span class="src-var">$proceed</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1012"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1013"></a> <span class="src-var">$res </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodsay_time">say_time</a><span class="src-sym">(</span><span class="src-var">$time</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1014"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'code'</span><span class="src-sym">] </span>== <span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a> </span>&& <span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">] </span>> <span class="src-num">0</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1015"></a> <span class="src-var">$buffer </span>.= <a href="http://www.php.net/chr">chr</a><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1016"></a> <span class="src-key">return </span><span class="src-var">$res</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1017"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1018"></a> <span class="src-key">return </span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'code'</span>=><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a></span><span class="src-sym">, </span><span class="src-str">'result'</span>=><a href="http://www.php.net/ord">ord</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">{</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">}</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1019"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1020"></a> </div></li> <li><div class="src-line"><a name="a1021"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a1022"></a><span class="src-doc"> * Play the given audio file, allowing playback to be interrupted by a DTMF digit. This command is similar to the GET DATA</span></div></li> <li><div class="src-line"><a name="a1023"></a><span class="src-doc"> * command but this command returns after the first DTMF digit has been pressed while GET DATA can accumulated any number of</span></div></li> <li><div class="src-line"><a name="a1024"></a><span class="src-doc"> * digits before returning.</span></div></li> <li><div class="src-line"><a name="a1025"></a><span class="src-doc"> * Return early if $buffer is adequate for request.</span></div></li> <li><div class="src-line"><a name="a1026"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1027"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-stream+file</span></div></li> <li><div class="src-line"><a name="a1028"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$buffer </span></div></li> <li><div class="src-line"><a name="a1029"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$filename </span><span class="src-doc">without extension, often in /var/lib/asterisk/sounds</span></div></li> <li><div class="src-line"><a name="a1030"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$escape_digits </span></div></li> <li><div class="src-line"><a name="a1031"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$offset </span></div></li> <li><div class="src-line"><a name="a1032"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] is -1 on hangup or error, 0 if playback completes with no</span></div></li> <li><div class="src-line"><a name="a1033"></a><span class="src-doc"> * digit received, otherwise a decimal value of the DTMF tone. Use chr() to convert to ASCII.</span></div></li> <li><div class="src-line"><a name="a1034"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1035"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodfastpass_stream_file">fastpass_stream_file</a><span class="src-sym">(</span><span class="src-sym">&</span><span class="src-var">$buffer</span><span class="src-sym">, </span><span class="src-var">$filename</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span>=<span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$offset</span>=<span class="src-num">0</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1036"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1037"></a> <span class="src-var">$proceed </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1038"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$escape_digits </span>!= <span class="src-str">'' </span>&& <span class="src-var">$buffer </span>!= <span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1039"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1040"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/strpos">strpos</a><span class="src-sym">(</span><a href="http://www.php.net/chr">chr</a><span class="src-sym">(</span><span class="src-num">255</span><span class="src-sym">) </span>. <span class="src-var">$escape_digits</span><span class="src-sym">, </span><span class="src-var">$buffer</span><span class="src-sym">{</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">}</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1041"></a> <span class="src-var">$proceed </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1042"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1043"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$buffer </span>== <span class="src-str">'' </span>|| <span class="src-var">$proceed</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1044"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1045"></a> <span class="src-var">$res </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodstream_file">stream_file</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span><span class="src-sym">, </span><span class="src-var">$offset</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1046"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'code'</span><span class="src-sym">] </span>== <span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a> </span>&& <span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">] </span>> <span class="src-num">0</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1047"></a> <span class="src-var">$buffer </span>.= <a href="http://www.php.net/chr">chr</a><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1048"></a> <span class="src-key">return </span><span class="src-var">$res</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1049"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1050"></a> <span class="src-key">return </span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'code'</span>=><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a></span><span class="src-sym">, </span><span class="src-str">'result'</span>=><a href="http://www.php.net/ord">ord</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">{</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">}</span><span class="src-sym">)</span><span class="src-sym">, </span><span class="src-str">'endpos'</span>=><span class="src-num">0</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1051"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1052"></a> </div></li> <li><div class="src-line"><a name="a1053"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a1054"></a><span class="src-doc"> * Use festival to read text.</span></div></li> <li><div class="src-line"><a name="a1055"></a><span class="src-doc"> * Return early if $buffer is adequate for request.</span></div></li> <li><div class="src-line"><a name="a1056"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1057"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.cstr.ed.ac.uk/projects/festival/</span></div></li> <li><div class="src-line"><a name="a1058"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$buffer </span></div></li> <li><div class="src-line"><a name="a1059"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$text </span></div></li> <li><div class="src-line"><a name="a1060"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$escape_digits </span></div></li> <li><div class="src-line"><a name="a1061"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$frequency </span></div></li> <li><div class="src-line"><a name="a1062"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a1063"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1064"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodfastpass_text2wav">fastpass_text2wav</a><span class="src-sym">(</span><span class="src-sym">&</span><span class="src-var">$buffer</span><span class="src-sym">, </span><span class="src-var">$text</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span>=<span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$frequency</span>=<span class="src-num">8000</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1065"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1066"></a> <span class="src-var">$proceed </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1067"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$escape_digits </span>!= <span class="src-str">'' </span>&& <span class="src-var">$buffer </span>!= <span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1068"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1069"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/strpos">strpos</a><span class="src-sym">(</span><a href="http://www.php.net/chr">chr</a><span class="src-sym">(</span><span class="src-num">255</span><span class="src-sym">) </span>. <span class="src-var">$escape_digits</span><span class="src-sym">, </span><span class="src-var">$buffer</span><span class="src-sym">{</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">}</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1070"></a> <span class="src-var">$proceed </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1071"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1072"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$buffer </span>== <span class="src-str">'' </span>|| <span class="src-var">$proceed</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1073"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1074"></a> <span class="src-var">$res </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodtext2wav">text2wav</a><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span><span class="src-sym">, </span><span class="src-var">$frequency</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1075"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'code'</span><span class="src-sym">] </span>== <span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a> </span>&& <span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">] </span>> <span class="src-num">0</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1076"></a> <span class="src-var">$buffer </span>.= <a href="http://www.php.net/chr">chr</a><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1077"></a> <span class="src-key">return </span><span class="src-var">$res</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1078"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1079"></a> <span class="src-key">return </span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'code'</span>=><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a></span><span class="src-sym">, </span><span class="src-str">'result'</span>=><a href="http://www.php.net/ord">ord</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">{</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">}</span><span class="src-sym">)</span><span class="src-sym">, </span><span class="src-str">'endpos'</span>=><span class="src-num">0</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1080"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1081"></a> </div></li> <li><div class="src-line"><a name="a1082"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a1083"></a><span class="src-doc"> * Use Cepstral Swift to read text.</span></div></li> <li><div class="src-line"><a name="a1084"></a><span class="src-doc"> * Return early if $buffer is adequate for request.</span></div></li> <li><div class="src-line"><a name="a1085"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1086"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.cepstral.com/</span></div></li> <li><div class="src-line"><a name="a1087"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$buffer </span></div></li> <li><div class="src-line"><a name="a1088"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$text </span></div></li> <li><div class="src-line"><a name="a1089"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$escape_digits </span></div></li> <li><div class="src-line"><a name="a1090"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$frequency </span></div></li> <li><div class="src-line"><a name="a1091"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a1092"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1093"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodfastpass_swift">fastpass_swift</a><span class="src-sym">(</span><span class="src-sym">&</span><span class="src-var">$buffer</span><span class="src-sym">, </span><span class="src-var">$text</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span>=<span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$frequency</span>=<span class="src-num">8000</span><span class="src-sym">, </span><span class="src-var">$voice</span>=<span class="src-id">NULL</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1094"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1095"></a> <span class="src-var">$proceed </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1096"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$escape_digits </span>!= <span class="src-str">'' </span>&& <span class="src-var">$buffer </span>!= <span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1097"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1098"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/strpos">strpos</a><span class="src-sym">(</span><a href="http://www.php.net/chr">chr</a><span class="src-sym">(</span><span class="src-num">255</span><span class="src-sym">) </span>. <span class="src-var">$escape_digits</span><span class="src-sym">, </span><span class="src-var">$buffer</span><span class="src-sym">{</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">}</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1099"></a> <span class="src-var">$proceed </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1100"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1101"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$buffer </span>== <span class="src-str">'' </span>|| <span class="src-var">$proceed</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1102"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1103"></a> <span class="src-var">$res </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodswift">swift</a><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span><span class="src-sym">, </span><span class="src-var">$frequency</span><span class="src-sym">, </span><span class="src-var">$voice</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1104"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'code'</span><span class="src-sym">] </span>== <span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a> </span>&& <span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">] </span>> <span class="src-num">0</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1105"></a> <span class="src-var">$buffer </span>.= <a href="http://www.php.net/chr">chr</a><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1106"></a> <span class="src-key">return </span><span class="src-var">$res</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1107"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1108"></a> <span class="src-key">return </span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'code'</span>=><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a></span><span class="src-sym">, </span><span class="src-str">'result'</span>=><a href="http://www.php.net/ord">ord</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">{</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">}</span><span class="src-sym">)</span><span class="src-sym">, </span><span class="src-str">'endpos'</span>=><span class="src-num">0</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1109"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1110"></a> </div></li> <li><div class="src-line"><a name="a1111"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a1112"></a><span class="src-doc"> * Say Puncutation in a string.</span></div></li> <li><div class="src-line"><a name="a1113"></a><span class="src-doc"> * Return early if $buffer is adequate for request.</span></div></li> <li><div class="src-line"><a name="a1114"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1115"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$buffer </span></div></li> <li><div class="src-line"><a name="a1116"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$text </span></div></li> <li><div class="src-line"><a name="a1117"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$escape_digits </span></div></li> <li><div class="src-line"><a name="a1118"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$frequency </span></div></li> <li><div class="src-line"><a name="a1119"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a1120"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1121"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodfastpass_say_punctuation">fastpass_say_punctuation</a><span class="src-sym">(</span><span class="src-sym">&</span><span class="src-var">$buffer</span><span class="src-sym">, </span><span class="src-var">$text</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span>=<span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$frequency</span>=<span class="src-num">8000</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1122"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1123"></a> <span class="src-var">$proceed </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1124"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$escape_digits </span>!= <span class="src-str">'' </span>&& <span class="src-var">$buffer </span>!= <span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1125"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1126"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/strpos">strpos</a><span class="src-sym">(</span><a href="http://www.php.net/chr">chr</a><span class="src-sym">(</span><span class="src-num">255</span><span class="src-sym">) </span>. <span class="src-var">$escape_digits</span><span class="src-sym">, </span><span class="src-var">$buffer</span><span class="src-sym">{</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">}</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1127"></a> <span class="src-var">$proceed </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1128"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1129"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$buffer </span>== <span class="src-str">'' </span>|| <span class="src-var">$proceed</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1130"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1131"></a> <span class="src-var">$res </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodsay_punctuation">say_punctuation</a><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span><span class="src-sym">, </span><span class="src-var">$frequency</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1132"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'code'</span><span class="src-sym">] </span>== <span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a> </span>&& <span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">] </span>> <span class="src-num">0</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1133"></a> <span class="src-var">$buffer </span>.= <a href="http://www.php.net/chr">chr</a><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1134"></a> <span class="src-key">return </span><span class="src-var">$res</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1135"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1136"></a> <span class="src-key">return </span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'code'</span>=><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a></span><span class="src-sym">, </span><span class="src-str">'result'</span>=><a href="http://www.php.net/ord">ord</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">{</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">}</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1137"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1138"></a> </div></li> <li><div class="src-line"><a name="a1139"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a1140"></a><span class="src-doc"> * Plays the given file and receives DTMF data.</span></div></li> <li><div class="src-line"><a name="a1141"></a><span class="src-doc"> * Return early if $buffer is adequate for request.</span></div></li> <li><div class="src-line"><a name="a1142"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1143"></a><span class="src-doc"> * This is similar to STREAM FILE, but this command can accept and return many DTMF digits,</span></div></li> <li><div class="src-line"><a name="a1144"></a><span class="src-doc"> * while STREAM FILE returns immediately after the first DTMF digit is detected.</span></div></li> <li><div class="src-line"><a name="a1145"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1146"></a><span class="src-doc"> * Asterisk looks for the file to play in /var/lib/asterisk/sounds by default.</span></div></li> <li><div class="src-line"><a name="a1147"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1148"></a><span class="src-doc"> * If the user doesn't press any keys when the message plays, there is $timeout milliseconds</span></div></li> <li><div class="src-line"><a name="a1149"></a><span class="src-doc"> * of silence then the command ends.</span></div></li> <li><div class="src-line"><a name="a1150"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1151"></a><span class="src-doc"> * The user has the opportunity to press a key at any time during the message or the</span></div></li> <li><div class="src-line"><a name="a1152"></a><span class="src-doc"> * post-message silence. If the user presses a key while the message is playing, the</span></div></li> <li><div class="src-line"><a name="a1153"></a><span class="src-doc"> * message stops playing. When the first key is pressed a timer starts counting for</span></div></li> <li><div class="src-line"><a name="a1154"></a><span class="src-doc"> * $timeout milliseconds. Every time the user presses another key the timer is restarted.</span></div></li> <li><div class="src-line"><a name="a1155"></a><span class="src-doc"> * The command ends when the counter goes to zero or the maximum number of digits is entered,</span></div></li> <li><div class="src-line"><a name="a1156"></a><span class="src-doc"> * whichever happens first.</span></div></li> <li><div class="src-line"><a name="a1157"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1158"></a><span class="src-doc"> * If you don't specify a time out then a default timeout of 2000 is used following a pressed</span></div></li> <li><div class="src-line"><a name="a1159"></a><span class="src-doc"> * digit. If no digits are pressed then 6 seconds of silence follow the message.</span></div></li> <li><div class="src-line"><a name="a1160"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1161"></a><span class="src-doc"> * If you don't specify $max_digits then the user can enter as many digits as they want.</span></div></li> <li><div class="src-line"><a name="a1162"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1163"></a><span class="src-doc"> * Pressing the # key has the same effect as the timer running out: the command ends and</span></div></li> <li><div class="src-line"><a name="a1164"></a><span class="src-doc"> * any previously keyed digits are returned. A side effect of this is that there is no</span></div></li> <li><div class="src-line"><a name="a1165"></a><span class="src-doc"> * way to read a # key using this command.</span></div></li> <li><div class="src-line"><a name="a1166"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1167"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-get+data</span></div></li> <li><div class="src-line"><a name="a1168"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$buffer </span></div></li> <li><div class="src-line"><a name="a1169"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$filename </span><span class="src-doc">file to play. Do not include file extension.</span></div></li> <li><div class="src-line"><a name="a1170"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$timeout </span><span class="src-doc">milliseconds</span></div></li> <li><div class="src-line"><a name="a1171"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$max_digits </span></div></li> <li><div class="src-line"><a name="a1172"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information. ['result'] holds the digits and ['data'] holds the timeout if present.</span></div></li> <li><div class="src-line"><a name="a1173"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1174"></a><span class="src-doc"> * This differs from other commands with return DTMF as numbers representing ASCII characters.</span></div></li> <li><div class="src-line"><a name="a1175"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1176"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodfastpass_get_data">fastpass_get_data</a><span class="src-sym">(</span><span class="src-sym">&</span><span class="src-var">$buffer</span><span class="src-sym">, </span><span class="src-var">$filename</span><span class="src-sym">, </span><span class="src-var">$timeout</span>=<span class="src-id">NULL</span><span class="src-sym">, </span><span class="src-var">$max_digits</span>=<span class="src-id">NULL</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1177"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1178"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/is_null">is_null</a><span class="src-sym">(</span><span class="src-var">$max_digits</span><span class="src-sym">) </span>|| <a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">) </span>< <span class="src-var">$max_digits</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1179"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1180"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$buffer </span>== <span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1181"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1182"></a> <span class="src-var">$res </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodget_data">get_data</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">, </span><span class="src-var">$timeout</span><span class="src-sym">, </span><span class="src-var">$max_digits</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1183"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'code'</span><span class="src-sym">] </span>== <span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a></span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1184"></a> <span class="src-var">$buffer </span>.= <span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1185"></a> <span class="src-key">return </span><span class="src-var">$res</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1186"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1187"></a> <span class="src-key">else</span></div></li> <li><div class="src-line"><a name="a1188"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1189"></a> <span class="src-key">while</span><span class="src-sym">(</span><a href="http://www.php.net/is_null">is_null</a><span class="src-sym">(</span><span class="src-var">$max_digits</span><span class="src-sym">) </span>|| <a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$buffer</span><span class="src-sym">) </span>< <span class="src-var">$max_digits</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1190"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1191"></a> <span class="src-var">$res </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodwait_for_digit">wait_for_digit</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1192"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'code'</span><span class="src-sym">] </span>!= <span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a></span><span class="src-sym">) </span><span class="src-key">return </span><span class="src-var">$res</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1193"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">] </span>== <a href="http://www.php.net/ord">ord</a><span class="src-sym">(</span><span class="src-str">'#'</span><span class="src-sym">)) </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1194"></a> <span class="src-var">$buffer </span>.= <a href="http://www.php.net/chr">chr</a><span class="src-sym">(</span><span class="src-var">$res</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1195"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1196"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1197"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1198"></a> <span class="src-key">return </span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'code'</span>=><span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a></span><span class="src-sym">, </span><span class="src-str">'result'</span>=><span class="src-var">$buffer</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1199"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1200"></a> </div></li> <li><div class="src-line"><a name="a1201"></a> <span class="src-comm">// *********************************************************************************************************</span></div></li> <li><div class="src-line"><a name="a1202"></a> <span class="src-comm">// ** DERIVED **</span></div></li> <li><div class="src-line"><a name="a1203"></a> <span class="src-comm">// *********************************************************************************************************</span></div></li> <li><div class="src-line"><a name="a1204"></a> </div></li> <li><div class="src-line"><a name="a1205"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a1206"></a><span class="src-doc"> * Menu.</span></div></li> <li><div class="src-line"><a name="a1207"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1208"></a><span class="src-doc"> * This function presents the user with a menu and reads the response</span></div></li> <li><div class="src-line"><a name="a1209"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1210"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">array </span><span class="src-doc-var">$choices </span><span class="src-doc">has the following structure:</span></div></li> <li><div class="src-line"><a name="a1211"></a><span class="src-doc"> * array('1'=>'*Press 1 for this', // festival reads if prompt starts with *</span></div></li> <li><div class="src-line"><a name="a1212"></a><span class="src-doc"> * '2'=>'some-gsm-without-extension',</span></div></li> <li><div class="src-line"><a name="a1213"></a><span class="src-doc"> * '*'=>'*Press star for help');</span></div></li> <li><div class="src-line"><a name="a1214"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">mixed </span><span class="src-doc">key pressed on sucess, -1 on failure</span></div></li> <li><div class="src-line"><a name="a1215"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1216"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodmenu">menu</a><span class="src-sym">(</span><span class="src-var">$choices</span><span class="src-sym">, </span><span class="src-var">$timeout</span>=<span class="src-num">2000</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1217"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1218"></a> <span class="src-var">$keys </span>= <a href="http://www.php.net/join">join</a><span class="src-sym">(</span><span class="src-str">''</span><span class="src-sym">, </span><a href="http://www.php.net/array_keys">array_keys</a><span class="src-sym">(</span><span class="src-var">$choices</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1219"></a> <span class="src-var">$choice </span>= <span class="src-id">NULL</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1220"></a> <span class="src-key">while</span><span class="src-sym">(</span><a href="http://www.php.net/is_null">is_null</a><span class="src-sym">(</span><span class="src-var">$choice</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1221"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1222"></a> <span class="src-key">foreach</span><span class="src-sym">(</span><span class="src-var">$choices </span><span class="src-key">as </span><span class="src-var">$prompt</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1223"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1224"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$prompt</span><span class="src-sym">{</span><span class="src-num">0</span><span class="src-sym">} </span>== <span class="src-str">'*'</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1225"></a> <span class="src-var">$ret </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodtext2wav">text2wav</a><span class="src-sym">(</span><a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-var">$prompt</span><span class="src-sym">, </span><span class="src-num">1</span><span class="src-sym">)</span><span class="src-sym">, </span><span class="src-var">$keys</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1226"></a> <span class="src-key">else</span></div></li> <li><div class="src-line"><a name="a1227"></a> <span class="src-var">$ret </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodstream_file">stream_file</a><span class="src-sym">(</span><span class="src-var">$prompt</span><span class="src-sym">, </span><span class="src-var">$keys</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1228"></a> </div></li> <li><div class="src-line"><a name="a1229"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'code'</span><span class="src-sym">] </span>!= <span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a> </span>|| <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">] </span>== -<span class="src-num">1</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1230"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1231"></a> <span class="src-var">$choice </span>= -<span class="src-num">1</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1232"></a> <span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1233"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1234"></a> </div></li> <li><div class="src-line"><a name="a1235"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">] </span>!= <span class="src-num">0</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1236"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1237"></a> <span class="src-var">$choice </span>= <a href="http://www.php.net/chr">chr</a><span class="src-sym">(</span><span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1238"></a> <span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1239"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1240"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1241"></a> </div></li> <li><div class="src-line"><a name="a1242"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/is_null">is_null</a><span class="src-sym">(</span><span class="src-var">$choice</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1243"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1244"></a> <span class="src-var">$ret </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodget_data">get_data</a><span class="src-sym">(</span><span class="src-str">'beep'</span><span class="src-sym">, </span><span class="src-var">$timeout</span><span class="src-sym">, </span><span class="src-num">1</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1245"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'code'</span><span class="src-sym">] </span>!= <span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a> </span>|| <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">] </span>== -<span class="src-num">1</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1246"></a> <span class="src-var">$choice </span>= -<span class="src-num">1</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1247"></a> <span class="src-key">elseif</span><span class="src-sym">(</span><span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">] </span>!= <span class="src-str">'' </span>&& <a href="http://www.php.net/strpos">strpos</a><span class="src-sym">(</span><span class="src-str">' '</span>.<span class="src-var">$keys</span><span class="src-sym">, </span><span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">]</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1248"></a> <span class="src-var">$choice </span>= <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1249"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1250"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1251"></a> <span class="src-key">return </span><span class="src-var">$choice</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1252"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1253"></a> </div></li> <li><div class="src-line"><a name="a1254"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a1255"></a><span class="src-doc"> * setContext - Set context, extension and priority.</span></div></li> <li><div class="src-line"><a name="a1256"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1257"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$context </span></div></li> <li><div class="src-line"><a name="a1258"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$extension </span></div></li> <li><div class="src-line"><a name="a1259"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$priority </span></div></li> <li><div class="src-line"><a name="a1260"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1261"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodsetContext">setContext</a><span class="src-sym">(</span><span class="src-var">$context</span><span class="src-sym">, </span><span class="src-var">$extension</span>=<span class="src-str">'s'</span><span class="src-sym">, </span><span class="src-var">$priority</span>=<span class="src-num">1</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1262"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1263"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodset_context">set_context</a><span class="src-sym">(</span><span class="src-var">$context</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1264"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodset_extension">set_extension</a><span class="src-sym">(</span><span class="src-var">$extension</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1265"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodset_priority">set_priority</a><span class="src-sym">(</span><span class="src-var">$priority</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1266"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1267"></a> </div></li> <li><div class="src-line"><a name="a1268"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a1269"></a><span class="src-doc"> * Parse caller id.</span></div></li> <li><div class="src-line"><a name="a1270"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1271"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/dtmf.php Get DTMF tones from the user and say the digits</span></div></li> <li><div class="src-line"><a name="a1272"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/input.php Get text input from the user and say it back</span></div></li> <li><div class="src-line"><a name="a1273"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1274"></a><span class="src-doc"> * "name" <proto:user@server:port></span></div></li> <li><div class="src-line"><a name="a1275"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1276"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$callerid </span></div></li> <li><div class="src-line"><a name="a1277"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array('Name'=>$name, </span><span class="src-doc">'Number'=>$number)</span></div></li> <li><div class="src-line"><a name="a1278"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1279"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodparse_callerid">parse_callerid</a><span class="src-sym">(</span><span class="src-var">$callerid</span>=<span class="src-id">NULL</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1280"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1281"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/is_null">is_null</a><span class="src-sym">(</span><span class="src-var">$callerid</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1282"></a> <span class="src-var">$callerid </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$request">request</a><span class="src-sym">[</span><span class="src-str">'agi_callerid'</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1283"></a> </div></li> <li><div class="src-line"><a name="a1284"></a> <span class="src-var">$ret </span>= <span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'name'</span>=><span class="src-str">''</span><span class="src-sym">, </span><span class="src-str">'protocol'</span>=><span class="src-str">''</span><span class="src-sym">, </span><span class="src-str">'username'</span>=><span class="src-str">''</span><span class="src-sym">, </span><span class="src-str">'host'</span>=><span class="src-str">''</span><span class="src-sym">, </span><span class="src-str">'port'</span>=><span class="src-str">''</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1285"></a> <span class="src-var">$callerid </span>= <a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><span class="src-var">$callerid</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1286"></a> </div></li> <li><div class="src-line"><a name="a1287"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$callerid</span><span class="src-sym">{</span><span class="src-num">0</span><span class="src-sym">} </span>== <span class="src-str">'"' </span>|| <span class="src-var">$callerid</span><span class="src-sym">{</span><span class="src-num">0</span><span class="src-sym">} </span>== <span class="src-str">"'"</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1288"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1289"></a> <span class="src-var">$d </span>= <span class="src-var">$callerid</span><span class="src-sym">{</span><span class="src-num">0</span><span class="src-sym">}</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1290"></a> <span class="src-var">$callerid </span>= <a href="http://www.php.net/explode">explode</a><span class="src-sym">(</span><span class="src-var">$d</span><span class="src-sym">, </span><a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-var">$callerid</span><span class="src-sym">, </span><span class="src-num">1</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1291"></a> <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'name'</span><span class="src-sym">] </span>= <a href="http://www.php.net/array_shift">array_shift</a><span class="src-sym">(</span><span class="src-var">$callerid</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1292"></a> <span class="src-var">$callerid </span>= <a href="http://www.php.net/join">join</a><span class="src-sym">(</span><span class="src-var">$d</span><span class="src-sym">, </span><span class="src-var">$callerid</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1293"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1294"></a> </div></li> <li><div class="src-line"><a name="a1295"></a> <span class="src-var">$callerid </span>= <a href="http://www.php.net/explode">explode</a><span class="src-sym">(</span><span class="src-str">'@'</span><span class="src-sym">, </span><a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><span class="src-var">$callerid</span><span class="src-sym">, </span><span class="src-str">'<> '</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1296"></a> <span class="src-var">$username </span>= <a href="http://www.php.net/explode">explode</a><span class="src-sym">(</span><span class="src-str">':'</span><span class="src-sym">, </span><a href="http://www.php.net/array_shift">array_shift</a><span class="src-sym">(</span><span class="src-var">$callerid</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1297"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$username</span><span class="src-sym">) </span>== <span class="src-num">1</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1298"></a> <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'username'</span><span class="src-sym">] </span>= <span class="src-var">$username</span><span class="src-sym">[</span><span class="src-num">0</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1299"></a> <span class="src-key">else</span></div></li> <li><div class="src-line"><a name="a1300"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1301"></a> <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'protocol'</span><span class="src-sym">] </span>= <a href="http://www.php.net/array_shift">array_shift</a><span class="src-sym">(</span><span class="src-var">$username</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1302"></a> <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'username'</span><span class="src-sym">] </span>= <a href="http://www.php.net/join">join</a><span class="src-sym">(</span><span class="src-str">':'</span><span class="src-sym">, </span><span class="src-var">$username</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1303"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1304"></a> </div></li> <li><div class="src-line"><a name="a1305"></a> <span class="src-var">$callerid </span>= <a href="http://www.php.net/join">join</a><span class="src-sym">(</span><span class="src-str">'@'</span><span class="src-sym">, </span><span class="src-var">$callerid</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1306"></a> <span class="src-var">$host </span>= <a href="http://www.php.net/explode">explode</a><span class="src-sym">(</span><span class="src-str">':'</span><span class="src-sym">, </span><span class="src-var">$callerid</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1307"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$host</span><span class="src-sym">) </span>== <span class="src-num">1</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1308"></a> <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'host'</span><span class="src-sym">] </span>= <span class="src-var">$host</span><span class="src-sym">[</span><span class="src-num">0</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1309"></a> <span class="src-key">else</span></div></li> <li><div class="src-line"><a name="a1310"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1311"></a> <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'host'</span><span class="src-sym">] </span>= <a href="http://www.php.net/array_shift">array_shift</a><span class="src-sym">(</span><span class="src-var">$host</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1312"></a> <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'port'</span><span class="src-sym">] </span>= <a href="http://www.php.net/join">join</a><span class="src-sym">(</span><span class="src-str">':'</span><span class="src-sym">, </span><span class="src-var">$host</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1313"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1314"></a> </div></li> <li><div class="src-line"><a name="a1315"></a> <span class="src-key">return </span><span class="src-var">$ret</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1316"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1317"></a> </div></li> <li><div class="src-line"><a name="a1318"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a1319"></a><span class="src-doc"> * Use festival to read text.</span></div></li> <li><div class="src-line"><a name="a1320"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1321"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/dtmf.php Get DTMF tones from the user and say the digits</span></div></li> <li><div class="src-line"><a name="a1322"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/input.php Get text input from the user and say it back</span></div></li> <li><div class="src-line"><a name="a1323"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/ping.php Ping an IP address</span></div></li> <li><div class="src-line"><a name="a1324"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1325"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.cstr.ed.ac.uk/projects/festival/</span></div></li> <li><div class="src-line"><a name="a1326"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$text </span></div></li> <li><div class="src-line"><a name="a1327"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$escape_digits </span></div></li> <li><div class="src-line"><a name="a1328"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$frequency </span></div></li> <li><div class="src-line"><a name="a1329"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a1330"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1331"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodtext2wav">text2wav</a><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span>=<span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$frequency</span>=<span class="src-num">8000</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1332"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1333"></a> <span class="src-var">$text </span>= <a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1334"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$text </span>== <span class="src-str">''</span><span class="src-sym">) </span><span class="src-key">return </span><span class="src-id">true</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1335"></a> </div></li> <li><div class="src-line"><a name="a1336"></a> <span class="src-var">$hash </span>= <a href="http://www.php.net/md5">md5</a><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1337"></a> <span class="src-var">$fname </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'phpagi'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'tempdir'</span><span class="src-sym">] </span>. <span class="src-id">DIRECTORY_SEPARATOR</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1338"></a> <span class="src-var">$fname </span>.= <span class="src-str">'text2wav_' </span>. <span class="src-var">$hash</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1339"></a> </div></li> <li><div class="src-line"><a name="a1340"></a> <span class="src-comm">// create wave file</span></div></li> <li><div class="src-line"><a name="a1341"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/file_exists">file_exists</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str"><span class="src-var">$fname</span>.wav</span><span class="src-str">"</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1342"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1343"></a> <span class="src-comm">// write text file</span></div></li> <li><div class="src-line"><a name="a1344"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/file_exists">file_exists</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str"><span class="src-var">$fname</span>.txt</span><span class="src-str">"</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1345"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1346"></a> <span class="src-var">$fp </span>= <a href="http://www.php.net/fopen">fopen</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str"><span class="src-var">$fname</span>.txt</span><span class="src-str">"</span><span class="src-sym">, </span><span class="src-str">'w'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1347"></a> <a href="http://www.php.net/fputs">fputs</a><span class="src-sym">(</span><span class="src-var">$fp</span><span class="src-sym">, </span><span class="src-var">$text</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1348"></a> <a href="http://www.php.net/fclose">fclose</a><span class="src-sym">(</span><span class="src-var">$fp</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1349"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1350"></a> </div></li> <li><div class="src-line"><a name="a1351"></a> <a href="http://www.php.net/shell_exec">shell_exec</a><span class="src-sym">(</span><span class="src-str">"</span>{<span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'festival'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'text2wave'</span><span class="src-sym">]</span><span class="src-str"></span><span class="src-sym">}</span> -F <span class="src-var">$frequency</span> -o <span class="src-var">$fname</span>.wav <span class="src-var">$fname</span>.txt</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1352"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1353"></a> <span class="src-key">else</span></div></li> <li><div class="src-line"><a name="a1354"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1355"></a> <a href="http://www.php.net/touch">touch</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str"><span class="src-var">$fname</span>.txt</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1356"></a> <a href="http://www.php.net/touch">touch</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str"><span class="src-var">$fname</span>.wav</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1357"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1358"></a> </div></li> <li><div class="src-line"><a name="a1359"></a> <span class="src-comm">// stream it</span></div></li> <li><div class="src-line"><a name="a1360"></a> <span class="src-var">$ret </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodstream_file">stream_file</a><span class="src-sym">(</span><span class="src-var">$fname</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1361"></a> </div></li> <li><div class="src-line"><a name="a1362"></a> <span class="src-comm">// clean up old files</span></div></li> <li><div class="src-line"><a name="a1363"></a> <span class="src-var">$delete </span>= <a href="http://www.php.net/time">time</a><span class="src-sym">(</span><span class="src-sym">) </span>- <span class="src-num">2592000</span><span class="src-sym">; </span><span class="src-comm">// 1 month</span></div></li> <li><div class="src-line"><a name="a1364"></a> <span class="src-key">foreach</span><span class="src-sym">(</span><a href="http://www.php.net/glob">glob</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'phpagi'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'tempdir'</span><span class="src-sym">] </span>. <span class="src-id">DIRECTORY_SEPARATOR </span>. <span class="src-str">'text2wav_*'</span><span class="src-sym">) </span><span class="src-key">as </span><span class="src-var">$file</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1365"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/filemtime">filemtime</a><span class="src-sym">(</span><span class="src-var">$file</span><span class="src-sym">) </span>< <span class="src-var">$delete</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1366"></a> <a href="http://www.php.net/unlink">unlink</a><span class="src-sym">(</span><span class="src-var">$file</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1367"></a> </div></li> <li><div class="src-line"><a name="a1368"></a> <span class="src-key">return </span><span class="src-var">$ret</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1369"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1370"></a> </div></li> <li><div class="src-line"><a name="a1371"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a1372"></a><span class="src-doc"> * Use Cepstral Swift to read text.</span></div></li> <li><div class="src-line"><a name="a1373"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1374"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.cepstral.com/</span></div></li> <li><div class="src-line"><a name="a1375"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$text </span></div></li> <li><div class="src-line"><a name="a1376"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$escape_digits </span></div></li> <li><div class="src-line"><a name="a1377"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$frequency </span></div></li> <li><div class="src-line"><a name="a1378"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a1379"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1380"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodswift">swift</a><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span>=<span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$frequency</span>=<span class="src-num">8000</span><span class="src-sym">, </span><span class="src-var">$voice</span>=<span class="src-id">NULL</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1381"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1382"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/is_null">is_null</a><span class="src-sym">(</span><span class="src-var">$voice</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1383"></a> <span class="src-var">$voice </span>= <span class="src-str">"</span><span class="src-str">-n <span class="src-var">$voice</span></span><span class="src-str">"</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1384"></a> <span class="src-key">elseif</span><span class="src-sym">(</span>isset<span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'cepstral'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'voice'</span><span class="src-sym">]</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1385"></a> <span class="src-var">$voice </span>= <span class="src-str">"</span><span class="src-str">-n {<span class="src-var">$this</span></span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'cepstral'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'voice'</span><span class="src-sym">]</span><span class="src-str"></span><span class="src-sym">}</span></span><span class="src-str">"</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1386"></a> </div></li> <li><div class="src-line"><a name="a1387"></a> <span class="src-var">$text </span>= <a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1388"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$text </span>== <span class="src-str">''</span><span class="src-sym">) </span><span class="src-key">return </span><span class="src-id">true</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1389"></a> </div></li> <li><div class="src-line"><a name="a1390"></a> <span class="src-var">$hash </span>= <a href="http://www.php.net/md5">md5</a><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1391"></a> <span class="src-var">$fname </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'phpagi'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'tempdir'</span><span class="src-sym">] </span>. <span class="src-id">DIRECTORY_SEPARATOR</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1392"></a> <span class="src-var">$fname </span>.= <span class="src-str">'swift_' </span>. <span class="src-var">$hash</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1393"></a> </div></li> <li><div class="src-line"><a name="a1394"></a> <span class="src-comm">// create wave file</span></div></li> <li><div class="src-line"><a name="a1395"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/file_exists">file_exists</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str"><span class="src-var">$fname</span>.wav</span><span class="src-str">"</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1396"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1397"></a> <span class="src-comm">// write text file</span></div></li> <li><div class="src-line"><a name="a1398"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/file_exists">file_exists</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str"><span class="src-var">$fname</span>.txt</span><span class="src-str">"</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1399"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1400"></a> <span class="src-var">$fp </span>= <a href="http://www.php.net/fopen">fopen</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str"><span class="src-var">$fname</span>.txt</span><span class="src-str">"</span><span class="src-sym">, </span><span class="src-str">'w'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1401"></a> <a href="http://www.php.net/fputs">fputs</a><span class="src-sym">(</span><span class="src-var">$fp</span><span class="src-sym">, </span><span class="src-var">$text</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1402"></a> <a href="http://www.php.net/fclose">fclose</a><span class="src-sym">(</span><span class="src-var">$fp</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1403"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1404"></a> </div></li> <li><div class="src-line"><a name="a1405"></a> <a href="http://www.php.net/shell_exec">shell_exec</a><span class="src-sym">(</span><span class="src-str">"</span>{<span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'cepstral'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'swift'</span><span class="src-sym">]</span><span class="src-str"></span><span class="src-sym">}</span> -p audio/channels=1,audio/sampling-rate=<span class="src-var">$frequency</span> <span class="src-var">$voice</span> -o <span class="src-var">$fname</span>.wav -f <span class="src-var">$fname</span>.txt</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1406"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1407"></a> </div></li> <li><div class="src-line"><a name="a1408"></a> <span class="src-comm">// stream it</span></div></li> <li><div class="src-line"><a name="a1409"></a> <span class="src-var">$ret </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodstream_file">stream_file</a><span class="src-sym">(</span><span class="src-var">$fname</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1410"></a> </div></li> <li><div class="src-line"><a name="a1411"></a> <span class="src-comm">// clean up old files</span></div></li> <li><div class="src-line"><a name="a1412"></a> <span class="src-var">$delete </span>= <a href="http://www.php.net/time">time</a><span class="src-sym">(</span><span class="src-sym">) </span>- <span class="src-num">2592000</span><span class="src-sym">; </span><span class="src-comm">// 1 month</span></div></li> <li><div class="src-line"><a name="a1413"></a> <span class="src-key">foreach</span><span class="src-sym">(</span><a href="http://www.php.net/glob">glob</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">[</span><span class="src-str">'phpagi'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'tempdir'</span><span class="src-sym">] </span>. <span class="src-id">DIRECTORY_SEPARATOR </span>. <span class="src-str">'swift_*'</span><span class="src-sym">) </span><span class="src-key">as </span><span class="src-var">$file</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1414"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/filemtime">filemtime</a><span class="src-sym">(</span><span class="src-var">$file</span><span class="src-sym">) </span>< <span class="src-var">$delete</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1415"></a> <a href="http://www.php.net/unlink">unlink</a><span class="src-sym">(</span><span class="src-var">$file</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1416"></a> </div></li> <li><div class="src-line"><a name="a1417"></a> <span class="src-key">return </span><span class="src-var">$ret</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1418"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1419"></a> </div></li> <li><div class="src-line"><a name="a1420"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a1421"></a><span class="src-doc"> * Text Input.</span></div></li> <li><div class="src-line"><a name="a1422"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1423"></a><span class="src-doc"> * Based on ideas found at http://www.voip-info.org/wiki-Asterisk+cmd+DTMFToText</span></div></li> <li><div class="src-line"><a name="a1424"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1425"></a><span class="src-doc"> * Example:</span></div></li> <li><div class="src-line"><a name="a1426"></a><span class="src-doc"> * UC H LC i , SP h o w SP a r e SP y o u ?</span></div></li> <li><div class="src-line"><a name="a1427"></a><span class="src-doc"> * $string = '*8'.'44*'.'*5'.'444*'.'00*'.'0*'.'44*'.'666*'.'9*'.'0*'.'2*'.'777*'.'33*'.'0*'.'999*'.'666*'.'88*'.'0000*';</span></div></li> <li><div class="src-line"><a name="a1428"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1429"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-Asterisk+cmd+DTMFToText</span></div></li> <li><div class="src-line"><a name="a1430"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/input.php Get text input from the user and say it back</span></div></li> <li><div class="src-line"><a name="a1431"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1432"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span></div></li> <li><div class="src-line"><a name="a1433"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1434"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodtext_input">text_input</a><span class="src-sym">(</span><span class="src-var">$mode</span>=<span class="src-str">'NUMERIC'</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1435"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1436"></a> <span class="src-var">$alpha </span>= <span class="src-key">array</span><span class="src-sym">( </span><span class="src-str">'k0'</span>=><span class="src-str">' '</span><span class="src-sym">, </span><span class="src-str">'k00'</span>=><span class="src-str">','</span><span class="src-sym">, </span><span class="src-str">'k000'</span>=><span class="src-str">'.'</span><span class="src-sym">, </span><span class="src-str">'k0000'</span>=><span class="src-str">'?'</span><span class="src-sym">, </span><span class="src-str">'k00000'</span>=><span class="src-str">'0'</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a1437"></a> <span class="src-str">'k1'</span>=><span class="src-str">'!'</span><span class="src-sym">, </span><span class="src-str">'k11'</span>=><span class="src-str">':'</span><span class="src-sym">, </span><span class="src-str">'k111'</span>=><span class="src-str">';'</span><span class="src-sym">, </span><span class="src-str">'k1111'</span>=><span class="src-str">'#'</span><span class="src-sym">, </span><span class="src-str">'k11111'</span>=><span class="src-str">'1'</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a1438"></a> <span class="src-str">'k2'</span>=><span class="src-str">'A'</span><span class="src-sym">, </span><span class="src-str">'k22'</span>=><span class="src-str">'B'</span><span class="src-sym">, </span><span class="src-str">'k222'</span>=><span class="src-str">'C'</span><span class="src-sym">, </span><span class="src-str">'k2222'</span>=><span class="src-str">'2'</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a1439"></a> <span class="src-str">'k3'</span>=><span class="src-str">'D'</span><span class="src-sym">, </span><span class="src-str">'k33'</span>=><span class="src-str">'E'</span><span class="src-sym">, </span><span class="src-str">'k333'</span>=><span class="src-str">'F'</span><span class="src-sym">, </span><span class="src-str">'k3333'</span>=><span class="src-str">'3'</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a1440"></a> <span class="src-str">'k4'</span>=><span class="src-str">'G'</span><span class="src-sym">, </span><span class="src-str">'k44'</span>=><span class="src-str">'H'</span><span class="src-sym">, </span><span class="src-str">'k444'</span>=><span class="src-str">'I'</span><span class="src-sym">, </span><span class="src-str">'k4444'</span>=><span class="src-str">'4'</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a1441"></a> <span class="src-str">'k5'</span>=><span class="src-str">'J'</span><span class="src-sym">, </span><span class="src-str">'k55'</span>=><span class="src-str">'K'</span><span class="src-sym">, </span><span class="src-str">'k555'</span>=><span class="src-str">'L'</span><span class="src-sym">, </span><span class="src-str">'k5555'</span>=><span class="src-str">'5'</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a1442"></a> <span class="src-str">'k6'</span>=><span class="src-str">'M'</span><span class="src-sym">, </span><span class="src-str">'k66'</span>=><span class="src-str">'N'</span><span class="src-sym">, </span><span class="src-str">'k666'</span>=><span class="src-str">'O'</span><span class="src-sym">, </span><span class="src-str">'k6666'</span>=><span class="src-str">'6'</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a1443"></a> <span class="src-str">'k7'</span>=><span class="src-str">'P'</span><span class="src-sym">, </span><span class="src-str">'k77'</span>=><span class="src-str">'Q'</span><span class="src-sym">, </span><span class="src-str">'k777'</span>=><span class="src-str">'R'</span><span class="src-sym">, </span><span class="src-str">'k7777'</span>=><span class="src-str">'S'</span><span class="src-sym">, </span><span class="src-str">'k77777'</span>=><span class="src-str">'7'</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a1444"></a> <span class="src-str">'k8'</span>=><span class="src-str">'T'</span><span class="src-sym">, </span><span class="src-str">'k88'</span>=><span class="src-str">'U'</span><span class="src-sym">, </span><span class="src-str">'k888'</span>=><span class="src-str">'V'</span><span class="src-sym">, </span><span class="src-str">'k8888'</span>=><span class="src-str">'8'</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a1445"></a> <span class="src-str">'k9'</span>=><span class="src-str">'W'</span><span class="src-sym">, </span><span class="src-str">'k99'</span>=><span class="src-str">'X'</span><span class="src-sym">, </span><span class="src-str">'k999'</span>=><span class="src-str">'Y'</span><span class="src-sym">, </span><span class="src-str">'k9999'</span>=><span class="src-str">'Z'</span><span class="src-sym">, </span><span class="src-str">'k99999'</span>=><span class="src-str">'9'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1446"></a> <span class="src-var">$symbol </span>= <span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'k0'</span>=><span class="src-str">'='</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a1447"></a> <span class="src-str">'k1'</span>=><span class="src-str">'<'</span><span class="src-sym">, </span><span class="src-str">'k11'</span>=><span class="src-str">'('</span><span class="src-sym">, </span><span class="src-str">'k111'</span>=><span class="src-str">'['</span><span class="src-sym">, </span><span class="src-str">'k1111'</span>=><span class="src-str">'{'</span><span class="src-sym">, </span><span class="src-str">'k11111'</span>=><span class="src-str">'1'</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a1448"></a> <span class="src-str">'k2'</span>=><span class="src-str">'@'</span><span class="src-sym">, </span><span class="src-str">'k22'</span>=><span class="src-str">'$'</span><span class="src-sym">, </span><span class="src-str">'k222'</span>=><span class="src-str">'&'</span><span class="src-sym">, </span><span class="src-str">'k2222'</span>=><span class="src-str">'%'</span><span class="src-sym">, </span><span class="src-str">'k22222'</span>=><span class="src-str">'2'</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a1449"></a> <span class="src-str">'k3'</span>=><span class="src-str">'>'</span><span class="src-sym">, </span><span class="src-str">'k33'</span>=><span class="src-str">')'</span><span class="src-sym">, </span><span class="src-str">'k333'</span>=><span class="src-str">']'</span><span class="src-sym">, </span><span class="src-str">'k3333'</span>=><span class="src-str">'}'</span><span class="src-sym">, </span><span class="src-str">'k33333'</span>=><span class="src-str">'3'</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a1450"></a> <span class="src-str">'k4'</span>=><span class="src-str">'+'</span><span class="src-sym">, </span><span class="src-str">'k44'</span>=><span class="src-str">'-'</span><span class="src-sym">, </span><span class="src-str">'k444'</span>=><span class="src-str">'*'</span><span class="src-sym">, </span><span class="src-str">'k4444'</span>=><span class="src-str">'/'</span><span class="src-sym">, </span><span class="src-str">'k44444'</span>=><span class="src-str">'4'</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a1451"></a> <span class="src-str">'k5'</span>=><span class="src-str">"'"</span><span class="src-sym">, </span><span class="src-str">'k55'</span>=><span class="src-str">'`'</span><span class="src-sym">, </span><span class="src-str">'k555'</span>=><span class="src-str">'5'</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a1452"></a> <span class="src-str">'k6'</span>=><span class="src-str">'"'</span><span class="src-sym">, </span><span class="src-str">'k66'</span>=><span class="src-str">'6'</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a1453"></a> <span class="src-str">'k7'</span>=><span class="src-str">'^'</span><span class="src-sym">, </span><span class="src-str">'k77'</span>=><span class="src-str">'7'</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a1454"></a> <span class="src-str">'k8'</span>=><span class="src-str">"\\"</span><span class="src-sym">,</span><span class="src-str">'k88'</span>=><span class="src-str">'|'</span><span class="src-sym">, </span><span class="src-str">'k888'</span>=><span class="src-str">'8'</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a1455"></a> <span class="src-str">'k9'</span>=><span class="src-str">'_'</span><span class="src-sym">, </span><span class="src-str">'k99'</span>=><span class="src-str">'~'</span><span class="src-sym">, </span><span class="src-str">'k999'</span>=><span class="src-str">'9'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1456"></a> <span class="src-var">$text </span>= <span class="src-str">''</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1457"></a> do</div></li> <li><div class="src-line"><a name="a1458"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1459"></a> <span class="src-var">$command </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1460"></a> <span class="src-var">$result </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodget_data">get_data</a><span class="src-sym">(</span><span class="src-str">'beep'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1461"></a> <span class="src-key">foreach</span><span class="src-sym">(</span><a href="http://www.php.net/explode">explode</a><span class="src-sym">(</span><span class="src-str">'*'</span><span class="src-sym">, </span><span class="src-var">$result</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">]</span><span class="src-sym">) </span><span class="src-key">as </span><span class="src-var">$code</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1462"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1463"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$command</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1464"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1465"></a> <span class="src-key">switch</span><span class="src-sym">(</span><span class="src-var">$code</span><span class="src-sym">{</span><span class="src-num">0</span><span class="src-sym">}</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1466"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1467"></a> <span class="src-key">case </span><span class="src-str">'2'</span>: <span class="src-var">$text </span>= <a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">, </span><span class="src-num">0</span><span class="src-sym">, </span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">) </span>- <span class="src-num">1</span><span class="src-sym">)</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">; </span><span class="src-comm">// backspace</span></div></li> <li><div class="src-line"><a name="a1468"></a> <span class="src-key">case </span><span class="src-str">'5'</span>: <span class="src-var">$mode </span>= <span class="src-str">'LOWERCASE'</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1469"></a> <span class="src-key">case </span><span class="src-str">'6'</span>: <span class="src-var">$mode </span>= <span class="src-str">'NUMERIC'</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1470"></a> <span class="src-key">case </span><span class="src-str">'7'</span>: <span class="src-var">$mode </span>= <span class="src-str">'SYMBOL'</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1471"></a> <span class="src-key">case </span><span class="src-str">'8'</span>: <span class="src-var">$mode </span>= <span class="src-str">'UPPERCASE'</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1472"></a> <span class="src-key">case </span><span class="src-str">'9'</span>: <span class="src-var">$text </span>= <a href="http://www.php.net/explode">explode</a><span class="src-sym">(</span><span class="src-str">' '</span><span class="src-sym">, </span><span class="src-var">$text</span><span class="src-sym">)</span><span class="src-sym">; </span>unset<span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">[</span><a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">; </span><span class="src-var">$text </span>= <a href="http://www.php.net/join">join</a><span class="src-sym">(</span><span class="src-str">' '</span><span class="src-sym">, </span><span class="src-var">$text</span><span class="src-sym">)</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">; </span><span class="src-comm">// backspace a word</span></div></li> <li><div class="src-line"><a name="a1473"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1474"></a> <span class="src-var">$code </span>= <a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-var">$code</span><span class="src-sym">, </span><span class="src-num">1</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1475"></a> <span class="src-var">$command </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1476"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1477"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$code </span>== <span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1478"></a> <span class="src-var">$command </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1479"></a> <span class="src-key">elseif</span><span class="src-sym">(</span><span class="src-var">$mode </span>== <span class="src-str">'NUMERIC'</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1480"></a> <span class="src-var">$text </span>.= <span class="src-var">$code</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1481"></a> <span class="src-key">elseif</span><span class="src-sym">(</span><span class="src-var">$mode </span>== <span class="src-str">'UPPERCASE' </span>&& isset<span class="src-sym">(</span><span class="src-var">$alpha</span><span class="src-sym">[</span><span class="src-str">'k'</span>.<span class="src-var">$code</span><span class="src-sym">]</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1482"></a> <span class="src-var">$text </span>.= <span class="src-var">$alpha</span><span class="src-sym">[</span><span class="src-str">'k'</span>.<span class="src-var">$code</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1483"></a> <span class="src-key">elseif</span><span class="src-sym">(</span><span class="src-var">$mode </span>== <span class="src-str">'LOWERCASE' </span>&& isset<span class="src-sym">(</span><span class="src-var">$alpha</span><span class="src-sym">[</span><span class="src-str">'k'</span>.<span class="src-var">$code</span><span class="src-sym">]</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1484"></a> <span class="src-var">$text </span>.= <a href="http://www.php.net/strtolower">strtolower</a><span class="src-sym">(</span><span class="src-var">$alpha</span><span class="src-sym">[</span><span class="src-str">'k'</span>.<span class="src-var">$code</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1485"></a> <span class="src-key">elseif</span><span class="src-sym">(</span><span class="src-var">$mode </span>== <span class="src-str">'SYMBOL' </span>&& isset<span class="src-sym">(</span><span class="src-var">$symbol</span><span class="src-sym">[</span><span class="src-str">'k'</span>.<span class="src-var">$code</span><span class="src-sym">]</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1486"></a> <span class="src-var">$text </span>.= <span class="src-var">$symbol</span><span class="src-sym">[</span><span class="src-str">'k'</span>.<span class="src-var">$code</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1487"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1488"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodsay_punctuation">say_punctuation</a><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1489"></a> <span class="src-sym">} </span><span class="src-key">while</span><span class="src-sym">(</span><a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-var">$result</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">]</span><span class="src-sym">, </span>-<span class="src-num">2</span><span class="src-sym">) </span>== <span class="src-str">'**'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1490"></a> <span class="src-key">return </span><span class="src-var">$text</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1491"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1492"></a> </div></li> <li><div class="src-line"><a name="a1493"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a1494"></a><span class="src-doc"> * Say Puncutation in a string.</span></div></li> <li><div class="src-line"><a name="a1495"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1496"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$text </span></div></li> <li><div class="src-line"><a name="a1497"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$escape_digits </span></div></li> <li><div class="src-line"><a name="a1498"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$frequency </span></div></li> <li><div class="src-line"><a name="a1499"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">see evaluate for return information.</span></div></li> <li><div class="src-line"><a name="a1500"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1501"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodsay_punctuation">say_punctuation</a><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span>=<span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$frequency</span>=<span class="src-num">8000</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1502"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1503"></a> <span class="src-var">$ret</span>=<span class="src-str">""</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1504"></a> <span class="src-key">for</span><span class="src-sym">(</span><span class="src-var">$i </span>= <span class="src-num">0</span><span class="src-sym">; </span><span class="src-var">$i </span>< <a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">)</span><span class="src-sym">; </span><span class="src-var">$i</span>++<span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1505"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1506"></a> <span class="src-key">switch</span><span class="src-sym">(</span><span class="src-var">$text</span><span class="src-sym">{</span><span class="src-var">$i</span><span class="src-sym">}</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1507"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1508"></a> <span class="src-key">case </span><span class="src-str">' '</span>: <span class="src-var">$ret </span>.= <span class="src-str">'SPACE '</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1509"></a> <span class="src-key">case </span><span class="src-str">','</span>: <span class="src-var">$ret </span>.= <span class="src-str">'COMMA '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1510"></a> <span class="src-key">case </span><span class="src-str">'.'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'PERIOD '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1511"></a> <span class="src-key">case </span><span class="src-str">'?'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'QUESTION MARK '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1512"></a> <span class="src-key">case </span><span class="src-str">'!'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'EXPLANATION POINT '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1513"></a> <span class="src-key">case </span><span class="src-str">':'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'COLON '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1514"></a> <span class="src-key">case </span><span class="src-str">';'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'SEMICOLON '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1515"></a> <span class="src-key">case </span><span class="src-str">'#'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'POUND '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1516"></a> <span class="src-key">case </span><span class="src-str">'='</span>: <span class="src-var">$ret </span>.= <span class="src-str">'EQUALS '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1517"></a> <span class="src-key">case </span><span class="src-str">'<'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'LESS THAN '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1518"></a> <span class="src-key">case </span><span class="src-str">'('</span>: <span class="src-var">$ret </span>.= <span class="src-str">'LEFT PARENTHESIS '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1519"></a> <span class="src-key">case </span><span class="src-str">'['</span>: <span class="src-var">$ret </span>.= <span class="src-str">'LEFT BRACKET '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1520"></a> <span class="src-key">case </span><span class="src-str">'{'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'LEFT BRACE '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1521"></a> <span class="src-key">case </span><span class="src-str">'@'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'AT '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1522"></a> <span class="src-key">case </span><span class="src-str">'$'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'DOLLAR SIGN '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1523"></a> <span class="src-key">case </span><span class="src-str">'&'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'AMPERSAND '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1524"></a> <span class="src-key">case </span><span class="src-str">'%'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'PERCENT '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1525"></a> <span class="src-key">case </span><span class="src-str">'>'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'GREATER THAN '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1526"></a> <span class="src-key">case </span><span class="src-str">')'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'RIGHT PARENTHESIS '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1527"></a> <span class="src-key">case </span><span class="src-str">']'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'RIGHT BRACKET '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1528"></a> <span class="src-key">case </span><span class="src-str">'}'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'RIGHT BRACE '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1529"></a> <span class="src-key">case </span><span class="src-str">'+'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'PLUS '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1530"></a> <span class="src-key">case </span><span class="src-str">'-'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'MINUS '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1531"></a> <span class="src-key">case </span><span class="src-str">'*'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'ASTERISK '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1532"></a> <span class="src-key">case </span><span class="src-str">'/'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'SLASH '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1533"></a> <span class="src-key">case </span><span class="src-str">"'"</span>: <span class="src-var">$ret </span>.= <span class="src-str">'SINGLE QUOTE '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1534"></a> <span class="src-key">case </span><span class="src-str">'`'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'BACK TICK '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1535"></a> <span class="src-key">case </span><span class="src-str">'"'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'QUOTE '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1536"></a> <span class="src-key">case </span><span class="src-str">'^'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'CAROT '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1537"></a> <span class="src-key">case </span><span class="src-str">"\\"</span>: <span class="src-var">$ret </span>.= <span class="src-str">'BACK SLASH '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1538"></a> <span class="src-key">case </span><span class="src-str">'|'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'BAR '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1539"></a> <span class="src-key">case </span><span class="src-str">'_'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'UNDERSCORE '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1540"></a> <span class="src-key">case </span><span class="src-str">'~'</span>: <span class="src-var">$ret </span>.= <span class="src-str">'TILDE '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1541"></a> <span class="src-key">default</span>: <span class="src-var">$ret </span>.= <span class="src-var">$text</span><span class="src-sym">{</span><span class="src-var">$i</span><span class="src-sym">} </span>. <span class="src-str">' '</span><span class="src-sym">; </span><span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1542"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1543"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1544"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodtext2wav">text2wav</a><span class="src-sym">(</span><span class="src-var">$ret</span><span class="src-sym">, </span><span class="src-var">$escape_digits</span><span class="src-sym">, </span><span class="src-var">$frequency</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1545"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1546"></a> </div></li> <li><div class="src-line"><a name="a1547"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a1548"></a><span class="src-doc"> * Create a new AGI_AsteriskManager.</span></div></li> <li><div class="src-line"><a name="a1549"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1550"></a> <span class="src-key">function </span><span class="src-sym">&</span><a href="../phpAGI/AGI.html#methodnew_AsteriskManager">new_AsteriskManager</a><span class="src-sym">(</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1551"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1552"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">asm </span>= <span class="src-key">new </span><span class="src-id"><a href="../phpAGI/AGI_AsteriskManager.html">AGI_AsteriskManager</a></span><span class="src-sym">(</span><span class="src-id">NULL</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1553"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">asm</span><span class="src-sym">-></span><span class="src-id">pagi </span>=<span class="src-sym">& </span><span class="src-var">$this</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1554"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$config">config</a> =<span class="src-sym">& </span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">asm</span><span class="src-sym">-></span><span class="src-id">config</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1555"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">asm</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1556"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1557"></a> </div></li> <li><div class="src-line"><a name="a1558"></a> </div></li> <li><div class="src-line"><a name="a1559"></a> <span class="src-comm">// *********************************************************************************************************</span></div></li> <li><div class="src-line"><a name="a1560"></a> <span class="src-comm">// ** PRIVATE **</span></div></li> <li><div class="src-line"><a name="a1561"></a> <span class="src-comm">// *********************************************************************************************************</span></div></li> <li><div class="src-line"><a name="a1562"></a> </div></li> <li><div class="src-line"><a name="a1563"></a> </div></li> <li><div class="src-line"><a name="a1564"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a1565"></a><span class="src-doc"> * Evaluate an AGI command.</span></div></li> <li><div class="src-line"><a name="a1566"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1567"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></div></li> <li><div class="src-line"><a name="a1568"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$command </span></div></li> <li><div class="src-line"><a name="a1569"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array </span><span class="src-doc">('code'=>$code, 'result'=>$result, 'data'=>$data)</span></div></li> <li><div class="src-line"><a name="a1570"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1571"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodevaluate">evaluate</a><span class="src-sym">(</span><span class="src-var">$command</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1572"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1573"></a> <span class="src-var">$broken </span>= <span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'code'</span>=><span class="src-num">500</span><span class="src-sym">, </span><span class="src-str">'result'</span>=>-<span class="src-num">1</span><span class="src-sym">, </span><span class="src-str">'data'</span>=><span class="src-str">''</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1574"></a> </div></li> <li><div class="src-line"><a name="a1575"></a> <span class="src-comm">// write command</span></div></li> <li><div class="src-line"><a name="a1576"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-sym">@</span><a href="http://www.php.net/fwrite">fwrite</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$out">out</a><span class="src-sym">, </span><a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><span class="src-var">$command</span><span class="src-sym">) </span>. <span class="src-str">"\n"</span><span class="src-sym">)) </span><span class="src-key">return </span><span class="src-var">$broken</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1577"></a> <a href="http://www.php.net/fflush">fflush</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$out">out</a><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1578"></a> </div></li> <li><div class="src-line"><a name="a1579"></a> <span class="src-comm">// Read result. Occasionally, a command return a string followed by an extra new line.</span></div></li> <li><div class="src-line"><a name="a1580"></a> <span class="src-comm">// When this happens, our script will ignore the new line, but it will still be in the</span></div></li> <li><div class="src-line"><a name="a1581"></a> <span class="src-comm">// buffer. So, if we get a blank line, it is probably the result of a previous</span></div></li> <li><div class="src-line"><a name="a1582"></a> <span class="src-comm">// command. We read until we get a valid result or asterisk hangs up. One offending</span></div></li> <li><div class="src-line"><a name="a1583"></a> <span class="src-comm">// command is SEND TEXT.</span></div></li> <li><div class="src-line"><a name="a1584"></a> <span class="src-var">$count </span>= <span class="src-num">0</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1585"></a> do</div></li> <li><div class="src-line"><a name="a1586"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1587"></a> <span class="src-var">$str </span>= <a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><a href="http://www.php.net/fgets">fgets</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$in">in</a><span class="src-sym">, </span><span class="src-num">4096</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1588"></a> <span class="src-sym">} </span><span class="src-key">while</span><span class="src-sym">(</span><span class="src-var">$str </span>== <span class="src-str">'' </span>&& <span class="src-var">$count</span>++ < <span class="src-num">5</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1589"></a> </div></li> <li><div class="src-line"><a name="a1590"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$count </span>>= <span class="src-num">5</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1591"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1592"></a> <span class="src-comm">// $this->conlog("evaluate error on read for $command");</span></div></li> <li><div class="src-line"><a name="a1593"></a> <span class="src-key">return </span><span class="src-var">$broken</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1594"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1595"></a> </div></li> <li><div class="src-line"><a name="a1596"></a> <span class="src-comm">// parse result</span></div></li> <li><div class="src-line"><a name="a1597"></a> <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'code'</span><span class="src-sym">] </span>= <a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-var">$str</span><span class="src-sym">, </span><span class="src-num">0</span><span class="src-sym">, </span><span class="src-num">3</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1598"></a> <span class="src-var">$str </span>= <a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-var">$str</span><span class="src-sym">, </span><span class="src-num">3</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1599"></a> </div></li> <li><div class="src-line"><a name="a1600"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$str</span><span class="src-sym">{</span><span class="src-num">0</span><span class="src-sym">} </span>== <span class="src-str">'-'</span><span class="src-sym">) </span><span class="src-comm">// we have a multiline response!</span></div></li> <li><div class="src-line"><a name="a1601"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1602"></a> <span class="src-var">$count </span>= <span class="src-num">0</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1603"></a> <span class="src-var">$str </span>= <a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-var">$str</span><span class="src-sym">, </span><span class="src-num">1</span><span class="src-sym">) </span>. <span class="src-str">"\n"</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1604"></a> <span class="src-var">$line </span>= <a href="http://www.php.net/fgets">fgets</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$in">in</a><span class="src-sym">, </span><span class="src-num">4096</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1605"></a> <span class="src-key">while</span><span class="src-sym">(</span><a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-var">$line</span><span class="src-sym">, </span><span class="src-num">0</span><span class="src-sym">, </span><span class="src-num">3</span><span class="src-sym">) </span>!= <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'code'</span><span class="src-sym">] </span>&& <span class="src-var">$count </span>< <span class="src-num">5</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1606"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1607"></a> <span class="src-var">$str </span>.= <span class="src-var">$line</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1608"></a> <span class="src-var">$line </span>= <a href="http://www.php.net/fgets">fgets</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#var$in">in</a><span class="src-sym">, </span><span class="src-num">4096</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1609"></a> <span class="src-var">$count </span>= <span class="src-sym">(</span><a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><span class="src-var">$line</span><span class="src-sym">) </span>== <span class="src-str">''</span><span class="src-sym">) </span>? <span class="src-var">$count </span>+ <span class="src-num">1 </span>: <span class="src-num">0</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1610"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1611"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$count </span>>= <span class="src-num">5</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1612"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1613"></a> <span class="src-comm">// $this->conlog("evaluate error on multiline read for $command");</span></div></li> <li><div class="src-line"><a name="a1614"></a> <span class="src-key">return </span><span class="src-var">$broken</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1615"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1616"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1617"></a> </div></li> <li><div class="src-line"><a name="a1618"></a> <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">] </span>= <span class="src-id">NULL</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1619"></a> <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <span class="src-str">''</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1620"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'code'</span><span class="src-sym">] </span>!= <span class="src-id"><a href="../phpAGI/_phpagi.php.html#defineAGIRES_OK">AGIRES_OK</a></span><span class="src-sym">) </span><span class="src-comm">// some sort of error</span></div></li> <li><div class="src-line"><a name="a1621"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1622"></a> <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <span class="src-var">$str</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1623"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodconlog">conlog</a><span class="src-sym">(</span><a href="http://www.php.net/print_r">print_r</a><span class="src-sym">(</span><span class="src-var">$ret</span><span class="src-sym">, </span><span class="src-id">true</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1624"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1625"></a> <span class="src-key">else </span><span class="src-comm">// normal AGIRES_OK response</span></div></li> <li><div class="src-line"><a name="a1626"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1627"></a> <span class="src-var">$parse </span>= <a href="http://www.php.net/explode">explode</a><span class="src-sym">(</span><span class="src-str">' '</span><span class="src-sym">, </span><a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><span class="src-var">$str</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1628"></a> <span class="src-var">$in_token </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1629"></a> <span class="src-key">foreach</span><span class="src-sym">(</span><span class="src-var">$parse </span><span class="src-key">as </span><span class="src-var">$token</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1630"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1631"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$in_token</span><span class="src-sym">) </span><span class="src-comm">// we previously hit a token starting with ')' but not ending in ')'</span></div></li> <li><div class="src-line"><a name="a1632"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1633"></a> <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>.= <span class="src-str">' ' </span>. <a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><span class="src-var">$token</span><span class="src-sym">, </span><span class="src-str">'() '</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1634"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$token</span><span class="src-sym">{</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$token</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">} </span>== <span class="src-str">')'</span><span class="src-sym">) </span><span class="src-var">$in_token </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1635"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1636"></a> <span class="src-key">elseif</span><span class="src-sym">(</span><span class="src-var">$token</span><span class="src-sym">{</span><span class="src-num">0</span><span class="src-sym">} </span>== <span class="src-str">'('</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1637"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1638"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$token</span><span class="src-sym">{</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$token</span><span class="src-sym">)</span>-<span class="src-num">1</span><span class="src-sym">} </span>!= <span class="src-str">')'</span><span class="src-sym">) </span><span class="src-var">$in_token </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1639"></a> <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>.= <span class="src-str">' ' </span>. <a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><span class="src-var">$token</span><span class="src-sym">, </span><span class="src-str">'() '</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1640"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1641"></a> <span class="src-key">elseif</span><span class="src-sym">(</span><a href="http://www.php.net/strpos">strpos</a><span class="src-sym">(</span><span class="src-var">$token</span><span class="src-sym">, </span><span class="src-str">'='</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1642"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1643"></a> <span class="src-var">$token </span>= <a href="http://www.php.net/explode">explode</a><span class="src-sym">(</span><span class="src-str">'='</span><span class="src-sym">, </span><span class="src-var">$token</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1644"></a> <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-var">$token</span><span class="src-sym">[</span><span class="src-num">0</span><span class="src-sym">]] </span>= <span class="src-var">$token</span><span class="src-sym">[</span><span class="src-num">1</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1645"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1646"></a> <span class="src-key">elseif</span><span class="src-sym">(</span><span class="src-var">$token </span>!= <span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1647"></a> <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>.= <span class="src-str">' ' </span>. <span class="src-var">$token</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1648"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1649"></a> <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1650"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1651"></a> </div></li> <li><div class="src-line"><a name="a1652"></a> <span class="src-comm">// log some errors</span></div></li> <li><div class="src-line"><a name="a1653"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">] </span>< <span class="src-num">0</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1654"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodconlog">conlog</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str"><span class="src-var">$command</span> returned {<span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-str">'result'</span><span class="src-sym">]</span><span class="src-sym">}</span></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1655"></a> </div></li> <li><div class="src-line"><a name="a1656"></a> <span class="src-key">return </span><span class="src-var">$ret</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1657"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1658"></a> </div></li> <li><div class="src-line"><a name="a1659"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a1660"></a><span class="src-doc"> * Log to console if debug mode.</span></div></li> <li><div class="src-line"><a name="a1661"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1662"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/ping.php Ping an IP address</span></div></li> <li><div class="src-line"><a name="a1663"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1664"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$str </span></div></li> <li><div class="src-line"><a name="a1665"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$vbl </span><span class="src-doc">verbose level</span></div></li> <li><div class="src-line"><a name="a1666"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1667"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodconlog">conlog</a><span class="src-sym">(</span><span class="src-var">$str</span><span class="src-sym">, </span><span class="src-var">$vbl</span>=<span class="src-num">1</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1668"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1669"></a> <span class="src-key">static </span><span class="src-var">$busy </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1670"></a> </div></li> <li><div class="src-line"><a name="a1671"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">config</span><span class="src-sym">[</span><span class="src-str">'phpagi'</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-str">'debug'</span><span class="src-sym">] </span>!= <span class="src-id">false</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1672"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1673"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-var">$busy</span><span class="src-sym">) </span><span class="src-comm">// no conlogs inside conlog!!!</span></div></li> <li><div class="src-line"><a name="a1674"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1675"></a> <span class="src-var">$busy </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1676"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">verbose</span><span class="src-sym">(</span><span class="src-var">$str</span><span class="src-sym">, </span><span class="src-var">$vbl</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1677"></a> <span class="src-var">$busy </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1678"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1679"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1680"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1681"></a> </div></li> <li><div class="src-line"><a name="a1682"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a1683"></a><span class="src-doc"> * Find an execuable in the path.</span></div></li> <li><div class="src-line"><a name="a1684"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1685"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></div></li> <li><div class="src-line"><a name="a1686"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$cmd </span><span class="src-doc">command to find</span></div></li> <li><div class="src-line"><a name="a1687"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$checkpath </span><span class="src-doc">path to check</span></div></li> <li><div class="src-line"><a name="a1688"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span><span class="src-doc">the path to the command</span></div></li> <li><div class="src-line"><a name="a1689"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1690"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodwhich">which</a><span class="src-sym">(</span><span class="src-var">$cmd</span><span class="src-sym">, </span><span class="src-var">$checkpath</span>=<span class="src-id">NULL</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1691"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1692"></a> <span class="src-key">global </span><span class="src-var">$_ENV</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1693"></a> <span class="src-var">$chpath </span>= <a href="http://www.php.net/is_null">is_null</a><span class="src-sym">(</span><span class="src-var">$checkpath</span><span class="src-sym">) </span>? <span class="src-var">$_ENV</span><span class="src-sym">[</span><span class="src-str">'PATH'</span><span class="src-sym">] </span>: <span class="src-var">$checkpath</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1694"></a> </div></li> <li><div class="src-line"><a name="a1695"></a> <span class="src-key">foreach</span><span class="src-sym">(</span><a href="http://www.php.net/explode">explode</a><span class="src-sym">(</span><span class="src-str">':'</span><span class="src-sym">, </span><span class="src-var">$chpath</span><span class="src-sym">) </span><span class="src-key">as </span><span class="src-var">$path</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1696"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/is_executable">is_executable</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str"><span class="src-var">$path</span>/<span class="src-var">$cmd</span></span><span class="src-str">"</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1697"></a> <span class="src-key">return </span><span class="src-str">"</span><span class="src-str"><span class="src-var">$path</span>/<span class="src-var">$cmd</span></span><span class="src-str">"</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1698"></a> </div></li> <li><div class="src-line"><a name="a1699"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/is_null">is_null</a><span class="src-sym">(</span><span class="src-var">$checkpath</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1700"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodwhich">which</a><span class="src-sym">(</span><span class="src-var">$cmd</span><span class="src-sym">, </span><span class="src-str">'/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:'</span>.</div></li> <li><div class="src-line"><a name="a1701"></a> <span class="src-str">'/usr/X11R6/bin:/usr/local/apache/bin:/usr/local/mysql/bin'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1702"></a> <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1703"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1704"></a> </div></li> <li><div class="src-line"><a name="a1705"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a1706"></a><span class="src-doc"> * Make a folder recursively.</span></div></li> <li><div class="src-line"><a name="a1707"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1708"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></div></li> <li><div class="src-line"><a name="a1709"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$folder </span></div></li> <li><div class="src-line"><a name="a1710"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$perms </span></div></li> <li><div class="src-line"><a name="a1711"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">boolean </span></div></li> <li><div class="src-line"><a name="a1712"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1713"></a> <span class="src-key">function </span><a href="../phpAGI/AGI.html#methodmake_folder">make_folder</a><span class="src-sym">(</span><span class="src-var">$folder</span><span class="src-sym">, </span><span class="src-var">$perms</span>=<span class="src-num">0755</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1714"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1715"></a> <span class="src-var">$f </span>= <a href="http://www.php.net/explode">explode</a><span class="src-sym">(</span><span class="src-id">DIRECTORY_SEPARATOR</span><span class="src-sym">, </span><span class="src-var">$folder</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1716"></a> <span class="src-var">$base </span>= <span class="src-str">''</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1717"></a> <span class="src-key">for</span><span class="src-sym">(</span><span class="src-var">$i </span>= <span class="src-num">0</span><span class="src-sym">; </span><span class="src-var">$i </span>< <a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$f</span><span class="src-sym">)</span><span class="src-sym">; </span><span class="src-var">$i</span>++<span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1718"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1719"></a> <span class="src-var">$base </span>.= <span class="src-var">$f</span><span class="src-sym">[</span><span class="src-var">$i</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1720"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$f</span><span class="src-sym">[</span><span class="src-var">$i</span><span class="src-sym">] </span>!= <span class="src-str">'' </span>&& <span class="src-sym">!</span><a href="http://www.php.net/file_exists">file_exists</a><span class="src-sym">(</span><span class="src-var">$base</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1721"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/mkdir">mkdir</a><span class="src-sym">(</span><span class="src-var">$base</span><span class="src-sym">, </span><span class="src-var">$perms</span><span class="src-sym">)</span>==<span class="src-id">FALSE</span><span class="src-sym">)</span><span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1722"></a> <span class="src-key">return</span><span class="src-sym">(</span><span class="src-id">FALSE</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1723"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1724"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1725"></a> <span class="src-var">$base </span>.= <span class="src-id">DIRECTORY_SEPARATOR</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1726"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1727"></a> <span class="src-key">return</span><span class="src-sym">(</span><span class="src-id">TRUE</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1728"></a> <span class="src-sym">} </span></div></li> <li><div class="src-line"><a name="a1729"></a> </div></li> <li><div class="src-line"><a name="a1730"></a><span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1731"></a> </div></li> <li><div class="src-line"><a name="a1732"></a> </div></li> <li><div class="src-line"><a name="a1733"></a><span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a1734"></a><span class="src-doc"> * error handler for phpagi.</span></div></li> <li><div class="src-line"><a name="a1735"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a1736"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$level </span><span class="src-doc">PHP error level</span></div></li> <li><div class="src-line"><a name="a1737"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$message </span><span class="src-doc">error message</span></div></li> <li><div class="src-line"><a name="a1738"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$file </span><span class="src-doc">path to file</span></div></li> <li><div class="src-line"><a name="a1739"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$line </span><span class="src-doc">line number of error</span></div></li> <li><div class="src-line"><a name="a1740"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">array </span><span class="src-doc-var">$context </span><span class="src-doc">variables in the current scope</span></div></li> <li><div class="src-line"><a name="a1741"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a1742"></a> <span class="src-key">function </span><a href="../phpAGI/_phpagi.php.html#functionphpagi_error_handler">phpagi_error_handler</a><span class="src-sym">(</span><span class="src-var">$level</span><span class="src-sym">, </span><span class="src-var">$message</span><span class="src-sym">, </span><span class="src-var">$file</span><span class="src-sym">, </span><span class="src-var">$line</span><span class="src-sym">, </span><span class="src-var">$context</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1743"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1744"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/ini_get">ini_get</a><span class="src-sym">(</span><span class="src-str">'error_reporting'</span><span class="src-sym">) </span>== <span class="src-num">0</span><span class="src-sym">) </span><span class="src-key">return</span><span class="src-sym">; </span><span class="src-comm">// this happens with an @</span></div></li> <li><div class="src-line"><a name="a1745"></a> </div></li> <li><div class="src-line"><a name="a1746"></a> <span class="src-sym">@</span><a href="http://www.php.net/syslog">syslog</a><span class="src-sym">(</span><span class="src-id">LOG_WARNING</span><span class="src-sym">, </span><span class="src-var">$file </span>. <span class="src-str">'[' </span>. <span class="src-var">$line </span>. <span class="src-str">']: ' </span>. <span class="src-var">$message</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1747"></a> </div></li> <li><div class="src-line"><a name="a1748"></a> <span class="src-key">global </span><span class="src-var">$phpagi_error_handler_email</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1749"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/function_exists">function_exists</a><span class="src-sym">(</span><span class="src-str">'mail'</span><span class="src-sym">) </span>&& <span class="src-sym">!</span><a href="http://www.php.net/is_null">is_null</a><span class="src-sym">(</span><span class="src-var">$phpagi_error_handler_email</span><span class="src-sym">)) </span><span class="src-comm">// generate email debugging information</span></div></li> <li><div class="src-line"><a name="a1750"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1751"></a> <span class="src-comm">// decode error level</span></div></li> <li><div class="src-line"><a name="a1752"></a> <span class="src-key">switch</span><span class="src-sym">(</span><span class="src-var">$level</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1753"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1754"></a> <span class="src-key">case </span><span class="src-id">E_WARNING</span>:</div></li> <li><div class="src-line"><a name="a1755"></a> <span class="src-key">case </span><span class="src-id">E_USER_WARNING</span>:</div></li> <li><div class="src-line"><a name="a1756"></a> <span class="src-var">$level </span>= <span class="src-str">"Warning"</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1757"></a> <span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1758"></a> <span class="src-key">case </span><span class="src-id">E_NOTICE</span>:</div></li> <li><div class="src-line"><a name="a1759"></a> <span class="src-key">case </span><span class="src-id">E_USER_NOTICE</span>:</div></li> <li><div class="src-line"><a name="a1760"></a> <span class="src-var">$level </span>= <span class="src-str">"Notice"</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1761"></a> <span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1762"></a> <span class="src-key">case </span><span class="src-id">E_USER_ERROR</span>:</div></li> <li><div class="src-line"><a name="a1763"></a> <span class="src-var">$level </span>= <span class="src-str">"Error"</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1764"></a> <span class="src-key">break</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1765"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1766"></a> </div></li> <li><div class="src-line"><a name="a1767"></a> <span class="src-comm">// build message</span></div></li> <li><div class="src-line"><a name="a1768"></a> <span class="src-var">$basefile </span>= <a href="http://www.php.net/basename">basename</a><span class="src-sym">(</span><span class="src-var">$file</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1769"></a> <span class="src-var">$subject </span>= <span class="src-str">"</span><span class="src-str"><span class="src-var">$basefile</span>/<span class="src-var">$line</span>/<span class="src-var">$level</span>: <span class="src-var">$message</span></span><span class="src-str">"</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1770"></a> <span class="src-var">$message </span>= <span class="src-str">"</span><span class="src-str"><span class="src-var">$level</span>: <span class="src-var">$message</span> in <span class="src-var">$file</span> on line <span class="src-var">$line</span>\n\n</span><span class="src-str">"</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1771"></a> </div></li> <li><div class="src-line"><a name="a1772"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/function_exists">function_exists</a><span class="src-sym">(</span><span class="src-str">'mysql_errno'</span><span class="src-sym">) </span>&& <a href="http://www.php.net/strpos">strpos</a><span class="src-sym">(</span><span class="src-str">' '</span>.<a href="http://www.php.net/strtolower">strtolower</a><span class="src-sym">(</span><span class="src-var">$message</span><span class="src-sym">)</span><span class="src-sym">, </span><span class="src-str">'mysql'</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1773"></a> <span class="src-var">$message </span>.= <span class="src-str">'MySQL error ' </span>. <a href="http://www.php.net/mysql_errno">mysql_errno</a><span class="src-sym">(</span><span class="src-sym">) </span>. <span class="src-str">": " </span>. <a href="http://www.php.net/mysql_error">mysql_error</a><span class="src-sym">(</span><span class="src-sym">) </span>. <span class="src-str">"\n\n"</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1774"></a> </div></li> <li><div class="src-line"><a name="a1775"></a> <span class="src-comm">// figure out who we are</span></div></li> <li><div class="src-line"><a name="a1776"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/function_exists">function_exists</a><span class="src-sym">(</span><span class="src-str">'socket_create'</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1777"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1778"></a> <span class="src-var">$addr </span>= <span class="src-id">NULL</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1779"></a> <span class="src-var">$port </span>= <span class="src-num">80</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1780"></a> <span class="src-var">$socket </span>= <span class="src-sym">@</span><a href="http://www.php.net/socket_create">socket_create</a><span class="src-sym">(</span><span class="src-id">AF_INET</span><span class="src-sym">, </span><span class="src-id">SOCK_DGRAM</span><span class="src-sym">, </span><span class="src-id">SOL_UDP</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1781"></a> <span class="src-sym">@</span><a href="http://www.php.net/socket_connect">socket_connect</a><span class="src-sym">(</span><span class="src-var">$socket</span><span class="src-sym">, </span><span class="src-str">'64.0.0.0'</span><span class="src-sym">, </span><span class="src-var">$port</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1782"></a> <span class="src-sym">@</span><a href="http://www.php.net/socket_getsockname">socket_getsockname</a><span class="src-sym">(</span><span class="src-var">$socket</span><span class="src-sym">, </span><span class="src-var">$addr</span><span class="src-sym">, </span><span class="src-var">$port</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1783"></a> <span class="src-sym">@</span><a href="http://www.php.net/socket_close">socket_close</a><span class="src-sym">(</span><span class="src-var">$socket</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1784"></a> <span class="src-var">$message </span>.= <span class="src-str">"</span><span class="src-str">\n\nIP Address: <span class="src-var">$addr</span>\n</span><span class="src-str">"</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1785"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1786"></a> </div></li> <li><div class="src-line"><a name="a1787"></a> <span class="src-comm">// include variables</span></div></li> <li><div class="src-line"><a name="a1788"></a> <span class="src-var">$message </span>.= <span class="src-str">"\n\nContext:\n" </span>. <a href="http://www.php.net/print_r">print_r</a><span class="src-sym">(</span><span class="src-var">$context</span><span class="src-sym">, </span><span class="src-id">true</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1789"></a> <span class="src-var">$message </span>.= <span class="src-str">"\n\nGLOBALS:\n" </span>. <a href="http://www.php.net/print_r">print_r</a><span class="src-sym">(</span><span class="src-var">$GLOBALS</span><span class="src-sym">, </span><span class="src-id">true</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1790"></a> <span class="src-var">$message </span>.= <span class="src-str">"\n\nBacktrace:\n" </span>. <a href="http://www.php.net/print_r">print_r</a><span class="src-sym">(</span><a href="http://www.php.net/debug_backtrace">debug_backtrace</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">, </span><span class="src-id">true</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1791"></a> </div></li> <li><div class="src-line"><a name="a1792"></a> <span class="src-comm">// include code fragment</span></div></li> <li><div class="src-line"><a name="a1793"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/file_exists">file_exists</a><span class="src-sym">(</span><span class="src-var">$file</span><span class="src-sym">))</span></div></li> <li><div class="src-line"><a name="a1794"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1795"></a> <span class="src-var">$message </span>.= <span class="src-str">"</span><span class="src-str">\n\n<span class="src-var">$file</span>:\n</span><span class="src-str">"</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1796"></a> <span class="src-var">$code </span>= <span class="src-sym">@</span><a href="http://www.php.net/file">file</a><span class="src-sym">(</span><span class="src-var">$file</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1797"></a> <span class="src-key">for</span><span class="src-sym">(</span><span class="src-var">$i </span>= <a href="http://www.php.net/max">max</a><span class="src-sym">(</span><span class="src-num">0</span><span class="src-sym">, </span><span class="src-var">$line </span>- <span class="src-num">10</span><span class="src-sym">)</span><span class="src-sym">; </span><span class="src-var">$i </span>< <a href="http://www.php.net/min">min</a><span class="src-sym">(</span><span class="src-var">$line </span>+ <span class="src-num">10</span><span class="src-sym">, </span><a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$code</span><span class="src-sym">))</span><span class="src-sym">; </span><span class="src-var">$i</span>++<span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1798"></a> <span class="src-var">$message </span>.= <span class="src-sym">(</span><span class="src-var">$i </span>+ <span class="src-num">1</span><span class="src-sym">)</span>.<span class="src-str">"</span><span class="src-str">\t<span class="src-var">$code</span><span class="src-sym">[</span><span class="src-var">$i</span><span class="src-sym">]</span></span><span class="src-str">"</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1799"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1800"></a> </div></li> <li><div class="src-line"><a name="a1801"></a> <span class="src-comm">// make sure message is fully readable (convert unprintable chars to hex representation)</span></div></li> <li><div class="src-line"><a name="a1802"></a> <span class="src-var">$ret </span>= <span class="src-str">''</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1803"></a> <span class="src-key">for</span><span class="src-sym">(</span><span class="src-var">$i </span>= <span class="src-num">0</span><span class="src-sym">; </span><span class="src-var">$i </span>< <a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$message</span><span class="src-sym">)</span><span class="src-sym">; </span><span class="src-var">$i</span>++<span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1804"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a1805"></a> <span class="src-var">$c </span>= <a href="http://www.php.net/ord">ord</a><span class="src-sym">(</span><span class="src-var">$message</span><span class="src-sym">{</span><span class="src-var">$i</span><span class="src-sym">}</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1806"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$c </span>== <span class="src-num">10 </span>|| <span class="src-var">$c </span>== <span class="src-num">13 </span>|| <span class="src-var">$c </span>== <span class="src-num">9</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1807"></a> <span class="src-var">$ret </span>.= <span class="src-var">$message</span><span class="src-sym">{</span><span class="src-var">$i</span><span class="src-sym">}</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1808"></a> <span class="src-key">elseif</span><span class="src-sym">(</span><span class="src-var">$c </span>< <span class="src-num">16</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1809"></a> <span class="src-var">$ret </span>.= <span class="src-str">'\x0' </span>. <a href="http://www.php.net/dechex">dechex</a><span class="src-sym">(</span><span class="src-var">$c</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1810"></a> <span class="src-key">elseif</span><span class="src-sym">(</span><span class="src-var">$c </span>< <span class="src-num">32 </span>|| <span class="src-var">$c </span>> <span class="src-num">127</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1811"></a> <span class="src-var">$ret </span>.= <span class="src-str">'\x' </span>. <a href="http://www.php.net/dechex">dechex</a><span class="src-sym">(</span><span class="src-var">$c</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1812"></a> <span class="src-key">else</span></div></li> <li><div class="src-line"><a name="a1813"></a> <span class="src-var">$ret </span>.= <span class="src-var">$message</span><span class="src-sym">{</span><span class="src-var">$i</span><span class="src-sym">}</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1814"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1815"></a> <span class="src-var">$message </span>= <span class="src-var">$ret</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1816"></a> </div></li> <li><div class="src-line"><a name="a1817"></a> <span class="src-comm">// send the mail if less than 5 errors</span></div></li> <li><div class="src-line"><a name="a1818"></a> <span class="src-key">static </span><span class="src-var">$mailcount </span>= <span class="src-num">0</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1819"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$mailcount </span>< <span class="src-num">5</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a1820"></a> <span class="src-sym">@</span><span class="src-id">mail</span><span class="src-sym">(</span><span class="src-var">$phpagi_error_handler_email</span><span class="src-sym">, </span><span class="src-var">$subject</span><span class="src-sym">, </span><span class="src-var">$message</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1821"></a> <span class="src-var">$mailcount</span>++<span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a1822"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1823"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a1824"></a> </div></li> <li><div class="src-line"><a name="a1825"></a> <span class="src-var">$phpagi_error_handler_email </span>= <span class="src-id">NULL</span><span class="src-sym">;</span></div></li> </ol></div> </div> <p class="notes" id="credit"> Documentation generated on Thu, 30 Sep 2010 02:21:59 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.2</a> </p> </body> </html>