PJSIP Reject call to voicemail

We use FreePBX in Device and User mode.

I recently added PJSIP devices, mostly softphone apps. Like others, (Reject call should stop ringing other endpoints (PJSIP)) I immediately observed that “rejecting” a call does not send the call to Voicemail, and the other endpoints keep ringing until the timeout is reached. This is very annoying when the desk phone computer softphone, and mobile softphone all need to be rejected. Especially if you are already on a call.

I’m trying to understand the nature of the PJSIP issue. The dialplan executes
exten => _6XXX, 1 ,Dial(${PJSIP_DIAL_CONTACTS(${EXTEN})})
Even though one endpoint rejects the call the “Dial” application does not return until the timeout is reached?

If this is the case, would the solution be to create a Dial Option that cause the application to return if any endpoint rejects the call? This would be an Asterisk "Feature"request not a FreePBX request?

I’d be happy to make the feature request. I want to make sure that I know what I’m requesting.

The Asterisk project doesn’t accept feature requests on our issue tracker, but you can consider the request noted.

Note that this functionality does have consequences though. For example if you have an endpoint that is set to DND on the phone and such functionality did exist and was enabled, then the call would immediately terminate and all other endpoints would stop ringing.

Thank you Joshua.

In my opinion, if a User sets DND on any of his logged in endpoints, then all endpoints should not ring. :smile:

I’m sure this issue will continue to emerge as more users migrate to PJSIP.

First of all, your test above shows you as rejecting an incoming call, not setting the endpoint to DND.

Secondly, there are (at least) two ways to set DND, you can set it at the pbx with the feature code/phone app/UCP or you can set it locally on the device. If you use the server side DND feature, it will prevent all contacts for a specific endpoint from ringing.

What you are requesting is Serial Forking where there is one transaction but multiple branches. This is a feature that is generally found in SIP Proxies/SBCs.

Asterisk is a B2BUA so if you do PJSIP_DIAL_CONTACTS() and get back 4 contacts, while they are all being dialed it still is 4 different channels. Dial() will wait for the timeout or until all channels come back with a reply of busy/unavailable or one answers. Due to the nature of Asterisk and being a B2BUA that means a Dial() could be dialing a FXS/O, PJSIP, IAX or any other tech supported in one string.

So really Asterisk can’t treat that Dial() as a single transaction with multiple branches because not everything could be the same tech or even the same SIP driver at this point. So I’m not sure how they could inject Serial Forking into the picture.

That’s good to know. Thanks for pointing that out.

Correct, I never tested DND. I was agreeing with Joshua’ statement regarding DND.

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