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

WebRTC en WebSocket: webrtc2sip ftw!

Sinds Google WebRTC geopensourced heeft en er diverse drafts zijn opgesteld mbt. de standaardisatie van WebRTC als API door het W3C consortium wint WebRTC steeds meer terrein en is het inmiddels een hot topic geworden. Steeds meer bedrijven (ook grote multinationals) gaan er mee aan de slag en zien er grote kansen in.

WebRTC (Web Real-Time Communication) is een API die real-time communicatie in de browser mogelijk maakt, zonder plug-ins, add-ons of Flash. Denk bij real-time communicatie aan o.a. telefonie, chatten en videoconferencing.

WebSocket is een redelijk nieuwe API met bijbehorend protocol die het mogelijk maakt om TCP verkeer twee kanten op te sturen over één TCP verbinding en als je dit implementeert in een browser dan wordt het mogelijk voor applicaties om allerlei TCP verkeer heen en weer te sturen, zoals bijv. SIP verkeer.

Wat nu als je deze twee recente technologieën combineert met behulp van een derde nieuwe technologie, HTML5, en de mogelijkheden van JavaScript? Dat dachten ze bij Doubango ook en afgelopen voorjaar lanceerden ze hun sipml5 SIP client waarmee je vanuit een browser die WebRTC en WebSocket ondersteunt naar andere SIP clients kan bellen die WebRTC kunnen verstaan. Helaas is het aantal SIP clients dat het bij WebRTC horende mediaprofiel ondersteunt nogal klein, eigenlijk geldt dit alleen voor de SIP clients van Doubango zelf (zoals IMSDroid, iDoubs en sipml5). Dus in de praktijk had je er niet zo gek veel aan.

Recentelijk is daar met de release van webrtc2sip van Doubango drastisch verandering in gekomen. webrtc2sip maakt het mogelijk welke SIP client dan ook met elkaar te verbinden, ongeacht of deze nu WebRTC ondersteunt of niet. Dit maakt het dus mogelijk om conventionele SIP clients zoals bijv. Linphone te laten communiceren met sipml5. Vanaf je mobiele telefoon kun je nu dus heel gemakkelijk videobellen naar iemand die op een website ingelogd is in Google Chrome (of straks Firefox 18). Niks add-ons, niks plug-ins, niks Flash.

Op mijn werk stuitten we eigenlijk bij toeval op sipml5 en de hele infrastructuur daarachter bij het zoeken naar een alternatief voor bellen vanuit de browser mbv. Flash. Verschillende klanten hadden hier om gevraagd echter kregen we de boel niet goed aan de praat. Inmiddels heb ik een webrtc2sip server gebouwd en is er een webapplicatie met bijbehorende apps in ontwikkeling. Dit werkt zo veel beter dat de benaderde klanten vooralsnog enthousiast zijn. Nu hoeven ze geen aparte applicaties meer te installeren maar kunnen ze vanuit hun browser de werkzaamheden doen waarvoor ze videobellen nodig hebben (denk aan alarmcentrales of webconsults).

Binnenkort biedt ook Firefox ondersteuning voor WebRTC aan (vanaf versie 18) wat betekent dat straks meer dan de helft van de gebruikte browsers op het internet WebRTC aankan. Oftewel, WebRTC zit in een momentum en als ik de auteur van bloggeek.me mag geloven zal dat het nodige gaan veranderen in de VoIP business.

WebRTC en WebSocket: webrtc2sip ftw!

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)

Kan het nóg goedkoper?

Ja dat kan bij Allobox.

Bizar lage tarieven, misschien een optie voor het bellen naar mobiele nummers via VoIP ipv. een Betamax/Dellmont kloon. Mobiele nummers bellen we nu via InterVoip maar hun tarieven liggen hoger dan die van Allobox.

Jeetje, je bent eigenlijk gek als je nog via een traditionele telecomboer belt. Vooral als je weet dat een aantal van hen (zoals Ziggo) het telefoonverkeer ook over internet gooit.

Edit: een andere zeer goedkope optie is Globe7.

Kan het nóg goedkoper?

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!