<div class="gmail_quote"><div class="gmail_quote">Hello, <br><br>I need to be able to send a DTMF to an existing channel remotely. So I made a php script to do such with the Manager command PlayDTMF. I need it for example to start a transfer.<br>
<br>
isb177*CLI&gt; features show<br>

Builtin Feature           Default Current<br>
---------------           ------- -------<br>
Pickup                    *8      *8<br>
Blind Transfer            #       #8<br>
Attended Transfer                 *2<br>
One Touch Monitor                 *1<br>
Disconnect Call           *       **<br>
Park Call<br>
One Touch MixMonitor<br>
<br>
Dynamic Feature           Default Current<br>
---------------           ------- -------<br>
(none)<br>
<br>
Call parking<br>
------------<br>
Parking extension   :      70<br>
Parking context     :      parkedcalls<br>
Parked call extensions:      71-78<br>
<br><br>My script is:<br><br>#!/usr/bin/php -q<br>
&lt;?php<br>
error_reporting (E_ALL);<br>
set_time_limit(60);<br>
ob_implicit_flush(false);<br>

$ip_asterisk = &quot;127.0.0.1&quot;;<br>
$user_asterisk = &quot;admin&quot;;<br>
$pass_asterisk = &quot;forward&quot;;<br>

$canal = &quot;SIP/1000-0a292360&quot;; //hardcodeado<br>
<br>
$oSocket = fsockopen($ip_asterisk, 5038, $errnum, $errdesc) or die(&quot;Connection to host failed&quot;);<br>
    fputs($oSocket, &quot;Action: login\r\n&quot;);<br>
    fputs($oSocket, &quot;Username: $user_asterisk\r\n&quot;);<br>
    fputs($oSocket, &quot;Secret: $pass_asterisk\r\n\r\n&quot;);<br>
    fputs($oSocket, &quot;Action: PlayDTMF\r\n&quot;);<br>
    fputs($oSocket, &quot;Channel: $canal\r\n&quot;);<br>
    fputs($oSocket, &quot;Digit: #\r\n\r\n&quot;);<br>
    usleep(500000);<br>
    fputs($oSocket, &quot;Action: PlayDTMF\r\n&quot;);<br>
    fputs($oSocket, &quot;Channel: $canal\r\n&quot;);<br>
    fputs($oSocket, &quot;Digit: 8\r\n\r\n&quot;);<br>
    usleep(500000);<br>
    fputs($oSocket, &quot;Action: Logoff\r\n\r\n&quot;);<br>
<br>
   $loaded = &quot;&quot;;<br>
    while (!feof($oSocket)){<br>
        $buffer = fgets($oSocket, 4096);<br>
        $loaded .= $buffer;    }<br>
    $vec = explode(&quot;\n&quot;, $loaded);<br>
    $len = count($vec);<br>
    print_r($vec);<br>?&gt;<br><br><br>The script output is:<br><br>Array<br>
(<br>
    [0] =&gt; Asterisk Call Manager/1.1<br>
    [1] =&gt; Response: Success<br>
    [2] =&gt; Message: Authentication accepted<br>
    [3] =&gt;<br>
    [4] =&gt; Response: Success<br>
    [5] =&gt; Message: DTMF successfully queued<br>
    [6] =&gt;<br>
    [7] =&gt; Response: Success<br>
    [8] =&gt; Message: DTMF successfully queued<br>
    [9] =&gt;<br>
    [10] =&gt; Response: Goodbye<br>
    [11] =&gt; Message: Thanks for all the fish.<br>
    [12] =&gt;<br>
    [13] =&gt;<br>
)<br><br><br>When I run the script I can hear the two digit (only the audio) but nothing happens, the Transfer menu doesnt start. The Cli shows:<br><br><br>
[Oct  2 11:14:46] DEBUG[30054]: manager.c:2776 process_message: Manager received command &#39;login&#39;<br>
  == Manager &#39;admin&#39; logged on from 127.0.0.1<br>
[Oct  2 11:14:46] DEBUG[30054]: manager.c:2776 process_message: Manager received command &#39;PlayDTMF&#39;<br>
[Oct  2 11:14:46] DEBUG[30054]: channel.c:2055 ast_waitfor_nandfds:
Thread -1216881776 Blocking &#39;SIP/1000-0a292360&#39;, already blocked by
thread -1217414256 in procedure ast_waitfor_nandfds<br>
[Oct  2 11:14:47] DEBUG[29533]: channel.c:3341 ast_write: Deadlock avoided for write to channel &#39;SIP/1000-0a292360&#39;<br>
[Oct  2 11:14:47] DEBUG[30054]: manager.c:2776 process_message: Manager received command &#39;PlayDTMF&#39;<br>
[Oct  2 11:14:47] DEBUG[30054]: channel.c:2055 ast_waitfor_nandfds:
Thread -1216881776 Blocking &#39;SIP/1000-0a292360&#39;, already blocked by
thread -1217414256 in procedure ast_waitfor_nandfds<br>
[Oct  2 11:14:47] DEBUG[29533]: channel.c:3341 ast_write: Deadlock avoided for write to channel &#39;SIP/1000-0a292360&#39;<br>
[Oct  2 11:14:47] DEBUG[30054]: manager.c:2776 process_message: Manager received command &#39;Logoff&#39;<br>
  == Manager &#39;admin&#39; logged off from 127.0.0.1<br><br><br><br>BUT, if I press #8 in the softphone, I can hear the two digit and inmediately the Transfer menu begins playing &#39;pbx-transfer.gsm&#39;. And the Cli output in this case is:<br>


<br><br>[Oct  2 11:09:17] DEBUG[29533]: rtp.c:1148 ast_rtcp_read: Got RTCP report of 60 bytes<br>[Oct  2 11:09:20] DEBUG[29533]: rtp.c:958 process_rfc2833: - RTP 2833 Event: 0000000b (len = 4)<br>[Oct  2 11:09:20] DEBUG[29533]: rtp.c:806 send_dtmf: Sending dtmf: 35 (#), at 192.168.0.148<br>


[Oct  2 11:09:20] DTMF[29533]: channel.c:2840 __ast_read: DTMF begin &#39;#&#39; received on SIP/1000-0a292360<br>[Oct  2 11:09:20] DTMF[29533]: channel.c:2850 __ast_read: DTMF begin passthrough &#39;#&#39; on SIP/1000-0a292360<br>


[Oct  2 11:09:20] DEBUG[29533]: channel.c:4806 ast_generic_bridge: Got DTMF begin on channel (SIP/1000-0a292360)<br>[Oct  2 11:09:20] DEBUG[29533]: channel.c:5150 ast_channel_bridge: Bridge stops bridging channels SIP/1000-0a292360 and SIP/1001-0a026408<br>


[Oct  2 11:09:20] DEBUG[29533]: rtp.c:958 process_rfc2833: - RTP 2833 Event: 0000000b (len = 4)<br>[Oct  2 11:09:20] DEBUG[29533]: rtp.c:958 process_rfc2833: - RTP 2833 Event: 0000000b (len = 4)<br>[Oct  2 11:09:20] DEBUG[29533]: rtp.c:958 process_rfc2833: - RTP 2833 Event: 0000000b (len = 4)<br>


[Oct  2 11:09:20] DEBUG[29533]: rtp.c:958 process_rfc2833: - RTP 2833 Event: 0000000b (len = 4)<br>[Oct  2 11:09:20] DEBUG[29533]: rtp.c:806 send_dtmf: Sending dtmf: 35 (#), at 192.168.0.148<br>[Oct  2 11:09:20] DTMF[29533]: channel.c:2768 __ast_read: DTMF end &#39;#&#39; received on SIP/1000-0a292360, duration 80 ms<br>


[Oct  2 11:09:20] DTMF[29533]: channel.c:2808 __ast_read: DTMF end accepted with begin &#39;#&#39; on SIP/1000-0a292360<br>[Oct  2 11:09:20] DTMF[29533]: channel.c:2824 __ast_read: DTMF end passthrough &#39;#&#39; on SIP/1000-0a292360<br>


[Oct  2 11:09:20] DEBUG[29533]: channel.c:4806 ast_generic_bridge: Got DTMF end on channel (SIP/1000-0a292360)<br>[Oct  2 11:09:20] DEBUG[29533]: channel.c:5150 ast_channel_bridge: Bridge stops bridging channels SIP/1000-0a292360 and SIP/1001-0a026408<br>


[Oct  2 11:09:20] DEBUG[29533]: features.c:1836 ast_feature_interpret: Feature interpret: chan=SIP/1000-0a292360, peer=SIP/1001-0a026408, code=#, sense=1, features=2, dynamic=#<br>[Oct  2 11:09:20] DEBUG[29533]: features.c:2496 ast_bridge_call: Set time limit to 2000<br>


[Oct  2 11:09:20] DEBUG[29533]: rtp.c:958 process_rfc2833: - RTP 2833 Event: 0000000b (len = 4)<br>[Oct  2 11:09:20] DEBUG[29533]: rtp.c:958 process_rfc2833: - RTP 2833 Event: 0000000b (len = 4)<br>[Oct  2 11:09:21] DEBUG[29533]: rtp.c:958 process_rfc2833: - RTP 2833 Event: 00000008 (len = 4)<br>


[Oct  2 11:09:21] DEBUG[29533]: rtp.c:806 send_dtmf: Sending dtmf: 56 (8), at 192.168.0.148<br>[Oct  2 11:09:21] DTMF[29533]: channel.c:2840 __ast_read: DTMF begin &#39;8&#39; received on SIP/1000-0a292360<br>[Oct  2 11:09:21] DTMF[29533]: channel.c:2850 __ast_read: DTMF begin passthrough &#39;8&#39; on SIP/1000-0a292360<br>


[Oct  2 11:09:21] DEBUG[29533]: channel.c:4806 ast_generic_bridge: Got DTMF begin on channel (SIP/1000-0a292360)<br>[Oct  2 11:09:21] DEBUG[29533]: channel.c:5150 ast_channel_bridge: Bridge stops bridging channels SIP/1000-0a292360 and SIP/1001-0a026408<br>


[Oct  2 11:09:21] DEBUG[29533]: rtp.c:958 process_rfc2833: - RTP 2833 Event: 00000008 (len = 4)<br>[Oct  2 11:09:21] DEBUG[29533]: rtp.c:958 process_rfc2833: - RTP 2833 Event: 00000008 (len = 4)<br>[Oct  2 11:09:21] DEBUG[29533]: rtp.c:958 process_rfc2833: - RTP 2833 Event: 00000008 (len = 4)<br>


[Oct  2 11:09:21] DEBUG[29533]: rtp.c:958 process_rfc2833: - RTP 2833 Event: 00000008 (len = 4)<br>[Oct  2 11:09:21] DEBUG[29533]: rtp.c:958 process_rfc2833: - RTP 2833 Event: 00000008 (len = 4)<br>[Oct  2 11:09:21] DEBUG[29533]: rtp.c:958 process_rfc2833: - RTP 2833 Event: 00000008 (len = 4)<br>


[Oct  2 11:09:21] DEBUG[29533]: rtp.c:806 send_dtmf: Sending dtmf: 56 (8), at 192.168.0.148<br>[Oct  2 11:09:21] DTMF[29533]: channel.c:2768 __ast_read: DTMF end &#39;8&#39; received on SIP/1000-0a292360, duration 120 ms<br>


[Oct  2 11:09:21] DTMF[29533]: channel.c:2808 __ast_read: DTMF end accepted with begin &#39;8&#39; on SIP/1000-0a292360<br>[Oct  2 11:09:21] DTMF[29533]: channel.c:2824 __ast_read: DTMF end passthrough &#39;8&#39; on SIP/1000-0a292360<br>


[Oct  2 11:09:21] DEBUG[29533]: channel.c:4806 ast_generic_bridge: Got DTMF end on channel (SIP/1000-0a292360)<br>[Oct  2 11:09:21] DEBUG[29533]: channel.c:5150 ast_channel_bridge: Bridge stops bridging channels SIP/1000-0a292360 and SIP/1001-0a026408<br>


[Oct  2 11:09:21] DEBUG[29533]: features.c:1836 ast_feature_interpret: Feature interpret: chan=SIP/1000-0a292360, peer=SIP/1001-0a026408, code=#8, sense=1, features=2, dynamic=#<br>[Oct  2 11:09:21] DEBUG[29533]: features.c:1732 feature_interpret_helper: Feature detected: fname=Blind Transfer sname=blindxfer exten=#8<br>


    -- Music class default requested but no musiconhold loaded.<br>[Oct  2 11:09:21] DEBUG[29533]: channel.c:3616 set_format: Set channel SIP/1000-0a292360 to write format gsm<br>[Oct  2 11:09:21] DEBUG[29533]: rtp.c:3099 ast_rtp_raw_write: Difference is 1952, ms is 264<br>


[Oct  2 11:09:21] DEBUG[29533]: channel.c:2362 ast_settimeout: Scheduling timer at 160 sample intervals<br>    -- &lt;SIP/1000-0a292360&gt; Playing &#39;pbx-transfer.gsm&#39; (language &#39;en&#39;)<br>[Oct  2 11:09:21] DEBUG[29533]: rtp.c:958 process_rfc2833: - RTP 2833 Event: 00000008 (len = 4)<br>


[Oct  2 11:09:21] DEBUG[29533]: rtp.c:958 process_rfc2833: - RTP 2833 Event: 00000008 (len = 4)<br>[Oct  2 11:09:21] DEBUG[16129]: rtp.c:1148 ast_rtcp_read: Got RTCP report of 60 bytes<br>[Oct  2 11:09:22] DEBUG[29533]: channel.c:2362 ast_settimeout: Scheduling timer at 0 sample intervals<br>


[Oct  2 11:09:22] DEBUG[29533]: channel.c:2362 ast_settimeout: Scheduling timer at 0 sample intervals<br>[Oct  2 11:09:22] DEBUG[29533]: channel.c:3616 set_format: Set channel SIP/1000-0a292360 to write format ulaw<br>[Oct  2 11:09:22] DEBUG[29533]: channel.c:3616 set_format: Set channel SIP/1000-0a292360 to write format slin<br>


[Oct  2 11:09:22] DEBUG[29533]: channel.c:2362 ast_settimeout: Scheduling timer at 160 sample intervals<br>[Oct  2 11:09:22] DEBUG[29533]: channel.c:3017 ast_internal_timing_enabled: Internal timing is disabled (option_internal_timing=0 chan-&gt;timingfd=32)<br>


[Oct  2 11:09:22] DEBUG[29533]: channel.c:2474 ast_read_generator_actions: Generator got voice, switching to phase locked mode<br>[Oct  2 11:09:22] DEBUG[29533]: channel.c:2362 ast_settimeout: Scheduling timer at 0 sample intervals<br>


<br><br>My manager.conf is:<br><br>[general]<br>enabled = yes<br>port = 5038<br>bindaddr = 0.0.0.0<br>webenabled = yes<br>httptimeout = 3600<br>[admin]<br>secret = forward<br>deny=<a href="http://0.0.0.0/0.0.0.0" target="_blank">0.0.0.0/0.0.0.0</a><br>


permit=<a href="http://127.0.0.1/255.255.254.0" target="_blank">127.0.0.1/255.255.254.0</a><br>permit=<a href="http://192.168.0.0/255.255.0.0" target="_blank">192.168.0.0/255.255.0.0</a><br>read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan,all<br>


write = system,call,agent,user,config,command,reporting,originate,all<br><br><br>My Asterisk version is 1.6.0.15, but I`ve tried it in 1.6.0.6 and 1.6.1.6 version and the same happens.<br>I dont know what I am missing...<br>

Please help me.<br>
<br>Thank you very much.<br>Pablo Bernasconi<br>
</div><br>
</div><br>