The Sippy Softswitch supports the RFC3326 specification for adding the appropriate Reason: field to SIP messages based on the SIP code received from vendor systems.


This feature was added in version 4.1-STABLE, rev.2.84 of the Sippy Softswitch, and by default is not enabled. 


The Reason field mapping allows switch operators to define custom mappings in a flexible manner. If an operator has a specific set of needs for a subset of clients, the operator can define an Account Class that is associated to a custom mapping. This allows operators to make special case adjustments for clients that require atypical SIP response codes and Reason: headers.


There are three popular mapping tables that are used in the industry;


RFC4497 - Recommended by Sippy

ITU-T Q.1912.5

https://wiki.freeswitch.org/wiki/Hangup_Causes


With our implementation of RFC326 the switch operator can choose any of the above mappings, or invent their own, though we discourage creativity in this area.




Configuring custom mappings

Intended Audience

Configuration of this feature is intended for:

  • Advanced users who own and operate their own dedicated switch
  • Users that are competent using the unix command line
  • Users that are competent in safely and accurately interacting with the SQL command line client
If you wish to adjust your mappings, but you do not meet the above criteria, then please open a ticket at http://support.sippysoft.com/. We will be happy to help you!

Create a new Account Class

Using the ID from the newly created account class, add your new mapping record or records to the scode_translations_external table. Here's an example;
INSERT INTO scode_translations_external 
(i_account_class, in_scode, out_scode, reason, out_rfc3326_protocol, out_rfc3326_cause, out_rfc3326_reason) 
VALUES 
(NUMERIC_ID_OF_YOUR_ACCOUNT_CLASS, 403, 444, "Test Test Test", "Q.850", "40", "ISUP test");

This example rule will cause your switch to behave as follows: When a vendor returns a SIP code 403, your switch will return a 444 SIP code to your client and add a Reason: field to the header that looks like this:

Reason: Q.850; cause=40; text="ISUP test"

Of course no one should configure their switch to behave like this, but the example highlights that the switch can be configured to support arbitrary requirements easily.