Overslaan naar inhoud

SIP Trunk configureren in Asterisk met PJSIP

Stap-voor-stap handleiding voor het instellen van een OpVoIP SIP-trunk in Asterisk via het PJSIP-kanaalstuurprogramma. Van toepassing op Asterisk 16, 18 en 20 (LTS).

Problemen bij het instellen? Onze specialisten controleren uw Asterisk-configuratie kosteloos.

Gratis SIP-trunk check aanvragen

Vereisten

  • Asterisk 16, 18 of 20 (LTS-versie aanbevolen)
  • Module res_pjsip geladen (vervanger van chan_sip)
  • OpVoIP SIP-credentials: gebruikersnaam, wachtwoord en SIP-server
  • Root- of sudo-toegang tot de Asterisk-server
Let op: chan_sip is deprecated vanaf Asterisk 19 en verwijderd in Asterisk 21. Gebruik altijd PJSIP voor nieuwe installaties.

Stap 1 — Controleer of PJSIP geladen is

Log in op uw Asterisk-server en controleer via de CLI:

asterisk -rx "module show like pjsip"

U moet minimaal res_pjsip.so en res_pjsip_session.so zien staan als Loaded.

Niet aanwezig? Voeg toe aan /etc/asterisk/modules.conf:

load = res_pjsip.so
load = res_pjsip_session.so
load = res_pjsip_outbound_registration.so
load = res_pjsip_authenticator.so

Stap 2 — Transport aanmaken in pjsip.conf

Open /etc/asterisk/pjsip.conf en voeg een UDP-transport toe (nog niet aanwezig):

[transport-udp]
type = transport
protocol = udp
bind = 0.0.0.0:5060

Stap 3 — OpVoIP trunk configureren

Voeg onderstaande blokken toe aan pjsip.conf. Vervang GEBRUIKERSNAAM en WACHTWOORD door uw OpVoIP-credentials.

; Registratie bij OpVoIP
[opvoip-registration]
type = registration
transport = transport-udp
outbound_auth = opvoip-auth
server_uri = sip:sip.opvoip.nl
client_uri = sip:GEBRUIKERSNAAM@sip.opvoip.nl
retry_interval = 60

; Authenticatie
[opvoip-auth]
type = auth
auth_type = userpass
username = GEBRUIKERSNAAM
password = WACHTWOORD

; AOR (Address of Record)
[opvoip-aor]
type = aor
contact = sip:sip.opvoip.nl

; Endpoint
[opvoip]
type = endpoint
transport = transport-udp
context = van-trunk
disallow = all
allow = alaw,ulaw
outbound_auth = opvoip-auth
aors = opvoip-aor
from_user = GEBRUIKERSNAAM
from_domain = sip.opvoip.nl
send_pai = yes
trust_id_inbound = yes

; Identify (voor inkomende gesprekken)
[opvoip-identify]
type = identify
endpoint = opvoip
match = sip.opvoip.nl

Stap 4 — Codecs instellen

In het endpoint-blok (Stap 3) zijn de codecs ingesteld op allow = alaw,ulaw. OpVoIP ondersteunt:

CodecNaamGebruik
alawG.711 A-lawPrimair — standaard in Europa
ulawG.711 u-lawFallback
g722G.722HD-audio, optioneel
g729G.729Lage bandbreedte, optioneel (licentie vereist)

Extra codecs toevoegen in pjsip.conf:

allow = alaw,ulaw,g722,g729

Stap 5 — Inkomende routing (dialplan)

Inkomende gesprekken van OpVoIP komen binnen op de context van-trunk (zie endpoint-blok, Stap 3). Voeg toe aan /etc/asterisk/extensions.conf:

[van-trunk]
; Specifiek DID-nummer doorsturen naar extensie 101
exten => 0851234567,1,NoOp(Inkomend DID ${EXTEN})
 same => n,Dial(PJSIP/101,30)
 same => n,Voicemail(101@default,u)
 same => n,Hangup()

; Catch-all voor overige nummers
exten => _X.,1,NoOp(Inkomend van OpVoIP: ${EXTEN})
 same => n,Goto(intern,${EXTEN},1)
 same => n,Hangup()

Vervang 0851234567 door uw DID-nummer en 101 door de doelextensie. Meerdere DID-nummers = meerdere exten => regels.

Stap 6 — Uitgaande routing (dialplan)

Voeg de uitgaande routering toe aan uw interne context:

[intern]
; Nederlandse nummers (10 cijfers, begint met 0)
exten => _0XXXXXXXXX,1,NoOp(Uitgaand via OpVoIP: ${EXTEN})
 same => n,Dial(PJSIP/${EXTEN}@opvoip,30)
 same => n,Playtones(congestion)
 same => n,Hangup()

; Internationaal (00 + landnummer)
exten => _00.,1,Dial(PJSIP/${EXTEN}@opvoip,30)
 same => n,Hangup()

; Noodoproepen altijd door
exten => 112,1,Dial(PJSIP/112@opvoip)
 same => n,Hangup()

Het patroon _0XXXXXXXXX matcht alleen nummers van precies 10 cijfers. Gebruik _0. als catch-all voor kortere nummers (bijv. 0800-nummers).

Stap 7 — Uitgaand CallerID via P-Asserted-Identity (PAI)

OpVoIP presenteert het uitgaande telefoonnummer via de P-Asserted-Identity (PAI)-header. Het aan uw account gekoppelde nummer wordt automatisch door OpVoIP meegegeven bij elk uitgaand gesprek.

send_pai = yes in het endpoint-blok (stap 3) zorgt dat Asterisk de PAI-header meestuurt in het uitgaande INVITE naar OpVoIP. trust_id_inbound = yes zorgt dat Asterisk de PAI-header van OpVoIP accepteert en gebruikt voor inkomende CallerID-presentatie.

Wilt u per extensie een ander nummer presenteren (bijv. afdeling-specifiek), dan stuurt u vanuit het dialplan een CALLERID(num) mee — OpVoIP honoreert dit als het nummer is geautoriseerd op uw account:

; Stel CallerID in vóór het bellen
exten => _0.,1,Set(CALLERID(num)=0851234567)
 same => n,Dial(PJSIP/${EXTEN}@opvoip,30)
 same => n,Hangup()

Stap 8 — Asterisk herladen en testen

asterisk -rx "core reload"
asterisk -rx "pjsip show registrations"

De status van de OpVoIP-registratie moet Registered zijn. Test een uitgaand gesprek via uw interne toestel.

Veelvoorkomende problemen

ProbleemOplossing
Registratie blijft op "Trying"Controleer firewall: UDP 5060 en 10000-20000 (RTP) moeten open zijn
Geen audio bij gesprekStel localnet en externaddr in via rtp.conf als u achter NAT zit
401 UnauthorizedGebruikersnaam of wachtwoord onjuist — controleer uw OpVoIP-portaal
Tip: Voor TLS/SRTP (versleuteld bellen) — zie de handleiding Wat is SIP TLS? en Wat is SRTP?
WhatsApp