[Freeswitch-users] how do I detect a call has rung once?
neilp at cs.stanford.edu
Wed May 19 18:16:06 PDT 2010
I played around with a couple options and found that issuing a hupall
normal_clearing on the initiated call after a few seconds was the most
reliable way to do this. The next best option I found was hanging up after a
few seconds of receiving CS_EXECUTE state update, though this seemed to
cause the timing to vary.
Are there other events that come over ESL on a PRI call that are good to
anchor to? For some of the suggestions above like "progressing", it isn't
clear what event that corresponds to.
On Thu, May 13, 2010 at 5:14 PM, Neil Patel <neilp at cs.stanford.edu> wrote:
> Thanks Michael, I was looking for code examples to receive events over ESL,
> and found them in libs/esl/.
> I'm still not clear on the following:
> 1. I have a controller script that originates calls; it runs "show
> channels" between calls and parses out the number of active channels. If
> below threshold, originate next call. If not, wait a couple seconds and run
> "show channels" again, repeating till below threshold. Is this the best way?
> Can this be done more efficiently through events? How?
> 2. For placing missed calls to SIP endpoints, it sounds like* *I can
> wait for a signal 180 or 183 to know when to hang up. How do I check for
> those signals? Is this another job for events?
> 3. For placing missed calls over openzap/PRI, it sounds like I can
> check for call states PROGRESS or ALERTING? Where are those states from, and
> how do I check them? Again, can I use events? The other option you gave is
> checking for endpoint_disposition. This is in the cdr, but how do I use it
> for detecting when I should hang up for a missed call? Is there an event
> associated with it? What are the call states it goes through?
> On Wed, May 12, 2010 at 2:47 PM, Michael Collins <msc at freeswitch.org>wrote:
>> On Wed, May 12, 2010 at 11:59 AM, Neil Patel <neilp at cs.stanford.edu>wrote:
>>> Thanks for the tips.
>>> Where are there examples of using ESL to register and handle events? For
>>> e.g. I don't see any example of how to register for a change in channel
>>> variable endpoint_disposition. Or even to check the CHANNEL_STATE event.
>> Check out the event socket documentation, specifically the "events plain
>> all" and "filter" commands. You can listen to all events or just specific
>> If you want to experiment with the event socket and the various events
>> then use fs_cli. Connect with fs_cli and then issue "/log 0" which turns off
>> all debug messages. Now you have basically a raw event socket. Try some of
>> these commands:
>> /event plain all
>> watch the fun messages fly. :)
>> You can filter them as well:
>> /filter Event-Name CHANNEL_STATE
>> /filter Event-Name CHANNEL_HANGUP
>> when you apply a filter you will receive only those things you choose. A
>> it's a "filter in" not filter out. Another way of saying it is "show me
>> events named CHANNEL_STATE" and "show me events named CHANNEL_HANGUP"
>> just note that in your script you will be using the ESL abstractions for
>> I hope that helps! Have fun.
>> FreeSWITCH-users mailing list
>> FreeSWITCH-users at lists.freeswitch.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the FreeSWITCH-users