Queue CANCEL Reason

Hello,

Using Asterisk 20.11.1

I have a queue that is in using the Ringall strategy. It is NOT using the C option.

If one agent answers the call, the rest of the agents are getting a CANCEL, but they get the following reasons in the CANCEL

Reason: SIP;cause=200;text="Call completed elsewhere"
Reason: Q.850;cause=26

After setting suppress_q850_reason_headers to true, now it is only sending one reason:

Reason: SIP;cause=200;text="Call completed elsewhere"

I want to get rid of the ‘Call completed elsewhere’, I want it to show the missed call on the endpoint.

Appreciate any pointers

Thank you

If the phone is suppressing the missed call notification, it is likely to be the 200, not the text message, as the text messages are for human consumption only.

Understood, how can I change that 200 message?

What is being called? Is a Local channel? What is the console output of an attempt?

A Local channel, Local/209@T22_queue-call-to-agents/n

The Queue()

[2025-03-31 09:38:41] VERBOSE[881598][C-00010487] pbx.c: Executing [800@T22_ext-queues:19] Queue("PJSIP/SIPTrunk-0002f250", "T22_Q800,,,,60,,,,,") in new stack

The Dial()

[2025-03-31 09:38:41] VERBOSE[881605][C-00010487] pbx.c: Executing [209@sub-local-dialing:54] Dial("Local/209@T22_queue-call-to-agents-00012dce;2", "PJSIP/T209/sip:68208@192.168.1.50:5080,30,ktrb(sub-before-connecting-call^s^1(2b91be68597fba5d^8881110000^209^^))U(sub-before-bridging-call^2b91be68597fba5d^8881110000^209^no)") in new stack

The call:

[2025-03-31 09:38:41] VERBOSE[881605][C-00010487] app_dial.c: Called PJSIP/T209/sip:68208@192.168.1.50:5080
[2025-03-31 09:38:41] VERBOSE[881598][C-00010487] app_queue.c: Local/209@T22_queue-call-to-agents-00012dce;1 is ringing
[2025-03-31 09:38:41] VERBOSE[881598][C-00010487] app_queue.c: Local/209@T22_queue-call-to-agents-00012dce;1 connected line has changed. Saving it until answer for PJSIP/SIPTrunk-0002f250
[2025-03-31 09:38:41] VERBOSE[881605][C-00010487] app_dial.c: PJSIP/T209-0002f253 is ringing
[2025-03-31 09:38:41] VERBOSE[881598][C-00010487] app_queue.c: Local/209@T22_queue-call-to-agents-00012dce;1 is ringing
[2025-03-31 09:38:44] VERBOSE[881605][C-00010487] pbx.c: Spawn extension (sub-local-dialing, 209, 54) exited non-zero on 'Local/209@T22_queue-call-to-agents-00012dce;2'

The full call trace is here, it is ~1700 lines with a ton of extra variables…

Thank you

how are you calling the queue with the “C” option ?
queue params

See initial post:

maybe the “c” option is being assigned in the dial() .

 Dial("Local/202@T22_queue-call-to-agents-00012dcb;2", "PJSIP/T202/sip:43785@192.168.1.50:5080,30,ktrb(sub-before-connecting-call^s^1(2b91be68597fba5d^8881110000^202^^))U(sub-before-bridging-call^2b91be68597fba5d^8881110000^202^no)")```

Are you seeing something I don’t see? There is no c option being applied here.

It seems like if the channel is marked as AST_CAUSE_ANSWERED_ELSEWHERE, then cause 200 is being hardcoded:

Or perhaps I am not reading this correctly. Is there any possible way to override this.

The problem is, that no missed calls are showing on the phone.

Bump. Anyone?

sub-before-connecting-call

if i understand you correct you want always on the other phones to display a missed call. In the gosub before dialing the agent add the Q option with no answer should solve you issue

Q(cause) - Specify the Q.850/Q.931 cause to send on unanswered channels when another channel answers the call. As with ‘Hangup()’, cause can be a numeric cause code or a name such as ‘NO_ANSWER’, ‘USER_BUSY’, ‘CALL_REJECTED’ or ‘ANSWERED_ELSEWHERE’ (the default if Q isn’t specified). You can also specify ‘0’ or ‘NONE’ to send no cause. See the causes.h file for the full list of valid causes and names.

I tried adding the Q option, it still sends

Reason: SIP;cause=200;text="Call completed elsewhere"

do you see it in the dial string in asterisk logs ?

Apparently, there’s no way around this in Asterisk.

We had to manipulate the headers on the Kamailio that acts as an SBC.