
De Synology DiskStation als VOIP server? Dat is ook mogelijk! Een VOIP server is erg handig voor thuis en kantoor. Eenvoudig om onderling te bellen, voicemail, bellen via de goedkoopste provider, etc. Je hebt de telefonie in eigen hand. Er wordt gebruik gemaakt van software die ik al jaren gebruik, namelijk Asterisk. Deze zit als beta toegevoegd vanaf DSM versie 4.0 volgens mij. En de Asterisk versie is ook erg nieuw, de SVN versie. De ontwikkel versie dus. Dat is zeker wel BETA te noemen, maar ik ben geen onoverkomelijke problemen tegengekomen. Aan het einde van het artikel staan oplossingen voor de problemen die ik ben tegengekomen.
Er is zeer veel mogelijk met Asterisk, in dit artikel probeer ik een goed werkende basis neer te zetten. Dit zal voor de meeste mensen voldoende zijn.
In het onderstaande plaatje heb ik de opzet van het netwerk getekend (gedeeltelijk geleend van voip-info.org).
De Synology DiskStation fungeert als een IP telefooncentrale, waaraan een IP telefoon of een ATA-adapter kan verbinden. Met de ATA-adapter is het mogelijk om een normale telefoon aan te sluiten, zoals een DECT telefoon. Er zijn ook ATA-adapters met 2 of 4 lijnen, zoals de GrandStream HT-704. Dan kun je direct met 4 telefoonlijnen naar buiten bellen. Het aantal binnenkomende lijnen is ongelimiteerd!
Om naar buiten te bellen is een VOIP/SIP provider nodig. Zelf heb ik mijn vaste telefoonnr naar BudgetPhone geporteerd (kost €10,-/jr) en heb een prepaid tegoed hierop. Omdat we nogal veel internationaal op vaste lijnen binnen EU bellen, heb ik als 2e provider Poivy. Bij Poivy is bellen binnen NL gratis (Freedays) en naar mobiel erg goedkoop. Kijk voor alle voorwaarden bij deze providers. Poivy behoort tot moederbedrijf Delmont (voorheen Betamax GMBH) en bevat meerdere diensten. Hier is een overzicht van alle Delmont providers/diensten met prijzen: Delmont (voorheen Betamax). In dit artikel ga ik uit van BudgetPhone & Poivy
Doe het volgende om de Asterisk server te installeren:
Er zijn nu 2 mogelijkheden voor het configureren van Asterisk. Het is mogelijk om te configureren via:
Hieronder is Asterisk GUI beschreven, en handmatig configureren is hier beschreven: Gids: Asterisk configureren.
Voor het handmatig configureren is wel meer Linux handigheid nodig. Via Asterisk GUI lijkt de eenvoudigste oplossing, maar kan nog wel eens kuren vertonen. De GUI is niet foutvrij. Met de kennis van handmatig configureren, geeft een robuuster resultaat en ook meer vrijheid in implementatie keuzes. Kortom, werk aan de winkel. Als je denkt dat het configureren een eitje is, dan heb je het mis. Ik raad aan om te verdiepen in de materie en voor de handmatige configuratie te gaan.
Als Asterisk geïnstalleerd is, dan draait de asterisk als een service. Tevens is er een GUI voor de configuratie geïnstalleerd. Eigenlijk heb ik de configuratie altijd gedaan via de .conf file (deze staan in: /etc/asterisk/). Dit is lastig, zeker omdat er weinig documentatie beschikbaar is. Maar via de GUI is het goed te doen. Start de Asterisk GUI:
Het configureren moet gelaagd gebeuren. Anders mis je instellingen die je in een later proces nodig hebt. We beginnen dus bij de bodem, de Trunks.
De trunks zijn de lijnen die je met de buitenwereld verbinden, om te kunnen bellen naar anderen.
Doe het volgende om de trunk aan te maken voor BudgetPhone:
Voor BudgetPhone nu ook nog wat extra instellingen:
Doe het volgende om de trunk aan te maken voor Poivy:
Met de uitgaande bel regels kunnen we bepalen welke uitgaande lijn (trunk/provider) wordt gekozen bij welk telefoon nr:
De volgende tabel bevat de belregels, die je naar eigen wens kunt gebruiken. De Failover Trunk gebruik ik alleen bij NL_VastEnMobiel.
Calling Rule Pattern Trunk Failover Trunk| NL_VastEnMobiel | _0XXXXXXXXX | Poivy | BudgetPhone |
| Gemeente | _14XXX | BudgetPhone | _None Selected_ |
| 0800en0900nrs | _0[89]00XX. | BudgetPhone | _None Selected_ |
| SaldoBudgetPhone | _444 | BudgetPhone | _None Selected_ |
| VoicemailBudgetPhone | _555 | BudgetPhone | _None Selected_ |
| CZ_VastEnMobiel | _0042X. | Poivy | _None Selected_ |
Het DialPlan bevat één of meerdere Calling Rules. In onze opzet is er maar één DialPlan, welke alle Calling Rules bevat.
Nu gaan we voor elke telefoon een User aanmaken. Deze bevat een intern telefoon nr, wachtwoord, welk dialplan wordt gebruikt, etc.
Om een user aan te maken, doe het volgende:
Herhaal dit voor het aantal benodigde telefoons.
De Ring Group geeft aan welke telefoons (Users) gaan rinkelen als er gebeld wordt.
Doe het volgende om een ring group aan te maken:
Met de Incoming Calling Rules kunnen bepaalde (groepen) telefoonnr’s gerouteerd/gefilterd worden per trunk.
In deze opzet wordt het eenvoudig, alle binnenkomende telefoonnr’s worden afgevangen en doorgestuurd naar de RingGroup.
Doe het volgende om dit te doen:
Als je bij de users, de voicemail aangezet hebt. En je wilt deze ook versturen via email, dan is het nodig dat je IPKG en msmtp installeert Hoe dit te doen staat hier: Synology DiskStation functies uitbreiden met IPKG.
Verder moet ook deze mail client in voicemail.conf gezet worden:
$ vi /etc/asterisk/voicemail.conf
Zet een ’;’ teken voor sendmail en voeg een nieuwe regel met msmtp in:
;mailcmd=/usr/sbin/sendmail -t
mailcmd=/opt/bin/msmtp -t
Ook moet het formaat van de opgestuurde voicemail file, ingesteld worden. Als je deze op wav insteld, is dit erg universeel af te spelen. Wav was van deze formaten de enige formaat wat ik binnen Android kon afspelen.
;format=g723sf|wav49|wav
format = wav
Je kunt nu op Apply Changes drukken in de Asterisk GUI, waardoor de Asterisk een reload command krijgt. Maar het zal waarschijnlijk niet werken. In Asterisk GUI zit een foutje, waardoor externsions.conf een fout geeft bij een binnenkomend gesprek.
Om dit op te lossen, doe het volgende:
Later kun je dezelfde knop weer drukken om de advance options te verwijderen.
In het System Status overzicht staan de Trunks als Unregistered, maar deze status werkt niet. Als je Registered bent, dan is het mogelijk om te bellen. Ook kun je bijvoorbeeld bij BudgetPhone bekijken of je geregistreerd bent op dit moment.
Nu kun je in de Asterisk GUI op Apply Changes drukken. De Asterisk service krijgt een “reload” commando.
We zijn nu klaar om de telefoon(s) te configureren om aan de VOIP server te connecten.
Zoals ik in de basis installatie al gezegd had, moet je oppassen dat een nieuwe service niet de harddisks laten draaien. Tot nu toe gingen ze netjes in spindown, maar met de asterisk service blijven ze actief. Er kunnen vele mogelijkheden zijn, zie hier: Tips om de harddisk in spindown te laten gaan en hier: Spindown issues. Maar als je deze handleiding hebt gevolgd en niets extra hebt gedaan, dan moet je de harddisk met noatime remounten en de Asterisk database (astdb) in op een ramdisk zetten. Dan zullen ze weer netjes in spindown gaan.
Standaard wordt in Linux op de harddisk per file bijgehouden wanneer deze benaderd wordt (accesstime). Ook als deze files gebufferd zijn in RAM. Door de harddisks met noatime te remounten, wordt dit niet meer bijgehouden. Het geeft geen problemen om dit te doen. In het geval dat je IPKG Optware hebt geïnstalleerd, volg dan deze tip van Synology: Noatime, anders doe je het volgende:
Open met Putty een SSH of telnet verbinding met je server, en voer het volgende commando uit:
$ vi /volume1/@appstore/Asterisk/etc/init.d/asterisk
En voeg dan de twee onderstaande mounts in, tussen de regel met ‘$CONFIGFILE’ en ‘case “$1”.
[ -r $CONFIGFILE ] && . $CONFIGFILE
# remount with noatime
mount -o remount,noatime /
mount -o remount,noatime /volume1
case "$1" in
start)
In de Asterisk database (astdb) wordt onder andere bijgehouden welke clients er zijn ingelogd, etc. Het geeft niet als deze database bij een herstart verloren gaat, hij is zeer klein en wordt opnieuw aangemaakt. Dus kunnen we de database op een RAM disk zetten. Dit is bij de Synology DiskStation “/tmp”. Open nu in vi de asterisk.conf file:
$ vi /etc/asterisk/asterisk.conf
Maak een kopie van de astdbdir definitie regel (vi commando: yy) en zet er een ’;’ voor. Wijzig nu de nieuwe regel in “/tmp”. Het ziet er dan zo uit:
;astdbdir => /var/packages/Asterisk/target/var/lib/asterisk
astdbdir => /tmp
Sla nu de wijziging op, en herstart via de webinterface (poort: 5000) de Synology DiskStation.
Standaard logt Asterisk naar de file /var/log/asterisk/messages, bij de Synology DiskStation is dit naar: /volume1/@appstore/Asterisk/var/log/asterisk/messages. Hierin worden foutmeldingen, waarschuwingen en notificaties geschreven, waardoor de harddisk zo nu en dan weer moet opstarten.
Dit is eenvoudig uit te schakelen door weer met SSH in te loggen en het volgende commando uit te voeren:
$ vi /etc/asterisk/logger.conf
Zet nu een ’;’ voor de regel “messages =>”. Dan komt het er als volgt uit te zien:
;messages => notice,warning,error
Alle foutmeldingen zijn nog steeds te zien op de CLI, hier zorgt de regel met “console =>” voor.
Het ligt er een beetje aan welke telefoon of VOIP adapter gebruikt, maar de volgende waarden moet je gebruiken:
Zo kun je voor elke gebruiker een VOIP client instellen.
Op deze site staan 2 artikelen over het aansluiten en configureren van de GrandStream HT-70X, namelijk:
De CLI interface is ook gewoon te bereiken via SSH:
/volume1/@appstore/Asterisk/sbin/asterisk -r
Hier is een overzicht van alle CLI commando’s: Asterisk CLI
Artikelen die hierna ook goed zijn om te lezen:
Dit artikel behoort tot de gids om de Synology DiskStation. Dit zijn de artikelen behorende tot deze gids: