`
`ARCHIVE
`
`archive.org
`
`AFFIDAVIT OF NATHANIEL E FRANK-WHITE
`
`Iam a Records Request Processorat the Internet Archive. I make this declaration
`of my own personal knowledge.
`
`The Internet Archive is a website that provides access to a digital library of Internet
`sites and other cultural artifacts in digital form. Like a paper library, we provide
`free access to researchers, historians, scholars, and the general public. The Internet
`Archive has partnered with and receives support from variousinstitutions,
`including the Library of Congress.
`
`The Internet Archive has created a service known as the Wayback Machine. The
`Wayback Machine makesit possible to browse more than 450 billion pages stored
`in the Internet Archive's web archive. Visitors to the Wayback Machine can search
`archives by URL (i.e., a website address). If archived records for a URL are
`available, the visitor will be presented with a display of available dates. The visitor
`may select one of those dates, and begin browsing an archived version of the Web.
`Links on archived files in the Wayback Machine pointto other archived files
`(whether HTMLpagesorother file types), if any are found for the URL indicated
`by a given link. For instance, the Wayback Machineis designed such that when a
`visitor clicks on a hyperlink on an archived page that points to another URL,the
`visitor will be served the archived file found for the hyperlink’s URL with the
`closest available date to the initial file containing the hyperlink.
`
`The archived data made viewable and browsable by the Wayback Machineis
`obtained by use of web archiving software that automatically stores copiesof files
`available via the Internet, each file preserved as it existed at a particular point in
`time.
`
`The Internet Archive assigns a URL onits site to the archived files in the format
`http://web.archive.org/web/[Year in yyyy][Month in mm][Day in dd][Time codein
`hh:mm:ss]/[Archived URL] aka an “extended URL”. Thus, the extended URL
`http://web.archive.org/web/19970126045828/http://www.archive.org/ would be the
`URL forthe record of the Internet Archive home page HTMLfile
`(http://www.archive.org/) archived on January 26, 1997 at 4:58 a.m. and 28
`seconds (1997/01/26 at 04:58:28). The date indicated by an extended URL applies
`to a preserved instanceofa file for a given URL,but not necessarily to any other
`files linked therein. Thus, in the case of a page constituted by a primary HTML file
`and other separate files (e.g., files with images, audio, multimedia, design
`elements, or other embedded content) linked within that primary HTMLfile, the
`primary HTML file and the otherfiles will each have their own respective extended
`URLsand maynot have been archived on the same dates.
`
`Attached hereto as Exhibit A are true and accurate copies of screenshots of the
`Internet Archive's records of the archivedfiles for the URLs andthe dates specified
`in the attached coversheet of each printout.
`
`Ex. 1018
`CISCO SYSTEMS, INC./ Page 1 of 33
`
`Ex. 1018
`CISCO SYSTEMS, INC. / Page 1 of 33
`
`
`
`NTERNET ARCHIVE
`
`archive.org
`
`7.
`
`I declare under penalty of perjury that the foregoing is true and correct.
`
`DATE:
`
`01/09/2023
`
`Ncthaniel Frenk-White
`
`Nathaniel E Frank-White
`
`Please see attached
`All Purpose
`Jurat form
`for additional
`
`Notary Events
`
`Ex. 1018
`CISCO SYSTEMS, INC./ Page 2 of 33
`
`Ex. 1018
`CISCO SYSTEMS, INC. / Page 2 of 33
`
`
`
`
`
`
`
`
`EXHIBIT A
`EXHIBIT A
`
`Ex. 1018
`CISCO SYSTEMS, INC./ Page 3 of 33
`
`Ex. 1018
`CISCO SYSTEMS, INC. / Page 3 of 33
`
`
`
`https://web.archive.org/web/20130818191236/https:/xmpp.org/extensions/xep-0327.html
`
`Ex. 1018
`CISCO SYSTEMS, INC. / Page 4 of 33
`
`
`
`
`
`
`
`
`XEP-0327: Rayo
`Abstract:
`This specification defines an XMPP protocel extension for the third-party control of telephone calls and other similar media sessions. The
`Profecol Includes support for session management/signaling, a5 well as advanced media resources such as speech recognizers, speech
`synthesizers and audia/video recorders. The protocol servesadifferent purpose from thatof first-party protecols such as Jingle or SIP,
`and is compatible with thase protects,
`Authors:
`Ben Langfeld, Jose de Castro
`Copyright: =) 1999 - 2013 XMPP Standards Foundation.SEELEGALNOTICES.
`
`‘Status:
`Experimental
`Type:
`Standards Track
`Version:
`o2
`Last Updated: 2013-06-10
`WARNING: This Standards-Track document Is Experimental, Publication 4% an XMPP Extension Protocol does not imply aparoval of this proposal by the
`XMPP Standards Foundation, Implementation of the protoco! Gescribed herein is encouraged In exploratory implementations, Dut production systenvs are
`advised to carefully consider whether It is appropriate te deploy Implementations of this protocol before it advances to. status of Graft
`
`Table of Contents 1
`
`
`
`15.SMiSchema
`15.1. Bavo
`15.2, RavaExt
`15.3. RamExtComplete
`
`15.4.RayoOutput
`25.5. RaveOutoutComplete
`15.6. RayoInout
`15.7. RaveInputComolete
`15.8, RayoPromut
`15.9, RayoRecord
`
`15.10.BayeBetondComnfete
`16, History
`Ex. 1018
`17. Acknowledgements
`CISCO SYSTEMS, INC./ Page 5 of 33
`
`Ex. 1018
`CISCO SYSTEMS, INC. / Page 5 of 33
`
`
`
`=
`
`1. Introduction
`Rayo it @ protocol to allow third-party remote control over media sessions, audio/videomixers and 4 varlety of advanced media resources such as
`speech recognizers, speech synthesizers and audio/video recorders. These capabilities can be combined to create a wide variety of applications such as
`menu-based phone systems, in-game conferencing and anonymous dating services. Uniike Jingle or even SIP, a Rayo client is not concemed with being
`@ party to either the session negotiation or the media stream itself,
`+ A Rayo server takes on the role of negotiating a media session betweenitself and some other endpoint, or between two external endpoints, by
`way of an Implementation-specific means, be that Jingle, SIP, the public-switched telephone network, or anything else. The server may even
`bridge multiple networks.
`« The server then presents the Rayo protocol as an interface to @ Rayo cilent, allowing it to monitor and/or exercise third-party control over the
`established media sessions,
`* The client has the option to accept/reject/answer inbound session requests, request the creation of qutbound sessions and monitor their progress,
`‘execute media operations such a¢ speech synthesis, speech recognition & recording, and to end sessions.
`The relationship bétween the calling parties, the Rayo server and the Rayo client looks something like this:
`=aliow
`pth
`
`
`
`
`
`
`This document defines the core Rayo protocol, and contains provistons for Its extension by further specifications,
`2. How it works
`In onder to understand the nature of a Rayo interaction, here we show 4 simple example of a contro! session.
`Example 1. New call announces itself to a potential controlling party
`
` cfpres
`
`In this example, a call from ‘tel:+ 13058851212" has reached the Rayo server ‘shakespearelit by calling ‘tel: +18003211212', and been assigned an ID
`“S00061". The server has determined that ‘jullet@capuletlit’ Is a valid candidate to be the client to whom the server delegates control of the call, and 20
`has directed an offer event to her ‘balcony’ resource,
`The cllent, ‘jullet@capubet.lt", then decides that Ft Is abée to handle the Incoming call, and so acceptsIt from the server, thus gaining exclusive control
`andIndicating to the calling party that the call will be processed and that
`should ring.
`Example 2. Potentialcontrolling party attempts to becomedefinitive controlling party by sending the call an accept command
`
`
`
`
`
`Following confinmation from the server that the attempé to gain control of the call was successful, the cllent proceeds to answerthe call, opening up the
`media stream between the caller and the server.
`Example 4, Controlling party answers the call
`
` fig
`
`Example 5. Call acknowledges answer command to controlling party
`
`
`
`Once the cient has confirmation that the call has been answered,it triggers the start of a media output componentin order to play a message to the
`caller using a Text-to-speech (TTS) engine.
`Example 6. Controlling party requests a new output component
`
`
`
`After confirmation that the output component was successfully created, the citent then awaits notification of ts completion.
`Exampt
`Output component announcesits completion, giving the reason
`
`gracefully.
`Example 9. Controlling party hangs up the call
`
`
`
` The client then decides it has no further operations to perform on the call, and that the call should end. Tt instructs the server to hang up the call
`
`
`
`
`3. Requirements
`‘The protocol defined herein Is designed to provide the following features:
`
`Ex. 1018
`CISCO SYSTEMS, INC./ Page 6 of 33
`
`Ex. 1018
`CISCO SYSTEMS, INC. / Page 6 of 33
`
`
`
`1, Call Control: Incoming calls are “offered” to clients af which point they con be answered, rejected, redirected to another destination, etc,
`‘Outbound calls may also be made and monitored. Every attempt is made to be shield the Rayo cient from the low level telephony profocal (e.g,
`‘SIP, Jingle, PSTN,etc).
`2. Audio File Playback: A compatible Rayo server will fetch4file from 4 4 specified URL and play the containing audio to the caller,
`3. Speech Synthesis / TTS: In cases where dynamic data must be spoken, a Speech Synthesis engine may be used to play computer generated
`speech to the caller.
`4. Touch-tone Events / DTMF: Rayo surfaces real-time event when the caller presses keys on thelr touch-tone keypad.
`5. Speech Recognithon: Enables the phone application to take spoken queues allowing for sophisticated volce-driven menus and directory services.
`6. Call Recording: Can be used to capture the caller's volce (¢.9. Voicemail) or both sides of the call for auditing and compliance pumposes.
`7. Mixing: Typically referred to a5 an audio “conference”; calls can be Joined together so that the participants can hear each other in real-time,
`Manythird-party call contral protocols have preceeded Rayo (see Astertsk's AGL/AML, FreeSWITCH's eventsocket, Microsoft's TAPI, Java's JTAPI,
`Novell/ATAT's TSAPI, CSTA, ete), None of these protocols Is kieal, and all have one of more of the following drawbacks:
`* Totally ground-up wire protocol requiring emplementation all the way down to the socket.
`* Platform/vendor/hardware specific - each system Implements its own proprietary protocol (in many cases, without a formal published
`specification) which does not allow eauily porting an application from ane back-end to another,
`+ Synchronous interface - Operations on calls or offer entities are often blocking, and one must serialise all control messages,
`* Inconsistent » evolved, rather than cesigned.
`* Lacking in scalability - cllent/server sometimes tied one-to-one, servers rarely clustered, advanced message routing not possible.
`= Poor security - lack of wire-level encryption, lack of or sub-standard authentication mechanisms,lack of or limited authorization mechanisms,
`lack of of poor sandboxing between multiple tenants on one system.
`* Inextensible - The specification of extensions to the core protocol bs either Impossibse orvery difficutt,
`Rayo has been designed with these fallings in mind, and Intends to address many concems not addressed by these earlier attempts. The following
`‘considerations were made:
`+ Simple client library implementation - XMPP client libraries exist In all modern languages, and many are of a high standard of quality and
`maturity.
`« Cross-platform standard - The protocol must pot expose any platform specifics and all elements should be candidates for bmplementation ort
`any sultable platform, Adgiditionally, the profecol must be ratified as a standard following a community discussion,
`* Asynchronous interface - The protocol should present an asynchronous Interface for the purposes of performance and flexibly in performing
`parallel operations,
`* Consistent - The protocol must provide a considered, unobtrusive, logically and philtsophicalty consistent interface,
`= Federated - The protocol must support communitation between client and server entities on separately owned, operated and addressed
`networks.
`* Flexible routing - The protocol must lend itself to routing across wide networks such as theinternet, and to potential complex routing such as
`proxying or redirection. Addmionally, the client and server should each be aware of the presence of the other and be able to use such Information
`to make routing decisions.
`* Extensible - The protocol must provide for the possibility of extra functionality being added by future specifications or an individual
`implementation.
`* Secure - The protocol! should inchude appropriate measures for authentication and authorization of participants, as weil as preventing third-parties
`from intercepting control messages,
`Manyof the features In the above list ane available to Rayo at no specification or Implementation cost, since they are core to XMPP itself and thus Raya
`Inherits these ‘or free’.
`Additionaity, the protocol Is required to abstract away the complexity of the back-end negotiation, especially the details of the transport protecols such
`25 SIP or Jingle, but to map conceptually to such protocols.
`4. Terminology
`4.1 Gloseary
`‘Third-party call control (3PCC)
`‘The observation and/or control of a live media session by an entity which Is not 4 direct party to the session.
`Command
`‘Commands instruct the receiving entity to perform some atomic action. Commands may be executed against a given
`‘call, component or miver and can be considered completed as soon as they receive a response. Same commands:
`create components, and return a reference to the component In their response.
`Component
`‘Components extend the Rayo protoce! by providing additional media and call control functionality, Components are
`created by an appropriate command, which returns 4 reference fo the component. Components are executed
`asynchronously, and havea lifecycle attached to them, with the ability to trigger events or have commands Issued to
`ft. Once @ componentts stopped or comes to an end naturally, @ will Issue & special <complete/> event, indicating
`that It has ceased executing and deliver any required data.
`Potential controlling party (PCP)
`An XMPP entity to which an offer to control an Incoming call may be sent.
`Definitive controfling party (DEP)
`The XMPP entity which gains & lock on control of a session, efther by requesting the session's creation, ar being the
`first respondentto an offer,
`Security Zone
`A security zone Is the conceptual border around a call which defines which parties may interact with the call's media
`or signaling. A security zone MUST contain the raya server's Internal Implementation, the media server to which the
`call Is Joined, the DCP, and any JID whose bare form is the same as the DCP. A server MAY relax this definition
`further, for example to consider all JIDs af the same domain to be in the same security zone.
`4.2 Conventions
`In examples, the following J00s are used:
`» jullet@capulet.lit/balcony, romeo@montague.lit/orchard - Potential controlling parties
`+ shakespeare.lit ~The root domain of the Rayo service
`5. Concepts and Approach
`A complete Rayo deployment has several elements and interacting entities which must be uncersteod.
`5.1 Actors
`5.1.1 Server
`A Rayo server is an entity which ts capable of receiving and initiating calls and being party to their media stream, while
`exposing 4 Rayo interface to a cllent in order to permit contral overits calls. The Rayo server may handle calls in any way
`supported by the Implementation, such as SIP, Jingla, etc, and should expose a full XMPP domain at the root level of the
`service deployment (eg shakespeare.lt).
`The Rayo server is responsible for keeping track of valid clients, routing calls to the correct potential controlling parties,
`Berforming authorization Measures on received stanzas, ete,
`For the purposes of this specification, complex server-sice deployments such as clusters, proxies, gateways, protocol
`translators, ete are not considered. Further details of such concepts may be found in thelr (present or future) relevant
`specifications,
`5.1.2 Client(s)
`A Rayo client Is an entity which implements the Rayo protocol for the purpose of asserting control over calts made available
`by 4 Rayo server. The method by which such control measures are determined Is outside the scope of this document, bat
`may be the result of human interaction or some automated decision-making process.
`A Rayo client ts responsible for indicating its availability to a Rayo server and responding to offer messages appropriately.
`5.1.3 Calls
`A Rayo call is 4 short-lived XMPP entity within the scope of the deployment's root domain, perhaps at a sub-darnain, with
`the purpase of representing a single session. It is usually a simple alias for the main server process,
`A Rayo call Is the entity with which most client interactions are made, and is responsibie for sending its events te and
`recelving commands from a cient. Calis may host components,
`‘Cals have separate presence from the foot domain of the service and thus appear to be separate entities.
`5.1.4 Mixers
`A Rayo mixer is an XMPP entity within the scope of the deployment's root domain, perhaps at a sub-cemaln, with the
`purpose of representing a service for the linking of media strearns from several calls. It Is usually a simpte allas for the
`main server process,
`A Rayo mixer is responsible for sending Its events to and receiving commands from one or more clients, and can host
`components.
`Mixers have separate presence from the root domainof the service and its cals and thus appear to be separate entities.
`5.1.5 Commands
`A Rayo command Isa simple combination of request and response and may be sued directly to the service domain, a call,
`3 mixer or a component attached to any of the former. Commands are executed serially and are generally very short-lived,
`5.1.6 Components
`Components extend the Raye protecol by providing additional media and call control functionality.
`Components havealifecycle and are started by sending 4 specialized command to 4 call or mixer. Thus, @ request for
`‘creation of a componentwill return a reference to the component's 1D, and the component will continise to execute lentil Mt
`completes, potentially sending events and processing commands along the way (such as an instruction fo pause oF
`terminate), before finally issuing an event indicating Its completion and thus unavailability, Multiple components may be
`active on @ call or mixer at any one time, and commands may be executed on any entity during the execution of a
`component.
`5.2 Addressing Scheme
`All of the actors described In the previous section (with the exception of commands) are represented by XMPP entities with a JID of their
`own, Thus, a scheme for determining the J1Ds of each of these entities Is required. The followingis the required naming scheme for Rayo
`deployments, where ebements in square brackets are optional.
`Table 1:
`
`Actor
`AID format
`Example JID
`
`shakespeare.tit
`
`JulletGcapulettitybalcony
`fakeh2@callshakespeare, lit
`
`conf @miner.shakespearelit/932eu <service domain>/<component ID>
`
`<call ID>@[<call sub-domain>.)<service domain>/<component
`
`ID> Geh2@callshakespeare,lit/Hat
`<mixer name>@[<mixer sub-domain>,)<service
`domain /<component ID>
`shakespeare.If3tgs Ex. 1018
`CISCO SYSTEMS, INC./ Page 7 of 33
`
`Ex. 1018
`CISCO SYSTEMS, INC. / Page 7 of 33
`
`
`
`
`Commands should be addressed te the ently on which they should be enacted. Individual commands only apply to certain object (for
`example Instructing @ component to hangup will return an error). In general, commands may be sent from a cilent to the service, a call,
`@ mixer oF a component. Events may be sent from a call, a mixer or a component to a client.
`5.3 Delivery Mechanism
`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:
`«© Events: Sent as directed presence from the entity producing the event toa client.
`* Commands:Sent a5 an <iq/> with the type’ attribute ‘set’ from the client to the entity to be acted on. Responses returned as an
`<lq/> with the ‘type® attribute elther ‘result’ or ‘error’.
`6. Session Flow
`This section describes the form, function and order of Rayo stanzas sent across the wire, and the circumstances in which they apply and/or may arise.
`6.1 Client Registration
`In order for a Rayo client to be considered a potential controlling party for incoming sessions, It MUST first notily the Rayo server that ik
`is avallable for the receipt of calls. This is Gone by sending directed presence tothe Rayo server with a <show/> element containing
`“chat! as in the example:
`Example 12. Client presents itself as available to the Rayo server
`
`Conversely, when a Rayo cient wishes not to be considered a potential contreliing party, It SHOULD send directed presence to the Rayo
`Server with & <show/> element containing “dnd” as in the example:
`Example 13. Client presents itself as unavailable to the Rayo server
`gre
`
`
`Tt
`
`6.2 Session Establishment
`‘Sessions may be established emher at the request of the Rayo client (an outbound call) of as a result of a Ird party request (an Inbound
`call). Each scenario differs in the Rayo protocol only up to the point at which the session Is established and media begins to flow, First we
`shall examine the sequence of stanzas passed between server and client in each of these scenarios,
`6.2.1 OutboundCall
`In onder for a cllent to establish a new outbound cal, it MUST first send @lalcommand to the server, indicating the
`proposed target for the call, its apparent source, and any meta-data to send to the target as headers.
`Example 14. Client requests establishment of a new outbound session
`
`
`
`On successfully receiving and parsing the dial command, the server SHOULD perform its own proprietary authorization
`measures fo ensure that only desirable outbound sessions are created, [f It ls established that the command should nat be
`allowed, the server MUST return an errer giving an authorization reason,
`6.2.1.1 Errors
`‘There are several reasons why the server might Immediately return an error instead of acknowledging the
`creation of a new call:
`@ The cllent [5 unknown te the server and the server does not pErmle session creation by unknown ellents.
`* The client is not authorized to create this new session.
`# The server does mot support outbound calls,
`* The server does not have sufficient resources to create a new session.
`© The dial command was malformed.
`If the client Is unknown to the server and the server does not permit session creation by unknown clients, the
`server MUST retum a <registration-required/> error with a type of ‘auth.
` imple 15. Server indicates
`client is unknown and the server does not permit session creation by
`unknown clients
`
` Jovi
`
`if the client Is not authorized (as determined by an implementation/deployment-specific algorithm) to create a
`hew sutbound session given the parameters pravided, the server MUST return 4 <not-authorized/> error with
`a type of ‘auth’.
`Example 16. Server indicates client is not authorized to create a new outbound session given the
`parameters provided
`
`
`
`
`If the server does not support outbound calls, the server MUST return 4 <festure-not-implemented/> error
`with a type of “cancel’.
`Example 17. Server indicates that it does not support outbound calls
`
`
`
`
`If the server does not have sufficient resources to create a new session, the server MUST retum a <regource-
`constraint) error with a type of‘wait’,
`Example 18. Serverindicates that it does not have sufficient resources to create a new session
`
`
`
`
`satel xalps
`
`
`
`|
`
`
`
` st
`
`Ex. 1018
`CISCO SYSTEMS, INC./ Page 8 of 33
`
`Ex. 1018
`CISCO SYSTEMS, INC. / Page 8 of 33
`
`
`
`
`
`
`
`If the dial command was malformed, the server MUST return a <bed-request/> error with a type of ‘moxiity".
`Example 19. Server indicates the dial command was malformed
`
`
`
`If the command Is successful and the call Is queved, however, confirmation of such should be sent to the client, Inchuding a
`reference to the unique [D of thecall, This call 1 may be used to execute commands and filter events for the duration of
`the session,
`Example 20. Confirmation of successful dial request and call ID
`
`
`
`‘Once the server recelwes notification that the session has been accepted by the third party, it should send a ringing event
`to the client to Indicate such:
`Example 21. Call announces its ringing state (accepted by 3rd party but not yet answered).
`
`
`
`Similarly, once the server receives notification that the session has beenanswered, It should negotiate media between the
`Maled party and its local media server, Once media negotation is complete, It should send an answered event to the cient
`to Indicate such;
`Example 22. Call announces its answered state (media connected).
`
`
`
`6.2.1.2 Nested join
`When sending a dial request, a cent MAY specify a join target within the dial element:
`Example 23. Client requests establishment of a new outbound session, with a nested join
`
`
`
`In this case, the server MUST treat the session creationIn the same way a5 without the join element, until the
`paint of media negotiation. Here, the server should negotiate media as specified by the join element, in
`accordance with the rules defined In joiningcalls. Medla MUST NOT be negotiated with the local media server,
`unless the join specifies so. The join operation MUST behave as described In Joining calls.
`6.2.2 Inbound Call
`When the system recelves a call from one of ts connected networks, It MUST then expose that requested session to Rayo
`clients, ft SHOULD use an implementation-specific routing mechanism to map incoming calls to some set of registered JID
`whieh are considered appropriate controlling parties. From this set, it SHOULD then remove any parties whom It can
`Identity as being temporarily inappropriate for control (either unavailable based on presence, under too much load, or any
`other metric which the server has available). ff, as & result, the set of Potentially Controlling Parties is empty, the server
`MUST reject the call with a ‘decline’ reason.
`If the server can Identify active Potential Controlling Parties, It MUST offer them control of the call simuitaneously, The
`server must broadcast an offer on behalf of the call te all Potential Controlling Parties, using applicable to/fromyheader data
`from the incoming session, The server MUST also inciude entity capabilities Information In the presence stanza containing
`the offer, in order to advertise the fact that the entity ts a call, qualified by the node name “unn:xmpp:rayo:call: 1°,
`Example 24. New call announces itself to a potential controlling party
`
`
`
`Once the server has offered control, & MUST walt indefingtely for a response from a PCP, The server SHOULD monitor the
`availability of PCPs to whom offers have been sent. If they all cease to be PCPs (eg by going offline) then the call should be
`Fejected in the same way as If there had not been any available PCPs to begin with.
`If an offered PCP executes a command against the call, by sending a command node to the call's JID inside an 1Q ‘ser, the
`server should execute the following routine:
`1. 1 the call does not have @ DCP, set it to the PCP from which the command originated.
`2. If the call has a DOP, and the command did not originate from the DCP, retunn a conflict (cancel) error in response to
`the command of the following format:
`Example 25. Server indicates that the call already has another DCP and that control of the call is no
`longer available,
`
`
`
`otherwise;
`3.If the command Is an accept command, notify the remote calling party that the call as been accepted, Return an
`empty 2Q result to the command Issuing party to confirm successful execution.
`4. Tf the command is an answer command, notify the remote calling party that the call has been answered and
`negotiate media between the calling party and the server's local media server, Return an empty [Q result to the
`command isuing party to confirm successful execution.
`5. If the command Is any other, handle it in the manner detailed In the following sections.
`6.3 Joining Calls
`Calls Ina Rayo system are capable of having thelr media streams moved/manipulated. Once such manipulation ls to Join the media
`streams of two calls. In a scenario where callA and callB should be joined, the dient MUST send a join command to elther call (nat both)
`specifying the call 1D of the other call, live £07
`Example 26. Client Instructs calla to join to callB and the server acknowledges the join was completed
`
`
`
`Ex. 1018
`CISCO SYSTEMS, INC./ Page 9 of 33
`
`Ex. 1018
`CISCO SYSTEMS, INC. / Page 9 of 33
`
`
`
`
`I the calls to be joined to each other are in the same security zone, the server MUST join the media stream of the two calls and return
`an-empty [Q result to confirm that the operation has been successful, If the parties to be jolned are not within the same security zone,
`an error should be returned as detailed below,
`When calls are Joined to each other by any mechanism, each call MUST dispatch a joined event specifying who they have been joined
`Example 27, Call A and B were joined, both calls emit joined events
`
`
`
`
`
`By default, the server MUSTjoin the calls by bridging their audio throughits local media server, with bidirectional media, In order to
`Specify altemative behaviour, the client MAY specify a media option (elther‘bridge’ or ‘direct’) and/ora direction option (either ‘duptex’,
`‘send’or recy’), and the server MUST bridge accordingly.
`6.3.1 Errors
`There are several reasons why the call might retunn an error instead of acknowledging a join:
`* The specified join party does not exist or cannot be found.
`+ The specified Join party Is Inaccessible for the purposes of being joined due to security restrictions,
`« The server does not have sufficient resources to complete the join.
`© The joln command was. malformed,
`« The specified mediafdirection options or their combination are not possible/supported.
`If the specified join party does not exist or cannot be found, the server MUST return 4 <service-unavallable/> error with &
`type of ‘cancer.
`Example 28. Call indicates that the specified join party does not exist or cannot be found
`
`
`
`If the specified Join party ts Inaccessible for the purposes of being joined due to security restrictions, the server MUST
`Tetum a <not-allowed)> error with a type of ‘cancel’.
`Example 29. Call indicates that the specified join party is inaccessible for the purposes of being joined due to
`security restrictionss
`
`
`
`If the server does not have sufficient resources to complete the Join, the server MUST return a <resource-constrainty>
`error with a type of ‘walt’,
`Example 30. Call indicates that there are not sufficient resources to complete the poin
`
`
`
`If the Join command was malformed (eg no call URI spectied), the server MUST return 4 <bad-request/> esror with & type
`of "modify".
`Example 34. Call indicates that the join command was malformed
`
`
`
`If the specified media/direction options or thelr combination are not possible/supported, the server MUST return a
`cfeature-not-Implemented/> error with a type of ‘modify’,
`Example 32. Call indicates that the specified media/direction options or their combination are mot
`possible/supported.
`
`
`
`‘deer
`
`airgetiane rere!
`
`6.3.2 Unjoin Command
`When the client wishes to terminate an existing join, it MUST send an unjoin command specifying the Join to break (call-id).,
`Example 33. Client instructs callA te unjoin from calli
`
`
`
`The server MUST unjoin the media streams of the two calls, rejoin both to the media server and retum an empty IQ result
`to confirm that the operation has been successful:
`Example 34, CallA acknowledges unjoin from call
`
`
`
`Optionally, if na join Is specified on the unjoln command, all existing joins must be broken:
`Example 35, Client instructs callA to unjoin from every existing join
`
`
`
`
`6.3.2.1 Errors
`There are several reasons why the call might retum an error instead of acknowledging an unjoln command:
`= The specified join does not exist.
`# The unjoin command was malformed.
`If the specified Join does not exist, the server MUST return 4 <service-unawallable/> error with a type of
`
`Ex. 1018
`CISCO SYSTEMS, INC./ Page 10 of 33
`
`Ex. 1018
`CISCO SYSTEMS, INC. / Page 10 of 33
`
`
`
`‘cancel’.
`Example 36. Call indicates that the specified join does not exist
`
`i=*enppicalictenks shakespanne diel
`
`Ifthe unjoin command was malformed [eg an empty call URI specified), the server MUST return 4 <bad-
`request/> error with a type of ‘madify’.
`Example 37. Call indicates that the join command was malformed
`
`
`
`6.3.3 Unjoined Event
`Calis may be unjoined from othercalls either in re