When is "DEVICE_STATUS" going to be "RINGING"?

so, l had B call A, and A doesn’t answer. Then while B is ringing A, l had C call A. l used NoOps to check the output of DEVICE_STATUS. l see it is still “NOT_INUSE” when C is ringing A. That is causing problem in my app because the API l used is not expecting to handle 2 incoming calls. How do l properly check if an endpoint is being ringed?

Which channel technology are you using? Has it actually signalled ringing, or alerting, etc,. or is it just sending ringback tone as early media.

If you are using one of the SIP technology drivers, have you read the appropriate technology specific information referenced in


Have you considered using group counts?

l am using PJSIP. lf A answers the call from B, then C calls A, then the output will show that DEVICE_STATUS to be “INUSE”. Does group count allows me to differentiate if A is being ringed or is already in an active call?

It’s just an atomic way of counting the number of channels currently calling, or about to call it.

You didn’t answer the question about whether the device had returned 180 Ringing.

Note that polling device state is subject to race conditions; it only tells you the state when you checked. You have to use group counts if you want to be certain that two calls don’t arrive at once.

Assuming you have enabled call counters, I’m surprised the device isn’t marked in use when the INVITE is sent, but I don’t know my way around chan_pjsip well enough to check what it actually does.

well, l think l must didn’t have good output. l can’t find anything that indicates what server responses l got when l make call. l am trying to make my own custom state. ls there an tutorial on DIAL? l think G is the argument l need. l know exten is the caller’s number, and priority is which line l want it to go? but what is context?


(Caution: They’ve started adding adverts at the end of sections, which are unrelated to the contents.)


thanks for your links. l managed to figure out how to DIAL go to certain priority after execution, but then after the last NoOp, it will go to some sort of fall through then hang-up would be called. ls there a function that can make the execution stop, so it doesn’t go to fall through and hang-up incorrectly?

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.