FreeSWITCH/Instellen
Deze pagina legt uit hoe je het DIY pakket kunt gebruiken in combinatie met FreeSWITCH. Kijk op hun wiki voor een installation guide en/of getting started guide
Momenteel kan de pagina wat rommelig overkomen, maar er zou voldoende informatie tussen moeten staan om het een en ander aan de praat te krijgen. Er is ook een algemene uitleg van de infrastructuur beschikbaar die niet specifiek op FreeSWITCH ingaat. Er kunnen met het kopieren van de informatie aanpassen van persoonlijke gegevens wat foutjes ontstaan zijn, en ten tijde van deze howto schrijven kon ik (Xopr) de handset niet meer testen.
Login op deze wiki en pas eventueel aan waar nodig.
Eventueel overleg op de discussiepagina.
Inhoud
GSM handset instellen
FreeSWITCH instellen voor je mobiele nummer
Dit is de directory-gebruiker waar SpeakUp mee naar je toe verbindt om gesprekken van en naar je GSM te routeren. Als het goed is, heb je het gebruikers id en wachtwoord achtergelaten bij Limesco.
freeswitch/conf/directory/default/316xxxxxxxx.xml
<include> <user id="316xxxxxxxx"> <params> <param name="password" value="WACHTWOORD"/> <param name="vm-password" value="VOICEMAIL_PIN"/> </params> <variables> <variable name="toll_allow" value="domestic,international,local"/> <variable name="accountcode" value="316xxxxxxxx"/> <variable name="user_context" value="default"/> <variable name="effective_caller_id_name" value="NAAM"/> <variable name="effective_caller_id_number" value="316xxxxxxxx"/> <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/> <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/> <variable name="callgroup" value="techsupport"/> </variables> </user> </include>
Deze gebruiker zal binnen het dialplan in de context 'default' uitkomen; hier staan standaard de meeste (demo) extensies in en wordt gezien als een vertrouwelijke context (extensies in deze mogen vaak gebruik maken van gateways)
In XML kan een eventueel quoteje gecodeerd worden als: "
Bij mij (Wim) stuurde SpeakUp verschillende namen voor de sip user en authentication user. Voor beide heb ik een profile aangemaakt onder conf/directory/default/, en in conf/sip_profiles/internal.xml toegestaan dat bij registratie beide verschillend zijn door inbound-reg-force-matching-username op false te zetten:
<!-- Force the user and auth-user to match. --> <param name="inbound-reg-force-matching-username" value="false"/>
Om erachter te komen wat de username is die SpeakUp gebruikt, kun je in dezelfde file log-auth-failures op true zetten en vervolgens de logfile in de gaten houden.
SpeakUp trunk/gateway instellen
De uplink via SpeakUp instellen
Dit is de gateway van SpeakUp voor verbinding naar het publieke telefoonnet (POTS).
freeswitch/conf/sip_profiles/external/speakup.nl.xml
<include> <gateway name="speakup"> <param name="username" value="GEBRUIKERSNAAM"/> <param name="realm" value="alg.sip.speakup.nl"/> <param name="password" value="WACHTWOORD"/> <!-- inkomende gesprekken naar deze extensie in het dialplan (public context) --> <param name="extension" value="316zzzzzzzz"/> <!-- zet dit onder de 120 seconden als de server achter NAT zit om zo een de UDP 'state' te onthouden op de router --> <param name="expire-seconds" value="60"/> <!-- registreer voor inkomende gesprekken te ontvangen momenteel nog niet kunnen testen --> <param name="register" value="true"/> <param name="retry-seconds" value="30"/> <!-- gebruik callerid van een op te zetten gesprek in het 'from' veld voor outbound gesprekken via deze gateway --> <!-- gebruik het 'from' veld van de initieerder als callerid: dit heb je nodig in combinatie met 'origination_caller_id_number' zodat Speakup jouw outbound gesprekken toelaat --> <param name="caller-id-in-from" value="true"/> </gateway> </include>
Om in de public context de te bellen extensie toe te laten, moet nog een kleine toevoeging gemaakt worden in:
freeswitch/conf/dialplan/public/00_inbound_did.xml
<extension name="public_did"> <condition field="destination_number" expression="^(316zzzzzzzz)$"> <action application="set" data="domain_name=$${domain}"/> <action application="transfer" data="316xxxxxxxx XML default"/> </condition> </extension>
Tenslotte moet in het dialplan nog een extensie toegevoegd worden zodat gesprekken van de GSM gerouteerd worden naar POTS in: freeswitch/conf/dialplan/default.xml
<extension name="Speakup trunk"> <condition field="destination_number" expression="^(0|0031|\+31|31)([1-8]\d{8})$"> <action application="bridge" data="{origination_caller_id_number=316xxxxxxxx}sofia/gateway/speakup/31$2"/> </condition> </extension>
Testen
Je kunt de FreeSWITCH server na elke wijziging afsluiten en opnieuw opstarten, maar het is praktischer om onderdelen te herladen tijdens het draaien van de server.
Start de command line interface `freeswitch/bin/fs_cli`.
Druk op F6 of typ reloadxml om de nieuwe configuratie in te laden.
Om te kijken of de inkomende registratie van speakup gelukt is, typ een van de volgende commando's:
freeswitch@internal> sofia status profile internal reg Registrations: ================================================================================================= Call-ID: 2f0e782e1633ce5c-9729@193.169.138.207 User: 316xxxxxxxx@192.168.x.x Contact: "user" <sip:316yyyyyyyy@193.169.138.207:8044> Agent: Mobile-On-PBX Status: Registered(UDP)(unknown) EXP(2012-11-08 21:38:23) EXPSECS(159) Host: freeswitch IP: 193.169.138.207 Port: 8044 Auth-User: 316xxxxxxxx Auth-Realm: mijndomein.tld MWI-Account: 316xxxxxxxx@192.168.x.x Total items returned: 1 =================================================================================================
of voor de wat nieuwere versies van FreeSWITCH:
freeswitch@internal> show registrations as xml <result row_count="1"> <row row_id="1"> <reg_user>316xxxxxxxx</reg_user> <realm>192.168.x.x</realm> <token>2f0e782e16343069-9729@193.169.138.207</token> <url>sofia/internal/sip:316yyyyyyyy@193.169.138.207:8044</url> <expires>1352406918</expires> <network_ip>193.169.138.207</network_ip> <network_port>8044</network_port> <network_proto>udp</network_proto> <hostname>freeswitch</hostname> <metadata></metadata> </row> </result>
Als de gateway al opgestart was, moet deze gestopt worden om er zeker van te zijn dat de nieuwe instellingen geladen worden.
om de gateway af te sluiten, typ:
sofia profile external killgw speakup
in de console zal een melding verschijnen zoiets als: "UN-Registering speakup", gevolgd door een "Removed gateway speakup"
om vervolgens de nieuwe (gateway) settings op te pikken, typ:
sofia profile external rescan
(merk op dat op de achtergrond automatisch eerst een reloadxml gebeurd, iets wat je bij aanpassingen op het dialplan zelf moet typen)
In de log zal komen te staan: "Added gateway 'speakup' to profile 'external'" gevolgd door "Registering speakup".
om te verifieren dat de gateway actief is, druk op F6 of typ sofia status in het tabelletje zal het volgende tussen staan:
freeswitch@internal> sofia status ... external::speakup gateway sip:GEBRUIKERSNAAM@alg.sip.speakup.nl REGED
Als beide systemen in de lucht zijn, kun je vanuit de console een gesprek initieren om alle combinaties te testen.
GSM naar FS
Toets een nummer in op je GSM (niet in de 1 of 9 reeks) bijvoorbeeld: 5000, de demo IVR. Probeer ook de trunk extensie te gebruiken en bel een vast/mobiel nummer. (merk op dat de 9 niet voorkomt in de reguliere expressie zoals bovenaan ingetypt, dus 0900 nummers zullen met deze howto niet gerouteerd worden.
FS naar GSM
Bel de handset en speel het tetris deuntje af
originate user/316xxxxxxxx@mijndomein.tld 9198
pas het inkomende nummer aan op het display van de GSM:
originate {origination_caller_id_number=1189998819991197}user/316xxxxxxxx@mijndomein.tld 9198
POTS naar FS
Nog niet kunnen testen..
FS naar POTS
Bel ACKspace en speel het tetris deuntje af
originate {origination_caller_id_number=316xxxxxxxx}sofia/gateway/speakup/31457112345 9198
of
originate {origination_caller_id_number=316yyyyyyyy}sofia/gateway/speakup/31457112345 9198
Opmerkingen
- 316xxxxxxxx, 316yyyyyyyy en 316zzzzzzzz zijn voor het gemak hetzelfde nummer, maar zijn niet strikt gebonden aan elkaar. Zo is:
- 316xxxxxxxx de gekozen gebruikersnaam om de Speakup extensie aan te laten melden: gelijk aan het echte nummer van de GSM
- 316yyyyyyyy geeft Speakup mee als 'from' adres (nummerportering nog niet voltooid)
- 316zzzzzzzz is de gekozen extensie in de 'public' context die uiteindelijk naar 316xxxxxxxx in de 'default' context getransferred wordt.
- De term extension is geen telefoonextensie: hard- en softphones zijn 'users' in een 'directory'. Extension refereert naar een te bellen nummer (al dan niet uitgedrukt in reguliere expressie) binnen een bepaalde context.
- Context is een fysieke scheiding tussen telefoonverkeer (default wordt gebruikt voor 'interne' gebruikers, public voor gateways om die aldaar te transferren naar de juiste extensie in de juiste context
- Transfer is niet het doorverbinden van een gesprek (audio), maar het doorgeven van de afhandeling (signalling) van een inkomend gesprek. Doorschakelen wordt gedaan door een gesprek de 'bridgen' naar een andere extensie.
- Je wilt vermoedelijk het standaard-nummer van FreeSWITCH voicemail (4000) wijzigen, aangezien deze naar T-mobile gerouteerd wordt (info hier)
- Momenteel is het nog niet gelukt om anoniem te bellen. Ik heb de volgende parameters geprobeerd zonder succes:
- sip_cid_type = rpid, pid of none
- origination_caller_id_name
- origination_privacy = hide_name, hide_number en/of screen
- effective_caller_name
- effective_caller_id
Foutzoeken
Wees er zeker van dat de laatste nieuwe xml ingeladen is: druk op F6 of typ:
reloadxml
laat alle dialplan debug informatie zien in de console (standaard al aan in fs_cli): druk op F8 of typ:
/log debug
laat (alle) SIP berichten zien in de console:
sofia global siptrace on
Herstart de speakup gateway in de externe context
sofia profile external killgw speakup sofia profile external rescan
Herstart een heel sofia profiel (zou niet nodig moeten zijn)
sofia profile external restart
Herstart sofia (categorie kanon op mug)
reload mod_sofia