1
0
mirror of https://github.com/moparisthebest/xeps synced 2024-12-21 23:28:51 -05:00

XEP-0327 v0.4: Suggest timestamping Rayo events; allow specifying a call URI when dialing.

This commit is contained in:
Matthew A. Miller 2014-03-13 09:44:11 -06:00
parent 5ce429af43
commit 0bdf745df8

View File

@ -34,6 +34,12 @@
<jid>jdecastro@voxeo.com</jid> <jid>jdecastro@voxeo.com</jid>
<uri>http://voxeolabs.com</uri> <uri>http://voxeolabs.com</uri>
</author> </author>
<revision>
<version>0.4</version>
<date>2014-03-13</date>
<initials>bl</initials>
<remark><p>Suggest timestamping Rayo events; allow specifying a call URI when dialing.</p></remark>
</revision>
<revision> <revision>
<version>0.3</version> <version>0.3</version>
<date>2014-01-30</date> <date>2014-01-30</date>
@ -359,7 +365,7 @@
<section2 topic='Delivery Mechanism' anchor='concepts-delivery'> <section2 topic='Delivery Mechanism' anchor='concepts-delivery'>
<p>Rayo defines several events and commands which may be executed on one of the above actors. These payloads must be sent within an XMPP primitive element, and the rules are as such:</p> <p>Rayo defines several events and commands which may be executed on one of the above actors. These payloads must be sent within an XMPP primitive element, and the rules are as such:</p>
<ul> <ul>
<li><strong>Events:</strong> Sent as directed presence from the entity producing the event to a client.</li> <li><strong>Events:</strong> Sent as directed presence from the entity producing the event to a client. Rayo servers SHOULD timestamp all events using &xep0203; in order to allow clients to reliably use Rayo events for billing purposes.</li>
<li><strong>Commands:</strong> Sent as an &lt;iq/&gt; with the 'type' attribute 'set' from the client to the entity to be acted on. Responses returned as an &lt;iq/&gt; with the 'type' attribute either 'result' or 'error'.</li> <li><strong>Commands:</strong> Sent as an &lt;iq/&gt; with the 'type' attribute 'set' from the client to the entity to be acted on. Responses returned as an &lt;iq/&gt; with the 'type' attribute either 'result' or 'error'.</li>
</ul> </ul>
</section2> </section2>
@ -415,6 +421,8 @@
<p>On successfully receiving and parsing the dial command, the server SHOULD perform its own proprietary authorization measures to ensure that only desirable outbound sessions are created. If it is established that the command should not be allowed, the server MUST return an error giving an authorization reason.</p> <p>On successfully receiving and parsing the dial command, the server SHOULD perform its own proprietary authorization measures to ensure that only desirable outbound sessions are created. If it is established that the command should not be allowed, the server MUST return an error giving an authorization reason.</p>
<p>If a 'uri' attribute is set on the dial command, the server should attempt to create the call at the requested URI. This allows clients to know the URI of the call prior to it coming into existence, for clients where this distinction might be important.</p>
<section4 topic='Errors' anchor='session-establishment-outbound-errors'> <section4 topic='Errors' anchor='session-establishment-outbound-errors'>
<p>There are several reasons why the server might immediately return an error instead of acknowledging the creation of a new call:</p> <p>There are several reasons why the server might immediately return an error instead of acknowledging the creation of a new call:</p>
<ul> <ul>
@ -423,6 +431,7 @@
<li>The server does not support outbound calls.</li> <li>The server does not support outbound calls.</li>
<li>The server does not have sufficient resources to create a new session.</li> <li>The server does not have sufficient resources to create a new session.</li>
<li>The dial command was malformed.</li> <li>The dial command was malformed.</li>
<li>The requested URI conflicts with an existing call.</li>
</ul> </ul>
<p>If the client is unknown to the server and the server does not permit session creation by unknown clients, the server MUST return a &lt;registration-required/&gt; error with a type of 'auth'.</p> <p>If the client is unknown to the server and the server does not permit session creation by unknown clients, the server MUST return a &lt;registration-required/&gt; error with a type of 'auth'.</p>
@ -512,6 +521,25 @@
<error type='modify'> <error type='modify'>
<bad-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> <bad-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
</error> </error>
</iq>
]]></example>
<p>If the requested URI conflicts with an existing call, the server MUST return a &lt;conflict/&gt; error with a type of 'modify'.</p>
<example caption="Server indicates the requested URI conflicts with an existing call"><![CDATA[
<iq from='shakespeare.lit'
to='juliet@capulet.lit/balcony'
type='error'
id='h7ed2'>
<dial xmlns='urn:xmpp:rayo:1'
to='foo:bar'
from='tel:+14152226789'
uri='xmpp:somecall@capulet.lit'>
<header name="x-skill" value="agent" />
<header name="x-customer-id" value="8877" />
</dial>
<error type='modify'>
<conflict xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
</error>
</iq> </iq>
]]></example> ]]></example>
</section4> </section4>
@ -2121,6 +2149,12 @@ Art thou not Romeo, and a Montague?
<td>OPTIONAL</td> <td>OPTIONAL</td>
<td></td> <td></td>
</tr> </tr>
<tr>
<td>uri</td>
<td>Indicates the URI at which the client wishes the call to be presented.</td>
<td>OPTIONAL</td>
<td></td>
</tr>
<tr> <tr>
<td>timeout</td> <td>timeout</td>
<td>Indicates the maximum time allowed for a response to be provided by the third party before the call should be considered to have come to an end.</td> <td>Indicates the maximum time allowed for a response to be provided by the third party before the call should be considered to have come to an end.</td>
@ -3255,6 +3289,13 @@ Art thou not Romeo, and a Montague?
</documentation> </documentation>
</annotation> </annotation>
</attribute> </attribute>
<attribute name="uri" type="anyURI" use="optional">
<annotation>
<documentation>
Indicates the URI at which the client wishes the call to be presented.
</documentation>
</annotation>
</attribute>
<attribute name="timeout" type="tns:timeoutType" use="optional" default="-1"> <attribute name="timeout" type="tns:timeoutType" use="optional" default="-1">
<annotation> <annotation>
<documentation> <documentation>