Bug 33788 - support Google Voice over Jingle
Summary: support Google Voice over Jingle
Status: NEW
Alias: None
Product: Telepathy
Classification: Unclassified
Component: gabble (show other bugs)
Version: git master
Hardware: Other All
: high normal
Assignee: Telepathy bugs list
QA Contact: Telepathy bugs list
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-01-31 17:09 UTC by Danielle Madeley
Modified: 2013-10-02 08:08 UTC (History)
7 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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.


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.