Asterisk integration with Huawei Soft-Switch

I needed to configure a SIP trunk with Asterisk to a provider using a Huawei soft switch.

It was not painless….

Firstly there was a well known error regarding silence suppression:

In the SIP INVITE asterisk sends: “a=silenceSupp:off – – – – –

It is too difficult for Huawei’s coders to accomodate this, so it sends back:

Got SIP response 500 “Server Internal Error” back from XXX.XXX.XXX.XXX

So the way this can be circumvented is by doing this:

So my example use asterisk 10.2.0

Go look at your asterisk source file in chan_sip.c around line 11814

 

Comment out this section:

/* ast_build_string(&a_audio_next, &a_audio_left, "a=silenceSupp:off - - - - -\r\n"); */


Recompile and install.
Now that has fixed the problem with the silence suppression.

Another error appeared that the Huawei soft switch is quite pedantic with session expiry.

Outgoing calls from asterisk to Huawei will work, but incoming calls will be dropped when answered.
this is due to this sip communication:

This is fixed by adding : session-timers=refuse” in my sip.conf

sip.conf file that works for me:

[myprovider]
type=peer
host=XX.XX.6.5
disallow=all
allow=g729
allow=alaw
insecure=port,invite
qualify=yes
nat=no</span>
context=from-myprovider
canreinvite=no
t38pt_udptl = yes
session-timers=refuse

Time will tel how stable this config is, but it looks promising.
Hope this helps somebody out there.