Skip to main content
Asterisk PBX SIP Trunk Configuration

Asterisk PBX SIP Trunk Configuration

How to configure SIP Trunking for Asterisk IP PBX based systems

Our service is 100% compatible with Asterisk using either standard SIP registration or IP authentication where SIP trunks are configured as such. Asterisk is the base software behind many open-source PBX distributions, including FreePBX, Trixbox and Elastix, and is also the enabler behind many other ITSPs and commercial PABX manufacturers.

This guide is aimed at Asterisk's SIP stack via the sip.conf file, it does not deal with real-time configuration via a back-end database, however, the principles are the same and the appropriate options should be transposed as such. The configuration of SIP trunks for the PJSIP stack within Asterisk versions 12, 13 and greater is forthcoming and will be posted in a separate FAQ entry.

Once you have set up and configured Asterisk, you can use the following details to start making calls. These details are visible on your customer control panel if you have been allocated a SIP trunk.

You should have the following in your sip.conf file:


[general]
register => username:password@host  ; The registrations details username, password and domain hostname

[voicehost]
host=[hostname]  ; FQDN - You should always avoid using fixed IPs as VoiceHost uses SRV records
defaultuser=[sip-trunk-username] ; Username of the VoiceHost SIP trunk
secret=[sip-trunk-password] ; Password of the VoiceHost SIP trunk
type=peer ; This specifies the SIP endpoint to be contacted for call handling
disallow=all ; Codec settings specifying no codecs
allow=alaw ; Specify G.711a on INVITE and responses for calls
context=inbound ; Context within the dial plan to which calls into this trunk will be matched
insecure=port,invite ; Specifies Asterisk to accept the call without requesting authorisation
qualify=see below  ; Sends OPTIONS SIP request to the host value every 15 seconds (value is in milliseconds, e.g. 15000 is 15 seconds)

For Asterisk major versions 1.6 and older, replace the "defaultuser=" option with "username=", otherwise authentication on outbound calls will fail.

You should have something similar to the following in your extensions.conf file to receive inbound calls:

exten => _X.,1,Dial(SIP/100) ; Directs incoming calls via SIP to extension 100 within the dialplan

Please note: Incorrectly setting the 'context' can lead to vulnerabilities open to attack from hackers. Please check your configuration thoroughly as VoiceHost does not accept any liability for fraudulent use of your Asterisk system.

Inbound telephone numbers need to be mapped in the Asterisk system in E.164 format to receive calls correctly, e.g. +441603904090

If you require any further assistance, please feel free to contact VoiceHost Support who will be happy to answer any questions you may have.

Suitable for Asterisk versions >13, you should have the following in your pjsip.conf file:

This configuration is for authentication based on a registration with username and password. The protocol can be changed as desired. TLS and SRTP will require additional configuration.

[transport-udp] ; Configures res_pjsip transport layer interaction.
type = transport
protocol = udp
bind = 0.0.0.0

[voicehost]  ; Contains information about an outbound SIP registration
type=registration
transport=transport-udp
outbound_auth=voicehost_auth
server_uri=sip:[sip-trunk-username]@[hostname]:5060
client_uri=sip:[hostname]:5060
retry_interval=20
expiration=3600

[voicehost_auth] ; Stores inbound or outbound authentication credentials for use by trunks, endpoints, registrations.
type=auth
password=[sip-trunk-password]
username=[sip-trunk-username]

[voicehost_aor] ; Stores contact information for use by endpoints.
type=aor
contact=sip:[sip-trunk-username]@[hostname]

[voicehost] ; Configures core SIP functionality related to SIP endpoints.
type=endpoint
context=voicehost-in
dtmf_mode=rfc4733
disallow=all
allow=alaw
rtp_symmetric=yes
force_rport=yes
rewrite_contact=yes
timers=yes
from_user=[sip-trunk-username]
from_domain=[domain]
language=en
outbound_auth=voicehost_auth
aors=voicehost_aor

[voicehost] ; Maps a host directly to an endpoint
type=identify
endpoint=voicehost
match=[hostname]

Please note: Incorrectly setting the 'context' can lead to vulnerabilities open to attack from hackers. Please check your configuration thoroughly as VoiceHost does not accept any liability for fraudulent use of your Asterisk system.

Asterisk PJSIP setup

Calls to VoiceHost error with "all circuits busy" or "congestion" - this is the default configuration of Asterisk regardless of the actual error generated unless Asterisk is updated to send back the real error rather than the changed error. This error most commonly occurs when the call is not authenticating properly, at which point check the above in the SIP trunk configuration within Asterisk, and swap username= for defaultuser= to see if this solves the issue. Just because a trunk is showing as registered does not mean it will authenticate correctly. For inbound calls, ensure the mapping is correct and a viable destination set in the PBX, e.g. voicemail or auto-attendant.

Outbound calls to VoiceHost fail with SIP error 488 (Not Accepted Here) or I-SUP errors 58 (bearer capability not available) or 88 (incompatible destination) - check the codecs allowed in the SIP trunk configuration above, VoiceHost only supports:

  • alaw (G.711 alaw) and GSM

If a codec is defined in Asterisk that is not one of the above or is offering a differing sample rate or interval rate (e.g. 8000/20i - 8000Hz at 20ms cannot interwork with 16000/30i - 16000Hz at 30ms) and the call attempted the call will fail. The codecs in the SIP trunk configuration within Asterisk need to be aligned to use one of the above codecs. As a minimum, offer both alaw and ulaw codecs when sending and receiving calls for widest compatibility with fixed line and mobile operators. alaw should be first on the list for calls to and from the UK PSTN.

Inbound calls to Asterisk fail with SIP error 408 (Request Timeout) - check the inbound number is mapped in the system correctly, if necessary the SIP trunk on the portal can be configured to strip the plus when sending calls to Asterisk, e.g. if Asterisk is configured to use plus logic somewhere else. Check the trunk is registered. Ascertain how long the 408 error took to come back if it was immediate the trunk is usually unregistered if it took a few seconds the number is usually not mapped correctly.

Calls fail to VoiceHost with SIP error 503 (Service unavailable), I-SUP errors 34 (No circuit available) or 38 (Network out of order) - If the VoiceHost platform replies back with SIP error 503 it usually means one of two things: the SIP trunk has exceeded the Calls-Per-Second (CPS) limit, or the gateway has rejected the call for some other reason.

Calls fail into Asterisk with SIP error 403 Forbidden (Bad Auth) - authentication is being requested from a VoiceHost gateway that is not recognised or not authorised in the SIP configuration, this usually happens if the SIP trunk configuration is set with insecure=very and host=st.sipconvergence.co.uk or st.voicehost.co.uk. Change type=peer, insecure=port,invite within the SIP configuration, and re-test inbound calls upon successfully re-registering. If calls continue to fail to change the host= value from the domain to a public IP address under the domain