// Stai leggendo ...

Asterisk

Creiamo uno Skype Gateway: integrare Skype ed Asterisk

Skype è il client voip più diffuso al mondo, Asterisk il centralino più utilizzato in ambito soho e professionale: cercare di farli convivere sulla stessa macchina è un “aspirazione” quasi naturale anche se non semplicissima da realizzare.
Tutta colpa della natura “closed source” del software “in azzurro” e dello scarso sviluppo della sua “filiazione” linux. Fortunatamente però non tutto è perduto ….


Chiunque si sia anche solo avvicinato al voip avrà certamente almeno sentito parlare di Asterisk e Skype, vere e proprie “rock star” incontrastate del settore, le uniche in grado di non risentire di alcuna crisi o calo di interesse: se da un lato il client voip è quello maggiormente diffuso in ambito domestico, il pbx “made in Digium” è il “re” degli applicativi professionali, ormai capace di trovare posto in qualsiasi soluzione di fonia rivolta alle imprese.
Appare dunque evidente come riuscire ad unire le funzionalità dei 2 software sia qualcosa di “esplosivo” vista l’elevata platea di soggetti potenzialmente interessati (pensate solo alla possibilità di poter contattare gratuitamente il servizio clienti o l’assistenza dell’azienda via Skype).

Purtroppo però fino alla recente commercializzazione di Skype for Asterisk, questo non era di facile realizzazione stante la natura closed sorce del client e lo scarso interesse a svilupparne costantemente l’applicativo Linux.
E’ però stato possibile sin dal subito “aggirare” tali limitazioni andando a sfruttare le API pubbliche: grazie a progetti come SiPToSIS è infatti possibile letteralmente “unire” Skype al nostro centralino pbx andandolo a gestire come un nuovo trunk sip.

Purtroppo questa soluzione “casareccia” comporta l’impiego di maggiori risorse hardware rispetto a quella sviluppata da Digium: il client nativo necessita infatti di un ambiente grafico (Xorg) in esecuzione per poter funzionare, inoltre essendo sviluppato solo per piattaforme 386 e AMD non può essere integrato in soluzioni embedded (vedi router); mentre permette di utilizzare anche account “personali” (utile per quanti si vedrebbero costretti a “spostare” tutta la propria rete di contatti su di un nuovo account Skype business).

PREREQUISITI:

In primo luogo passiamo ad installare tutti i pacchetti necessari al corretto funzionamento di Skype e del gateway “java based” SipToSis.
Ci affideremo ad una distribuzione linux come FreePbx: la più diffusa in ambiente soho e capace di unire un’ intuitiva interfaccia grafica per Asterisk ad un sistema basato su Centos.
Una volta avviata la macchina ed autenticatici:

yum update
yum install xorg-x11-server-Xvfb alsa-lib qt4 libXScrnSaver.i386 xterm libXv.so.1
yum groupinstall "X Window System"

Installiamo quindi il JDK Java necessario per il funzionamento del “bridge” scegliendo come piattaforma Linux e scaricando il pacchetto jdk-6u20-linux-i586-rpm.bin (personalmente sono ricorso al browser testuale elinks).
Dopo aver copiato il file in /root digitiamo:

chmod 755 ./jdk-6u20-linux-i586-rpm.bin
./jdk-6u20-linux-i586-rpm.bin
rm -rf /usr/bin/java
ln -s /usr/java/jdk1.6.0_20/bin/java /usr/bin/java

DOWNLOAD SKYPE e SISTOSIP:

Successivamente passiamo ad installare Skype e SISToSIP:

cd /opt
wget http://www.skype.com/go/getskype-linux-beta-static
tar jxvf skype*
ln -s skype_static-2.1.0.81 skype
ln -s /opt/skype /usr/share/skype
ln -s /opt/skype/skype /usr/bin/skype
cd /root
wget http://blog.liberailvoip.it/wp-content/uploads/siptosis.zip
unzip ./siptosis*
cd ./siptosis
chmod +x SipToSis_linux

CONFIGURAZIONE:

A questo punto non resta che avviare il “bridge” e configurare l’account Skype:

xinit
skype &

Inserite i parametri relativi al vostro account (username e password) e SPUNTATE la casella EFFETTUA L’ACCESSO ALL’AVVIO DI SKYPE.
Controllate nelle opzioni del client che sia selezionata la scheda audio e l’ ingresso microfonico corretti.Eventualmente effettuate una chiamata di prova per verificare che tutto funzioni.
In caso di mancata riproduzione dell’audio ricordatevi di controllare i parametri della periferica (devono essere attivi i canali PCM,MASTER e MIC -potrebbero variare a seconda dell’hardware-):

alsamixer

Quindi digitate:

cd /root/siptosis
./SipToSis_linux &

In Skype comparirà una notifica che vi avverte che un’applicazione esterna tenta di accedere al client; cliccate YES e SALVA QUESTA OPZIONE PER FUTURE CONNESSIONI.

Qualora avviato Skype nel terminale dovessimo visualizzare una serie di errori riferibili ad ALSA sarà necessario andare ad installarne una versione più recente da un repository terzo.
Chiudiamo quindi Skype e digitiamo exit in modo da terminare l’instanza del server grafico. A questo punto digitiamo:

rpm -Uvh http://elrepo.org/elrepo-release-0.1-1.el5.elrepo.noarch.rpm
rpm --import http://elrepo.org/RPM-GPG-KEY-elrepo.org
yum --enablerepo=elrepo-testing install kmod-alsa

Quindi riavviamo il server in modo da rendere permanenti le modifiche apportate e ricaricare le necessarie librerie.

Se invece il nostro server è privo di scheda audio allora dovremo caricare il driver snd-dummy e selezionare questo come periferica audio nelle opzioni di Skype. Apriamo il file /etc/rc.local

nano /etc/rc.local

inserendo prima della riga exit0 quanto segue:

/sbin/modprobe snd-dummy

CONFIGURAZIONE FREEPBX:

Per prima cosa creiamo il nuovo trunk i cui parametri sono i seguenti:

Maximum Channels: 1
Trunk Name: Skype
==========
disallow=all
allow=ulaw&alaw&ilbc&speex
canreinvite=no
context=from-trunk
dtmfmode=rfc2833
host=127.0.0.1
incominglimit=1
nat=never
port=5070
qualify=yes
secret=liberailvoip
type=peer
username=Skype_Caller
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.255

Per effettuare delle chiamate in uscita non ci resta che creare una OUTBOUND ROUTE (vedi immagine d’esempio). Vi ricordo che, a meno non utilizziate un softphone, dovrete creare una CUSTOM EXTENSION del formato
sip/Skype/skypeusername (dove Skype è il nome del trunk)
per ogni singolo contatto Skype che vorrete chiamare dal momento che ne Freepbx ne i telefoni “tradizionali” sono in grado di gestire correttamente i caratteri alfanumerici che formano gli username Skype.

Per ricevere una chiamata invece non dovrete fare altro che impostare un INBOUND ROUTE che ridirezioni il “fake caller id skype” 98765 ove volete.

AUTOAVVIO DEL BRIDGE:

Inseriamo in /etc/rc.local

nano /etc/rc.local

prima della riga exit0 quanto segue:

Xvfb :0 &
export DISPLAY=:0
skype &
sleep 5
cd /root/siptosis
./SipToSis_linux >> /var/log/siptosis


Commenti

commenti


I commenti all'articolo

31 commenti for “Creiamo uno Skype Gateway: integrare Skype ed Asterisk”

  1. ottima guida. ho adottato queta soluzione da diverso tempo ma con vnc4server, così è più facile collegarsi al display per verificare eventuali blocchi di SiptoSis.
    ciao fabio

    Commentato da fabio | maggio 8, 2010, 11:58 |
  2. Ciao Skumpic. Il gateway l’ho inserito su un server ubuntu 9.04 su cui gira pure zoneminder.Il problema di questo channel è che quando si fa una chiamata su un numero occupato, skype la lascia “appesa” e rimane visibile nel client skype. Quindi se uno ripete diverse volte la chiamata al numero occupato il channel crasha. In questo caso (nel mio caso) è necessario riaviare il server in quanto non posso riavviare solo il SiptoSis giacché è presente già istanza di skype e non me ne farebbe creare un’altra.
    Comunque trovo questa soluzione altamente ingegnosa e proficua. Ho anche acquistato il channel skype dalla digium, ma non permette le chiamate in abbonamento.Quindi ho risolto in questa maniera.

    Commentato da Fabio | maggio 10, 2010, 12:02 |
    • Piccola curiosità OT: Per far girare zoneminder che processore monta il tuo serverino? Io ho rinunciato ad utilizzarlo perchè la cpu era perennemente all’ 80%

      Per il controllo del processo siptosis ti consiglio monit. E’ un’applicazione realmente fantastica: potresti creare una regola che controlli il processo siptosis ogni X minuti ed in caso di problemi “uccida” la sessione di X e Skype per andare poi a rilanciare tutto daccapo.

      Commentato da skumpic | maggio 10, 2010, 23:27 |
  3. Ciao Skumpic.
    OT: Uso un server con amd athlon X2 4600+( non vorrei dire corbellerie) con 4 Gb di Ram .Prima usavo la versione 1.23.2 di zoneminder e funzionava egregiamente riuscendo ad impostare su modect tre telecamere su sette. ora con la 1.24.2 ho solo 4 telecamere in modalità monitor altrimenti il processore skizza in alto.

    tornando a skype, la tua soluzione è molto valevole. Io ho creato uno script su rc.local in cui avvia il display virtuale e dopo 15 secondi lancia uno script in cui avvia skype e sipToSis. Ecco perché se va in crash devo per forza riavviare tutto il server, mentre come dici tu posso riavviare solo sipToSis.
    Approfitto per illustrare una problematica su SipToSis. Talune volte, e dopo frequenti giorni senza un riavvio,quando si effettuano le chiamate verso un numero urbano, non si sente più squillare, anche se le chiamate partono tranquillamente. quindi riavvio e tutto si risolve.
    Anche tu hai lo stesso problema?

    Ciao Fabio.

    Commentato da fabio | maggio 11, 2010, 15:59 |
    • ciao
      bella questa!!.
      Ma non ho capito una cosa. Necessita di 2 macchine separate? Una con il gateway siptosis e l’altra con asterisk o convivono nella stessa macchina?
      Ciao

      Commentato da nifoprom | maggio 26, 2010, 19:45 |
      • convivono sulla stessa box

        ciao

        Commentato da skumpic | maggio 26, 2010, 21:30 |
        • sulla mia box con voiper arrivo fin qui. Quale potrebbe essere il problema?

          [root@voiperopen ~]# xinit

          _XSERVTransSocketOpenCOTSServer: Unable to open socket for inet6
          _XSERVTransOpen: transport open failed for inet6/voiperopen:0
          _XSERVTransMakeAllCOTSServerListeners: failed to open listener for inet6

          X Window System Version 6.8.2
          Release Date: 9 February 2005
          X Protocol Version 11, Revision 0, Release 6.8.2
          Build Operating System: Linux 2.6.18-53.1.14.el5PAE i686 [ELF]
          Current Operating System: Linux voiperopen 2.6.19 #1 Fri May 2 18:34:00 CEST 200 8 i686
          Build Date: 01 June 2009
          Build Host: builder16.centos.org

          Before reporting problems, check http://wiki.X.Org
          to make sure that you have the latest version.
          Module Loader present
          OS Kernel: Linux version 2.6.19 (root@sodium) (gcc version 3.4.6 20060404 (Red H at 3.4.6-9)) #1 Fri May 2 18:34:00 CEST 2008
          Markers: (–) probed, (**) from config file, (==) default setting,
          (++) from command line, (!!) notice, (II) informational,
          (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
          (==) Log file: “/var/log/Xorg.0.log”, Time: Wed May 26 23:56:30 2010
          (==) Using config file: “/etc/X11/xorg.conf”
          (WW) VESA(0): Failed to set up write-combining range (0xe0800000,0×100000)
          (WW) VESA(0): Failed to set up write-combining range (0xe0000000,0×900000)

          Commentato da nifoprom | maggio 26, 2010, 23:57 |
        • Secondo me c’è qualche errore nello xorg.conf oppure il server grafico ha problemi con la tua scheda

          Commentato da skumpic | maggio 27, 2010, 00:18 |
        • sarebbe possibile mettere le immagini ad una risoluzione maggiore? non si vede nulla
          Grazie

          Commentato da nifoprom | maggio 27, 2010, 15:21 |
  4. salve a tutti, volevo chiedervi come faccio ad utilizzare siptosis su un server windows senza scheda audio, ho provato con linux e tutto funziona ma con windows ovviamente skype non rileva nessuna shceda audio, sipotosis funziona ma come previsto non si sente nulla. grazie

    Commentato da erick | maggio 28, 2010, 11:27 |
  5. Salve a tutti, ho risolto installando dei virtual audio driver che ho preso da qui (mi scuso in anticipo nel caso non si possano postare link) http://software.muzychenko.net/eng/vac.html
    Scaricate la free-version, da quello che ho capito dovrebbe essere solamente feature limited e installate. Windows vi rileverà la nuova periferica audio e il gioco è fatto!

    Commentato da erick | giugno 6, 2010, 12:10 |
  6. Ma funziona anche se installato su ubuntu server insieme ad asterisk “puro” (senza alcuna gui)..???

    Grazie..!!

    Commentato da massimiliano | giugno 18, 2010, 01:24 |
    • certo, ma le dipendenze ovviamente non hanno gli stessi nomi (differiscono un po’)

      Commentato da skumpic | giugno 18, 2010, 11:48 |
      • Grazie 1000 come al solito, continuerò a lavorarci un po’ su..

        Commentato da massimiliano | giugno 18, 2010, 11:55 |
        • Perdonate la niubbagine..
          Quindi nell’ordine dovrei installare sul mio ubuntu server:
          1. skype (magari grazie all’ambiente grafico Xorg citato all’inizio della guida..);
          2. siptosis
          3. configurare siptosis x utilizzarlo come “estensione” di asterisk che già utilizzo;

          Giusto..? Avreste qualche lettura relativa ad installazioni skype-siptosis su ubuntu server..??

          Grazie..!!

          Commentato da massimiliano | giugno 18, 2010, 15:44 |
  7. Posso ricevere le chiamate skype su un interno LIV?

    In Windows:

    1. ho installato SipToSis

    2. ho aggiunto la riga *,sip:miointerno@sip.liberailvoip.it:5060 a SkypeToSipAuth.props

    3. ho fatto “accettare” SipToSis al client Skype

    … ma quando arriva una chiamata invece di essere inoltrata al mio interno LIV ecco la console di SipToSis cosa mi sputa:

    Attempting call From:”nomeskype” To:
    2010-11-07 12:14:09,550 skypeCallStatus[20333] – RINGING
    2010-11-07 12:14:09,953 skypeCallStatus[20333] – Complete: MISSED
    2010-11-07 12:14:11,257 REFUSED (404:Not Found)
    2010-11-07 12:14:11,461 WAITING FOR INCOMING CALL

    Commentato da masvil | novembre 7, 2010, 12:28 |
  8. Siptosis non si registra a LIV, nel senso che non fa da softphone.

    Vabbe’, era giusto un tentativo di fare Skype -> SIP prima della nuova versione di LIV (che supporterà questa funzione “nativamente, giusto?).

    Commentato da masvil | novembre 7, 2010, 22:56 |
  9. Skumpic, ho seguito il tuo consiglio, acquistato credito Skype ed impostato l’inoltro. In effetti è l’unico sistema affidabile di avere un inoltro su INUM senza costi fissi e senza tenere aperto un client.

    Sul prezzo “onesto” c’è da precisare che c’è uno scatto alla risposta di 4,5 cent e che il 2,2 cent/min sono a scatti anticipati di un minuto. Mi serve per lavoro e non posso fare lo schizzinoso :-)

    Commentato da masvil | novembre 21, 2010, 02:16 |
    • Se ne fai un uso intensivo valuta la possibilità di acquistare un abbonamento skype impostando il redirect verso un numero geografico gestito su liv (ex. eutelia o messagenet).

      Già a partire da abbonamenti da 1 euro al mese eviti di pagare lo scatto alla risposta.

      Commentato da skumpic | novembre 21, 2010, 11:54 |
  10. Ottimo suggerimento. Utilizzo il Skype per contatti da un sito commerciale, nei prossimi mesi valuterò il volume di traffico e deciderò se continuare a pagare a consumo o fare un abbonamento.

    In entrambi i casi il redirect verso un numero Messagenet gestito da LIV è d’obbligo, infatti è già così da ieri :-)

    Commentato da masvil | novembre 21, 2010, 12:27 |

Lascia un commento

Devi essere autenticato per lasciare un commento.