FreePBX
Inhoud
Wat is FreePBX?
FreePBX is een opensource grafische schil om Asterisk heen die het beheer makkelijker maakt. Op hun website staat meer informatie. Voor een ervaren gebruiker heeft deze grafische schil hier en daar wat beperkingen, maar voor een nieuwe/onervaren gebruiker of iemand die begint met SIP is deze grafische schil perfect voor de eerste stappen in de wereld van SIP. FreePBX is beschikbaar in een aantal smaken, je kunt FreePBX installeren op een losse machine, in een virtual machine en zelfs op een Raspberry.
Installeren FreePBX
Installatie handleidingen voor CentOS, Ubuntu, Debian en FreeBSD zijn in de FreePBX wiki te vinden. Je kunt ook een complete FreePBX distro downloaden of een hosted versie afnemen. De raspberry variant is te downloaden op Raspberry-asterisk.org De download link voor de meest recente versie is niet heel duidelijk te zien, het kan dus even zoeken zijn. Voor de beginner is het ten zeerste aan te raden om een complete distro te downloaden. Het installatie proces van een complete distro is bijzonder eenvoudig en lijkt op het installeren van bijvoorbeeld office op je windows pc.
Configureren FreePBX
Limesco heeft gevraagd om een aantal gegevens, username / authenticatie-username, password, domein/realm, sip uri/adres, expiry. Deze gegevens heeft Limesco nodig om de sim te koppelen aan je FreePBX installatie en om gesprekken af te leveren op je FreePBX installatie. Om deze gegevens te verkrijgen heb je een aantal basis ingredienten nodig.
- Trunk - Inbound route - Outbound route - Extensions
Met deze 4 basis ingredienten kun je een werkende opstelling bouwen. Naarmate je meer vertrouwd raakt met FreePBX kun je een aantal ingredienten toevoegen zodat het beter aansluit bij je eigen behoeftes. Enkele extra ingredienten die leuk zijn om te hebben of om mee te experimenteren zijn :
- Queues - Music on Hold - Voicemail - Set Caller ID - IVR
Extensions
Een extensie wordt gebruikt om een toestel te identificeren binnen je FreePBX installatie. Om een extensie aan te maken ga je via het menu "Applications" naar "Extensions" je krijgt dan een overzicht scherm.
Aan de rechterkant zie je alle reeds aangemaakte extensies. Wanneer je een nieuwe installatie hebt dan is deze lijst leeg. Je kunt aan de linkerkant van het scherm kiezen wat voor soort extensie je wil maken. Voor gebruik met Limesco kun je het beste kiezen voor "Generic SIP Device". Nadat je op "submit" klikt kom je terecht op de pagina om alle instellingen te maken. De instellingen die we hier maken zorgen er voor dat je de username / authenticatie-username en password hebt om door te geven aan Limesco. Als alle kopjes zijn dichtgeklapt dan zie je de hoofdstukken op de pagina.
Onder het kopje "Add Extension" kun je een 4-tal gegevens invoeren. Achter "User Extension" (username/authenticatie username) vul je het nummer in waarmee de sim te bereiken moet zijn vanaf de telefoon centrale. In FreePBX kan dit extensie nummer alleen maar bestaan uit getallen. Bij "Display Name" vul je de naam in die wordt meegezonden wanneer je iemand belt. Andere SIP gebruikers kunnen deze naam zien wanneer je ze gaat bellen vanaf deze extensie. Vervolgens is er nog het "CID Num Alias", dit is het nummer dat wordt meegezonden wanneer je iemand belt.
Als je het volgende kopje open klapt dan kun je de extensie opties invullen. Hier hoef je alleen maar de "Outbound CID" in te vullen. Dit is in de meeste gevallen een combinatie van de "Display Name" en "CID Num Alias". De overige opties onder dit kopje kun je laten staan zoals ze standaard staan. Wellicht dat je hier in de toekomst wijzigingen wil gaan aanbrengen, maar voor de eerste opzet is dat absoluut niet noodzakelijk.
Het laatste wat Limesco nodig heeft wat te vinden is in dit hoofdstuk is het wachtwoord. Deze kun je instellen onder het kopje "Device Options". Er staat hier een regel met de tekst "Secret", vul hier achter je wachtwoord in. De overige opties onder dit kopje kunnen op de standaard waarde laten staan. Alle overige opties laten we vooralsnog staan zoals ze standaard worden ingesteld bij het aanmaken van een extensie, scroll nu helemaal naar beneden en kies voor “Submit”
FreePBX is nu ingesteld dat er een nieuwe extensie is aangemaakt, maar Asterisk welke het daadwerkelijke belverkeer behandeld is nog niet op de hoogte gebracht van de aangemaakte extensie. Alle wijzigingen die worden gedaan binnen FreePBX worden pas naar Asterisk gestuurd wanneer er op de rode "Apply Config" knop wordt gedrukt. Bij iedere wijzigingen die wordt doorgevoerd zal deze rode "Apply Config" achter de menu balk worden getoond. Zeker wanneer je aan het testen bent is het dus van belang om deze knop goed in de gaten te houden. Wanneer je wijzigingen doorvoert maar niet op deze knop drukt dan zal er niets wijzigen in Asterisk waardoor de wijzigingen niet actief worden.
Domein/Realm
Limesco heeft gevraagd om enkele gegevens waarvan de meeste nu bekend zijn. We hebben alleen het domein nog nodig. Als je een domein hebt, dan ben je als het goed is bekend met DNS, A-records en SRV-records. Heb je een domein, maar ben je niet bekend met het inrichten van records dan kan je domain-registrar je een helpende hand bieden. Heb je niet een domein, of heb je geen idee wat een domein is dan dien je je externe ip adres gebruiken welke je van je provider hebt gekregen. Weet je niet wat je externe ip adres is? Ga dan naar watismijnip.nl. Deze website toont het ip adres van jouw internet verbinding. In deze handleiding gaan we er vanuit dat je domein : mijndomein.nl is met ipadres 12.34.56.78
Je hebt een eigen domein :
Username : 12345678 Authenticatie-username : 12345678 Password : MijnGeheimeCode01 Domein/realm : mijndomein.nl SIP uri/adres: 31612345678@mijndomein.nl Gewenste expiry : standaard 3600, mag bij Limesco liggen tussen 600 en 3600
Je hebt niet een eigen domein :
Username : 12345678 Authenticatie-username : 12345678 Password : MijnGeheimeCode01 Domein/realm : 12.34.56.78 SIP uri/adres : 31612345678@12.34.56.78 Gewenste expiry : standaard 3600, mag bij Limesco liggen tussen 600 en 3600
Wanneer je deze gegevens door geeft aan Limesco dan kunnen zij er voor zorgen dat de simkaart (en daarmee dus ook je telefoon) zich kan aanmelden als IP toestel op jouw FreePBX centrale. In "FreePBX System Status" onder het menu "Reports" kun je zien wanneer Limesco de gegevens heeft doorgevoerd. Achter "IP Phones Online" zal het getal gaan veranderen van 0 naar 1. Tevens zul je een bevestigings mail krijg van Limesco dat de wijziging is doorgevoerd en krijg je Trunk gegevens aangeleverd die we later nodig hebben.
Trunks
Om FreePBX te verbinden met de centrale van Limesco/SpeakUp zal er een trunk aangemaakt moeten worden. Omdat SpeakUp gebruik maakt van 2 proxyservers zullen er 2 trunks aangemaakt moeten worden. In Asterisk kan dit gedaan worden met 1 proxyserver. Het maken van 2 trunks in FreePBX is noodzakelijk voor een correcte werking van je systeem, het is niet samen te voegen in 1 trunk omdat FreePBX hier een stukje functionaliteit mist.
In het menu “Connectivity” gaan we naar “Trunks”
De opbouw van dit scherm is vergelijkbaar met de opbouw van "Add extension" Kies aan de linkerkant voor "Add SIP Trunk"
De trunk is onderverdeeld in een aantal secties. Achter trunk name vullen we een naam in waarmee we de trunk in andere schermen kunnen identificeren, zoals bijvoorbeeld Limesco_Trunk_1. Bij "Outbound CallerdID" vullen we je telefoonnummer in, in een internationaal formaat, dus beginnend met 31 ipv 0. Vervolgens kun je een maximaal aantal kanalen kiezen die beschikbaar zijn voor deze trunk. Met andere woorden; hoeveel gesprekken wil je gelijktijdig kunnen voeren met deze verbinding. 2 kanalen is voldoende, je kunt dan immers wisselgesprek doen. Zet je deze waarde te hoog en je hebt ergens een configuratie fout gemaakt dan kunnen de kosten flink in de papieren gaan lopen. Het verdient dus de aanbeveling om het aantal beschikbare kanalen zo laag mogelijk te houden. Om gesprekken op te zetten naar de buitenwereld, dus bijvoorbeeld naar je buurman of je werk, heb je een dial plan nodig. Onder het kopje "Dialed Number Manipulation Rules" kun je het nummer welke je hebt ingetoetst op je mobiele telefoon aanpassen voordat deze naar Limesco gaat. Dus als je belt naar 12345 dan kan dat nummer veranderd worden naar bijvoorbeeld 0688812345. Aangezien SIP iets anders werkt dan ‘normale‘ telefonie moet je altijd bellen naar een internationaal nummer, zelfs wanneer je nationaal belt. Dus bellen naar een nummer welke begint met een 0 gaat vrijwel nooit goed, maar meestal bellen mensen wel naar een nummer welke begint met een 0. Wanneer je als "prepend" 31 gebruikt, en "prefix" [0] en "match pattern" [6]. dan zal het nummer 0611223344 worden veranderd naar 31611223344. Wanneer het ingetoetste nummer overeen komt met de combinatie van prefix en match pattern dan wordt de prefix voor het nummer verwijderd en wordt de prepend er voor geplaatst. Het match pattern hier staat op [6]. <- let op de “.” achter de “]”. Deze regel zorgt er voor dat wanneer het gekozen nummer begint met 06, dit nummer wordt aangepast naar 316. De “.” staat voor een willekeurige hoeveelheid tekens bestaande uit alle willekeurige getallen. Je zou ook een regel kunnen maken met "prepend" 31, "prefix" [0] en "match pattern" .
Nu scroll je verder naar beneden en kun je "Outgoing Settings" invullen. Wederom zit hier een apartheid van FreePBX. Je gaat denken dat Outgoing voor uitgaand is, en incoming voor inkomend. Voor Asterisk wat op de achtergrond draait, is dit onderscheid er helemaal niet op dit niveau. Dus we negeren hier gewoon het onderscheid en voeren een "Trunk Name" in. Deze kun je gelijk houden aan de eerder ingestelde "Trunk Name". De Peer details komen behoorlijk precies en kunnen in je eigen situatie licht afwijkend zijn. Mocht blijken dat deze gegevens bij jou niet werken, meld je dan op het IRC kanaal voor assistentie.
type=friend insecure=invite pedantic=no canreinvite=no nat=force_rport host=proxy1.sip.speakup.nl port=5060 qualify=yes username=Gebruiker secret=Wachtwoord disallow=all allow=alaw&ulaw&gsm&g726
De username en secret heb je gekregen van Limesco, dit zijn NIET dezelfde username en secret die je hebt ingevuld bij je extensie. Wanneer je informatie zoekt over de overige opties dan kun je het beste kijken op de wiki van FreePBX en/of Asterisk.
Deze trunk is nu bijna klaar, als je naar beneden scrolled zie je nog een register string. Deze string bestaat uit je gebruikersnaam, gevolgd door een ":" en dan je wachtwoord. Dit geheel wordt gevolgd door een "@" met daarachter de server van Speakup om je aan te melden. Daarna volgt er een "/" met je telefoonnummer.
Gebruiker:wachtwoord@server/telefoonnummer
Wanneer je nu klikt op "Submit Changes" komt er boven in het scherm weer een rode knop met "Appy config". Klik eerst op "Limesco_Trunk_1" aan de rechterkant.
Het scherm wordt nu opnieuw geopend met de trunk gegevens, verander nu overal de gegevens van "1" naar "2", dus de trunkname wordt op beide plaatsen veranderd, de host proxy wordt aangepast en de registerstring wordt aangepast. Klik dan op "Duplicate Trunk" Er komt nu een tweede trunk bij die licht grijs van kleur is. Dit komt omdat deze trunk nog is uitgeschakeld.
Klik nu op de 2e trunk om deze te openen. Klik op Trunk 2 en zet daar de vinkjes uit bij "Continue if busy" en bij "disable trunk". Scroll naar beneden en klik op "Submit Changes" om vervolgens nu wel bovenin op de rode "Apply Config" te drukken.
De telefoon was al verbonden met de centrale, nu is de centrale verbonden met de buitenwereld. Tijd om de telefoon(s) te verbinden met de buitenwereld via de centrale. Hiervoor zijn inbound en outbound routes nodig.
Inbound Routes
Eerst gaan we de inbound route behandelen. Een inbound route zorgt er voor dat sip gesprekken die worden aangeboden aan de PBX worden gecontroleerd. De basis controle bestaat uit het controleren van het afzender nummer en het gebelde nummer. Na de controle wordt het gesprek doorgezet naar een extensie of een wachtrij. Zo kun je er dus voor zorgen dat wanneer 0123456789 jouw belt op 0612345678 het gesprek wordt aangeboden op extensie 101. Terwijl een gesprek met afzender 0234567890 wordt aangeboden op extensie 102 en alle overige afzender worden afgeleverd op extensie 103.
Klik in het menu op "Connectivity" en kies daar voor "Inbound Routes".
Onder het kopje "Add incoming route" kun je 4 dingen instellen. De description is voor je eigen herkenning. In deze handleiding gaan we er van uit dat het "inkomend" is. Wanneer je meerdere inboud routes aanmaakt dan is het uiteraard verstandig om een betere omschrijving te kiezen. Achter het DID nummer vul je het nummer in waarop je bereikbaar bent. Het zal hier gaan om het telefoonnummer dat je hebt gekregen van Limesco in internationale vorm. Als je 0612345678 hebt gekregen dan vul je hier 31612345678 in. Het CallerID bevat het nummer van de afzender. Voor deze handleiding laten we dit veld leeg zodat alle bellers worden doorgezet naar je extensie. CID priority Route hebben we voor deze handleiding niet nodig, wanneer je complexere routeringen wil maken op basis van afzender nummers dan kan het handig zijn om deze optie aan te vinken.
Scroll nu helemaal naar beneden tot het kopje "Set Destination" Wanneer je klikt op de dropdownbox "== choose one ==" dan kun je zien waar de inkomende gesprekken die voldoen aan de voorwaarden heen gestuurd moeten worden. Kies hier voor "extensions" Er komt nu een dropdownbox naast de bestaande dropdownbox waarin je kunt kiezen uit al je extensies. We hebben nog maar 1 extensie aangemaakt, dus je kunt alleen maar kiezen voor deze ene extensie. Klik daarna op submit.
Nadat je op de rode "Apply config" knop hebt gedrukt kun je jezelf bellen. Wanneer je met een andere telefoon het nummer gaat bellen naar het nummer dat je van Limesco hebt gekregen dan zal dit gesprek vanaf jouw provider, naar t-mobile en dan naar speakup gaan. Speakup biedt het gesprek aan op jouw PBX en de incoming route bepaalt dat inkomende oproepen naar jouw nummer moeten worden doorgezet naar jouw extensie. Je mobiel met je Limesco sim kan nu gesprekken ontvangen.
Outbound Routes
Waarschijnlijk wil je zelf ook kunnen bellen met je mobiel, hiervoor is een outbound route nodig. Ga hiervoor naar het menu "Connectivity" gevolgd door "outbound route"
Het scherm dat je nu krijgt lijkt behoorlijk op het trunk scherm. In dit scherm zorg je er voor dat geplaatste oproepen die niet in je eigen centrale afgeleverd kunnen worden naar de buitenwereld worden gestuurd. Je kunt meerdere uitgaande routes opgeven, waarbij het ingevoerde dial pattern er voor zorgt dat een gesprek wel of niet gebruik maakt van deze route. Vervolgens kun je een afzender nummer koppelen aan deze route en vervolgens lever je het gesprek af bij een trunk. In een iets complexere configuratie kun je hiermee dus instellen dat oproepen vanaf een extensie een 06 nummer meegestuurd krijgen wanneer je belt naar een 06 nummer en dat ze je vaste nummer meegestuurd krijgen wanneer je belt naar een vast nummer. Dit terwijl je de oproep plaatst vanaf hetzelfde toestel. Ook kun je meerdere abonnementen of prepaid constructies afsluiten bij trunk / did providers zodat je meerdere uitgaande routes hebt waarbij je afhankelijk van het gebelde nummer dit laat routeren via de goedkoopste provider. Provider A kan 1 euro per minuut reken voor bellen naar mobiel en 2 euro voor bellen naar vast, terwijl provider B 2 euro rekent voor bellen naar mobiel en 1 euro voor bellen naar vast. Je gaat dan geplaatste oproepen naar een mobiel nummer routeren via provider A en geplaatste oproepen naar een vast nummer routeren via provider B.
Deze handleiding gaat uit van een simpele oplossing, namelijk uitgaande gesprekken gaan via dezelfde trunk als de inkomende gesprekken, dus via Limesco/Speakup.
De "Route Name" kun je zelf bedenken, wij noemen hem hier ‘uitgaand’, het "Route CID" wordt je telefoonnummer, dus ‘31612345678’. De overige route settings laten we staan zoals ze default zijn.
In het dial pattern zetten we een ‘.’ bij match pattern. Dit is niet de meest elegante oplossing, maar wel de meest doeltreffende. De ‘.’ betekend namelijk ‘alles’. Wanneer je deze PBX alleen maar gaat gebruiken om 1 telefoon (extensie) met 1 nummer (did) te verbinden met 1 provider (trunk) dan is de ‘.’ een oplossing die geen problemen gaat geven. Zodra je ergens meer dan 1 van hebt dan moet je de ‘.’ vermijden om rare onverklaarbare problemen te voorkomen.
Als je naar beneden scrolled dan kun je bij "Trunk Sequence for Matches Routes" opgeven naar welke trunk dit gesprek moeten worden gerouteerd wanneer het gesprek voldoet aan de "Dial Pattern".
Hoewel we hierboven hebben vermeld dat je niet een ‘.’ moet gebruiken bij meerdere trunks gaan we dat hier toch stiekem doen. De gesprekken komen van en gaan naar dezelfde omgeving, dus de route maakt niet heel veel uit. Dankzij de beperking in FreePBX zijn we genoodzaakt om 2 trunks aan te maken ,terwijl dit in de “kale” Asterisk in 1 trunk was gebeurd. Het resultaat achter de schermen is praktisch gelijk en zal niet voor problemen zorgen.
Kies bij 0 de eerste trunk en bij 1 de tweede trunk. Klik vervolgens op submit. Je krijgt weer de rode "Apply Config" knop boven in het scherm, klik hier op om de laatste wijzigingen te actualiseren.
Het eindresultaat
Ga nu via het menu "Reports" naar "FreePBX System Status" om onderstaand scherm te krijgen :
Als het goed is heb je 1 ip phone online, 2 ip trunks online, en 2 ip trunks geregistreerd. Je kunt nu bellen en gebeld worden en al het telefoon verkeer gaat door je eigen telefoon centrale.
Als er iets niet werkt of iets werkt anders dan je had verwacht dan kun je je het beste maar even melden op het IRC kanaal. Er is eigenlijk altijd wel iemand aanwezig die je op weg kan helpen. Wil je meer functionaliteit uit je FreePBX installatie? Dan zijn er 2 opties. De ene is zelf aan de gang gaan en lekker prutsen en hulp vragen op IRC, of wachten tot het volgende stappenplan is geschreven met extra functionaliteit.