Nieuwe tutorials

Heb twee nieuwe tutorials gemaakt mbt. het opzetten van een server waarmee je kan (video)bellen met SIP clients en WebRTC clients zoals Google Chrome.

Installing webrtc2sip on Ubuntu 12.04
Asterisk and sipml5 interoperability

En ja, ze zijn in het Engels vanwege wat verzoeken vanuit de Doubango community. Bovendien gebeurt er in Nederland nog bar weinig op het gebied van WebRTC.

Nieuwe tutorials

VoIP updateje

Alles werkt perfect en pas vorige week heb ik na 7 maanden mijn VoipBuster credit aan moeten vullen. Dat kost iets meer dan €12,- dus VoipBuster heeft zo’n €1,75 per maand gekost. Via Ziggo verbelden we voorheen gemiddeld ruim €11,- per maand en op jaarbasis besparen we zo dus meer dan €100,-. Gesprekskwaliteit is over het algemeen redelijk tot goed dus je hoort ons niet klagen.

VoIP updateje

Asterisk op ARM (SheevaPlug)

De Digium repository heeft geen armel (ARM) pakketjes maar wel de benodigde bronbestandjes zodat je toch op een makkelijke manier de nieuwe releases kunt packagen en installeren. De snelste manier om dat te doen is door de repository van Digium toe te voegen aan je Apt sources:

# echo -e "# Asterisk sourcesn deb-src http://packages.asterisk.org/deb squeeze main"
| tee -a /etc/apt/sources.list

En even iniesniejalieseren:

# apt-get update

En vervolgens kun je met één simpel commando de bronbestanden downloaden, uitpakken en packagen:

apt-get source -b asterisk

Even laten pruttelen en daarna kun je de benodigde pakketten installeren of updaten:

dpkg -i asterisk-config_1.8.11.1-1digium1~squeeze_all.deb
asterisk_1.8.11.1-1digium1~squeeze_armel.deb

Asterisk op ARM (SheevaPlug)

Contact!

Na het aansluiten van alle spullen kon ik mijn vader wel bellen maar hij kon niet uitgaand bellen via VoIP. ngrep erop losgelaten en met behulp van TeamViewer en Zoiper op mijn vader z’n PC gaan troubleshooten. Kwam erachter dat ik mijn Asterisk bakje als outbound proxy had moeten instellen op de N300A IP van mijn ouders, alsnog ingesteld via TeamViewer en toen werkte het prima. Kwaliteit is verassend goed ondanks de trage ADSL verbinding van mijn ouders.

Contact!

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

Bellen naar mobiele nummers via VoIP

Goedkoop bellen naar vaste nummers is allemaal wel mooi, maar hoe zit het met mobiele nummers? Even de progx.ch site raadplegen en dan blijkt dat InterVoip, ook weer een Betamax/Dellmont vehikel maar specifiek voor bellen naar mobiele nummers, het allergoedkoopst is. Dus account aangemaakt, wat credit gestort, trunk aangemaakt en we kunnen nu ook heel goedkoop naar mobiele nummers bellen.

Bellen naar mobiele nummers via VoIP

Gratis Nederlands nationaal nummer!

Bij 12connect.com kun je gratis een account aanmaken waar een 085 DID nummer aan gekoppeld zit. Accountje aangemaakt en daarna een inbound SIP trunk opgezet op mijn Asterisk server.

/etc/asterisk/register/12connect.conf

register => gebruikersnaam12connect:wachtwoord12connect@vpbx.12connect.com/extensienummer

/etc/asterisk/trunks/12connect.conf

[12connect](peers-template)
context=pstn-in
host=vpbx.12connect.com

/etc/asterisk/templates/peers.conf

[peers-template](!)
insecure=port,invite
qualify=yes
type=peer
disallow=all
allow=ulaw
allow=alaw
allow=g726
allow=g723
allow=gsm
allow=g722
allow=g729
dtmfmode=rfc2833

Gratis Nederlands nationaal nummer!

Gratis Frans nationaal telefoonnummer!

Op fixe2mob.com kun je een gratis Frans nationaal telefoonnummer aanvragen die je kunt gebruiken met bijvoorbeeld je Asterisk PBX. Zulke nummers worden ook wel DID’s genoemd (Direct inward dialing). We hadden thuis al een Nederlands regionaal DID nummer via Budgetphone maar dat kost een tientje per jaar. Het Franse DID nummer dat we nu hebben is echter helemaal gratis. Heb gelijk een SIP trunk aangemaakt op onze eigen PBX en we zijn nu dus ook bereikbaar op onze huistelefoon met dit Franse nummer. Scheelt weer voor m’n ouders, hoeven ze niet meer naar ons Nederlandse nummer te bellen.

Gratis Frans nationaal telefoonnummer!

Asterisk geüpdatet

Draai nu Asterisk 1.8.9.0 en terwijl ik 1.8.8.x niet werkende kreeg met Budgetphone werkt het nu wel goed. Helaas kon ik geen pakketjes vinden voor Squeeze op de Asterisk site dus heb het bronpakketje voor Natty maar gedownload, uitgepakt en dpkg-buildpackage erop losgelaten. Heb nou eenmaal de voorkeur voor pakketjes. Ging nog best snel op m’n SheevaPlug.

Kreeg wel een melding bij het opstarten:

WARNING[17830]: chan_sip.c:28490 reload_config: No valid transports available, falling back to 'udp'.

Maar na het toevoegen van de volgende regel was die melding weg:

transport=udp

Asterisk geüpdatet

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