<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif;">
<div>
<div>Hello friends,</div>
<div><br>
</div>
<div>I am new to Freeswitch. I like freeswitch architecture and its flexibility.</div>
<div><span style="font-family: Helvetica, sans-serif; font-size: 9pt;"><br>
</span></div>
<div><b>I have couple of questions:</b></div>
<div>Is the ESL connection objection thread safe?</div>
<div><span style="font-family: Helvetica, sans-serif; font-size: 9pt;">Can we post ESL events to a queue and handle it by a different thread and if this new thread can write back on the ESL connection</span></div>
<div><span style="font-family: Helvetica, sans-serif; font-size: 12px;"><br>
</span></div>
<div><b>Problem</b>:</div>
<div>I &nbsp;am facing a problem with &nbsp;a python program using outbound ESL interface which plays announcement, collect digits and bridges a call. First call always works but 2nd call &nbsp;doesn’t work after playback command from app. eslLogLeve(7) and fs_cli doesn’t
 show any errors.&nbsp;</div>
<div><b>App:</b></div>
<div>We have a server thread which accepts incoming connection from FS, answers call and waits for other events. If it receives CHANNEL_ANSWER or DTMF event then it post event along with connection object to python queue.&nbsp;<span style="font-style: italic;">&nbsp;</span>&nbsp;</div>
<div>We have another thread which processes events from queue. It plays announcement for CHANNEL_ANSWER event and it stores digits for DTMF events. If digit lenth becomes 4 then it bridges call to a gateway.</div>
<div><br>
</div>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;">
<span style="font-size: 9pt; font-family: Helvetica, sans-serif;">FreeSWITCH Version 1.2.24&#43;git~20140513T183205Z~9af707ed20~64bit (git 9af707e 2014-05-13 18:32:05Z 64bit) on RedHat 6.4.</span><o:p></o:p></p>
<div><br>
</div>
<div>Con is outbound ESL connection object</div>
<div>Python:</div>
<div style="font-family: Calibri; font-size: medium;"><span style="font-size: 12px;"><font face="Consolas">&nbsp; &nbsp;while con.connected():</font></span></div>
<div style="font-family: Calibri; font-size: medium;"><span style="font-size: 12px;"><font face="Consolas">&nbsp; &nbsp; &nbsp; fs_event = con.recvEvent()</font></span></div>
<div style="font-family: Calibri; font-size: medium;"><span style="font-size: 12px;"><font face="Consolas">&nbsp; &nbsp; &nbsp; if name == &quot;DTMF”:</font></span></div>
<div style="font-family: Calibri; font-size: medium;"><span style="font-size: 12px;"><font face="Consolas">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;eventQueue.put(conn, fs_event)</font></span></div>
<div style="font-family: Calibri; font-size: medium;">
<div>
<p class="MsoNormal" style="font-family: 'Times New Roman', serif; font-size: 12pt; margin: 0cm 0cm 0.0001pt;">
<code style="font-family: 'Courier New';"><span style="font-size: 10pt; color: rgb(51, 51, 51);"><br>
</span></code></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0.0001pt;"><span style="font-size: 12px;"><font face="Consolas"><code><span style="color: rgb(51, 51, 51);">server&nbsp;=</span></code><span style="color: rgb(51, 51, 51);">&nbsp;</span><code><span style="color: rgb(51, 51, 51);">SocketServer.ThreadingTCPServer(('',&nbsp;8040),
 ESLRequestHandler)</span></code><span style="color: rgb(51, 51, 51);"><o:p></o:p></span></font></span></p>
<p class="MsoNormal" style="font-family: 'Times New Roman', serif; font-size: 12pt; margin: 0cm 0cm 0.0001pt;">
<code style="font-family: 'Courier New';"><span style="font-size: 10pt; color: rgb(51, 51, 51);"><br>
</span></code></p>
</div>
<div></div>
</div>
<div>If I don’t put event in python queue and process it within while con.connected() loop then program always works but I would like to process event in other thread.&nbsp;</div>
<div>recvEventTimed(100) &nbsp;or creating new inbound connection to execute FS commands couldn’t help.</div>
<div><br>
</div>
<div style="font-family: Calibri; font-size: medium;">
<p style="margin: 0cm 0cm 0.0001pt;">Appreciate any help.</p>
<p style="margin: 0cm 0cm 0.0001pt;"><br>
</p>
<p style="margin: 0cm 0cm 0.0001pt;">Regards,</p>
<p style="margin: 0cm 0cm 0.0001pt;">Swapnil</p>
<div><br>
</div>
</div>
</div>
</body>
</html>