Centrale’tje spelen

M’n ouders gaan ook bellen via mijn Asterisk centrale’tje. Eerst een VoipBuster en InterVoip account voor ze aangemaakt, niet alleen om de boel gescheiden te houden. In het geval van VoipBuster bijvoorbeeld kun je wel meerdere gesprekken tegelijkertijd voeren maar alleen het eerst opgezette gesprek is dan gratis. Dus mocht ik aan het bellen zijn via VoipBuster en m’n ouders gaan ook bellen via die trunk dan moeten zij wel betalen. Dus ik laat nu alles via gescheiden trunks gaan.

/etc/asterisk/contexts/pstn-out.conf

[pstn-out]

; Nationaal
exten => _0ZXXXXXXXX,1,NoOp(${CALLERID(num)} belt nationaal)
 same => n,GotoIf($[${CALLERID(num)} = 123]?ouders:wij)
 same => n(ouders),Dial(SIP/0033${EXTEN:1}@voipbuster-ouders)
 same => n,Hangup()
 same => n(wij),Dial(SIP/0031${EXTEN:1}@voipbuster-wij)
 same => n,Hangup()

; Internationaal
exten => _00X.,1,NoOp(${CALLERID(num)} belt internationaal)
 same => n,GotoIf($[${CALLERID(num)} = 123]?ouders:wij)
 same => n(ouders),Dial(SIP/${EXTEN}@voipbuster-ouders)
 same => n,Hangup()
 same => n(wij),Dial(SIP/${EXTEN}@voipbuster-wij)
 same => n,Hangup()

; Mobiel
exten => _06X.,1,NoOp(${CALLERID(num)} belt mobiel)
 same => n,GotoIf($[${CALLERID(num)} = 123]?ouders:wij)
 same => n(ouders),Dial(SIP/0033${EXTEN:1}@intervoip-ouders)
 same => n,Hangup()
 same => n(wij),Dial(SIP/0031${EXTEN:1}@intervoip-wij)
 same => n,Hangup()

; Mobiel NL => FR
exten => _00336X.,1,NoOp(${CALLERID(num)} belt Frankrijk mobiel)
 same => n,Dial(SIP/${EXTEN}@intervoip-wij)
 same => n,Hangup()

; Mobiel FR => NL
exten => _00316X.,1,NoOp(${CALLERID(num)} belt Nederland mobiel)
 same => n,Dial(SIP/${EXTEN}@intervoip-ouders)
 same => n,Hangup()

; Regionaal
exten => _[2-8]XXXXX,1,NoOp(${CALLERID(num)} belt regionaal)
 same => n,Dial(SIP/0031XXX${EXTEN}@voipbuster-wij)
 same => n,Hangup()

M’n ouders hadden al een Siemens Gigaset C300 DECT telefoon dus heb bij bol.com een N300A IP basisstation besteld en deze ingeregeld en opgestuurd. Dus ze hoeven alleen maar de snoertjes erin te steken, de handset af te melden bij hun huidige basisstation en te registreren op de N300A IP en klaar. Hopelijk.

Mocht het goed werken, waar ik wel vanuit ga, dan kunnen mijn ouders een hoop besparen. Ze bestieren een camping in Zuid-Frankrijk en bellen aardig wat af, vooral naar Nederlandse en andere internationale nummers. Bottlenecks zijn er wel, m’n ouders hebben dan wel ADSL maar omdat ze zo ver van de centrale afzitten komen ze niet verder dan 512 kb up. Gelukkig neemt VoIP verkeer niet zo veel bandbreedte in beslag en Skypen met video lukte redelijk dus zal VoIP ook wel werken.

Centrale’tje spelen

Asterisk configuratie

We bellen nu thuis via Voipbuster aangezien dat gewoon de goedkoopste aanbieder is. Tientje ex. BTW en dan kun je vier maanden gratis bellen naar een aantal landen (waaronder Nederland en Frankrijk waar mijn ouders wonen). Na die vier maanden ga je de normale tarieven betalen maar die zijn nog steeds zeer aantrekkelijk. Neem Frankrijk, bij Ziggo kost dat €0,08 per minuut met een starttarief van eveneens €0,08. Bij Voipbuster €0,015 en géén starttarief! Ok, bij Voipbuster ronden ze af op de minuut en bij Ziggo rekenen ze per seconde maar dan nog scheelt bellen met Voipbuster aanzienlijk. Bij Voipbuster kun je echter géén lokaal telefoonnummer aanvragen dus dat heb ik bij Budgetphone gedaan. Niet dat dat echt nodig is maar het prepaid abbo van Budgetphone met een lokaal nummer is zo goedkoop (ook een tientje per jaar) dat ik het maar heb aangeschaft, op deze manier kan ik ook thuis lekker klooien met Asterisk en meerdere trunks van verschillende VoIP aanbieders.

Ik gebruik het Asterisk pakketje van Debian Squeeze (1.6.2.9). Heb wel 1.8.8.x geïnstalleerd gehad maar dat werkte niet met Budgetphone aangezien Budgetphone de “From:” SIP headers van deze versie van Asterisk niet accepteerde. Volgens mij werkt het met 1.8.9.2 inmiddels weer wel als ik het Budgetphone forum mag geloven dus wellicht dat ik Asterisk binnenkort ga proberen te updaten. Dus vooralsnog Asterisk 1.6.2.9 met onderstaande configuratie.

/etc/asterisk/sip.conf

[general]
context=default
allowoverlap=no
externip=www.xxx.yyy.zzz
localnet=192.168.1.0/255.255.255.0
bindport=5060
nat=yes
srvlookup=yes
useragent=AutoStatic PBX
disallow=all
allow=alaw
allow=ulaw
allow=g726
allow=ilbc
allow=gsm
allow=g723
allow=g722
allow=g729
language=nl
dtmfmode=auto

;###########################
;## Register    ############
;###########################

#include "/etc/asterisk/register/*.conf"

;###########################
;##  Templates  ############
;###########################

#include "/etc/asterisk/templates/*.conf"

;###########################
;##  Trunks     ############
;###########################

#include "/etc/asterisk/trunks/*.conf"

;###########################
;##  Accounts   ###########
;###########################

#include "/etc/asterisk/accounts/*.conf"

/etc/asterisk/register/budgetphone.conf

register => budgetphonegebruikersnaam:budgetphonewachtwoord@sip1.budgetphone.nl/budgetphonegebruikersnaam

Je Budgetphone gebruikersnaam is tevens je telefoonnummer. Vandaar de schuine streep op het einde met daarachter nog een keer de gebruikersnaam. Op deze manier worden binnenkomende telefoontjes op dat nummer doorgezet naar de gelijknamige context.

/etc/asterisk/trunks/budgetphone.conf

[budgetphone]
disallow=all
allow=ulaw
allow=alaw
allow=g726
allow=g723
allow=gsm
allow=g722
allow=g729
context=pstn-in
dtmfmode=rfc2833
host=sip1.budgetphone.nl
insecure=port,invite
qualify=yes
type=user

De context voor inkomende telefoontjes op het Budgetphone nummer heet dus pstn-in.

/etc/asterisk/trunks/voipbuster.conf

[voipbuster]
disallow=all
allow=ulaw
allow=alaw
allow=g726
allow=g723
allow=gsm
context=pstn-out
dtmfmode=rfc2833
host=sip.voipbuster.com
qualify=yes
type=peer
defaultuser=voipbustergebruikersnaam
secret=voipbusterwachtwoord
fromuser=voipbustergebruikersnaam
fromdomain=sip.voipbuster.com

Met Voipbuster bellen we naar buiten, de context heet dan ook pstn-out en we moeten onze gebruikersgegevens opgeven anders accepteert Voipbuster onze telefoontjes niet. Voor Budgetphone is dit niet nodig aangezien we daar alleen telefoontjes mee ontvangen.

/etc/asterisk/templates/phones.conf

[phones](!)
type=friend
qualify=yes
nat=yes
context=phones
host=dynamic
canreinvite=no
dtmfmode=rfc2833
allowtransfer=yes
disallow=all
allow=ulaw
allow=alaw
allow=g726
allow=g723
allow=gsm
allow=g722
allow=g729

Dit sjabloon gebruik ik voor mijn accounts, dan hoef ik dat niet voor iedere account toe te voegen.

/etc/asterisk/extensions.conf

;###########################
;## Contexts    ############
;###########################

#include "/etc/asterisk/contexts/*.conf"

/etc/asterisk/contexts/pstn-in.conf

[pstn-in]
exten => budgetphonetelefoonnummer,1,Dial(SIP/10,25,tT)
 same => n,Hangup()

Oftewel, stuur alles wat binnenkomt op het Budgetphone nummer door naar toestel met extensie 10 (onze Gigaset C610 IP huistelefoon).

/etc/asterisk/contexts/pstn-out.conf

[pstn-out]
exten => _00X.,1,Set(CALLERID(num)=budgetphonetelefoonnummer-internationaalformaat)
 same => n,Dial(SIP/${EXTEN}@voipbuster)
 same => n,Hangup()

exten => _0XXXXXXXXX,1,Set(CALLERID(num)=budgetphonetelefoonnummer-nationaalformaat)
 same => n,Dial(SIP/${EXTEN}@voipbuster)
 same => n,Hangup()

/etc/asterisk/contexts/internal.conf

[internal]
exten => 10,1,Dial(SIP/10,25,tT)
 same => n,Hangup()

exten => 20,1,Dial(SIP/20,25,tT)
 same => n,Hangup()

exten => 30,1,Dial(SIP/30,25,tT)
 same => n,Hangup()

exten => 40,1,Dial(SIP/40,25,tT)
 same => n,Hangup()

De interne extensies zodat er ook intern gebeld kan worden. Extensie 10 wordt gebruikt voor binnenkomende telefoontjes die van Budgetphone vandaan komen.

/etc/asterisk/contexts/phones.conf

[phones]
include => internal
include => pstn-in
include => pstn-out

De phones context die alle andere contexts ‘include’.

/etc/asterisk/accounts/10.conf

[10](phones)
callerid=Thuis <10>
secret=***

(phones) geeft aan dat voor dit account het phones sjabloon gebruikt moet worden. In de /etc/asterisk/accounts directory staan verder nog configuratiebestandjes voor mijn mobiele telefoon, mijn werktelefoon en mijn softphone applicatie.

Er kunnen nog wat fouten zitten in bovenstaande configuratie. En ik moet nog even goed kijken naar de codecs, volgens mij is dat nu nog een rommeltje.

Asterisk configuratie

Voipy voipy

M’n Asterisk server is grotendeels ingeregeld en heb gisteren onze nieuwe telefoon binnen gekregen, een Siemens Gigaset C610 IP. Gelijk aangesloten en binnen 10 minuten had ik de telefoon geregistreerd op mijn server en kan ik via internet gebeld worden en onnet bellen met andere geregistreerde clients op de server. Gelijk even geprobeerd met Sipdroid op mijn mobiele telefoon en het werkt perfect. Het mooie van de C610 IP is dat deze zowel een analoge lijn als meerdere VoIP lijnen aankan. Dus we kunnen gewoon onze huidige vaste aansluiting houden en daarnaast via internet bellen.

Voipy voipy