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="transportinfo" 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="transportinfo" 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"/>

Master your semester with Scribd & The New York Times

Special offer for students: Only $4.99/month.

Master your semester with Scribd & The New York Times

Cancel anytime.