Overview
The phone is ringing, but is it a call back initiated from a timeout, or perhaps a new caller? Companies value their customer relationship, and being prepared before even answering the phone is a necessary step in today's competitive market. This article explains how to change a ringtone based on where a call is coming from. It is organized into 3 separate procedures: distinctive ringtones for on-net calls, for off-net calls, & Call Park ringbacks.
Technical Background
Ringtones are generated by the device itself. The technical explanation is as follows:
- In order to ring differently, dial rules need to be created in the Admin UI of the Core Module to add an Alert-Info header field. The dial rule is best placed in a shared dial translation such as "Default" or "Cloud PBX Features".
- The ringtone information that is tied to the Alert-Info header field needs to then be configured in the Endpoints Module.
- After the above steps are complete, the device will receive information in the Alert-Info header field of the INVITE received from the Core Module.
- If the INVITE request contains an Alert-Info header, the IP phone strips out the information provided and maps it to the appropriate ringtone.
Issue: In SNAPsolution v44.0, the QueRngBckHdr value will override other configured ringtones in cases with Call Park Ringbacks.
Solution #1: Upgrade your system to SNAPsolution v44.1. This issue was addressed with NMS-3010 and upgrading will perform the remediation without any additional steps.
- Behind the scenes, two parameters were changed in v44.1:
- <QueRngBckHdr> is a system parameter whose default value was changed to an empty string to disable (by default) the function to add the Alert-Info header upon Ring Back from a Parking Queue.
- <QueOvrWrtAlertInfo> is a new system parameter. It defaults to “yes”. When set to “no”, Alert-Info headers already present will not be overwritten by the QueRngBckHdr variable. When yes, QueRngBckHdr will take priority if QueRngBckHdr is not an empty string and the call uses a RngBckQueue token.
Solution #2: If you choose not to upgrade yet, the alternative solution is to follow these steps. This will preserve previous custom ringtone settings in the case of Call Park Ringbacks.
- Open the Core Admin UI.
- Navigate to NMS parameters, System > Settings > Advanced > Properties.
- Add (or modify) the parameter QueRngBckHdr with a value of "<NULL>" and geo=yes. Here is an example:

- Notice that once created, the Admin UI list will show <NULL> as a blank space (green box):

Procedures
This section explains how to modify a Dial Translation rule to change the ringtone based on an on-net call.
- In the Admin UI of the Core Module, navigate to Dial Planning > Dial Translation.
- Add or modify any dial rules that require a unique ringtone, one rule at a time.
- Source: sip:[0-9][0-9][0-9][0-9]@*
- Destination: sip:[0-9][0-9][0-9][0-9]@*
- Application: To User Residential Add Header
-
Application Parameter: Alert-Info:<SP><LT>insert name of ringtone<GT>
- remember to include a single space before <LT>
- Destination Host Translation: <Domain>

When a call uses this dial rule, the resulting INVITE should look similar to this:
From: "Chris Aaker"<sip:5226@netsapiens.com>;tag=c2PlLJGmZhcgfNky000272 Max-Forwards: 20Session-Expires: 1800 To: sip:5220@netsapiens.com Date: Tue, 21 Jun 2011 18:23:51 GMT Server: NetSapiens SiPBx 1-1209x18 Alert-Info: <Bellcore-dr3> Min-SE: 90 |
Device Configuration in the Endpoints Module
The last step of the procedure is to configure brand defaults in the Endpoints Module to match the "Alert-Info" header created in the above Dial Translation rules. The devices need to "be told" how to interpret the incoming INVITE.
Refer to the device's Administrator Guide for more information regarding your specific model/firmware version.
Polycom
1. Add the following brand defaults to the Endpoints Module.
2. Then reboot the phones and perform test calls.
| Server | Parameter | Value |
|---|---|---|
| SiPbx | se.rt.5.callWait | 6 |
| SiPbx | se.rt.5.mod | 1 |
| SiPbx | se.rt.5.callWait | 6 |
| SiPbx | se.rt.5.name | Internal |
| SiPbx | se.rt.5.ringer | 9 |
| SiPbx | se.rt.5.type | ring |
| SiPbx | voIpProt.SIP.alertInfo.2.class | 5 |
| SiPbx | voIpProt.SIP.alertInfo.2.value | Internal |
Yealink
- Alert-Info headers must follow one of the following formats:
- Alert-Info: 127.0.0.1/Bellcore-drN (or Alert-Info: Bellcore-drN)
- Alert-Info: ringtone-N
- Alert-Info: <URL>
- Alert-Info: info=info text;x-line-id=0
- Example: Alert-Info: http://192.168.0.12:8080/ring.wav/info=family;x-line-id=0
- Example: Alert-Info: http://192.168.0.12:8080/ring.wav/info=family;x-line-id=0
- When the Alert-Info header contains the keyword Bellcore-drN, the IP phone will play the Bellcore-drN (N=1, 2, 3, 4 or 5) ring tone if the parameter features.alert_info_toneis set to 1 in the Brand Defaults section of the Endpoints Module.
-
Troubleshooting Note: If setting features.alert_info_tone to 1 is not working, set the value to "yes" instead. Attempt this with an individual device override before creating a brand default.
-
Troubleshooting Note: If setting features.alert_info_tone to 1 is not working, set the value to "yes" instead. Attempt this with an individual device override before creating a brand default.
- When the Alert-Info header contains the keyword ringtone-N, the IP phone will play the corresponding local ring tone (RingN.wav).
- When the Alert-Info header contains a remote URL, the IP phone will try to download the WAV ring tone file from the URL and then play the remote ring tone if the parameter account.X.alert_info_url_enable is set to 1 in the Brand Defaults section of the Endpoints Module.
- When the Alert-Info header contains an info text, the IP phone will map the text with the internal ringer text preconfigured on the IP phone, and then play the ring tone associated with the internal ringer text.