Da sempre ho avuto una certa repulsione sullo spendere soldi per comunicare, da (quasi) nativo digitale mi è sempre sembrato tecnologicamente una follia farlo solo perchè così aveva deciso il mercato della telefonia. Pensiamo a quanto costa a noi e quanti bit consuma un SMS.
Ammetto poi che quest’idea ha potuto contare sul mio carattere non proprio smanioso di comunicazione 1a1 e, si, magari anche non proprio spendaccione :). Mi ricordo che una volta, con vodafone e naturalmente ancora senza abbonamento a internet, non feci una ricarica per così tanto tempo che mi arrivò un SMS che mi intimava a farne una, altrimenti la sim si sarebbe disattivata.
Sono un fan delle soluzioni accessibili, che abbattono barriere e che grazie alla tecnologia permettono di aggirare ostacoli, magari evitando di dipendere da decisioni di altri. In poche parole basta SMS/Telefonate tradizionali, mi basta Internet! Si possono trovare traccia di questi discorsi sul blog qui e qui.
Attualmente la soluzione più semplice è usare Gtalk, ribadisco per chi non avesse letto questo che non parlo di Gtalk perchè di Google o perchè integrato bene in Android, ma perchè Gtalk usa protocolli aperti, Jabber/XMPP. Con Gtalk quindi è già possibile scrivere e fare chiamate audio/video da Android, sostituendo le spese di telefonia.
A casa ho un telefono voip, non lo uso più per le chiamate su rete tradizionale perchè non mi interessa (ma ci vorrebbe un attimo per ripristinarlo), lo uso di più invece come semplice interno Asterisk da chiamare via SIP per contattare casa. L’utilizzo che ne faccio però è solo cellulare->casa, perchè altrimenti dovrei tenere sempre acceso un client SIP sul telefono, sprecando batteria.
Gtalk invece è sempre attivo in background su Android, come posso unire le due cose?
Come ho detto Gtalk usa protocolli aperti, tecnicamente mettere in comunicazione il protocollo SIP con la libreria jingle di XMPP non dovrebbe essere difficile, infatti il team Asterisk ci ha già pensato!
Non mi dilungo sula configurazione necessaria perchè di guide se ne trovano a bizzeffe.
Ti ringrazio vivamente Google per aver scelto un protocollo aperto per il tuo servizio chat di riferimento, ma perchè mai dovresti abbandonare gli standard per fare di testa tua?
Non ho studiato XMPP ne Jingle, ci ho solo giochicchiato, ma posso dire senza dubbi che Google crea problemi di integrazione con Gtalk semplicemente perchè personalizza gli stream che i vari client usano per comunicare col server. A prova di questo basta sapere che Asterisk usa, giustamente, due plugin diversi per la stessa cosa, uno per Jabber e uno per Gtalk.
Non conosco l’history dei cambiamenti, ma ho letto di sviluppatori che si lamentavano di cambiamenti improvvisi di Google che rompevano compatibilità. In più posso garantire che con il client Android per Gtalk ha ulteriormente fatto confusione cambiando lo stream di comunicazione.
Non solo, sia il client Android (4.0) che il client da Google+ (con microfono e webcam disponibili) hanno impostato “jingle capable = no“, vale a dire che si auto dichiarano non capaci di fare chiamate audio/video, quando sappiamo benissimo che ne sono capaci. #nosense
Ringrazio anche Asterisk per essere un ottimo centralino software, ma soprattutto per essere Open Source. Così ho preso il file chan_gtalk.c e ho cercato di capire come poter ovviare alla confusione creata da Google.
Ne ho tirato fuori queste 3 semplici patch, la prima qui è un workaround abbastanza “sporco”, semplicemente se vede “android_talk*” come resource forza l’avvio della chiamata; la seconda, qui, risolve invece un problema con le chiamate da Gtalk verso Asterisk che non vengono processate perchè nel client Android il tag </jingle> viene chiuso prima del tag <session>; la terza, qui, risolve un problema simile, ma per le chiamate verso Gtalk. La versione di Asterisk su cui ho lavorato è la 1.8.9.0.
Morale
Grazie a protocolli aperti possiamo far parlare “cose”, software e protocolli stessi completamente differenti, anche se l’azienda di turno non ha previsto utilizzi diversi da quello base.
Non basta usare un protocollo aperto, ma bisogna anche rispettarne gli standard, Google ha il vizietto di non farlo e di personalizzarsi le cose, meglio sempre stare allerta. (per non parlare di Apple che usa XMPP castrato e non accessibile)
Grazie alla disponibilità del codice sorgente ho potuto fixare e segnalare le modifiche al team Asterisk.
Eppure c’è chi continua a usare protocolli chiusi, continua a sostenere aziende che palesemente lo prendono in giro e continua ad usare software proprietario…
Fattibilità
Non tutti hanno la possibilità di avere un server Asterisk e purtroppo da quello che ho capito ne pbexes ne liberailvoip supportano le chiamate via XMPP. Oltre ovviamente ad arrangiarsi con il semplice Gtalk, si può sempre installare Asterisk su un router/access point con openwrt.
Sempre per la storia che Google fa le cose a metà, il client Android utilizza l’autoparlante generale per le chiamate (o le cuffie se attaccate), rendendo le chiamate a volte impossibili da fare in pubblico. In quel caso ovviamente si può sempre usare un client SIP normale, l’importante è aver catturato l’attenzione della persona con una chiamata (o con un messaggio, usando il comando JabberSend di Asterisk).
Però alla base della comunicazione dovrebbe esserci anche un pò di credibilità ed immagine no?