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.
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