<?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_1.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_1.php</h1> <p>Documentation is available at <a href="../phpAGI/_phpagi_1.php.html">phpagi_1.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><span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a3"></a><span class="src-doc"> * phpagi-asmanager.php : PHP Asterisk Manager functions</span></div></li> <li><div class="src-line"><a name="a4"></a><span class="src-doc"> * Website: http://phpagi.sourceforge.net</span></div></li> <li><div class="src-line"><a name="a5"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a6"></a><span class="src-doc"> * $Id$</span></div></li> <li><div class="src-line"><a name="a7"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a8"></a><span class="src-doc"> * Copyright (c) 2004, 2005 Matthew Asham <matthewa@bcwireless.net>, David Eder <david@eder.us></span></div></li> <li><div class="src-line"><a name="a9"></a><span class="src-doc"> * All Rights Reserved.</span></div></li> <li><div class="src-line"><a name="a10"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a11"></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="a12"></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="a13"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a14"></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="a15"></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="a16"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a17"></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="a18"></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="a19"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a20"></a> </div></li> <li><div class="src-line"><a name="a21"></a> </div></li> <li><div class="src-line"><a name="a22"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a23"></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="a24"></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="a25"></a><span class="src-doc"> * Gracias. :)</span></div></li> <li><div class="src-line"><a name="a26"></a><span class="src-doc"> *</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'</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.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> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a35"></a><span class="src-doc"> * Asterisk Manager class</span></div></li> <li><div class="src-line"><a name="a36"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a37"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-Asterisk+config+manager.conf</span></div></li> <li><div class="src-line"><a name="a38"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@link</span><span class="src-doc"> http://www.voip-info.org/wiki-Asterisk+manager+API</span></div></li> <li><div class="src-line"><a name="a39"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@example</span><span class="src-doc"> examples/sip_show_peer.php Get information about a sip peer</span></div></li> <li><div class="src-line"><a name="a40"></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="a41"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a42"></a> <span class="src-key">class </span><a href="../phpAGI/AGI_1.html">AGI_1</a> <span class="src-key">extends </span><a href="../phpAGI/AGI.html">AGI</a></div></li> <li><div class="src-line"><a name="a43"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a44"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a45"></a><span class="src-doc"> * Response structure</span></div></li> <li><div class="src-line"><a name="a46"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a47"></a><span class="src-doc"> * array('code'=>$code, 'result'=>$result, 'data'=>$data)</span></div></li> <li><div class="src-line"><a name="a48"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a49"></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="a50"></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="a51"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a52"></a> <span class="src-key">var </span><a href="../phpAGI/AGI_1.html#var$response">$response</a><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> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a55"></a><span class="src-doc"> * Constructor</span></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"> * </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="a58"></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="a59"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a60"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodAGI_1">AGI_1</a><span class="src-sym">(</span><span class="src-var">$config</span>=<span class="src-id">false</span><span class="src-sym">, </span><span class="src-var">$optconfig</span>=<span class="src-id">false</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a61"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a62"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-var">$config</span><span class="src-sym">) </span><span class="src-var">$config </span>= <span class="src-id">NULL</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a63"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-var">$optconfig</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><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a64"></a> <span class="src-id">parent</span><span class="src-sym">::</span><span class="src-id">AGI</span><span class="src-sym">(</span><span class="src-var">$config</span><span class="src-sym">, </span><span class="src-var">$optconfig</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a65"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a66"></a> </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"> * Evaluate an AGI command</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"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></div></li> <li><div class="src-line"><a name="a71"></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="a72"></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="a73"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a74"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodevalutate">evalutate</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="a75"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a76"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI_1.html#var$response">response</a> = <span class="src-id">parent</span><span class="src-sym">::</span><span class="src-id">evalute</span><span class="src-sym">(</span><span class="src-var">$command</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a77"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI_1.html#var$response">response</a><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a78"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a79"></a> </div></li> <li><div class="src-line"><a name="a80"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a81"></a><span class="src-doc"> * Execute an AGI command</span></div></li> <li><div class="src-line"><a name="a82"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a83"></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="a84"></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="a85"></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="a86"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a87"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_exec">agi_exec</a><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="a88"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a89"></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">$str</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a90"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a91"></a> </div></li> <li><div class="src-line"><a name="a92"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a93"></a><span class="src-doc"> * Check for error in result structure</span></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"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">array </span><span class="src-doc-var">$retarr </span></div></li> <li><div class="src-line"><a name="a96"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">boolean </span><span class="src-doc">true on error</span></div></li> <li><div class="src-line"><a name="a97"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a98"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_is_error">agi_is_error</a><span class="src-sym">(</span><span class="src-var">$retarr</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a99"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a100"></a> <span class="src-comm">// Returns TRUE if the command returned an error.</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-key">if</span><span class="src-sym">(</span><span class="src-var">$retarr</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="a103"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a104"></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">DEBUG: Bad command? Returned code is {<span class="src-var">$retarr</span><span class="src-sym">[</span><span class="src-str">'code'</span><span class="src-sym">]</span><span class="src-sym">}</span> result={<span class="src-var">$retarr</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="a105"></a> <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="a106"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a107"></a> </div></li> <li><div class="src-line"><a name="a108"></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">$retarr</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="a109"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a110"></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">"DEBUG: No 'result' value returned from asterisk! Eww!"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a111"></a> <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="a112"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a113"></a> </div></li> <li><div class="src-line"><a name="a114"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$retarr</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="a115"></a> <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="a116"></a> </div></li> <li><div class="src-line"><a name="a117"></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="a118"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a119"></a> </div></li> <li><div class="src-line"><a name="a120"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a121"></a><span class="src-doc"> * Read the result from Asterisk</span></div></li> <li><div class="src-line"><a name="a122"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a123"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array </span></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-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_readresult">agi_readresult</a><span class="src-sym">(</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a126"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a127"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI_1.html#var$response">response</a><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a128"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a129"></a> </div></li> <li><div class="src-line"><a name="a130"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a131"></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="a132"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a133"></a><span class="src-doc"> * If the Asterisk verbosity level is $vbl or greater, send $str to the console.</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"> * 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="a136"></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="a137"></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="a138"></a><span class="src-doc"> * should have a high verbose level.</span></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"> * </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="a141"></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="a142"></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">from 1 to 4</span></div></li> <li><div class="src-line"><a name="a143"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a144"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_verbose">agi_verbose</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="a145"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a146"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodverbose">verbose</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-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a147"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a148"></a> </div></li> <li><div class="src-line"><a name="a149"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a150"></a><span class="src-doc"> * Get the response code from the last command</span></div></li> <li><div class="src-line"><a name="a151"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a152"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">integer </span></div></li> <li><div class="src-line"><a name="a153"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a154"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_response_code">agi_response_code</a><span class="src-sym">(</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a155"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a156"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI_1.html#var$response">response</a><span class="src-sym">[</span><span class="src-str">'code'</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a157"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a158"></a> </div></li> <li><div class="src-line"><a name="a159"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a160"></a><span class="src-doc"> * Get the result code from the last command</span></div></li> <li><div class="src-line"><a name="a161"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a162"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">integer </span></div></li> <li><div class="src-line"><a name="a163"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a164"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_response_result">agi_response_result</a><span class="src-sym">(</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a165"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a166"></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">result is {<span class="src-var">$this</span></span><span class="src-sym">-></span><a href="../phpAGI/AGI_1.html#var$response">response</a><span class="src-sym">[</span><span class="src-str">'result'</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><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a167"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI_1.html#var$response">response</a><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="a168"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a169"></a> </div></li> <li><div class="src-line"><a name="a170"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a171"></a><span class="src-doc"> * Get the response data from the last command</span></div></li> <li><div class="src-line"><a name="a172"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a173"></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="a174"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a175"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_response_data">agi_response_data</a><span class="src-sym">(</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a176"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a177"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI_1.html#var$response">response</a><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a178"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a179"></a> </div></li> <li><div class="src-line"><a name="a180"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a181"></a><span class="src-doc"> * Get the response variable from the last command</span></div></li> <li><div class="src-line"><a name="a182"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a183"></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">$var </span></div></li> <li><div class="src-line"><a name="a184"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">mixed </span></div></li> <li><div class="src-line"><a name="a185"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a186"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_response_var">agi_response_var</a><span class="src-sym">(</span><span class="src-var">$var</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a187"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a188"></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_1.html#var$response">response</a><span class="src-sym">[</span><span class="src-var">$var</span><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">return </span><span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a190"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI_1.html#var$response">response</a><span class="src-sym">[</span><span class="src-var">$var</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a191"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a192"></a> </div></li> <li><div class="src-line"><a name="a193"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a194"></a><span class="src-doc"> * Check for error in response</span></div></li> <li><div class="src-line"><a name="a195"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a196"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">boolean </span><span class="src-doc">true on error</span></div></li> <li><div class="src-line"><a name="a197"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a198"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_response_is_error">agi_response_is_error</a><span class="src-sym">(</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a199"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a200"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI_1.html#methodagi_is_error">agi_is_error</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI_1.html#var$response">response</a><span class="src-sym">)</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> </div></li> <li><div class="src-line"><a name="a203"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a204"></a><span class="src-doc"> * Log to console if debug mode</span></div></li> <li><div class="src-line"><a name="a205"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a206"></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">$arr </span><span class="src-doc">to print</span></div></li> <li><div class="src-line"><a name="a207"></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">$label </span></div></li> <li><div class="src-line"><a name="a208"></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="a209"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a210"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodcon_print_r">con_print_r</a><span class="src-sym">(</span><span class="src-var">$arr</span><span class="src-sym">, </span><span class="src-var">$label</span>=<span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$lvl</span>=<span class="src-num">0</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a211"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a212"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$lvl </span>== <span class="src-num">0 </span>&& <span class="src-var">$label </span>!= <span class="src-str">''</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">"</span><span class="src-str">debug: <span class="src-var">$label</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="a214"></a> </div></li> <li><div class="src-line"><a name="a215"></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">$arr</span><span class="src-sym">, </span><span class="src-id">true</span><span class="src-sym">)</span><span class="src-sym">, </span><span class="src-var">$lvl</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a216"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a217"></a> </div></li> <li><div class="src-line"><a name="a218"></a> </div></li> <li><div class="src-line"><a name="a219"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a220"></a><span class="src-doc"> * Plays the given file and receives DTMF data.</span></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"> * 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="a223"></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="a224"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a225"></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="a226"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a227"></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="a228"></a><span class="src-doc"> * of silence then the command ends.</span></div></li> <li><div class="src-line"><a name="a229"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a230"></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="a231"></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="a232"></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="a233"></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="a234"></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="a235"></a><span class="src-doc"> * whichever happens first.</span></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"> * 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="a238"></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="a239"></a><span class="src-doc"> * way to read a # key using this command.</span></div></li> <li><div class="src-line"><a name="a240"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a241"></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="a242"></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">$len </span><span class="src-doc">number of digits to read</span></div></li> <li><div class="src-line"><a name="a243"></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="a244"></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">$terminator </span><span class="src-doc">character on which to quit</span></div></li> <li><div class="src-line"><a name="a245"></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">$prompt </span><span class="src-doc">file to play. Do not include file extension.</span></div></li> <li><div class="src-line"><a name="a246"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array </span><span class="src-doc">of characters</span></div></li> <li><div class="src-line"><a name="a247"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a248"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_getdtmf">agi_getdtmf</a><span class="src-sym">(</span><span class="src-var">$len</span><span class="src-sym">, </span><span class="src-var">$timeout</span><span class="src-sym">, </span><span class="src-var">$terminator</span>=<span class="src-id">false</span><span class="src-sym">, </span><span class="src-var">$prompt</span>=<span class="src-id">false</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a249"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a250"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$prompt</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a251"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a252"></a> <span class="src-key">if</span><span class="src-sym">(</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">$prompt</span><span class="src-sym">)) </span><span class="src-var">$prompt </span>= <span class="src-key">array</span><span class="src-sym">(</span><span class="src-var">$prompt</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a253"></a> </div></li> <li><div class="src-line"><a name="a254"></a> <span class="src-key">foreach</span><span class="src-sym">(</span><span class="src-var">$prompt </span><span class="src-key">as </span><span class="src-var">$p</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a255"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a256"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$p</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="a257"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a258"></a> <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">$p</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="a259"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a260"></a> <span class="src-key">else</span></div></li> <li><div class="src-line"><a name="a261"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a262"></a> <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">$p</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="a263"></a> <span class="src-sym">} </span></div></li> <li><div class="src-line"><a name="a264"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a265"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a266"></a> </div></li> <li><div class="src-line"><a name="a267"></a> <span class="src-var">$ret </span>= <span class="src-key">array</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="a268"></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>< <span class="src-var">$len</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="a269"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a270"></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-var">$timeout</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a271"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI_1.html#methodcon_print_r">con_print_r</a><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="a272"></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_1.html#methodagi_response_is_error">agi_response_is_error</a><span class="src-sym">(</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-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">'error?'</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-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a276"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a277"></a> <span class="src-var">$ch </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="a278"></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">got <span class="src-var">$ch</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="a279"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$terminator </span>&& <span class="src-var">$ch </span>== <span class="src-var">$terminator</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a280"></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="a281"></a> </div></li> <li><div class="src-line"><a name="a282"></a> <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-var">$i</span><span class="src-sym">] </span>= <span class="src-var">$ch</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a283"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a284"></a> <span class="src-key">return</span><span class="src-sym">(</span><span class="src-var">$ret</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a285"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a286"></a> </div></li> <li><div class="src-line"><a name="a287"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a288"></a><span class="src-doc"> * Read $len characters as DTMF codes</span></div></li> <li><div class="src-line"><a name="a289"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a290"></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">$len </span></div></li> <li><div class="src-line"><a name="a291"></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="a292"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a293"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_dtmf2text">agi_dtmf2text</a><span class="src-sym">(</span><span class="src-var">$len</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a294"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a295"></a> <span class="src-var">$numbers</span>=<span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'1'</span>=><span class="src-str">'1'</span><span class="src-sym">, </span><span class="src-str">'2'</span>=><span class="src-str">'2abc'</span><span class="src-sym">, </span><span class="src-str">'3'</span>=><span class="src-str">'3def'</span><span class="src-sym">, </span><span class="src-str">'4'</span>=><span class="src-str">'4ghi'</span><span class="src-sym">, </span><span class="src-str">'5'</span>=><span class="src-str">'5jkl'</span><span class="src-sym">, </span><span class="src-str">'6'</span>=><span class="src-str">'6mno'</span><span class="src-sym">,</span></div></li> <li><div class="src-line"><a name="a296"></a> <span class="src-str">'7'</span>=><span class="src-str">'7pqrs'</span><span class="src-sym">, </span><span class="src-str">'8'</span>=><span class="src-str">'8tuv'</span><span class="src-sym">, </span><span class="src-str">'9'</span>=><span class="src-str">'9wxyz'</span><span class="src-sym">, </span><span class="src-str">'0'</span>=><span class="src-str">'0'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a297"></a> </div></li> <li><div class="src-line"><a name="a298"></a> <span class="src-var">$last </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a299"></a> <span class="src-var">$i </span>= <span class="src-var">$times </span>= <span class="src-num">0</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a300"></a> <span class="src-var">$abort </span>= <span class="src-num">0</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a301"></a> </div></li> <li><div class="src-line"><a name="a302"></a> <span class="src-var">$char </span>= <span class="src-str">''</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a303"></a> do</div></li> <li><div class="src-line"><a name="a304"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a305"></a> <span class="src-var">$res </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI_1.html#methodagi_getdtmf">agi_getdtmf</a><span class="src-sym">(</span><span class="src-num">1</span><span class="src-sym">, </span><span class="src-num">4000</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a306"></a> <span class="src-var">$res </span>= <span class="src-var">$res</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="a307"></a> </div></li> <li><div class="src-line"><a name="a308"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$res </span>== <span class="src-id">false</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="a309"></a> </div></li> <li><div class="src-line"><a name="a310"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$last </span>== <span class="src-id">false</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a311"></a> <span class="src-var">$last </span>= <span class="src-var">$res</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a312"></a> <span class="src-key">elseif</span><span class="src-sym">(</span><span class="src-var">$last </span>!= <span class="src-var">$res </span>|| <span class="src-var">$res </span>== <span class="src-id">false</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a313"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a314"></a> <span class="src-var">$ret</span><span class="src-sym">[</span><span class="src-var">$i</span><span class="src-sym">] </span>= <span class="src-var">$char</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a315"></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">Character <span class="src-var">$i</span> is <span class="src-var">$char</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="a316"></a><span class="src-comm">// $this->text2wav($char); </span></div></li> <li><div class="src-line"><a name="a317"></a> <span class="src-var">$times </span>= <span class="src-num">0</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a318"></a> <span class="src-var">$i</span>++<span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a319"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a320"></a> </div></li> <li><div class="src-line"><a name="a321"></a> <span class="src-var">$char </span>= <span class="src-var">$numbers</span><span class="src-sym">[</span><span class="src-var">$res</span><span class="src-sym">]</span><span class="src-sym">[</span><span class="src-var">$times</span>++<span class="src-sym">]</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a322"></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">Number <span class="src-var">$res</span> is '<span class="src-var">$char</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="a323"></a> </div></li> <li><div class="src-line"><a name="a324"></a> <span class="src-key">if</span><span class="src-sym">(</span><a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$numbers</span><span class="src-sym">[</span><span class="src-var">$res</span><span class="src-sym">]</span><span class="src-sym">) </span>== <span class="src-var">$times</span><span class="src-sym">) </span><span class="src-var">$times </span>= <span class="src-num">0</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a325"></a> </div></li> <li><div class="src-line"><a name="a326"></a> <span class="src-var">$last </span>= <span class="src-var">$res</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a327"></a> <span class="src-sym">} </span><span class="src-key">while</span><span class="src-sym">(</span><span class="src-var">$i </span>< <span class="src-var">$len </span>&& <span class="src-sym">!</span><span class="src-var">$abort</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a328"></a> </div></li> <li><div class="src-line"><a name="a329"></a> <span class="src-var">$str </span>= <span class="src-str">''</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a330"></a> <span class="src-key">foreach</span><span class="src-sym">(</span><span class="src-var">$ret </span><span class="src-key">as </span><span class="src-var">$k</span><span class="src-sym">) </span><span class="src-var">$str </span>.= <span class="src-var">$k </span>. <span class="src-str">' '</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a331"></a> </div></li> <li><div class="src-line"><a name="a332"></a> <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">$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">return</span><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="a334"></a> <span class="src-sym">} </span></div></li> <li><div class="src-line"><a name="a335"></a> </div></li> <li><div class="src-line"><a name="a336"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a337"></a><span class="src-doc"> * Alias of PHP join function</span></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"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">array </span><span class="src-doc-var">$arr </span></div></li> <li><div class="src-line"><a name="a340"></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="a341"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a342"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodarr2str">arr2str</a><span class="src-sym">(</span><span class="src-var">$arr</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a343"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a344"></a> <span class="src-key">return </span><a href="http://www.php.net/trim">trim</a><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">$arr</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a345"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a346"></a> </div></li> <li><div class="src-line"><a name="a347"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a348"></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="a349"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a350"></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="a351"></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="a352"></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="a353"></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="a354"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a355"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methoddb_get">db_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="a356"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a357"></a> <span class="src-var">$res </span>= <span class="src-var">$this</span><span class="src-sym">-></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><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a358"></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><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="a359"></a> <span class="src-key">return </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></div></li> <li><div class="src-line"><a name="a360"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a361"></a> </div></li> <li><div class="src-line"><a name="a362"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a363"></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="a364"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a365"></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="a366"></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="a367"></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">$val </span></div></li> <li><div class="src-line"><a name="a368"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">integer </span><span class="src-doc">result code</span></div></li> <li><div class="src-line"><a name="a369"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a370"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methoddb_put">db_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">$val</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a371"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a372"></a> <span class="src-var">$res </span>= <span class="src-var">$this</span><span class="src-sym">-></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">$val</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a373"></a> <span class="src-key">return </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-sym">;</span></div></li> <li><div class="src-line"><a name="a374"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a375"></a> </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"> * Deletes an entry in the Asterisk database for a given family and key.</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"> * </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="a380"></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="a381"></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="a382"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">integer </span><span class="src-doc">result code</span></div></li> <li><div class="src-line"><a name="a383"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a384"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methoddb_del">db_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="a385"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a386"></a> <span class="src-var">$res </span>= <span class="src-var">$this</span><span class="src-sym">-></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><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a387"></a> <span class="src-key">return </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-sym">;</span></div></li> <li><div class="src-line"><a name="a388"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a389"></a> </div></li> <li><div class="src-line"><a name="a390"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a391"></a><span class="src-doc"> * Fetch the value of a variable.</span></div></li> <li><div class="src-line"><a name="a392"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a393"></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="a394"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a395"></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="a396"></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="a397"></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">$var </span><span class="src-doc">variable name</span></div></li> <li><div class="src-line"><a name="a398"></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="a399"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a400"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodget_var">get_var</a><span class="src-sym">(</span><span class="src-var">$var</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a401"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a402"></a> <span class="src-var">$res </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodget_variable">get_variable</a><span class="src-sym">(</span><span class="src-var">$var</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a403"></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><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="a404"></a> <span class="src-key">return </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></div></li> <li><div class="src-line"><a name="a405"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a406"></a> </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-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="a409"></a><span class="src-doc"> * in the dialplan.</span></div></li> <li><div class="src-line"><a name="a410"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a411"></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="a412"></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="a413"></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="a414"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a415"></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="a416"></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">$var </span><span class="src-doc">is case sensitive</span></div></li> <li><div class="src-line"><a name="a417"></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">$val </span></div></li> <li><div class="src-line"><a name="a418"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">integer </span><span class="src-doc">result code</span></div></li> <li><div class="src-line"><a name="a419"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a420"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodset_var">set_var</a><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="a421"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a422"></a> <span class="src-var">$res </span>= <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodset_variable">set_variable</a><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><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a423"></a> <span class="src-key">return </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-sym">;</span></div></li> <li><div class="src-line"><a name="a424"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a425"></a> </div></li> <li><div class="src-line"><a name="a426"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a427"></a><span class="src-doc"> * Hangup the current channel.</span></div></li> <li><div class="src-line"><a name="a428"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a429"></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="a430"></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="a431"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a432"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_hangup">agi_hangup</a><span class="src-sym">(</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a433"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a434"></a> <span class="src-var">$this</span><span class="src-sym">-></span><a href="../phpAGI/AGI.html#methodhangup">hangup</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="a435"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a436"></a> </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"> * Get the status of the specified channel.</span></div></li> <li><div class="src-line"><a name="a439"></a><span class="src-doc"> *</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-channel+status</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">$channel </span></div></li> <li><div class="src-line"><a name="a442"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array, </span><span class="src-doc">('status'=>$res['result'], 'description'=>$res['data'])</span></div></li> <li><div class="src-line"><a name="a443"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a444"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_channel_status">agi_channel_status</a><span class="src-sym">(</span><span class="src-var">$channel</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a445"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a446"></a> <span class="src-var">$res </span>= <span class="src-var">$this</span><span class="src-sym">-></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-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a447"></a> <span class="src-key">return </span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'status'</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-str">'description'</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="a448"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a449"></a> </div></li> <li><div class="src-line"><a name="a450"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a451"></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="a452"></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="a453"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a454"></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="a455"></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="a456"></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="a457"></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="a458"></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">$prompt </span><span class="src-doc">to play</span></div></li> <li><div class="src-line"><a name="a459"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a460"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_recordfile">agi_recordfile</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">$timeout</span>=<span class="src-num">5000</span><span class="src-sym">, </span><span class="src-var">$prompt</span>=<span class="src-id">FALSE</span><span class="src-sym">)</span></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> <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-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-sym">;</span></div></li> <li><div class="src-line"><a name="a463"></a> <span class="src-var">$this</span><span class="src-sym">-></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-str">'#'</span><span class="src-sym">, </span><span class="src-var">$timeout</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="a464"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a465"></a> </div></li> <li><div class="src-line"><a name="a466"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a467"></a><span class="src-doc"> * Play the given audio file, allowing playback to be interrupted by a #. This command is similar to the GET DATA</span></div></li> <li><div class="src-line"><a name="a468"></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="a469"></a><span class="src-doc"> * digits before returning.</span></div></li> <li><div class="src-line"><a name="a470"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a471"></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="a472"></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">filename without extension, often in /var/lib/asterisk/sounds</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-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_play">agi_play</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="a475"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a476"></a> <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">$file</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="a477"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a478"></a> </div></li> <li><div class="src-line"><a name="a479"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a480"></a><span class="src-doc"> * Goto - Set context, extension and priority</span></div></li> <li><div class="src-line"><a name="a481"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a482"></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">$con </span><span class="src-doc">context</span></div></li> <li><div class="src-line"><a name="a483"></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">$ext </span><span class="src-doc">extension</span></div></li> <li><div class="src-line"><a name="a484"></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">$pri </span><span class="src-doc">priority</span></div></li> <li><div class="src-line"><a name="a485"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a486"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_goto">agi_goto</a><span class="src-sym">(</span><span class="src-var">$con</span><span class="src-sym">,</span><span class="src-var">$ext</span>=<span class="src-str">'s'</span><span class="src-sym">,</span><span class="src-var">$pri</span>=<span class="src-num">1</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a487"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a488"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">goto</span><span class="src-sym">(</span><span class="src-var">$con</span><span class="src-sym">, </span><span class="src-var">$ext</span><span class="src-sym">, </span><span class="src-var">$pri</span><span class="src-sym">)</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> </div></li> <li><div class="src-line"><a name="a491"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a492"></a><span class="src-doc"> * Say the given digit string, returning early if # is received on the channel.</span></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"> * </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="a495"></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="a496"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a497"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_saydigits">agi_saydigits</a><span class="src-sym">(</span><span class="src-var">$digits</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a498"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a499"></a> <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-str">'#'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a500"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a501"></a> </div></li> <li><div class="src-line"><a name="a502"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a503"></a><span class="src-doc"> * Say the given number, returning early if # is received on the channel.</span></div></li> <li><div class="src-line"><a name="a504"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a505"></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="a506"></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="a507"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a508"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_saynumber">agi_saynumber</a><span class="src-sym">(</span><span class="src-var">$number</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a509"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a510"></a> <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-str">'#'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a511"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a512"></a> </div></li> <li><div class="src-line"><a name="a513"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a514"></a><span class="src-doc"> * Say a given time, returning early if # is received on the channel.</span></div></li> <li><div class="src-line"><a name="a515"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a516"></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="a517"></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="a518"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a519"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_saytime">agi_saytime</a><span class="src-sym">(</span><span class="src-var">$time</span>=<span class="src-str">''</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a520"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a521"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$time </span>== <span class="src-str">''</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="a522"></a> <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-str">'#'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a523"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a524"></a> </div></li> <li><div class="src-line"><a name="a525"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a526"></a><span class="src-doc"> * Set Language</span></div></li> <li><div class="src-line"><a name="a527"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a528"></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="a529"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a530"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodagi_setlanguage">agi_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="a531"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a532"></a> <span class="src-var">$this</span><span class="src-sym">-></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-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a533"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a534"></a> </div></li> <li><div class="src-line"><a name="a535"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a536"></a><span class="src-doc"> * Perform enum lookup</span></div></li> <li><div class="src-line"><a name="a537"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a538"></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">$telnumber </span></div></li> <li><div class="src-line"><a name="a539"></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">$rDNS </span></div></li> <li><div class="src-line"><a name="a540"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array </span></div></li> <li><div class="src-line"><a name="a541"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a542"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodenum_lookup">enum_lookup</a><span class="src-sym">(</span><span class="src-var">$telnumber</span><span class="src-sym">, </span><span class="src-var">$rDNS</span>=<span class="src-str">'e164.org'</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> <span class="src-comm">// returns a sorted array of enum records </span></div></li> <li><div class="src-line"><a name="a545"></a> </div></li> <li><div class="src-line"><a name="a546"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$telnumber</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="a547"></a> <span class="src-var">$telnumber </span>= <a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-var">$telnumber</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="a548"></a> </div></li> <li><div class="src-line"><a name="a549"></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">$telnumber</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="a550"></a> <span class="src-var">$rDNS </span>= <span class="src-var">$telnumber</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-var">$rDNS</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a551"></a> </div></li> <li><div class="src-line"><a name="a552"></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">'dig'</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">'dig'</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">'dig'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a553"></a> <span class="src-var">$dig</span>=<a href="http://www.php.net/trim">trim</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">'dig'</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="a554"></a> </div></li> <li><div class="src-line"><a name="a555"></a> <span class="src-var">$execstr</span>= <span class="src-var">$dig </span>. <span class="src-str">" +short " </span>. <a href="http://www.php.net/escapeshellarg">escapeshellarg</a><span class="src-sym">(</span><span class="src-var">$rDNS</span><span class="src-sym">) </span>. <span class="src-str">" NAPTR"</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a556"></a> <span class="src-var">$lines </span>= <a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span>`<span class="src-var">$execstr</span>`<span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a557"></a> </div></li> <li><div class="src-line"><a name="a558"></a> <span class="src-var">$lines </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><span class="src-var">$lines</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a559"></a> <span class="src-var">$arr </span>= <span class="src-key">array</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="a560"></a> <span class="src-key">foreach</span><span class="src-sym">(</span><span class="src-var">$lines </span><span class="src-key">as </span><span class="src-var">$line</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a561"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a562"></a> <span class="src-var">$line </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-sym">;</span></div></li> <li><div class="src-line"><a name="a563"></a> <span class="src-var">$line </span>= <a href="http://www.php.net/str_replace">str_replace</a><span class="src-sym">(</span><span class="src-str">"\t"</span><span class="src-sym">, </span><span class="src-str">' '</span><span class="src-sym">, </span><span class="src-var">$line</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a564"></a> <span class="src-key">while</span><span class="src-sym">(</span><a href="http://www.php.net/strstr">strstr</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></div></li> <li><div class="src-line"><a name="a565"></a> <span class="src-var">$line </span>= <a href="http://www.php.net/str_replace">str_replace</a><span class="src-sym">(</span><span class="src-str">' '</span><span class="src-sym">, </span><span class="src-str">' '</span><span class="src-sym">, </span><span class="src-var">$line</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a566"></a> <span class="src-var">$line </span>= <a href="http://www.php.net/str_replace">str_replace</a><span class="src-sym">(</span><span class="src-str">"\""</span><span class="src-sym">, </span><span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$line</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a567"></a> <span class="src-var">$line </span>= <a href="http://www.php.net/str_replace">str_replace</a><span class="src-sym">(</span><span class="src-str">"\'"</span><span class="src-sym">, </span><span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$line</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a568"></a> <span class="src-var">$line </span>= <a href="http://www.php.net/str_replace">str_replace</a><span class="src-sym">(</span><span class="src-str">' '</span><span class="src-sym">, </span><span class="src-str">'|'</span><span class="src-sym">, </span><span class="src-var">$line</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a569"></a> <span class="src-var">$bits </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">$line</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a570"></a> <span class="src-var">$bit </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/stripslashes">stripslashes</a><span class="src-sym">(</span><span class="src-var">$bits</span><span class="src-sym">[</span><span class="src-num">4</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="a571"></a> <span class="src-var">$URI </span>= <span class="src-sym">@</span><a href="http://www.php.net/ereg_replace">ereg_replace</a><span class="src-sym">(</span><span class="src-var">$bit</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">$bit</span><span class="src-sym">[</span><span class="src-num">2</span><span class="src-sym">]</span><span class="src-sym">, </span><span class="src-str">'+' </span>. <span class="src-var">$telnumber</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a572"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$URI</span><span class="src-sym">[</span><span class="src-num">3</span><span class="src-sym">] </span>== <span class="src-str">':'</span><span class="src-sym">) </span><span class="src-var">$URI</span><span class="src-sym">[</span><span class="src-num">3</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="a573"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$URI</span><span class="src-sym">[</span><span class="src-num">4</span><span class="src-sym">] </span>== <span class="src-str">':'</span><span class="src-sym">) </span><span class="src-var">$URI</span><span class="src-sym">[</span><span class="src-num">4</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="a574"></a> <span class="src-var">$arr</span><span class="src-sym">[</span><span class="src-sym">] </span>= <span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'order'</span>=><span class="src-var">$bits</span><span class="src-sym">[</span><span class="src-num">0</span><span class="src-sym">]</span><span class="src-sym">, </span><span class="src-str">'prio'</span>=><span class="src-var">$bits</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-str">'tech'</span>=><span class="src-var">$bits</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-str">'URI'</span>=><span class="src-var">$URI</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a575"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a576"></a> </div></li> <li><div class="src-line"><a name="a577"></a> <span class="src-key">foreach</span><span class="src-sym">(</span><span class="src-var">$arr </span><span class="src-key">as </span><span class="src-var">$key</span>=><span class="src-var">$row</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a578"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a579"></a> <span class="src-var">$order</span><span class="src-sym">[</span><span class="src-var">$key</span><span class="src-sym">] </span>= <span class="src-var">$row</span><span class="src-sym">[</span><span class="src-str">'order'</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a580"></a> <span class="src-var">$prio</span><span class="src-sym">[</span><span class="src-var">$key</span><span class="src-sym">] </span>= <span class="src-var">$row</span><span class="src-sym">[</span><span class="src-str">'prio'</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a581"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a582"></a> </div></li> <li><div class="src-line"><a name="a583"></a> <a href="http://www.php.net/array_multisort">array_multisort</a><span class="src-sym">(</span><span class="src-var">$order</span><span class="src-sym">, </span><span class="src-id">SORT_ASC</span><span class="src-sym">, </span><span class="src-var">$prio</span><span class="src-sym">, </span><span class="src-id">SORT_ASC</span><span class="src-sym">, </span><span class="src-var">$arr</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a584"></a> <span class="src-key">return</span><span class="src-sym">(</span><span class="src-var">$arr</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-sym">}</span></div></li> <li><div class="src-line"><a name="a586"></a> </div></li> <li><div class="src-line"><a name="a587"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a588"></a><span class="src-doc"> * Perform enum txt lookup</span></div></li> <li><div class="src-line"><a name="a589"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a590"></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">$telnumber </span></div></li> <li><div class="src-line"><a name="a591"></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">$rDNS </span></div></li> <li><div class="src-line"><a name="a592"></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="a593"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a594"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodenum_txtlookup">enum_txtlookup</a><span class="src-sym">(</span><span class="src-var">$telnumber</span><span class="src-sym">, </span><span class="src-var">$rDNS</span>=<span class="src-str">'e164.org'</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a595"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a596"></a> <span class="src-comm">// returns the contents of a TXT record associated with an ENUM dns record.</span></div></li> <li><div class="src-line"><a name="a597"></a> <span class="src-comm">// ala reverse caller ID lookup.</span></div></li> <li><div class="src-line"><a name="a598"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$telnumber</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="a599"></a> <span class="src-var">$telnumber </span>= <a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-var">$telnumber</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="a600"></a> </div></li> <li><div class="src-line"><a name="a601"></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">$telnumber</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="a602"></a> <span class="src-var">$rDNS </span>= <span class="src-var">$telnumber</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-var">$rDNS</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a603"></a> </div></li> <li><div class="src-line"><a name="a604"></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">'dig'</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">'dig'</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">'dig'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a605"></a> <span class="src-var">$dig</span>=<a href="http://www.php.net/trim">trim</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">'dig'</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="a606"></a> </div></li> <li><div class="src-line"><a name="a607"></a> <span class="src-var">$execstr </span>= <span class="src-var">$dig </span>. <span class="src-str">' +short ' </span>. <a href="http://www.php.net/escapeshellarg">escapeshellarg</a><span class="src-sym">(</span><span class="src-var">$rDNS</span><span class="src-sym">) </span>. <span class="src-str">' TXT'</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a608"></a> <span class="src-var">$lines </span>= <a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span>`<span class="src-var">$execstr</span>`<span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a609"></a> </div></li> <li><div class="src-line"><a name="a610"></a> <span class="src-var">$lines </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><span class="src-var">$lines</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a611"></a> <span class="src-key">foreach</span><span class="src-sym">(</span><span class="src-var">$lines </span><span class="src-key">as </span><span class="src-var">$line</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a612"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a613"></a> <span class="src-var">$line </span>= <a href="http://www.php.net/str_replace">str_replace</a><span class="src-sym">(</span><span class="src-str">"\t"</span><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">$line</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a614"></a> <span class="src-key">while</span><span class="src-sym">(</span><a href="http://www.php.net/strstr">strstr</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">$line </span>= <a href="http://www.php.net/str_replace">str_replace</a><span class="src-sym">(</span><span class="src-str">' '</span><span class="src-sym">, </span><span class="src-str">' '</span><span class="src-sym">, </span><span class="src-var">$line</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a615"></a> <span class="src-var">$line </span>= <a href="http://www.php.net/str_replace">str_replace</a><span class="src-sym">(</span><span class="src-str">"\""</span><span class="src-sym">, </span><span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$line</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-var">$line </span>= <a href="http://www.php.net/str_replace">str_replace</a><span class="src-sym">(</span><span class="src-str">"\'"</span><span class="src-sym">, </span><span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$line</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a617"></a> <span class="src-var">$ret </span>.= <span class="src-var">$line</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a618"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a619"></a> <span class="src-var">$ret </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-sym">;</span></div></li> <li><div class="src-line"><a name="a620"></a> <span class="src-key">if</span><span class="src-sym">(</span><span class="src-var">$ret </span>== <span class="src-str">''</span><span class="src-sym">) </span><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="a621"></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="a622"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a623"></a> </div></li> <li><div class="src-line"><a name="a624"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a625"></a><span class="src-doc"> * Send the given text to the connected channel.</span></div></li> <li><div class="src-line"><a name="a626"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a627"></a><span class="src-doc"> * Most channels do not support transmission of text.</span></div></li> <li><div class="src-line"><a name="a628"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a629"></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="a630"></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="a631"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">boolean </span><span class="src-doc">true on success</span></div></li> <li><div class="src-line"><a name="a632"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a633"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.html#methodsend_text">send_text</a><span class="src-sym">(</span><span class="src-var">$txt</span><span class="src-sym">)</span></div></li> <li><div class="src-line"><a name="a634"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a635"></a> <span class="src-var">$res </span>= <span class="src-id">parent</span><span class="src-sym">::</span><a href="../phpAGI/AGI.html#methodsend_text">send_text</a><span class="src-sym">(</span><span class="src-var">$txt</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a636"></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">1</span><span class="src-sym">) </span><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="a637"></a> <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="a638"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a639"></a> </div></li> <li><div class="src-line"><a name="a640"></a> <span class="src-doc">/**</span></div></li> <li><div class="src-line"><a name="a641"></a><span class="src-doc"> * Send the specified image on a channel.</span></div></li> <li><div class="src-line"><a name="a642"></a><span class="src-doc"> *</span></div></li> <li><div class="src-line"><a name="a643"></a><span class="src-doc"> * Most channels do not support the transmission of images.</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-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="a646"></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="a647"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">boolean </span><span class="src-doc">true on success</span></div></li> <li><div class="src-line"><a name="a648"></a><span class="src-doc"> */</span></div></li> <li><div class="src-line"><a name="a649"></a> <span class="src-key">function </span><a href="../phpAGI/AGI_1.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="a650"></a> <span class="src-sym">{</span></div></li> <li><div class="src-line"><a name="a651"></a> <span class="src-var">$res </span>= <span class="src-id">parent</span><span class="src-sym">::</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><span class="src-sym">;</span></div></li> <li><div class="src-line"><a name="a652"></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">1</span><span class="src-sym">) </span><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="a653"></a> <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="a654"></a> <span class="src-sym">} </span></div></li> <li><div class="src-line"><a name="a655"></a> <span class="src-sym">}</span></div></li> <li><div class="src-line"><a name="a656"></a><span class="src-php">?></span></div></li> </ol></div> </div> <p class="notes" id="credit"> Documentation generated on Thu, 30 Sep 2010 02:22:07 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.2</a> </p> </body> </html>