FreeSWITCH/Instellen

Uit Limesco Wiki
Versie door Patrick Uiterwijk (overleg | bijdragen) op 3 mei 2014 om 14:18 (Speakup trunk regex bijgewerkt. de + was ongeldig (is een repeat), en soms stuurt SpeakUp ook alleen 31, dus zonder +)
Ga naar: navigatie, zoeken

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.

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: &quot;


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: 4000, de voicemailbox. 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