{"id":2800,"date":"2012-02-03T20:25:48","date_gmt":"2012-02-03T19:25:48","guid":{"rendered":"http:\/\/www.lorenzobraghetto.com\/?p=2800"},"modified":"2012-02-03T20:25:49","modified_gmt":"2012-02-03T19:25:49","slug":"asterisk-jabberxmpp-e-gtalk","status":"publish","type":"post","link":"https:\/\/www.lorenzobraghetto.com\/index.php\/2012\/02\/03\/asterisk-jabberxmpp-e-gtalk\/","title":{"rendered":"Asterisk, Jabber\/XMPP e Gtalk"},"content":{"rendered":"<p>Da sempre ho avuto una certa <strong>repulsione<\/strong> sullo <strong>spendere soldi per comunicare<\/strong>, da (quasi) nativo digitale mi \u00e8 sempre sembrato tecnologicamente una follia farlo solo perch\u00e8 cos\u00ec aveva deciso il mercato della telefonia. Pensiamo a quanto costa a noi e quanti bit <em>consuma<\/em> un SMS.<\/p>\n<p>Ammetto poi che quest&#8217;idea ha potuto contare sul mio <strong>carattere<\/strong> non proprio smanioso di comunicazione 1a1 e, si, magari anche non proprio <strong>spendaccione<\/strong> :). Mi ricordo che una volta, con vodafone e naturalmente ancora senza abbonamento a internet, non feci una ricarica per cos\u00ec tanto tempo che mi arriv\u00f2 un SMS che mi intimava a farne una, altrimenti la sim si sarebbe disattivata.<\/p>\n<p>Sono un fan delle <strong>soluzioni accessibili<\/strong>, che <strong>abbattono barriere<\/strong> e che grazie alla tecnologia permettono di <strong>aggirare ostacoli<\/strong>, magari evitando di dipendere da decisioni di altri. In poche parole basta SMS\/Telefonate tradizionali, mi basta Internet!\u00a0Si possono trovare traccia di questi discorsi sul blog <a href=\"http:\/\/www.lorenzobraghetto.com\/index.php\/2007\/10\/31\/3-skypephone-rivoluzione\/\">qui<\/a> e <a href=\"http:\/\/www.lorenzobraghetto.com\/index.php\/2009\/12\/18\/voip-in-3g-con-android\/\">qui<\/a>.<\/p>\n<p>Attualmente la soluzione pi\u00f9 semplice \u00e8 usare <strong>Gtalk<\/strong>, ribadisco per chi non avesse letto <a href=\"http:\/\/www.lorenzobraghetto.com\/index.php\/2011\/12\/28\/scelte-consapevoli-aka-perche-non-usare-whatsapp\/\">questo<\/a> che non parlo di Gtalk perch\u00e8 di Google o perch\u00e8 integrato bene in Android, ma perch\u00e8 Gtalk usa <strong>protocolli aperti<\/strong>, Jabber\/XMPP. Con Gtalk quindi \u00e8 gi\u00e0 possibile scrivere e fare chiamate audio\/video da Android, <strong>sostituendo le spese di telefonia<\/strong>.<\/p>\n<p>A casa ho un <strong>telefono voip<\/strong>, non lo uso pi\u00f9 per le chiamate su rete tradizionale perch\u00e8 non mi interessa (ma ci vorrebbe un attimo per ripristinarlo), lo uso di pi\u00f9 invece come semplice <strong>interno Asterisk<\/strong> da chiamare via SIP per contattare casa. L&#8217;utilizzo che ne faccio per\u00f2 \u00e8 solo <strong>cellulare-&gt;casa<\/strong>, perch\u00e8 <strong>altrimenti<\/strong> dovrei tenere sempre acceso un <strong>client SIP<\/strong> sul telefono, sprecando <strong>batteria<\/strong>.<\/p>\n<p><strong>Gtalk<\/strong> invece \u00e8 sempre attivo in <strong>background<\/strong> su Android, <em>come posso unire le due cose<\/em>?<\/p>\n<p>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 <strong>Asterisk<\/strong> ci ha gi\u00e0 pensato!<\/p>\n<p>Non mi dilungo sula configurazione necessaria perch\u00e8 di guide se ne trovano a bizzeffe.<\/p>\n<h2>Google<\/h2>\n<p>Ti <strong>ringrazio<\/strong> vivamente <strong>Google<\/strong> per aver scelto un <strong>protocollo aperto<\/strong> per il tuo servizio chat di riferimento, ma perch\u00e8 mai dovresti abbandonare gli standard per <strong>fare di testa tua<\/strong>?<\/p>\n<p>Non ho studiato XMPP ne Jingle, ci ho solo giochicchiato, ma posso dire senza dubbi che Google <strong>crea problemi di integrazione<\/strong> con Gtalk semplicemente perch\u00e8 <strong>personalizza gli stream<\/strong> che i vari client usano per comunicare col server. A prova di questo basta sapere che Asterisk usa, giustamente, <strong>due plugin diversi per la stessa cosa<\/strong>, uno per Jabber e uno per Gtalk.<\/p>\n<p>Non conosco l&#8217;history dei cambiamenti, ma ho letto di sviluppatori che si lamentavano di <strong>cambiamenti improvvisi<\/strong> di Google che rompevano compatibilit\u00e0. In pi\u00f9 posso garantire che con il <strong>client Android<\/strong> per Gtalk ha ulteriormente<strong> fatto confusione<\/strong> cambiando lo stream di comunicazione.<\/p>\n<p>Non solo, sia il client Android (4.0) che il client da Google+ (con microfono e webcam disponibili) hanno impostato &#8220;<em>jingle capable = no<\/em>&#8220;, vale a dire che si auto dichiarano <strong>non<\/strong> capaci di fare <strong>chiamate<\/strong> audio\/video, quando sappiamo benissimo che ne sono capaci. <strong>#nosense<\/strong><\/p>\n<p>Ringrazio anche Asterisk per essere un ottimo centralino software, ma soprattutto per essere Open Source. Cos\u00ec ho preso il file <em>chan_gtalk.c<\/em> e ho cercato di capire come poter ovviare alla confusione creata da Google.<\/p>\n<p>Ne ho tirato fuori queste<strong> 3 semplici patch<\/strong>, la prima <a href=\"https:\/\/gist.github.com\/1710331\">qui<\/a> \u00e8 un workaround abbastanza &#8220;sporco&#8221;, semplicemente se vede &#8220;android_talk*&#8221; come <em>resource<\/em> <strong>forza<\/strong> l&#8217;avvio della <strong>chiamata<\/strong>; la seconda, <a href=\"https:\/\/gist.github.com\/1725076\">qui<\/a>, risolve invece un problema con le chiamate da Gtalk verso Asterisk che non vengono processate perch\u00e8 nel client Android il <strong>tag<\/strong> &lt;\/jingle&gt; viene chiuso prima del tag &lt;session&gt;; la terza, <a href=\"https:\/\/gist.github.com\/1725447\">qui<\/a>, risolve un problema simile, ma per le chiamate verso Gtalk. La versione di Asterisk su cui ho lavorato \u00e8 la <strong>1.8.9.0<\/strong>.<\/p>\n<h2>Morale<\/h2>\n<p><strong>Grazie a protocolli aperti<\/strong> possiamo far parlare &#8220;cose&#8221;, software e protocolli stessi <strong>completamente differenti,<\/strong> anche se l&#8217;azienda di turno non ha previsto utilizzi diversi da quello base.<\/p>\n<p>Non basta usare un protocollo aperto, ma bisogna anche rispettarne gli <strong>standard<\/strong>, 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)<\/p>\n<p>Grazie alla disponibilit\u00e0 del <strong>codice sorgente<\/strong> ho potuto fixare e segnalare le modifiche al team Asterisk.<\/p>\n<p><em>Eppure c&#8217;\u00e8 chi continua a usare protocolli chiusi, continua\u00a0a sostenere aziende che palesemente lo prendono in giro e\u00a0continua ad usare software proprietario&#8230;<\/em><\/p>\n<h2>Fattibilit\u00e0<\/h2>\n<p>Non tutti hanno la possibilit\u00e0 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\u00f2 sempre installare Asterisk su un router\/access point con openwrt.<\/p>\n<p>Sempre per la storia che Google fa le cose a met\u00e0, il client Android utilizza l&#8217;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\u00f2 sempre usare un client SIP normale, l&#8217;importante \u00e8 aver catturato l&#8217;attenzione della persona con una chiamata (o con un messaggio, usando il comando JabberSend di Asterisk).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Da sempre ho avuto una certa repulsione sullo spendere soldi per comunicare, da (quasi) nativo digitale mi \u00e8 sempre sembrato tecnologicamente una follia farlo solo perch\u00e8 cos\u00ec aveva deciso il mercato della telefonia. Pensiamo a quanto costa a noi e quanti bit consuma un SMS. Ammetto poi che quest&#8217;idea ha potuto contare sul mio carattere [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16,4,9,28,6,39,334,42,8],"tags":[530,88,79,176,745],"class_list":["post-2800","post","type-post","status-publish","format-standard","hentry","category-informatica","category-aziende","category-etica","category-google","category-internet","category-open-sourcefree-software","category-server-informatica","category-smanettamenti","category-software","tag-asterisk","tag-gtalk","tag-jabber","tag-open-source","tag-xmpp"],"_links":{"self":[{"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/posts\/2800","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/comments?post=2800"}],"version-history":[{"count":3,"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/posts\/2800\/revisions"}],"predecessor-version":[{"id":2803,"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/posts\/2800\/revisions\/2803"}],"wp:attachment":[{"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/media?parent=2800"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/categories?post=2800"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/tags?post=2800"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}