The Sippy switch can be configured to react to the 301 Moved Permanently, 302 Moved Temporarily and 300 Multiple Choices responses received from the Vendor when routing a call.
- The 301 Moved Permanently and 302 Moved Temporarily responses instruct the switch to send another INVITE to the SIP URI which is specified in the field Contact of the SIP response. If the Contact field contains several URIs then the first one is used. If the destination UA responds with any error code then the switch continues hunting by selecting the next Routing Group entry.
- The 300 Multiple Choices allows to hunt several URIs from the Contact field of the SIP response. The URIs are sorted by the q= URI parameter value from highest to lowest and tried one by one. If all the redirect attempts were unsuccessful then the switch continues with the next Routing Group entry.
The feature is controlled in the Vendor Connection properties by the field Accept 3xx Redirects and it is accompanied by the Redirect Depth Limit setting which controls the maximum number of subsequent redirects when redirected call receives another 3xx response. In case of 300 Multiple Choices redirect the Redirect Depth Limit limits the maximum number of the hunt attempts.
Processing of 3xx responses is described in RFC 3261
The CDRs for the call redirect attempts (both successful and unsuccessful) are written with the original Vendor Connection identifier and use exactly the same Destination Set Route which was chosen originally. The outbound CLD is taken directly from the 3xx Contact field and no translation is applied.
All timeouts are applied to each Redirect attempt based on timeouts configured in Connection and route from Destination Set as if each of the URIs is the separate Routing Entry.
Example of Contact header with multiple URIs in 300 Multiple choices response:
Contact: sip:firstname.lastname@example.org;q=0.99, sip:email@example.com;q=1.00, sip:firstname.lastname@example.org;q=0.98
If the Accept 3xx Redirects option is enabled and Redirect Depth Limit setting is higher then 3, then
the call would be sent first to 126.96.36.199 with CLD=111111111111, if it's not connected in time,
188.8.131.52 would be tried with CLD=000111111111111, if the call is not terminated (dropped with error, or timeout, etc),
the last 184.108.40.206 would have the call sent with CLD=299111111111111