Asterisk met Budgetphone en een Nokia N95 met SIP over 3G
Vandaag heb ik in korte tijd een Asterisk installatie uit de grond gestampt. Dat is op zichzelf niet zo bijzonder (ik manage een Asterisk installatie een bedrijf waar ik voor werk), maar wat wel leuk is, is dat ik dit nu ook aan de praat heb gekregen met Budgetphone en m’n N95 SIP client.
Asterisk is een opensource PBX programma. Dit houd kortweg in dat je allemaal verschillende telefoondiensten relatief simpel op kan zetten. Interactieve menuutjes met wachtmuziek en wachtrijen (“toets 1 voor…”) en intern bellen zijn opties die veelal binnen bedrijven worden gebruikt. Doorgaans loopt de spraak via het SIP protocol en maakt daarmee de meeste diensten van Asterisk een VOIP dienst (SIP gaat immers via IP).
Budgetphone is een VOIP partij die verbindingen via SIP mogelijk maakt. Dit doet (bijvoorbeeld) InternetPlusBellen van KPN ook, alleen zit je bij KPN vast in hun netwerk en is ook lastig om buiten hun Experiabox om te werken met hun SIP servers (maar als je Asterisk kan opzetten, dan kun je dit ook omzeilen). Groot voordeel van Budgetphone is dat ze voor een tientje per jaar je een inkomend nummer geven zonder dat je verdere verplichten aan ze hebt (je kan beltegoed bij ze kopen of een abonnementje afsluiten als je wel naar buiten wilt bellen via hun).
Met de opkomst van het mobiele internet (met fatsoenlijke snelheden) wordt het nu ook interessant om gebruik te gaan maken van VOIP mogelijkheden op de laatste generatie mobieltjes. Mijn Nokia N95 heeft bijvoorbeeld een VOIP client aan boord die SIP spreekt. En ik heb ook nog eens Pocket Internet Totaal van T-Mobile, dus onbeperkt internetten (op dit moment 128kbps download en 32kbps upload). Dit naast de mogelijkheid te verbinden met wifi access points.
Al die dingen heb ik vrij gemakkelijk aan elkaar geknoopt en kostte me een paar uurtjes werk (inclusief lezen). In dit artikel ga ik kort uitleggen hoe je je Asterisk op moet zetten met Budgetphone en hoe je je Nokia N95 in moet stellen (of andere Nokia’s met dezelfde SIP client). Ik ga er vanuit dat je iets weet over de Asterisk configuratie (of bereid bent tijdens het lezen rond te zoeken op het Internet) en dat je nergens last hebt van NAT – dit is niet helemaal reëel, maar ik heb geen zin om in te gaan op de moeilijkheden van NAT i.c.m. SIP.
Klik op lees verder voor de rest van het artikel.
Allereerst de Asterisk installatie. Aangezien ik een server met Ubuntu heb, was dit simpelweg `apt-get install asterisk’ intypen en klaar was ik. Het werkte meteen out-of-the-box. Hierna heb ik de extentions.conf en de sip.conf in /etc/asterisk weggegooit, aangezien de voorbeelden hierin voor mij onbelangrijk zijn en allemaal in de weg zitten.
Nadat Asterisk geïnstalleerd was, wilde ik een inkomend nummer hebben (doorgaans wil je dit uiteindelijk toch hebben om bereikbaar te zijn voor iedereen). Dit heb ik geregeld bij het eerder genoemde budgetphone. Even naar hun webwinkel gaan, nummer als product kiezen, betalen via PayPal, mailtje afwachten (enkele minuut) en activeren op hun site. Hierna heb je meteen een nummer tot je beschikking (al met al een paar minuten werk). Het nummer werkt ook meteen, dus je kan direct aan de slag.
Om te zorgen dat het nummer uitkomt bij je Asterisk installatie moeten er enkele zaken in de sip.conf en de extentions.conf aangepast worden. Hiervoor heb ik dit voorbeeld op het Budgetphone forum gebruikt (met wat aanpassingen). Mijn sip.conf:
[general]
context=default
bindport=5060
bindaddr=0.0.0.0
srvlookup=no     Â
register => 31nu...@budgetphone.nl:password:31nummer@
sip.budgetphone.nl/101
[31nummer]
nat=no
type=peer
host=sip.budgetphone.nl
fromuser= 31nummer
username= 31nummer
secret=password
qualify=no
fromdomain=budgetphone.nl
context=incoming
insecure=very
Vervang hierbij 31nummer met het budgetphone nummer en password met het budgetphone wachtwoord. Wat dit stukje config doet is zorgen dat de gesprekken van budgetphone terecht komen in je incoming context (die je definieert in de extentions.conf). 101 kan je vervangen met iets anders, afhankelijk van je setup. Dit bepaald namelijk hoe je vervolgens de gesprekken in je configuratie moet aanspreken in de extensions.conf.
Zie hieronder mijn extensions.conf:
[general]Â [globals]Â Â Â [incoming] exten => 101,1,Answer() exten => 101,n,Playback(tt-monkeys) exten => 101,n,Hangup()
In de context ‘incoming’ vang ik op 101 de inkomende gesprekken van budgetphone af. Dit is een simpele test opzet, als je nu je nummer zou bellen zou je een paar schreeuwende apen moeten horen
(tt-monkeys is een standaard geluid wat mee komt met Asterisk).
Nu budgetphone werkt, kunnen we gaan werken aan het toevoegen van enkele extensies zodat we ook daadwerkelijk kunnen bellen. Dit gebeurd in de sip.conf.
Onder [general]
disallow=all  allow=ilbc allow=gsm allow=alaw
En onder de budgetphone peer configuratie:
[1001] type=friend context=internal host=dynamic callerid="Jochem van Leeuwen" <1001> canreinvite=no qualify=yes secret=password
en
[1002] type=friend context=internal host=dynamic callerid="Jochem van Leeuwen Mobile" <1002> canreinvite=yes qualify=600 secret=password
Het eerste blokje is de configuratie voor de codecs, hier kom ik later op terug. Daaronder staan twee peers die zowel kunnen bellen als gebeld worden. Zoals je ziet heb ik ook al een account aangemaakt voor de mobiel. Alle acties van deze twee accounts gebeuren binnen de ‘internal’ context. Deze moet dus ook bestaan in de extensions.conf:
Â
[internal]Â
exten => _XXXX,1,Dial(SIP/${EXTEN},13)
exten => _XXXX,n,Hangup()
;uitgaande gesprekken (meer dan 4 digits)
exten => _xxxx.,1,dial(SIP/${EXTEN}@31nummer)
exten => _xxxx.,n,hangup
Dit doet twee dingen. Allereerst maakt het mogelijk dat je intern naar de verschillende SIP extenties kan bellen (in dit geval 4 cijfers lang). Daarnaast zorgt het ervoor dat je kan bellen naar normale nummers (meer dan 4 cijfers lang) via de budgetphone peer, je moet dan wel beltegoed of een abonnement hebben bij budgetphone. Uiteraard zou je ook je uitgaande gesprekken over een andere peer kunnen sturen, dat is onder andere de kracht van Asterisk
. Als je geen beltegoed hebt bij budgetphone, kan je toch gewoon testen of je uitgaand kan bellen (en dus je configuratie goed hebt staan): je krijgt dan te horen dat je je beltegoed moet opwaarderen en deze melding komt van budgetphone (of wel: inkomend geluid werkt in ieder geval).
De Asterisk configuratie is nu klaar. We kunnen nu verder gaan met het testen van de configuratie. Voordat we dat gaan doen, moet de configuratie wel geladen worden in Asterisk. Verbind met de Asterisk console (`asterisk -r’) en type `reload’. Blijf nog even hangen in de Asterisk console, aangezien we hier ook meteen kunnen zien wat er allemaal gebeurd als we de configuratie gaan testen. Om dit te zien moet de verbosity wel hoog genoeg staan, type dus op de console `core set verbose 10′. Probeer hierna eens te bellen met je budgetphone nummer. Als het goed is hoor je een stel apen en zie je op de Asterisk console ook dat het geluidsbestands tt-monkeys afgespeeld wordt. Als je lang genoeg wacht, wordt de verbinding vanzelf verbroken.
Goed, nu willen we ook graag weten of de clients werken. Om dit te testen installeer je op je computer een softphone. Hiervan zijn er vele beschikbaar, ik gebruik zelf altijd X-Lite (gratis). De instellingen hiervan zijn vrij simpel. De gebruikersnaam is de naam van de SIP peer (in mijn geval 1001) en het wachtwoord wat je invult bij ‘secret’. Als domein en proxy adres gebruik ik meestal het IP van de server, om eventuele DNS problemen te omzeilen (we zijn immers alleen maar een testsetup aan het maken).
Na het instellen moet X-Lite zich registeren op de server. Dit zie je zowel in X-Lite als op de Asterisk console. Als je op de Asterisk console `sip show peers’ typt, zul je zien dat client geregistreerd staat (en vanaf welk IP en wat al niet meer). Probeer nu eens te bellen naar je eigen extensie en je zou als het goed is een wissel gesprek moeten krijgen. En als je probeert te bellen naar een normaal 10 cijferig nummer (of op z’n minst 5 cijferig), zou je budgetphone te horen moeten krijgen (of zou de telefoon die je belt over moeten gaan als je beltegoed hebt bij budgetphone). Eventueel kan je nu ook je extensions.conf aanpassen door in plaats van de apen af te spelen, je interne extensie over te laten gaan (hint: exten=> 101,n,Dial(SIP/1001,13) ). Als je dan je budgetphone nummer belt, kan je praten via de softphone.
Als dit allemaal zonder problemen werkt, kunnen we aan de gang gaan met vervelendste stuk: het configureren van de Nokia N95. Dit is een beetje geklooi, omdat dingen niet voor zich spreken en de foutmeldingen meestal niets zeggend. Allereerst ga ik de gesprekken via wifi doen, om eventuele problemen met  Dit is wat ik heb gedaan:
In menu -> Tools -> Settings -> Connection -> SIP settings. Options -> New  SIP profile -> Use default profile.
De instellingen:
Profile name: een omschrijvende naam.
Service profile: IETF.
Default access point: access point (eventueel moet je die nog toevoegen in menu -> Tools -> Settings -> Connection -> Access points).
Public user name: sip:username@ipadres (bijvoorbeeld: sip:1002@192.168.1.5).
Use compression: no.
Registration: When needed.
Use security: no.
Onder Proxy server en Registrar server:
Proxy server address: sip:ipadres (bijvoorbeeld: sip:192.168.1.5).
Realm: asterisk.
User name: username (bijvoorbeeld 1002).
Password: password (wat je bij ‘secret’ hebt staan).
Allow loose routing: yes.
Transport type: UDP.
Port: 5060.Â
Je kunt eventueel de registration op ‘Always on’ zetten. Hiermee kan je direct na het opslaan van de instellingen kijken of het account wil registreren.
Hierna moest ik nog naar menu -> Tools -> Settings -> Connection -> Internet telephone gaan en een nieuw profiel aanmaken, hij pakte mijn bestaande profiel namelijk niet goed op (het account registreerde wel met de server, maar ik kon er niet mee bellen omdat er geen profiel werd gevonden). Maak dus een profiel aan en voeg daar het nieuwe SIP profiel aan toe.
Alles zou moeten werken en op de Asterisk console moet nu je telefoon geregistreerd staan naast je softphone (doe nog maar eens `sip show peers’). Om te bellen vanaf je telefoon typ je het nummer in wat je wilt bellen (dit kan dus een interne extensie zijn!) druk alleen niet op de knop om te bellen, maar kies voor Options -> Internet call. Als je nog niet bent verbonden met de Asterisk server, zal de telefoon vragen of hij dit nu mag doen. Kies voor ja. Na registratie kan je over SIP bellen met je telefoon. Zolang je telefoon verbonden is met Asterisk server, kun je ook gesprekken ontvangen op je interne extensie.
Wat het mooiste zou zijn is dat je gesprekken via het mobiele internet (UMTS/HSDPA) kunt sturen, zo kun je bijvoorbeeld voor je bedrijf zonder al te veel extra kosten gewoon bereikbaar zijn op het voor je klanten bekende nummer (doorschakelen naar mobiel is immers een dure zaak). Maar het is ook natuurlijk leuk omdat het kan. Groot probleem met bellen via mobiel internet is dat je met een beperkte bandbreedte en dekking zit. Dit vang ik deels af door zo smal mogelijke audio codec te gebruiken. In mijn geval kwam ik uit op iLBC, deze heeft een beperkte bandbreedte nodig en past de kwaliteit aan in het geval dat er frames wegvallen. Het speex codec kan dit ook en kan nog minder bandbreedte gebruiken, maar helaas kan de Nokia N95 niet omgaan met het speex codec.
Met iLBC kon ik met moeite VOIP verkeer over T-Mobile Pocket Internet Totaal sturen, voornaamste bottleneck was de upload snelheid (die gewoon te beperkt is voor spraak verkeer). Een eventueel sneller abonnement bij een andere partij zou dat oplossen. Ander probleem (wat ik niet getest heb) is dat je waarschijnlijk problemen gaat krijgen zodra je op relatief hoge snelheden gaat bewegen en tegelijk bellen.
Hoewel dit alles dus een leuk experiment is van de huidige technieken, zal het nog wel even duren voordat we daadwerkelijk mobiel gaan telefoneren via VOIP.
Bronnen:
voip-info.org
asterisk.org
Budgetphone forum
Beperkte support via de comments (als ik zin heb), de rest zul je zelf moeten uitvogelen.
Â
Â




6 reacties. Reageer of Ping
Giovanni
Hey, interresant stukje hoor… maar volgens mij zij de jongens van Nimbuzz aardig op weg, inloggen.. en bellen via skype, op je N95
Zowiezo wel handig dat je je complete contactengegevens bij die jongens op de server kwijt kan, altijd handig erbij te kunnen als je je mobiel kwijtraakt, in het buitenland even zonder lader zit of noem maar op.
Zou zeggen , neem eens een kijkje naar het programma
ik hou dit topicje even in de gaten, leuk leuk leuk
12-07-2008
jochem
Het lijkt wel spam
. Ik ken Nimbuzz, maar volgens mij kan die geen SIP gespreken?
Wat ik hier beschrijf is een verhaal voor de echte nerds onder ons. Uiteindelijk heb je namelijk een eigen telefoon centrale en de mogelijkheid via SIP te bellen met je mobiele telefoon – zonder aparte applicaties (als Nimbuzz).
Dit is overigens wat mogelijk de toekomst is – voor de vaste telefonie is het in ieder geval wel al zo (gezien de velen met digitale telefonie, wat vaak met SIP e.d. werkt).
12-07-2008
delta16
hey JOCHEM
super turtorial echt , het heeft mij goed op weg geholpen.
maar ik ram met mijn kop tegen een probleem aan.
naamelijk als ik de wijzegingen in sip.conf en extensions.conf maak en probeer dan mijn budgetphone nummer te draiien krijg ik gewoon de voicmail :S
ik zit met een asterisk 1.6 systeempje achter een router en daar staat porrt 5060 op open.
enig idee wat ik fout doe ??
9-09-2008
jochem
Hoi Delta16,
Ik heb dit geschreven voor Asterisk 1.4 – de wijzigingen in 1.6 zijn mij niet bekend, dus wellicht dat daar iets mis gaat.
Maar om het probleem te debuggen zou ik het volgende doen:
Is die voicemail de voicemail van Budgetphone, of de voicemail van Asterisk?
Indien het eerste het geval is (voicemail van Budgetphone) dan is de kans groot dat je Asterisk server niet goed registreert op de Budgetphone servers. Check in dat geval je registratie-string in de sip.conf.
Ook is het mogelijk dat hij wel registreerdt, maar de verkeer niet door je router heen wilt. Indien dat het geval is, zou ik proberen je Asterisk in de DMZ van je router te zetten (alle poorten naar de Asterisk forwarden). Werkt het dan wel, dan moet er nog een poortje geforward worden – welke dat precies is, weet ik niet; mogelijk is het 5061.
Zelf heb ik niet met NAT te maken, aangezien de server publiek aan het internet hangt – ik weet dat dit een luxe is die maar weinig mensen hebben.
Lijkt het je router niet te zijn, kan je proberen je Asterisk met een publiek IP aan het internet te hangen. Met de meeste thuislijntjes (en bijbehorende modem/router combo’s) lijkt mij dit niet altijd makkelijk te regelen (je zal het router gedeelte uit moeten zetten) – evt. kan je een modem kopen die het wel kan of een oud USB modem aan de praat proberen te krijgen onder Linux (die je enkele jaren geleden nog kreeg bij de MxStream adsl-verbindingen van KPN).
Werkt het dan wel, dan is het zeker weten een probleem in je thuisnetwerk (firewall op de router, verkeerde config op de router, etc).
Succes in ieder geval
.
9-09-2008
Dirk
Hi Jochem,
Ik reageer op dit deel van je verhaal: “VOIP mogelijkheden op de laatste generatie mobieltjes. Mijn Nokia N95 heeft bijvoorbeeld een VOIP client aan boord die SIP spreekt.”
Ik woon op het platteland van Italie en ga binnenkort in zee met een IperLAN aanbieder om redelijk (1 Mb dl) snel te internetten. Het signaal komt dan via een buitenantenne met een netwerk aansluiting binnen. Hieraan wil ik een router aansluiten en vervolgens: bellen/gebeld worden via internet. Landlijn dan opzeggen. Begrijp ik het goed dat ik met een mobieltje, dat een “SIP client” aan boord heeft, via mijn router kan internetbellen en gebeld worden? (n.b.: Ik bedoel dus niet vanuit het mobieltje via UMTS+VOIP te bellen!) Zo bespaar ik me dus een Skype telefoon of een VOIP telefoon of een DECT telefoon met voip adapter, toch?
En zo ja, is dit redelijk eenvoudig te configureren? (ben geen techneut…..)
ciao
Dirk
7-11-2008
jochem
Hoi Dirk,
Theoretisch is het mogelijk – ja. Je kan met een mobieltje die een SIP client heeft (de wat duurdere Nokia toestellen o.a.) bellen via (in jouw geval) WIFI – uit mijn tests blijkt dat dit heel goed werkt. Maar zoals ik in dit verhaal ook aangeef, is het allemaal nog een beetje lastig en meer iets voor de toekomst (ik denk een jaartje of 3, 4). Voor een niet-techneut lijkt het me dan ook vrij lastig, omdat er nog weinig ‘mainstream’ informatie over is.
Verder heb je voor dit verhaal een aparte server nodig – veel duurder dan een dect telefoontje oid. Als er een product in Italie bestaat ala ‘internetplusbellen’ in Nederland (van KPN), of wel: bellen via het internet – dan heb je grote kans dat dat ook via SIP gaat. Je hoeft dan geen aparte server te hebben, maar dan moet je wel uitvogelen wat die instellingen zijn (en vervolgens instellen in je telefoon).
Ook zou je een providers kunnen nemen ala Budgetphone (in NL, hebben volgens mij ook goede tarieven voor bellen naar Italie); of een Italiaanse tegenhanger hiervan (zoek eens op ‘SIP Provider’, maar dan in het Italiaans
). Deze geven je de SIP instellingen, die je vervolgens in je telefoon kan zetten.
Maar opnieuw: dit is allemaal vrij lastig configureren, en ik weet niet zeker of het altijd zal werken (wellicht heb je de mogelijkheid om het voor weinig geld vooraf te proberen – doordat je mobieltje al SIP spreekt en je ergens gratis/goedkoop een SIP account kan regelen).
De oplossing van DECT + voip adapter is overigens ook een mooie tussenoplossing – dit heb ik op mijn werk geconfigureerd.
Succes er in ieder geval mee!
Groeten uit het herfstachtige Nederland.
9-11-2008
Reageer op “Asterisk met Budgetphone en een Nokia N95 met SIP over 3G”