Asterisk 11 / 16 - Digium Phones Firmware and Alert Info

Hi all,

I stumbled upon something i cannot find any helpful posts about and i am hoping somebody (Malcom Davenport? ) can help direct me

Asterisk 11 - Digium D70
DPMA - 11.0_3.4.3
Digium Firmware 1_4_2_1_73372
SIP cannel driver: chan_sip
dialplan:
same => n,SIPAddHeader(“Alert-Info: <my_tone>”)

All is good - D70 rings with custom ringtone

So i installed a new server on Asterisk 16

Asterisk 16.5.1
Digium Phone Module for Asterisk Version 16.0_3.5.1
and while I was at it, I upgraded the phone firmware to 2_8_6_D70
compiled asterisk with PJSIP 2.9

Changed the dial plan to
Set(PJSIP_HEADER(add,Alert-Info)=<my_tone>)

At this point I realized the custom ring no longer worked.

I went trough a good number of test case to try to fix this.

One was that I upgraded a D70 phone still connected to the asterisk 11. At that point I realized that the new firmware on this phone also broke the custom ringtone on can_sip

So then I deployed the phone firmware 1_4_2_1_73372 on the Asterisk 16.5.1 running PJSIP 2.9 and DPMA 16.0_3.5.1 and all is good… well except that i am running ancient phone firmware on all new server.

I can’t believe this is a bug and my guess is that I am missing something here.

I believe the PJSIP_HEADER is properly formed but the new firmware obviously expects something else. I saw some posts about pointing it to localhost over http but i believe that is for freepbx / pbiaf only?

P.S. My ringtones and alerts are defined in DPMA config and are working, i can play the ringtones on the 2.8.6 firmware directly on the phone and on the web interface - I just cannot reference them via Alert-Info.

Thank you.

Where…

what is the alert you’re loading onto the phone itself?

If it’s something like:

[alert-my_tone]
type=alert
alert_info=my_tone
ring_type=answer
ringtone=Digium

it won’t work.

Rather, you’d need:

[alert-my_tone]
type=alert
alert_info=<my_tone>
ring_type=answer
ringtone=Digium

…I suspect.

:checkered_flag:

thank you
thank you
thank you
:slight_smile:
That was it

1 Like

one more question on this topic

This does not work
same => n,Set(PJSIP_HEADER(add,Alert-Info)=<Office2>)
same => n,Dial(PJSIP/myendpoint,20)

but this does
exten => 100,1,Dial(PJSIP/myendpoint,b(Office2-ringer^addheader^1))
[Office2-ringer]
exten => addheader,1,Set(PJSIP_HEADER(add,Alert-Info)=<Office2>)

However if i NoOp out the headers they are identical
Do we have to set the alert-info via a goSub? (b)

In the first case you are adding the header to the incoming channel. In the second case you are adding the header to the outbound channel (channel being dialed) See the following for more information on pre-dial handlers:

https://wiki.asterisk.org/wiki/display/AST/Pre-Dial+Handlers

Thank you for the explanation.

I am guessing this is the PJSIP implementation difference as the “first” way used to work with chan_sip driver?

Yes, they fundamentally operate differently in this regard.

Prior to 1.9.7 (D80) and 2.7.4 (other models) D-Series phones would attempt to parse out a string from inside of the angle brackets. That proved to be problematic for things like what FreePBX moved to:

<http://127.0.0.1>;info=ring-answer

So, beginning with those firmwares, we modified the behavior such that the phone doesn’t try to parse anything out. Instead, it matches only on what’s configured for its actual alerts in the phone config when comparing against the incoming Alert-Info string.