Bug 33788

Summary: support Google Voice over Jingle
Product: Telepathy Reporter: Danielle Madeley <danielle>
Component: gabbleAssignee: Telepathy bugs list <telepathy-bugs>
Status: RESOLVED MOVED QA Contact: Telepathy bugs list <telepathy-bugs>
Severity: normal    
Priority: high CC: afriza.na, coopster+fdbugzilla, czarkoff, evan, penguin03, philippe.coval.pro, will
Version: git master   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Danielle Madeley 2011-01-31 17:09:05 UTC
It would be nice to support incoming calls from Google Voice:

wocky-DEBUG: 01/31/2011 17:33:10.308088: _end_element_ns: Received stanza
* iq xmlns='jabber:client'
from='+xxxxxxxxxxx@voice.google.com/srvres-xxxxxxxxxxx='
to='badger.j.badger@gmail.com/87025897'
id='jingle:10.176.93.42-xxxxxxxxxxx:1:xxxxxxxxxxx' type='set'
    * session xmlns='http://www.google.com/session' type='initiate'
id='SIPxxxxxxxxxxx@10.176.222.8'
initiator='+xxxxxxxxxxx@voice.google.com/srvres-xxxxxxxxxxx='
        * description xmlns='http://www.google.com/session/phone'
            * payload-type id='0' name='PCMU' clockrate='8000'
            * payload-type id='101' name='telephone-event'
        * transport xmlns='http://www.google.com/transport/raw-udp'
behind-symmetric-nat='false' can-receive-from-symmetric-nat='false'
        * transport xmlns='http://www.google.com/transport/p2p'
        * nick xmlns='http://jabber.org/protocol/nick'
            "Badger Badger"
gabble/media-channel-DEBUG: 01/31/2011 17:33:10.308218:
gabble_jingle_session_init: Initializing the jingle session 0x1c32600
gabble/media-channel-DEBUG: 01/31/2011 17:33:10.308279: create_session: new
session (+xxxxxxxxxxx@voice.google.com/srvres-xxxxxxxxxxx=,
SIPxxxxxxxxxxx@10.176.222.8) @ 0x1c32600
gabble/media-channel-DEBUG: 01/31/2011 17:33:10.308315:
gabble_jingle_session_parse: jingle action 'initiate' from
'+xxxxxxxxxxx@voice.google.com/srvres-xxxxxxxxxxx=' in session
'SIPxxxxxxxxxxx@10.176.222.8' dialect 2 state 0
gabble/media-channel-DEBUG: 01/31/2011 17:33:10.308343: _each_content_add:
namespace: http://www.google.com/session/phone
gabble/media-channel-DEBUG: 01/31/2011 17:33:10.308387: create_content: session
creating new content name (null), type 0, conn 0x1c5a0d0, jf 0x1c3b180
gabble/media-channel-DEBUG: 01/31/2011 17:33:10.308446:
gabble_jingle_content_init: 0x1c3db90
gabble/media-channel-DEBUG: 01/31/2011 17:33:10.308511:
gabble_jingle_media_rtp_dispose: dispose called
gabble/media-channel-DEBUG: 01/31/2011 17:33:10.308562:
gabble_jingle_content_dispose: 0x1c3db90
gabble/media-channel-DEBUG: 01/31/2011 17:33:10.308605: jingle_cb: NAKing with
error: unsupported content transport
Comment 1 Robert Coop 2011-05-05 11:26:08 UTC
I second this request.  Also, it appears that there is a problem handling the session ID which causes it to not properly terminate (which I think results in Google Voice not realizing the call did not go through).  I'm basing that second bug on the fact that it appears that the response 'session unknown' is sent to the request to terminate the failed session.

  My log from incoming call to session error:
[ My GV number has been replaced with ##########, and my gtalk e-mail with coop@mydomain.com]

wocky-DEBUG: 05/05/2011 14:14:05.217756: _end_element_ns: Received stanza
* iq xmlns='jabber:client' from='+1##########@voice.google.com/srvres-MTAuMTc2LjE1LjY6OTgyOQ==' to='coop@mydomain.com/43aa28af' id='jingle:10.176.15.6-13660829:1:B7F22526' type='set'
    * session xmlns='http://www.google.com/session' type='initiate' id='SIP1885103302@10.177.116.8' initiator='+1##########@voice.google.com/srvres-MTAuMTc2LjE1LjY6OTgyOQ=='
        * description xmlns='http://www.google.com/session/phone'
            * payload-type id='0' name='PCMU' clockrate='8000'
            * payload-type id='101' name='telephone-event'
        * transport xmlns='http://www.google.com/transport/raw-udp' behind-symmetric-nat='false' can-receive-from-symmetric-nat='false'
        * transport xmlns='http://www.google.com/transport/p2p'
gabble/media-channel-DEBUG: 05/05/2011 14:14:05.218044: gabble_jingle_session_init (jingle-session.c:191): Initializing the jingle session 0x1203e90
gabble/media-channel-DEBUG: 05/05/2011 14:14:05.218169: create_session (jingle-factory.c:889): new session (+1##########@voice.google.com/srvres-MTAuMTc2LjE1LjY6OTgyOQ==, SIP1885103302@10.177.116.8) @ 0x1203e90
gabble/media-channel-DEBUG: 05/05/2011 14:14:05.218242: gabble_jingle_session_parse (jingle-session.c:1600): jingle action 'initiate' from '+1##########@voice.google.com/srvres-MTAuMTc2LjE1LjY6OTgyOQ==' in session 'SIP1885103302@10.177.116.8' dialect 2 state 0
gabble/media-channel-DEBUG: 05/05/2011 14:14:05.218302: _each_content_add (jingle-session.c:879): namespace: http://www.google.com/session/phone
gabble/media-channel-DEBUG: 05/05/2011 14:14:05.218365: create_content (jingle-session.c:806): session creating new content name (null), type 0, conn 0x12580c0, jf 0x120ca20
gabble/media-channel-DEBUG: 05/05/2011 14:14:05.218525: gabble_jingle_content_init (jingle-content.c:115): 0x1210920
gabble/media-channel-DEBUG: 05/05/2011 14:14:05.218631: gabble_jingle_media_rtp_dispose (jingle-media-rtp.c:216): dispose called
gabble/media-channel-DEBUG: 05/05/2011 14:14:05.218693: gabble_jingle_content_dispose (jingle-content.c:137): 0x1210920
gabble/media-channel-DEBUG: 05/05/2011 14:14:05.218751: jingle_cb (jingle-factory.c:832): NAKing with error: unsupported content transport
wocky-DEBUG: 05/05/2011 14:14:05.218900: _write_node_tree: Serializing tree:
* iq xmlns='jabber:client' type='error' to='+1##########@voice.google.com/srvres-MTAuMTc2LjE1LjY6OTgyOQ==' id='jingle:10.176.15.6-13660829:1:B7F22526'
    * session xmlns='http://www.google.com/session' type='initiate' id='SIP1885103302@10.177.116.8' initiator='+1##########@voice.google.com/srvres-MTAuMTc2LjE1LjY6OTgyOQ=='
        * description xmlns='http://www.google.com/session/phone'
            * payload-type id='0' name='PCMU' clockrate='8000'
            * payload-type id='101' name='telephone-event'
        * transport xmlns='http://www.google.com/transport/raw-udp' behind-symmetric-nat='false' can-receive-from-symmetric-nat='false'
        * transport xmlns='http://www.google.com/transport/p2p'
    * error code='400' type='modify'
        * bad-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'
        * text
            "unsupported content transport"
gabble/media-channel-DEBUG: 05/05/2011 14:14:05.219139: gabble_jingle_session_terminate (jingle-session.c:2096): we are terminating this session
gabble/media-channel-DEBUG: 05/05/2011 14:14:05.219223: set_state (jingle-session.c:2014): Setting state of JingleSession: 0x1203e90 (priv = 0x1203ec0) from 0 to 5
gabble/media-channel-DEBUG: 05/05/2011 14:14:05.219294: session_terminated_cb (jingle-factory.c:955): removing terminated session with key 719
+1##########@voice.google.com/srvres-MTAuMTc2LjE1LjY6OTgyOQ==
SIP1885103302@10.177.116.8
gabble/media-channel-DEBUG: 05/05/2011 14:14:05.219358: gabble_jingle_session_dispose (jingle-session.c:215): called
wocky-DEBUG: 05/05/2011 14:14:05.429012: _end_element_ns: Received stanza
* iq xmlns='jabber:client' from='+1##########@voice.google.com/srvres-MTAuMTc2LjE1LjY6OTgyOQ==' to='coop@mydomain.com/43aa28af' id='jingle:10.176.15.6-13660829:1:B7F22527' type='set'
    * session xmlns='http://www.google.com/session' type='terminate' id='SIP1885103302@10.177.116.8' initiator='+1##########@voice.google.com/srvres-MTAuMTc2LjE1LjY6OTgyOQ=='
        * internal-server-error xmlns='http://www.google.com/session/phone'
            "Received error to Jingle stanza"
gabble/media-channel-DEBUG: 05/05/2011 14:14:05.429335: jingle_cb (jingle-factory.c:832): NAKing with error: session SIP1885103302@10.177.116.8 is unknown
wocky-DEBUG: 05/05/2011 14:14:05.429470: _write_node_tree: Serializing tree:
* iq xmlns='jabber:client' type='error' to='+1##########@voice.google.com/srvres-MTAuMTc2LjE1LjY6OTgyOQ==' id='jingle:10.176.15.6-13660829:1:B7F22527'
    * session xmlns='http://www.google.com/session' type='terminate' id='SIP1885103302@10.177.116.8' initiator='+1##########@voice.google.com/srvres-MTAuMTc2LjE1LjY6OTgyOQ=='
        * internal-server-error xmlns='http://www.google.com/session/phone'
            "Received error to Jingle stanza"
    * error code='404' type='cancel'
        * item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'
        * unknown-session xmlns='urn:xmpp:jingle:errors:1'
        * text
            "session SIP1885103302@10.177.116.8 is unknown"
Comment 2 Luke 2011-08-04 00:10:35 UTC
Hi Danielle, how to config to receive call from Google Voice and repro this bug?
Comment 3 Evan Nemerson 2011-08-12 16:28:30 UTC
(In reply to comment #2)
> Hi Danielle, how to config to receive call from Google Voice and repro this
> bug?

I believe it is the same (from Google's point of view) as receiving calls in GMail. See http://www.google.com/support/chat/bin/answer.py?answer=187936 for how to do that. To make that one outgoing call, you may need to install this: http://www.google.com/chat/voice/
Comment 4 Will Thompson 2013-01-18 11:58:21 UTC
The problem here is that Google Voice includes two transports in the offer. Our Jingle code finds the first <transport> element, and checks whether it is in a namespace we understand. We do not implement the http://www.google.com/transport/raw-udp transport so we reject the call.

The top patch on http://cgit.collabora.com/git/user/wjt/wocky/log/?h=google-rawudp is an untested patch to try all <transport> elements until we find one we understand, which should make incoming calls from Google Voice work. I do not have a Google Voice account so I cannot test it.

(The rest of that branch implements Google's raw UDP transport. It, too, is untested, because I do not have a Google Voice account. Note that we probably want to prefer the p2p transport anyway.)
Comment 5 Evan Nemerson 2013-01-18 18:37:08 UTC
(In reply to comment #4)
> The problem here is that Google Voice includes two transports in the offer.
> Our Jingle code finds the first <transport> element, and checks whether it
> is in a namespace we understand. We do not implement the
> http://www.google.com/transport/raw-udp transport so we reject the call.
> 
> The top patch on
> http://cgit.collabora.com/git/user/wjt/wocky/log/?h=google-rawudp is an
> untested patch to try all <transport> elements until we find one we
> understand, which should make incoming calls from Google Voice work. I do
> not have a Google Voice account so I cannot test it.

I'm not really familiar with the Telepathy stack so I'm not sure what the easiest way to test it would be, but I do happen to have a Google Voice account which I'm not using yet that I could give you temporary access to.  If you're interested let me know.
Comment 6 GitLab Migration User 2019-12-03 19:50:22 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/telepathy/telepathy-gabble/issues/122.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.