Jump to content

This is the support site for Andrews & Arnold Ltd, a UK Internet provider. Information on these pages is generally for our customers but may be useful to others, enjoy!

VoIP Phones - Asterisk: Difference between revisions

DTMF PJSIP
mNo edit summary
(DTMF PJSIP)
(11 intermediate revisions by 5 users not shown)
 
= Configuration =
Asterisk has two methods to configure SIP connections. The legacy "sip.conf" (SIP) and the more modern "pjsip.conf" (PJSIP).
 
Newer installations of Asterisk should be configured to use PJSIP as it will be more supported as Asterisk development continues, '''however''' it's been reported that PJSIP doesn't support in-band DTMF detection properly. You may need to switch back to legacy sip.conf if this affects you. The official recommendation on the [https://trac.pjsip.org/repos/wiki/FAQ#dtmf PJSIP FAQ] seems to be to write your own plugin if you need it. In-band DTMF support seems like an important thing to have, so we suggest raising a bug to report a missing feature in PJSIP if this affects you!
 
It isn't a good idea to have an installation that mixes sip.conf with pjsip.conf.
 
When reading the instructions below be aware which are for sip.conf and which are for pjsip.conf. PJSIP examples are below the SIP examples on this page.
 
=sip.conf (SIP)=
 
== Incoming Calls ==
=== User Section ===
*Accept authenticated calls and route them to a context.
sip.conf:
<syntaxhighlight lang="ini">
[aaisp-incoming-username]
type=user
allow=alaw
trustrpid=yes
directmedia=no
</syntaxhighlight>
*We send Remote-Party-Id with the privacy and screen settings, setting '''trustrpid=yes''' in the incoming SIP config will allow Asterisk to pass withheld/unknown on.
 
sip.conf:
<syntaxhighlight lang="ini">
[general]
match_auth_username=yes
=== Separate Section ===
sip.conf:
<syntaxhighlight lang="ini">
[aaisp-outgoing-account]
type=peer
disallow=all
allow=alaw
directmedia=no
</syntaxhighlight>
 
=== Combined Section ===
sip.conf:
<syntaxhighlight lang="ini">
[aaisp-incoming-username]
type=friend
disallow=all
allow=alaw
directmedia=no
; incoming
context=aaisp-incoming-context
==Note: Order of sip.conf is important==
In sip.conf, ensure that your incoming config is before the config for the outgoing.
 
 
==Note: Asterisk and IPv6 SLAAC addresses==
If you're behind NAT it is helpful to make Asterisk register. It re-registers every 120 seconds by default anyway so should keep NAT sessions open.
You can register (and tell Asterisk that it's behind NAT) with these settings under the [general] section:
<syntaxhighlight lang="ini">
localnet=10.0.0.0/8
register => +441234567980:outgoingpass@voiceless.aa.net.uk/extn
In this example, extn is the extension that Asterisk will pass the call to.
Localnet should of course be set to whatever RFC1918 range you are using on your LAN.
 
 
==Dialplan==
See Asterisk's included example sip.conf for examples of how to send the call to different contexts etc.
For outbound calls:
<syntaxhighlight lang="ini">
exten => _X.,1,Dial(SIP/voiceless-out/${EXTEN})
</syntaxhighlight>
For inbound calls (assuming you're routing call to a registered Snom):
<syntaxhighlight lang="ini">
[voiceless-in]
exten => _X.,1,Dial(SIP/snom)
</syntaxhighlight>
 
=pjsip.conf (PJSIP)=
 
==PJSIP: Trunk registration==
=Further Help=
Here is an example of a working pjsip.conf setup where Asterisk will register with A&A to receive calls.
Customers using Asterisk and AAISP have created a website and IRC channel especially for this!
*http://www.aa-asterisk.org.uk/
*irc://z.je/a&a-asterisk
 
In pjsip.conf:
[reg_442082881111]
type = registration
retry_interval = 20
fatal_retry_interval = 20
forbidden_retry_interval = 20
max_retries = 9999
auth_rejection_permanent = no
contact_user = maininbound
expiration = 120
outbound_auth = auth_reg_442082881111
client_uri = sip:+442082881111@voiceless.aa.net.uk
server_uri = sip:voiceless.aa.net.uk
[auth_reg_442082881111]
type = auth
password = BusinessPaidGrewCome
username = +442082881111
[aaisptrunk]
type = aor
contact = sip:+442082881111@voiceless.aa.net.uk
qualify_frequency=20
[aaisptrunk]
type = identify
endpoint = aaisptrunk
match = voiceless.aa.net.uk
[aaisptrunk]
type = endpoint
context = maininbound
dtmf_mode = rfc4733
disallow = all
allow = alaw
allow = ulaw
direct_media = no
aors = aaisptrunk
outbound_auth=auth_reg_442082881111
 
Calls come into the context "maininbound" in extensions.conf - in this example calls get sent onto extension 222 and 205 for 20 seconds and then go to voicemail.
[maininbound]
exten = maininbound,1,Dial(PJSIP/222&PJSIP/205,20)
exten = maininbound,n,Voicemail(222@default,us)
 
In extensions.conf you can dial out via the trunk with:
exten => _X.,1,Dial(PJSIP/${EXTEN}@aaisptrunk,,)
 
==PJSIP: Keep-Alive / Anti-Idle==
If you are using a firewall or NAT router with short timeouts on UDP sessions you can force packets to be sent over the connection to keep it alive.
 
Set qualify_frequency in the aor section; This triggers an OPTIONS message every X (as set) seconds.
An example of the aor section follows:
[aaisptrunk]
type = aor
contact = sip:+442082881111@voiceless.aa.net.uk
qualify_frequency=20
 
==Status and Commands==
A good command within the asterisk software is the show registration command:
asterisk*CLI> pjsip show registrations
<Registration/ServerURI..............................> <Auth..........> <Status.......>
==========================================================================================
reg_442082881111/sip:voiceless.aa.net.uk auth_reg_442082881111 Registered
Objects found: 1
In this example it shows that the Asterisk server is successfully registered with the Andrews & Arnold SIP server.
 
=Further Help=
Customers using Asterisk and AAISP have created a website and IRC channel especially for this!
*http://www.aa-asterisk.org.uk/ [ Dead link @ Dec 2020 ]
*irc://zirc.jeaachat.net/a&a-asterisk
 
=Firewall & Security=
autoreview, Bots, Bureaucrats, editor, Interface administrators, reviewer, Administrators, upwizcampeditors
38

edits