Archivio

Archive for giugno 2012

FreeTDM: attacchiamo Freeswitch alla vecchia telefonia

12/06/2012 1 commento

Per chi non lo sapesse Sangoma, nota produttrice di schede per connettere i server VoIP alla rete telefonica tradizionale, è uno dei più grossi sponsor di Freeswitch (abbreviato FS), ed è per questo che uno dei suoi tecnici ha sviluppato il modulo TDM di FS, FreeTDM appunto. Di conseguenza le loro schede sono le più indicate, per chi avesse l’esigenza di sviluppare, ad esempio, un centralino connesso ad un flusso primario.

Se però, come me, siete degli ex sviluppatori Asterisk, per lo stesso principio, vi ritroverete per il laboratorio una scheda Digium; siccome non costano un soldo, vi domanderete: “posso usarla con FS?” La risposta è “sì” ma l’operazione non è proprio scontata.

Step 1. La parte più semplice

La parte più semplice è quella che già conoscevamo: installare libpri e dahdi, esattamente come si fa su Asterisk. Alla fine della compilazione si fa partire il servizio (“service dahdi start” in Debian), si fa generare i files di configurazione e si verifica il tutto:

root@pbx:~#dahdi_genconf
root@pbx:~#dahdi_cfg

root@pbx:~#lsdahdi

### Span 1: TE4/0/1 “T4XXP (PCI) Card 0 Span 1” (MASTER) HDB3/CCS/CRC4 ClockSource
1 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
2 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
3 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
4 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
5 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
6 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
7 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
8 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
9 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
10 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
11 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
12 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
13 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
14 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
15 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
16 PRI HDLCFCS (In use) (EC: VPMOCT128 – INACTIVE)
17 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
18 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
19 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
20 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
21 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
22 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
23 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
24 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
25 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
26 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
27 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
28 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
29 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
30 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)
31 PRI Clear (In use) (EC: VPMOCT128 – INACTIVE)

[…]

In verità non è stata così facile come faccio sembrare. Ho avuto la fortuna di subire un bug noto a tutti eccetto che a me, di incompatibilità tra i nuovi drivers e una scheda un po’ vecchiotta che avevo. Una giornata di lavoro per scoprire che avrei dovuto rimandarla indietro quando era l’ora!

Step 2.  La compilazione di ftmod_libpri

Libpri rimane ancora la libreria più affidabile per le Digium. Per integrarla in FS è necessario portarsi nell’apposita directory dei file sorgente /…/freeswitch/libs/freetdm

-) ./configure –with-libpri –prefix=/usr/local/freeswitch

-) make

-) make install

Al termine, per sicurezza, controllate che ftmod_libpri.laftmod_libpri.so siano apparsi sotto /usr/local/freeswitch/mod.

Step 3. Le tre conf di FS

In FS i files da modificare sono tre.

Il primo è conf/zt.conf che ho lasciato come di default:

[defaults]
codec_ms => 20
wink_ms => 150
flash_ms => 750
echo_cancel_level => 64
rxgain => 0.0
txgain => 0.0

Il secondo è conf/freetdm.conf che ho configurato per un solo primario (nonostante la scheda avesso 4 span) :

[general]
cpu_monitor => no
cpu_monitoring_interval => 1000
cpu_set_alarm_threshold => 80
cpu_reset_alarm_threshold => 70
cpu_alarm_action => warn
debugdtmf_directory=/usr/local/freeswitch/log

[span zt myPRI_1]
trunk_type => E1
group => e1group
b-channel => 1-15
d-channel => 16
b-channel => 17-31

Il terzo costituisce il legame tra FS e i driver propri dell’hardware: conf/autoload_configs/freetdm.conf.xml. Di tutti quelli elencati fin’ora è l’unico in formato XML:

<configuration name=”freetdm.conf” description=”FreeTDM Configuration”>

<settings>
<param name=”debug” value=”0″/>
</settings>

<libpri_spans>
<span name=”myPRI_1″>
<param name=”node” value=”cpe”/>
<param name=”switch” value=”euroisdn”/>
<param name=”opts” value=”omit_redirecting_number”/>
<param name=”dp” value=”unknown”/>
<param name=”debug” value=”none”/>
<param name=”dialplan” value=”XML”/>
<param name=”context” value=”public”/>
</span>

</libpri_spans>
</configuration>

Notare che il campo “span name” è pari a myPRI_1 : questo valore deve coincidere con il nome della span zt nel file freetdm.conf!

Step.4 Telefonare

A questo punto ho registrato un softphone a FS come interno 1000 nel dominio di default. Solo per fare le prove ho aggiunto sotto conf/dialplan/public/ il file 01_inbound_TDM.xml  così fatto:

<include>
<extension name=”public_tdm”>
<condition field=”destination_number” expression=”^012345678$”>
<action application=”transfer” data=”1000 XML default”/>
</condition>
</extension>
</include>

Dove 012345678 è il numero attestato sul flusso primario collegato al server tramite scheda Digium.

Poi su conf/dialplan/default.xml ho aggiunto questa extension:

<extension name=”outgoing-pri”>
<condition field=”destination_number” expression=”^61000$”>
<action application=”bridge” data=”freetdm/1/a/300112233″/>
</condition>
</extension>

Dove 300112233 è il numero del mio cellulare (non è vero , ovviamente!).

A questo punto digitando 61000 dal softphone ho parlato con il cellulare, mentre chiamando 012345678 mi è squillato il softphone e ho potuto ugualmente parlare.

Conclusioni

Ripeto la frase con cui ho iniziato: se dovete comprare una card nuova, scegliete Sangoma! Per motivi di spazio non vi posso documentare le mille difficoltà (stupidaggini) in cui sono incappato, anche grazie alla poca documentazione per le Digium. Commercialmente è giusto così, tecnologicamente parlando un po’ meno. Alla fine però il buon Freeswitch esce vincitore anche da questa vicenda, facendosi trovare già maturo alle interconnessioni TDM!

Annunci
Categorie:Voip:Freeswitch