You are on page 1of 5

A XMPP Client Voice Mail Callflow.

1. Introduction

This document explains the callflow and message details of a XMPP


client voicemail call. This flow is found in googletalk instant
messaging program.

2. CallFlow

Clinet XMPP server


| |
| |
| |
| 1 IQ id=74 Session-initiate |
|---------------------------------------->|
| |
| |
| |
| 2 IQ id=76 Transport-info |
|---------------------------------------->|
| |
| |
| |
| 3 IQ id=77 Transport-info |
|---------------------------------------->|
| |
| |
| |
| 4 IQ result id=74 |
|<----------------------------------------|
| |
| |
| |
| 5 IQ id=665 candidates |
|<----------------------------------------|
| |
| |
| |
| 6 IQ id=78 candidates |
|---------------------------------------->|
| |
| |
| |
| 7 IQ result id=665 |
|---------------------------------------->|
| |
| |
| |
| 8 IQ error id=76 |
|<----------------------------------------|
| |
| |
| |
| 9 IQ error id=77 |
|<----------------------------------------|
| |
| |
| |
| 10 IQ result id=78 |
|<----------------------------------------|
| |
| |
| |
| 11 IQ id=666 Session-accept |
|<----------------------------------------|
| |
| |
| |
| 12 IQ result id=666 |
|---------------------------------------->|
| |
| |
| |
| |
|==================RTP====================|
| |
| |
| |
| 13 IQ id=81 Session-terminate |
|---------------------------------------->|
| |
| |
| |
| 14 IQ result id=81 |
|<----------------------------------------|
| |
| |
| |

3. Message Details

1) SEND
<iq to="romeo@montague.net/voicemail" type="set" id="74">
<session xmlns="http://www.google.com/session" type="initiate"
id="1000" initiator="juliet@capulet.com/balcony">
<description xmlns="http://www.google.com/session/phone"
xml:lang="en">
<payload-type xmlns="http://www.google.com/session/phone"
id="103" name="ISAC" clockrate="16000"/>
<payload-type xmlns="http://www.google.com/session/phone"
id="97" name="IPCMWB" clockrate="16000" bitrate="80000"/>
<payload-type xmlns="http://www.google.com/session/phone"
id="99" name="speex" clockrate="16000" bitrate="22000"/>
<payload-type xmlns="http://www.google.com/session/phone"
id="4" name="G723" clockrate="8000" bitrate="6300"/>
<payload-type xmlns="http://www.google.com/session/phone"
id="98" name="speex" clockrate="8000" bitrate="11000"/>
<payload-type xmlns="http://www.google.com/session/phone"
id="100" name="EG711U" clockrate="8000" bitrate="64000"/>
<payload-type xmlns="http://www.google.com/session/phone"
id="101" name="EG711A" clockrate="8000" bitrate="64000"/>
<payload-type xmlns="http://www.google.com/session/phone"
id="0" name="PCMU" clockrate="8000" bitrate="64000"/>
<payload-type xmlns="http://www.google.com/session/phone"
id="8" name="PCMA" clockrate="8000" bitrate="64000"/>
<payload-type xmlns="http://www.google.com/session/phone"
id="13" name="CN" clockrate="8000"/>
<payload-type xmlns="http://www.google.com/session/phone"
id="102" name="iLBC" clockrate="8000" bitrate="13300"/>
<payload-type xmlns="http://www.google.com/session/phone"
id="106" name="telephone-event" clockrate="8000"/>
</description>
<transport xmlns="http://www.google.com/transport/p2p"/>
<regarding xmlns="http://www.google.com/session/voicemail"
name="romeo@montague.net"/>
</session>
</iq>

2) SEND
<iq to="romeo@montague.net/voicemail" type="set" id="76">
<session xmlns="http://www.google.com/session" type="transport-
info" id="1000" initiator="juliet@capulet.com/balcony">
<transport xmlns="http://www.google.com/transport/p2p">
<candidate name="rtp" address="myLocalIp.in.dotted.format"
port="myLocalPort" preference="1" username="onetimeusername"
protocol="udp" generation="0" password="onetimepassword" type="local"
network="0"/>
</transport>
</session>
</iq>

3) SEND
<iq to="romeo@montague.net/voicemail" type="set" id="77">
<session xmlns="http://www.google.com/session" type="transport-
info" id="1000" initiator="juliet@capulet.com/balcony">
<transport xmlns="http://www.google.com/transport/p2p">
<candidate name="rtp" address="myStunIp.in.dotted.format"
port="myReflexPort"preference="0.9" username="onetimeusername"
protocol="udp" generation="0" password="onetimepassword" type="stun"
network="0"/>
</transport>
</session>
</iq>

4) RECV
<iq from="romeo@montague.net/voicemail"
to="juliet@capulet.com/balcony" type="result" id="74"/>

5) RECV
<iq from="romeo@montague.net/voicemail"
to="juliet@capulet.com/balcony" type="set" id="665">
<ses:session type="candidates" id="1000"
initiator="juliet@capulet.com/balcony"
xmlns:ses="http://www.google.com/session">
<ses:candidate name="rtp" address="vmailIp.in.dotted.format"
port="19295" username="onetimeusername" password="onetimepassword"
preference="1.0" protocol="udp" type="udp-local" network="A"
generation="0"/>
<ses:candidate name="rtp" address="vmailIp.in.dotted.format"
port="19294" username="onetimeusername" password="onetimepassword"
preference="0.6" protocol="tcp" type="tcp-local" network="A"
generation="0"/>
<ses:candidate name="rtp" address="vmailIp.in.dotted.format"
port="443" username="onetimeusername" password="onetimepassword"
preference="0.5" protocol="ssltcp" type="ssltcp-local" network="A"
generation="0"/>
</ses:session>
</iq>

6) SEND
<iq to="romeo@montague.net/voicemail" type="set" id="78">
<session xmlns="http://www.google.com/session" type="candidates"
id="1000" initiator="juliet@capulet.com/balcony">
<candidate name="rtp" address="myLocalIp.in.dotted.format"
port="myLocalPort" preference="1" username="onetimeusername"
protocol="udp" generation="0" password="onetimepassword" type="local"
network="0"/>
<candidate name="rtp" address="myStunIp.in.dotted.format"
port="myReflexPort"preference="0.9" username="onetimeusername"
protocol="udp" generation="0" password="onetimepassword" type="stun"
network="0"/>
</session>
</iq>

7) SEND
<iq to="romeo@montague.net/voicemail" id="665" type="result"/>

8) RECV
<iq type="error" from="romeo@montague.net/voicemail" id="76"
to="juliet@capulet.com/balcony">
<session type="transport-info" id="1000"
initiator="juliet@capulet.com/balcony"
xmlns="http://www.google.com/session">
<transport xmlns="http://www.google.com/transport/p2p">
<candidate name="rtp" address="myLocalIp.in.dotted.format"
port="myLocalPort" preference="1" username="onetimeusername"
protocol="udp" generation="0" password="onetimepassword" type="local"
network="0"/>
</transport>
</session>
<error code="400" type="modify">
<bad-request xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
<text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">
unknown session message type
</text>
</error>
</iq>

9) RECV
<iq type="error" from="romeo@montague.net/voicemail" id="77"
to="juliet@capulet.com/balcony">
<session type="transport-info" id="1000"
initiator="juliet@capulet.com/balcony"
xmlns="http://www.google.com/session">
<transport xmlns="http://www.google.com/transport/p2p">
<candidate name="rtp" address="myStunIp.in.dotted.format"
port="myReflexPort"preference="0.9" username="XsvSU7vJLAf9mRNU"
protocol="udp" generation="0" password="onetimepassword" type="stun"
network="0"/>
</transport>
</session>
<error code="400" type="modify">
<bad-request xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
<text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">
unknown session message type
</text>
</error>
</iq>

10) RECV
<iq from="romeo@montague.net/voicemail"
to="juliet@capulet.com/balcony" type="result" id="78"/>

11) RECV
<iq from="romeo@montague.net/voicemail"
to="juliet@capulet.com/balcony" type="set" id="666">
<ses:session type="accept" id="1000"
initiator="juliet@capulet.com/balcony"
xmlns:ses="http://www.google.com/session">
<pho:description
xmlns:pho="http://www.google.com/session/phone">
<pho:payload-type id="99" name="speex" clockrate="16000"
bitrate="22000"/>
<pho:payload-type id="98" name="speex" clockrate="8000"
bitrate="11000"/>
<pho:payload-type id="0" name="PCMU" clockrate="8000"
bitrate="64000"/>
</pho:description>
</ses:session>
</iq>

12) SEND
<iq to="romeo@montague.net/voicemail" id="666" type="result"/>

RTP HAPPENS HERE

13) SEND
<iq to="romeo@montague.net/voicemail" type="set" id="81">
<session xmlns="http://www.google.com/session" type="terminate"
id="1000" initiator="juliet@capulet.com/balcony"/>
</iq>

14) RECV
<iq from="romeo@montague.net/voicemail"
to="juliet@capulet.com/balcony" type="result" id="81"/>