Internet Engineering Task Force (IETF)                        C. Boulton
Request for Comments: 6917                               NS-Technologies
Category: Standards Track                                     L. Miniero
ISSN: 2070-1721                                                 Meetecho
                                                               G. Munson
                                                                    AT&T
                                                              April 2013
        
Internet Engineering Task Force (IETF)                        C. Boulton
Request for Comments: 6917                               NS-Technologies
Category: Standards Track                                     L. Miniero
ISSN: 2070-1721                                                 Meetecho
                                                               G. Munson
                                                                    AT&T
                                                              April 2013
        

Media Resource Brokering

媒体资源代理

Abstract

摘要

The MediaCtrl working group in the IETF has proposed an architecture for controlling media services. The Session Initiation Protocol (SIP) is used as the signaling protocol that provides many inherent capabilities for message routing. In addition to such signaling properties, a need exists for intelligent, application-level media service selection based on non-static signaling properties. This is especially true when considered in conjunction with deployment architectures that include 1:M and M:N combinations of Application Servers and Media Servers. This document introduces a Media Resource Broker (MRB) entity, which manages the availability of Media Servers and the media resource demands of Application Servers. The document includes potential deployment options for an MRB and appropriate interfaces to Application Servers and Media Servers.

IETF中的MediaCtrl工作组提出了一种控制媒体服务的体系结构。会话启动协议(SIP)用作信令协议,为消息路由提供许多固有功能。除了这些信令属性之外,还需要基于非静态信令属性的智能应用级媒体服务选择。当与包括应用服务器和媒体服务器的1:M和M:N组合的部署体系结构结合考虑时,尤其如此。本文档介绍了一个媒体资源代理(MRB)实体,它管理媒体服务器的可用性和应用程序服务器的媒体资源需求。该文档包括MRB的潜在部署选项以及到应用程序服务器和媒体服务器的适当接口。

Status of This Memo

关于下段备忘

This is an Internet Standards Track document.

这是一份互联网标准跟踪文件。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.

本文件是互联网工程任务组(IETF)的产品。它代表了IETF社区的共识。它已经接受了公众审查,并已被互联网工程指导小组(IESG)批准出版。有关互联网标准的更多信息,请参见RFC 5741第2节。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc6917.

有关本文件当前状态、任何勘误表以及如何提供反馈的信息,请访问http://www.rfc-editor.org/info/rfc6917.

Copyright Notice

版权公告

Copyright (c) 2013 IETF Trust and the persons identified as the document authors. All rights reserved.

版权所有(c)2013 IETF信托基金和确定为文件作者的人员。版权所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(http://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从本文件中提取的代码组件必须包括信托法律条款第4.e节中所述的简化BSD许可证文本,并提供简化BSD许可证中所述的无担保。

Table of Contents

目录

   1. Introduction ....................................................3
   2. Conventions and Terminology .....................................6
   3. Problem Discussion ..............................................6
   4. Deployment Scenario Options .....................................7
      4.1. Query MRB ..................................................8
           4.1.1. Hybrid Query MRB ....................................9
      4.2. In-Line MRB ...............................................11
   5. MRB Interface Definitions ......................................12
      5.1. Media Server Resource Publish Interface ...................12
           5.1.1. Control Package Definition .........................13
           5.1.2. Element Definitions ................................15
           5.1.3. <mrbrequest> .......................................15
           5.1.4. <mrbresponse> ......................................17
           5.1.5. <mrbnotification> ..................................19
      5.2. Media Service Resource Consumer Interface .................30
           5.2.1. Query Mode/HTTP Consumer Interface Usage ...........31
           5.2.2. In-Line Aware Mode/SIP Consumer Interface Usage ....32
           5.2.3. Consumer Interface Lease Mechanism .................35
           5.2.4. <mrbconsumer> ......................................38
           5.2.5. Media Service Resource Request .....................39
           5.2.6. Media Service Resource Response ....................51
      5.3. In-Line Unaware MRB Interface .............................54
   6. MRB Acting as a B2BUA ..........................................54
   7. Multimodal MRB Implementations .................................55
   8. Relative Merits of Query Mode, IAMM, and IUMM ..................56
   9. Examples .......................................................58
      9.1. Publish Example ...........................................58
      9.2. Consumer Examples .........................................64
           9.2.1. Query Example ......................................64
           9.2.2. IAMM Examples ......................................68
   10. Media Service Resource Publisher Interface XML Schema .........83
        
   1. Introduction ....................................................3
   2. Conventions and Terminology .....................................6
   3. Problem Discussion ..............................................6
   4. Deployment Scenario Options .....................................7
      4.1. Query MRB ..................................................8
           4.1.1. Hybrid Query MRB ....................................9
      4.2. In-Line MRB ...............................................11
   5. MRB Interface Definitions ......................................12
      5.1. Media Server Resource Publish Interface ...................12
           5.1.1. Control Package Definition .........................13
           5.1.2. Element Definitions ................................15
           5.1.3. <mrbrequest> .......................................15
           5.1.4. <mrbresponse> ......................................17
           5.1.5. <mrbnotification> ..................................19
      5.2. Media Service Resource Consumer Interface .................30
           5.2.1. Query Mode/HTTP Consumer Interface Usage ...........31
           5.2.2. In-Line Aware Mode/SIP Consumer Interface Usage ....32
           5.2.3. Consumer Interface Lease Mechanism .................35
           5.2.4. <mrbconsumer> ......................................38
           5.2.5. Media Service Resource Request .....................39
           5.2.6. Media Service Resource Response ....................51
      5.3. In-Line Unaware MRB Interface .............................54
   6. MRB Acting as a B2BUA ..........................................54
   7. Multimodal MRB Implementations .................................55
   8. Relative Merits of Query Mode, IAMM, and IUMM ..................56
   9. Examples .......................................................58
      9.1. Publish Example ...........................................58
      9.2. Consumer Examples .........................................64
           9.2.1. Query Example ......................................64
           9.2.2. IAMM Examples ......................................68
   10. Media Service Resource Publisher Interface XML Schema .........83
        
   11. Media Service Resource Consumer Interface XML Schema .........106
   12. Security Considerations ......................................127
   13. IANA Considerations ..........................................130
      13.1. Media Control Channel Framework Package Registration ....130
      13.2. application/mrb-publish+xml Media Type ..................130
      13.3. application/mrb-consumer+xml Media Type .................131
      13.4. URN Sub-Namespace Registration for mrb-publish ..........132
      13.5. URN Sub-Namespace Registration for mrb-consumer .........132
      13.6. XML Schema Registration for mrb-publish .................132
      13.7. XML Schema Registration for mrb-consumer ................133
   14. Acknowledgements .............................................133
   15. References ...................................................133
      15.1. Normative References ....................................133
      15.2. Informative References ..................................135
        
   11. Media Service Resource Consumer Interface XML Schema .........106
   12. Security Considerations ......................................127
   13. IANA Considerations ..........................................130
      13.1. Media Control Channel Framework Package Registration ....130
      13.2. application/mrb-publish+xml Media Type ..................130
      13.3. application/mrb-consumer+xml Media Type .................131
      13.4. URN Sub-Namespace Registration for mrb-publish ..........132
      13.5. URN Sub-Namespace Registration for mrb-consumer .........132
      13.6. XML Schema Registration for mrb-publish .................132
      13.7. XML Schema Registration for mrb-consumer ................133
   14. Acknowledgements .............................................133
   15. References ...................................................133
      15.1. Normative References ....................................133
      15.2. Informative References ..................................135
        
1. Introduction
1. 介绍

As IP-based multimedia infrastructures mature, the complexity and demands from deployments increase. Such complexity will result in a wide variety of capabilities from a range of vendors that should all be interoperable using the architecture and protocols produced by the MediaCtrl working group. It should be possible for a controlling entity to be assisted in Media Server selection so that the most appropriate resource is selected for a particular operation. The importance increases when one introduces a flexible level of deployment scenarios, as specified in RFC 5167 [RFC5167] and RFC 5567 [RFC5567]. These documents make statements like "it should be possible to have a many-to-many relationship between Application Servers and Media Servers that use this protocol". This leads to the following deployment architectures being possible when considering media resources, to provide what can be effectively described as media resource brokering.

随着基于IP的多媒体基础设施的成熟,部署的复杂性和需求不断增加。这种复杂性将导致一系列供应商提供各种各样的功能,这些功能都可以使用MediaCtrl工作组生成的体系结构和协议进行互操作。控制实体应能够在媒体服务器选择中得到帮助,以便为特定操作选择最合适的资源。如RFC 5167[RFC5167]和RFC 5567[RFC5567]中所述,当引入灵活级别的部署场景时,重要性就会增加。这些文档的表述类似于“应用程序服务器和使用此协议的媒体服务器之间应该可以存在多对多关系”。这导致在考虑媒体资源时,可以采用以下部署体系结构,以提供可以有效描述为媒体资源代理的功能。

The simplest deployment view is illustrated in Figure 1.

最简单的部署视图如图1所示。

   +---+-----+---+                         +---+-----+---+
   | Application |                         |    Media    |
   |   Server    |<-------MS Control------>|    Server   |
   +-------------+                         +-------------+
        
   +---+-----+---+                         +---+-----+---+
   | Application |                         |    Media    |
   |   Server    |<-------MS Control------>|    Server   |
   +-------------+                         +-------------+
        

Figure 1: Basic Architecture

图1:基本架构

This simply involves a single Application Server and Media Server. Expanding on this view, it is also possible for an Application Server to control multiple (greater than 1) Media Server instances at any one time. This deployment view is illustrated in Figure 2. Typically, such architectures are associated with application logic that requires high-demand media services. It is more than possible

这只涉及一个应用服务器和媒体服务器。扩展此视图,应用程序服务器也可以同时控制多个(大于1个)媒体服务器实例。此部署视图如图2所示。通常,此类体系结构与需要高需求媒体服务的应用程序逻辑相关联。这是完全可能的

that each Media Server possesses a different media capability set. Media Servers may offer different media services as specified in the MediaCtrl architecture document [RFC5567]. A Media Server may have similar media functionality but may have different capacity or media codec support.

每个媒体服务器拥有不同的媒体功能集。媒体服务器可以提供MediaCtrl体系结构文档[RFC5567]中指定的不同媒体服务。媒体服务器可能具有类似的媒体功能,但可能具有不同的容量或媒体编解码器支持。

                                           +---+-----+---+
                                           |    Media    |
                                    +----->|    Server   |
                                    |      +-------------+
                                    |
   +---+-----+---+                  |      +---+-----+---+
   | Application |                  |      |    Media    |
   |   Server    |<--MS Control-----+----->|    Server   |
   +-------------+                  |      +-------------+
                                    |
                                    |      +---+-----+---+
                                    +----->|    Media    |
                                           |    Server   |
                                           +-------------+
        
                                           +---+-----+---+
                                           |    Media    |
                                    +----->|    Server   |
                                    |      +-------------+
                                    |
   +---+-----+---+                  |      +---+-----+---+
   | Application |                  |      |    Media    |
   |   Server    |<--MS Control-----+----->|    Server   |
   +-------------+                  |      +-------------+
                                    |
                                    |      +---+-----+---+
                                    +----->|    Media    |
                                           |    Server   |
                                           +-------------+
        

Figure 2: Multiple Media Servers

图2:多媒体服务器

Figure 3 conveys the opposite view to that in Figure 2. In this model, there are a number of (greater than 1) Application Servers, possibly supporting dissimilar applications, controlling a single Media Server. Typically, such architectures are associated with application logic that requires low-demand media services.

图3传达了与图2中相反的视图。在此模型中,有多个(超过1个)应用程序服务器,可能支持不同的应用程序,控制单个媒体服务器。通常,此类体系结构与需要低需求媒体服务的应用程序逻辑相关联。

   +---+-----+---+
   | Application |
   |   Server    |<-----+
   +-------------+      |
                        |
   +---+-----+---+      |                  +---+-----+---+
   | Application |      |                  |    Media    |
   |   Server    |<-----+-----MS Control-->|    Server   |
   +-------------+      |                  +-------------+
                        |
   +---+-----+---+      |
   | Application |      |
   |   Server    |<-----+
   +-------------+
        
   +---+-----+---+
   | Application |
   |   Server    |<-----+
   +-------------+      |
                        |
   +---+-----+---+      |                  +---+-----+---+
   | Application |      |                  |    Media    |
   |   Server    |<-----+-----MS Control-->|    Server   |
   +-------------+      |                  +-------------+
                        |
   +---+-----+---+      |
   | Application |      |
   |   Server    |<-----+
   +-------------+
        

Figure 3: Multiple Application Servers

图3:多个应用服务器

The final deployment view is the most complex (Figure 4). In this model (M:N), there exist any number of Application Servers and any number of Media Servers. It is again possible in this model that Media Servers might not be homogeneous, and they might have different capability sets and capacities.

最终的部署视图是最复杂的(图4)。在这个模型(M:N)中,存在任意数量的应用服务器和任意数量的媒体服务器。在这个模型中,媒体服务器可能不是同质的,它们可能具有不同的功能集和容量。

   +---+-----+---+                         +---+-----+---+
   | Application |                         |    Media    |
   |   Server    |<-----+            +---->|    Server   |
   +-------------+      |            |     +-------------+
                        |            |
   +---+-----+---+      |            |     +---+-----+---+
   | Application |      |            |     |    Media    |
   |   Server    |<-----+-MS Control-+---->|    Server   |
   +-------------+      |            |     +-------------+
                        |            |
   +---+-----+---+      |            |     +---+-----+---+
   | Application |      |            +---->|    Media    |
   |   Server    |<-----+                  |    Server   |
   +-------------+                         +---+-----+---+
        
   +---+-----+---+                         +---+-----+---+
   | Application |                         |    Media    |
   |   Server    |<-----+            +---->|    Server   |
   +-------------+      |            |     +-------------+
                        |            |
   +---+-----+---+      |            |     +---+-----+---+
   | Application |      |            |     |    Media    |
   |   Server    |<-----+-MS Control-+---->|    Server   |
   +-------------+      |            |     +-------------+
                        |            |
   +---+-----+---+      |            |     +---+-----+---+
   | Application |      |            +---->|    Media    |
   |   Server    |<-----+                  |    Server   |
   +-------------+                         +---+-----+---+
        

Figure 4: Many-to-Many Architecture

图4:多对多架构

The remaining sections in this specification will focus on a new entity called a Media Resource Broker (MRB), which can be utilized in the deployment architectures described previously in this section. The MRB entity provides the ability to obtain media resource information and appropriately allocate (broker) on behalf of client applications.

本规范的其余部分将重点介绍一个称为媒体资源代理(MRB)的新实体,该实体可在本节前面描述的部署体系结构中使用。MRB实体提供了获取媒体资源信息并代表客户端应用程序适当分配(代理)的能力。

The high-level deployment options discussed in this section rely on network architecture and policy to prohibit inappropriate use. Such policies are out of scope for this document.

本节讨论的高级部署选项依赖于网络体系结构和策略来禁止不适当的使用。此类政策超出了本文件的范围。

This document will take a look at the specific problem areas related to such deployment architectures. It is recognized that the solutions proposed in this document should be equally adaptable to all of the previously described deployment models. It is also recognized that the solution is far more relevant to some of the previously discussed deployment models and can almost be viewed as redundant on others.

本文档将介绍与此类部署架构相关的特定问题领域。人们认识到,本文件中提出的解决方案应同样适用于前面描述的所有部署模型。人们还认识到,该解决方案与前面讨论的一些部署模型更相关,并且几乎可以被视为对其他部署模型的冗余。

2. Conventions and Terminology
2. 公约和术语

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119].

本文件中的关键词“必须”、“不得”、“要求”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照RFC 2119[RFC2119]中所述进行解释。

This document inherits terminology proposed in RFC 5567 [RFC5567] and in "Media Control Channel Framework" [RFC6230]. In addition, the following terms are defined for use in this document and for use in the context of the MediaCtrl working group in the IETF:

本文件继承了RFC 5567[RFC5567]和“媒体控制通道框架”[RFC6230]中提出的术语。此外,以下术语定义用于本文件和IETF中MediaCtrl工作组的上下文:

Media Resource Broker (MRB): A logical entity that is responsible for both collection of appropriate published Media Server (MS) information and selecting appropriate Media Server resources on behalf of consuming entities.

媒体资源代理(MRB):一个逻辑实体,负责收集适当的已发布媒体服务器(MS)信息,并代表使用实体选择适当的媒体服务器资源。

Query MRB: An instantiation of an MRB (see previous definition) that provides an interface for an Application Server to retrieve the address of an appropriate Media Server. The result returned to the Application Server can be influenced by information contained in the query request.

查询MRB:MRB的一个实例(参见前面的定义),它为应用服务器提供一个接口,用于检索相应媒体服务器的地址。返回到应用服务器的结果可能会受到查询请求中包含的信息的影响。

In-line MRB: An instantiation of an MRB (see previous definition) that directly receives requests on the signaling path. There is no separate query.

直列MRB:直接在信令路径上接收请求的MRB的实例(参见前面的定义)。没有单独的查询。

CFW: Media Control Channel Framework, as specified in [RFC6230].

CFW:媒体控制通道框架,如[RFC6230]所述。

Within the context of In-line MRBs, additional terms are defined:

在直列MRB的上下文中,定义了其他术语:

In-line Aware MRB Mode (IAMM): Defined in Section 5.2.2.1.

在线感知MRB模式(IAMM):在第5.2.2.1节中定义。

In-line Unaware MRB Mode (IUMM): Defined in Section 5.3.

在线MRB模式(IUMM):定义见第5.3节。

The document will often specify when a specific identifier in a protocol message needs to be unique. Unless stated otherwise, such uniqueness will always be within the scope of the Media Servers controlled by the same MRB. The interaction between different MRB instances, e.g., the partitioning of a logical MRB, is out of scope for this document.

文档通常会指定协议消息中的特定标识符何时需要唯一。除非另有说明,否则此类唯一性将始终在同一MRB控制的媒体服务器范围内。不同MRB实例之间的交互(例如,逻辑MRB的分区)超出了本文档的范围。

3. Problem Discussion
3. 问题讨论

As discussed in Section 1, a goal of the MediaCtrl working group is to produce a solution that will service a wide variety of deployment architectures. Such architectures range from the simplest 1:1 relationship between Media Servers and Application Servers to potentially linearly scaling 1:M, M:1, and M:N deployments.

正如第1节所讨论的,MediaCtrl工作组的目标是生成一个将服务于多种部署体系结构的解决方案。这些体系结构的范围从媒体服务器和应用服务器之间最简单的1:1关系到可能线性扩展的1:M、M:1和M:N部署。

Managing such deployments is itself non-trivial for the proposed solution until an additional number of factors that increase complexity are included in the equation. As Media Servers evolve, it must be taken into consideration that, where many can exist in a deployment, they may not have been produced by the same vendor and may not have the same capability set. It should be possible for an Application Server that exists in a deployment to select a media service based on a common, appropriate capability set. In conjunction with capabilities, it is also important to take available resources into consideration. The ability to select an appropriate media service function is an extremely useful feature but becomes even more powerful when considered with available resources for servicing a request.

管理此类部署本身对于建议的解决方案来说是非常重要的,直到等式中包含了额外数量的增加复杂性的因素。随着媒体服务器的发展,必须考虑到,在部署中可能存在许多媒体服务器的情况下,它们可能不是由同一供应商生产的,也可能没有相同的功能集。部署中存在的应用程序服务器应该可以基于通用的适当功能集选择媒体服务。结合能力,考虑可用资源也很重要。选择适当的媒体服务功能是一项非常有用的功能,但如果考虑到为请求提供服务的可用资源,这项功能将变得更加强大。

In conclusion, the intention is to create a toolkit that allows MediaCtrl deployments to effectively utilize the available media resources. It should be noted that in the simplest deployments where only a single Media Server exists, an MRB function is probably not required. Only a single capability set exists, and resource availability can be handled using the appropriate underlying signaling, e.g., SIP response. This document does not prohibit such uses of an MRB; it simply provides the tools for various entities to interact where appropriate. It is also worth noting that the functions specified in this document aim to provide a 'best effort' view of media resources at the time of request for initial Media Server routing decisions. Any dramatic change in media capabilities or capacity after a request has taken place should be handled by the underlying protocol.

总之,目的是创建一个工具包,使MediaCtrl部署能够有效地利用可用的媒体资源。需要注意的是,在仅存在一台媒体服务器的最简单部署中,可能不需要MRB功能。只有一个功能集存在,并且可以使用适当的底层信令(例如SIP响应)来处理资源可用性。本文件不禁止此类MRB的使用;它只是为各种实体提供了适当的交互工具。还值得注意的是,本文档中指定的功能旨在在请求初始媒体服务器路由决策时提供媒体资源的“尽力而为”视图。请求发生后,媒体功能或容量的任何重大变化都应由底层协议处理。

It should be noted that there may be additional information that is desirable for the MRB to have for purposes of selecting a Media Server resource, such as resource allocation rules across different applications, planned or unplanned downtime of Media Server resources, the planned addition of future Media Server resources, or Media Server resource capacity models. How the MRB acquires such information is outside the scope of this document. The specific techniques used for selecting an appropriate media resource by an MRB is also outside the scope of this document.

需要注意的是,为了选择媒体服务器资源,MRB可能需要其他信息,例如跨不同应用程序的资源分配规则、媒体服务器资源的计划内或计划外停机时间、未来媒体服务器资源的计划内添加,或媒体服务器资源容量模型。MRB如何获取此类信息不在本文件范围内。MRB用于选择适当媒体资源的特定技术也不在本文档范围内。

4. Deployment Scenario Options
4. 部署方案选项

Research into media resource brokering concluded that a couple of high-level models provided an appropriate level of flexibility. The general principles of "in-line" and "query" MRB concepts are discussed in the rest of this section. It should be noted that while the interfaces are different, they both use common underlying mechanisms defined in this specification.

对媒体资源代理的研究得出结论,两个高级模型提供了适当的灵活性。“在线”和“查询”MRB概念的一般原则将在本节的其余部分讨论。应该注意的是,虽然接口不同,但它们都使用本规范中定义的公共底层机制。

4.1. Query MRB
4.1. 查询MRB

The "Query" model for MRB interactions provides the ability for a client of media services (for example, an Application Server) to "ask" an MRB for an appropriate Media Server, as illustrated in Figure 5.

MRB交互的“查询”模型为媒体服务客户端(例如,应用程序服务器)提供了向MRB“询问”适当媒体服务器的能力,如图5所示。

                        +---+-----+---+
          +------------>|     MRB     |<----------+----<-----+---+
          |             +-------------+        (1)|          |   |
          |                                       |          |   |
          |(2)                             +---+--+--+---+   |   |
          |                                |    Media    |   |   |
          |                          +---->|    Server   |   |   |
          |                          |     +-------------+   |   |
          |                          |                    (1)|   |
   +---+--+--+---+                   |     +---+-----+---+   |   |
   | Application |                   |     |    Media    |   |   |
   |   Server    |<-----+-MS Control-+---->|    Server   |->-+   |
   +-------------+          (3)      |     +-------------+       |
                                     |                           |
                                     |     +---+-----+---+    (1)|
                                     +---->|    Media    |       |
                                           |    Server   |--->---+
                                           +---+-----+---+
        
                        +---+-----+---+
          +------------>|     MRB     |<----------+----<-----+---+
          |             +-------------+        (1)|          |   |
          |                                       |          |   |
          |(2)                             +---+--+--+---+   |   |
          |                                |    Media    |   |   |
          |                          +---->|    Server   |   |   |
          |                          |     +-------------+   |   |
          |                          |                    (1)|   |
   +---+--+--+---+                   |     +---+-----+---+   |   |
   | Application |                   |     |    Media    |   |   |
   |   Server    |<-----+-MS Control-+---->|    Server   |->-+   |
   +-------------+          (3)      |     +-------------+       |
                                     |                           |
                                     |     +---+-----+---+    (1)|
                                     +---->|    Media    |       |
                                           |    Server   |--->---+
                                           +---+-----+---+
        

Figure 5: Query MRB

图5:查询MRB

In this deployment, the Media Servers use the Media Server Resource Publish interface, as discussed in Section 5.1, to convey capability sets as well as resource information. This is depicted by (1) in Figure 5. It is then the MRB's responsibility to accumulate all appropriate information relating to media services in the logical deployment cluster. The Application Server (or other media services client) is then able to query the MRB for an appropriate resource (as identified by (2) in Figure 5). Such a query would carry specific information related to the media service required and enable the MRB to provide increased accuracy in its response. This particular interface is discussed in "Media Service Resource Consumer Interface" (Section 5.2). The Application Server is then able to direct control commands (for example, create a conference) and media dialogs to the appropriate Media Server, as shown by (3) in Figure 5. Additionally, with Query mode, the MRB is not directly in the signaling path between the Application Server and the selected Media Server resource.

在此部署中,媒体服务器使用媒体服务器资源发布界面(如第5.1节所述)来传输功能集和资源信息。图5中的(1)描述了这一点。然后,MRB负责在逻辑部署集群中积累与媒体服务相关的所有适当信息。然后,应用程序服务器(或其他媒体服务客户端)能够查询MRB以获得适当的资源(如图5中的(2)所示)。这样的查询将携带与所需媒体服务相关的特定信息,并使MRB能够在其响应中提供更高的准确性。此特定接口在“媒体服务资源使用者接口”(第5.2节)中讨论。然后,应用服务器能够将控制命令(例如,创建会议)和媒体对话框定向到适当的媒体服务器,如图5中的(3)所示。此外,在查询模式下,MRB不直接位于应用服务器和所选媒体服务器资源之间的信令路径中。

4.1.1. Hybrid Query MRB
4.1.1. 混合查询MRB

As mentioned previously, it is the intention that a toolkit is provided for MRB functionality within a MediaCtrl architecture. It is expected that in specific deployment scenarios the role of the MRB might be co-hosted as a hybrid logical entity with an Application Server, as shown in Figure 6.

如前所述,其目的是为MediaCtrl体系结构中的MRB功能提供工具包。预计在特定的部署场景中,MRB的角色可能作为一个混合逻辑实体与应用服务器共同托管,如图6所示。

          +------------<----------------<---------+----<-----+---+
          |                     (1)               |          |   |
          |                                       |          |   |
          |                                +---+--+--+---+   |   |
          |                                |    Media    |   |   |
          V                          +---->|    Server   |   |   |
   +------+------+                   |     +-------------+   |   |
   |     MRB     |                   |                       |   |
   +---+--+--+---+                   |     +---+-----+---+   |   |
   | Application |                   |     |    Media    |   |   |
   |   Server    |<-----+-MS Control-+---->|    Server   |->-+   |
   +-------------+                   |     +-------------+       |
                                     |                           |
                                     |     +---+-----+---+       |
                                     +---->|    Media    |       |
                                           |    Server   |--->---+
                                           +---+-----+---+
        
          +------------<----------------<---------+----<-----+---+
          |                     (1)               |          |   |
          |                                       |          |   |
          |                                +---+--+--+---+   |   |
          |                                |    Media    |   |   |
          V                          +---->|    Server   |   |   |
   +------+------+                   |     +-------------+   |   |
   |     MRB     |                   |                       |   |
   +---+--+--+---+                   |     +---+-----+---+   |   |
   | Application |                   |     |    Media    |   |   |
   |   Server    |<-----+-MS Control-+---->|    Server   |->-+   |
   +-------------+                   |     +-------------+       |
                                     |                           |
                                     |     +---+-----+---+       |
                                     +---->|    Media    |       |
                                           |    Server   |--->---+
                                           +---+-----+---+
        

Figure 6: Hybrid Query MRB - Application Server Hosted

图6:混合查询MRB-托管的应用程序服务器

This diagram is identical to that in Figure 5 with the exception that the MRB is now hosted on the Application Server. The Media Server Publish interface is still being used to accumulate resource information at the MRB, but as it is co-hosted on the Application Server, the Media Server Consumer interface has collapsed. It might still exist within the Application Server/MRB interaction, but this is an implementation issue. This type of deployment suits a single Application Server environment, but it should be noted that a Media Server Consumer interface could then be offered from the hybrid if required.

此图与图5中的图相同,只是MRB现在托管在应用程序服务器上。媒体服务器发布界面仍在用于在MRB上积累资源信息,但由于它在应用程序服务器上共同托管,媒体服务器使用者界面已崩溃。它可能仍然存在于应用程序服务器/MRB交互中,但这是一个实现问题。这种类型的部署适合单个应用程序服务器环境,但应注意,如果需要,可以从混合应用程序服务器提供媒体服务器使用者接口。

In a similar manner, the Media Server could also act as a hybrid for the deployment cluster, as illustrated in Figure 7.

以类似的方式,媒体服务器也可以充当部署集群的混合服务器,如图7所示。

                                   (1)                 +---+-----+---+
   +---+---+------------->---------------->----------->|     MRB     |
   |   |   |   +---+--+--+---+                         +---+-----+---+
   |   |   +-<-| Application |                         |    Media    |
   |   |       |   Server    |<--+-MS Control-+------->|    Server   |
   |   |       +-------------+                   |     +-------------+
   |   |                                         |
   |   |       +---+--+--+---+                   |
   |   +---<---| Application |                   |
   |           |   Server    |<--+-MS Control-+--+
   |           +-------------+                   |
   |                                             |
   |           +---+--+--+---+                   |
   +---<-------| Application |                   |
               |   Server    |<--+-MS Control-+--+
               +-------------+
        
                                   (1)                 +---+-----+---+
   +---+---+------------->---------------->----------->|     MRB     |
   |   |   |   +---+--+--+---+                         +---+-----+---+
   |   |   +-<-| Application |                         |    Media    |
   |   |       |   Server    |<--+-MS Control-+------->|    Server   |
   |   |       +-------------+                   |     +-------------+
   |   |                                         |
   |   |       +---+--+--+---+                   |
   |   +---<---| Application |                   |
   |           |   Server    |<--+-MS Control-+--+
   |           +-------------+                   |
   |                                             |
   |           +---+--+--+---+                   |
   +---<-------| Application |                   |
               |   Server    |<--+-MS Control-+--+
               +-------------+
        

Figure 7: Hybrid Query MRB - MS Hosted

图7:混合查询MRB-MS托管

In this example, the MRB has collapsed and is co-hosted by the Media Server. The Media Server Consumer interface is still available to the Application Servers (1) to query Media Server resources. The Media Server Publish interface has collapsed onto the Media Server. It might still exist within the Media Server/MRB interaction, but this is an implementation issue. This type of deployment suits a single Media Server environment, but it should be noted that a Media Server Publish interface could then be offered from the hybrid if required. A typical use case scenario for such a topology would be a single Media Server representing a pool of MSs in a cluster. In this case, the MRB would actually be handling a cluster of Media Servers, rather than one.

在本例中,MRB已折叠,并由媒体服务器共同托管。应用程序服务器(1)仍可使用媒体服务器使用者界面查询媒体服务器资源。媒体服务器发布界面已折叠到媒体服务器上。它可能仍然存在于媒体服务器/MRB交互中,但这是一个实现问题。这种类型的部署适用于单个媒体服务器环境,但应注意,如果需要,可以从混合服务器提供媒体服务器发布接口。这种拓扑的典型用例场景是单个媒体服务器,表示集群中的MSs池。在这种情况下,MRB实际上将处理一个媒体服务器集群,而不是一个。

4.2. In-Line MRB
4.2. 直列MRB

The "In-line" MRB is architecturally different from the "Query" model discussed in the previous section. The concept of a separate query disappears. The client of the MRB simply uses the media resource control and media dialog signaling to involve the MRB. This type of deployment is illustrated in Figure 8.

“在线”MRB在架构上不同于上一节讨论的“查询”模型。单独查询的概念消失了。MRB的客户机仅使用媒体资源控制和媒体对话信令来涉及MRB。这种类型的部署如图8所示。

                               +-------<----------+----<-------+---+
                               |                  | (1)        |   |
                               |                  |            |   |
                               |             +---+--+--+---+   |   |
                               |             |    Media    |   |   |
                               |     +------>|    Server   |   |   |
                               |     |(3)    +-------------+   |   |
                               |     |                      (1)|   |
   +---+--+--+---+             |     |       +---+-----+---+   |   |
   | Application |  (2) +---+--V--+---+  (3) |    Media    |   |   |
   |   Server    |----->|     MRB     |----->|    Server   |->-+   |
   +-------------+      +---+-----+---+      +-------------+       |
                                     |                             |
                                     |   (3) +---+-----+---+    (1)|
                                     +------>|    Media    |       |
                                             |    Server   |--->---+
                                             +---+-----+---+
        
                               +-------<----------+----<-------+---+
                               |                  | (1)        |   |
                               |                  |            |   |
                               |             +---+--+--+---+   |   |
                               |             |    Media    |   |   |
                               |     +------>|    Server   |   |   |
                               |     |(3)    +-------------+   |   |
                               |     |                      (1)|   |
   +---+--+--+---+             |     |       +---+-----+---+   |   |
   | Application |  (2) +---+--V--+---+  (3) |    Media    |   |   |
   |   Server    |----->|     MRB     |----->|    Server   |->-+   |
   +-------------+      +---+-----+---+      +-------------+       |
                                     |                             |
                                     |   (3) +---+-----+---+    (1)|
                                     +------>|    Media    |       |
                                             |    Server   |--->---+
                                             +---+-----+---+
        

Figure 8: In-Line MRB

图8:直列MRB

The Media Servers still use the Media Server Publish interface to convey capabilities and resources to the MRB, as illustrated by (1). The Media Server Control Channels (and media dialogs as well, if required) are sent to the MRB (2), which then selects an appropriate Media Server (3) and remains in the signaling path between the Application Server and the Media Server resources.

媒体服务器仍然使用媒体服务器发布接口向MRB传输功能和资源,如(1)所示。媒体服务器控制通道(以及媒体对话框,如果需要)被发送到MRB(2),然后MRB选择适当的媒体服务器(3),并保留在应用服务器和媒体服务器资源之间的信令路径中。

The In-line MRB can be split into two distinct logical roles that can be applied on a per-request basis. They are:

内联MRB可分为两个不同的逻辑角色,可根据每个请求应用。他们是:

In-line Unaware MRB Mode (IUMM): Allows an MRB to act on behalf of clients requiring media services who are not aware of an MRB or its operation. In this case, the Application Server does not provide explicit information on the kind of Media Server resource it needs (as in Section 5.2), and the MRB is left to deduce it by potentially inspecting other information in the request from the Application Server (for example, Session Description Protocol (SDP) content, or address of the requesting Application Server, or additional Request-URI parameters as per RFC 4240 [RFC4240]).

在线不知道MRB模式(IUMM):允许MRB代表不知道MRB或其操作的需要媒体服务的客户。在这种情况下,应用服务器不提供其所需的媒体服务器资源类型的明确信息(如第5.2节所述),MRB可以通过潜在地检查来自应用服务器的请求中的其他信息(例如,会话描述协议(SDP))来推断它请求应用服务器的内容或地址,或RFC 4240[RFC4240]规定的其他请求URI参数。

In-line Aware MRB Mode (IAMM): Allows an MRB to act on behalf of clients requiring media services who are aware of an MRB and its operation. In particular, it allows the Application Server to explicitly convey matching characteristics to those provided by Media Servers, as does the Query MRB mode (as in Section 5.2).

在线感知MRB模式(IAMM):允许MRB代表了解MRB及其操作的需要媒体服务的客户。特别是,它允许应用服务器显式地将匹配特性传递给媒体服务器提供的特性,查询MRB模式也是如此(如第5.2节所述)。

In either of the previously described roles, signaling as specified by the Media Control Channel Framework ([RFC6230]) would be involved, and the MRB would deduce that the selected Media Server resources are no longer needed when the Application Server or Media Server terminates the corresponding SIP dialog. The two modes are discussed in more detail in Section 5.3.

在上述任一角色中,将涉及由媒体控制信道框架([RFC6230])指定的信令,并且MRB将推断当应用服务器或媒体服务器终止相应的SIP对话框时,不再需要所选媒体服务器资源。第5.3节将更详细地讨论这两种模式。

5. MRB Interface Definitions
5. MRB接口定义

The intention of this specification is to provide a toolkit for a variety of deployment architectures where media resource brokering can take place. Two main interfaces are required to support the differing requirements. The two interfaces are described in the remainder of this section and have been named the Media Server Resource Publish and Media Server Resource Consumer interfaces.

本规范的目的是为可以进行媒体资源代理的各种部署体系结构提供工具包。需要两个主要接口来支持不同的需求。这两个接口将在本节的其余部分中介绍,并命名为媒体服务器资源发布接口和媒体服务器资源使用者接口。

It is beyond the scope of this document to define exactly how to construct an MRB using the interfaces described. It is, however, important that the two interfaces are complimentary so that development of appropriate MRB functionality is supported.

准确定义如何使用所述接口构建MRB超出了本文档的范围。然而,重要的是这两个接口是互补的,以便支持适当的MRB功能的开发。

5.1. Media Server Resource Publish Interface
5.1. 媒体服务器资源发布接口

The Media Server Resource Publish interface is responsible for providing an MRB with appropriate Media Server resource information. As such, this interface is assumed to provide both general and specific details related to Media Server resources. This information needs to be conveyed using an industry standard mechanism to provide increased levels of adoption and interoperability. A Control Package for the Media Control Channel Framework will be specified to fulfill this interface requirement. It provides an establishment and monitoring mechanism to enable a Media Server to report appropriate statistics to an MRB. The Publish interface is used with both the Query mode and In-line mode of MRB operation.

媒体服务器资源发布接口负责向MRB提供适当的媒体服务器资源信息。因此,假定此接口提供与媒体服务器资源相关的一般和特定详细信息。需要使用行业标准机制来传达这些信息,以提高采用率和互操作性。将指定媒体控制通道框架的控制包,以满足此接口要求。它提供了一种建立和监视机制,使媒体服务器能够向MRB报告适当的统计数据。发布界面用于MRB操作的查询模式和在线模式。

As already discussed in Section 1, the MRB view of Media Server resource availability will in reality be approximate -- i.e., partial and imperfect. The MRB Publish interface does not provide an exhaustive view of current Media Server resource consumption; the Media Server may in some cases provide a best-effort computed view of resource consumption parameters conveyed in the Publish interface (e.g., Digital Signal Processors (DSPs) with a fixed number of

如第1节所述,媒体服务器资源可用性的MRB视图实际上是近似的,即部分和不完美的。MRB发布界面不提供当前媒体服务器资源消耗的详尽视图;媒体服务器在某些情况下可以提供发布接口(例如,具有固定数量的数字信号处理器(dsp))中传送的资源消耗参数的尽力而为的计算视图

streams versus Graphics Processing Units (GPUs) with CPU availability). Media resource information may only be reported periodically over the Publish interface to an MRB.

流与图形处理单元(GPU)以及CPU可用性)。媒体资源信息只能通过发布接口定期报告给MRB。

It is also worth noting that while the scope of the MRB is in providing interested Application Servers with the available resources, the MRB also allows for the retrieval of information about consumed resources. While this is of course a relevant piece of information (e.g., for monitoring purposes), such functionality inevitably raises security considerations, and implementations should take this into account. See Section 12 for more details.

还值得注意的是,虽然MRB的范围是为感兴趣的应用程序服务器提供可用资源,但MRB还允许检索有关消耗资源的信息。虽然这当然是一条相关的信息(例如,出于监控目的),但这种功能不可避免地会引起安全考虑,实现时应该考虑到这一点。详见第12节。

The MRB Publish interface uses the Media Control Channel Framework ([RFC6230]) as the basis for interaction between a Media Server and an MRB. The Media Control Channel Framework uses an extension mechanism to allow specific usages that are known as Control Packages. Section 5.1.1 defines the Control Package that MUST be implemented by any Media Server wanting to interact with an MRB entity.

MRB发布接口使用媒体控制通道框架([RFC6230])作为媒体服务器和MRB之间交互的基础。媒体控制通道框架使用扩展机制来允许称为控制包的特定用途。第5.1.1节定义了任何想要与MRB实体交互的媒体服务器必须实现的控制包。

5.1.1. Control Package Definition
5.1.1. 控制包定义

This section fulfills the requirement for information that must be specified during the definition of a Control Framework package, as detailed in Section 8 of [RFC6230].

本节满足控制框架包定义期间必须规定的信息要求,详见[RFC6230]第8节。

5.1.1.1. Control Package Name
5.1.1.1. 控制包名称

The Media Channel Control Framework requires a Control Package definition to specify and register a unique name and version.

媒体频道控制框架需要控制包定义来指定和注册唯一的名称和版本。

The name and version of this Control Package is "mrb-publish/1.0".

此控制包的名称和版本为“mrb publish/1.0”。

5.1.1.2. Framework Message Usage
5.1.1.2. 框架消息使用

The MRB Publish interface allows a Media Server to convey available capabilities and resources to an MRB entity.

MRB发布界面允许媒体服务器向MRB实体传送可用的功能和资源。

This package defines XML elements in Section 5.1.2 and provides an XML schema in Section 10.

该包在第5.1.2节中定义了XML元素,并在第10节中提供了一个XML模式。

The XML elements in this package are split into requests, responses, and event notifications. Requests are carried in CONTROL message bodies; the <mrbrequest> element is defined as a package request. This request can be used for creating new subscriptions and updating/ removing existing subscriptions. Event notifications are also carried in CONTROL message bodies; the <mrbnotification> element is

此包中的XML元素分为请求、响应和事件通知。请求在控制消息体中进行;<mrbrequest>元素被定义为包请求。此请求可用于创建新订阅和更新/删除现有订阅。事件通知也在控制消息体中进行;<mrbnotification>元素为

defined for package event notifications. Responses are carried either in REPORT message or Control Framework 200 response bodies; the <mrbresponse> element is defined as a package-level response.

为包事件通知定义。响应在报告消息或控制框架200响应体中进行;<mrbresponse>元素被定义为包级响应。

Note that package responses are different from framework response codes. Framework error response codes (see Section 7 of [RFC6230]) are used when the request or event notification is invalid; for example, a request has invalid XML (400) or is not understood (500). Package-level responses are carried in framework 200 response or REPORT message bodies. This package's response codes are defined in Section 5.1.4.

请注意,包响应不同于框架响应代码。当请求或事件通知无效时,使用框架错误响应代码(见[RFC6230]第7节);例如,请求具有无效的XML(400)或不可理解(500)。包级别的响应在Framework200响应或报告消息体中进行。第5.1.4节定义了该包的响应代码。

5.1.1.3. Common XML Support
5.1.1.3. 通用XML支持

The Media Control Channel Framework [RFC6230] requires a Control Package definition to specify if the attributes for media dialog or conference references are required.

媒体控制通道框架[RFC6230]需要一个控制包定义,以指定是否需要媒体对话框或会议引用的属性。

The Publish interface defined in Section 10 does import and make use of the common XML schema defined in the Media Control Channel Framework.

第10节中定义的发布接口导入并使用媒体控制通道框架中定义的公共XML模式。

The Consumer interface defined in Section 11 does import and make use of the common XML schema defined in the Media Control Channel Framework.

第11节中定义的使用者接口导入并使用媒体控制通道框架中定义的公共XML模式。

5.1.1.4. CONTROL Message Body
5.1.1.4. 控制消息体

A valid CONTROL message body MUST conform to the schema defined in Section 10 and described in Section 5.1.2. XML messages appearing in CONTROL messages MUST contain either an <mrbrequest> or <mrbnotification> element.

有效的控制消息正文必须符合第10节中定义和第5.1.2节中描述的模式。控制消息中出现的XML消息必须包含<mrbrequest>或<mrbnotification>元素。

5.1.1.5. REPORT Message Body
5.1.1.5. 报告消息体

A valid REPORT message body MUST conform to the schema defined in Section 10 and described in Section 5.1.2. XML messages appearing in REPORT messages MUST contain an <mrbresponse> element.

有效的报告消息正文必须符合第10节中定义的以及第5.1.2节中描述的模式。报表消息中出现的XML消息必须包含<mrbreresponse>元素。

5.1.1.6. Audit
5.1.1.6. 审计

The 'mrb-publish/1.0' Media Control Channel Framework package does not require any additional auditing capability.

“mrb publish/1.0”媒体控制通道框架包不需要任何额外的审核功能。

5.1.2. Element Definitions
5.1.2. 元素定义

This section defines the XML elements for the Publish interface Media Control Channel package defined in Section 5.1. The formal XML schema definition for the Publish interface can be found in Section 10.

本节定义了第5.1节中定义的发布接口媒体控制频道包的XML元素。发布接口的正式XML模式定义见第10节。

The root element is <mrbpublish>. All other XML elements (requests, responses, notifications) are contained within it. The MRB Publish interface request element is detailed in Section 5.1.3. The MRB Publish interface notification element is detailed in Section 5.1.5. The MRB Publish interface response element is detailed in Section 5.1.4.

根元素是<mrbpublish>。所有其他XML元素(请求、响应、通知)都包含在其中。MRB发布接口请求元素详见第5.1.3节。MRB发布接口通知元素详见第5.1.5节。MRB发布接口响应元素详见第5.1.4节。

The <mrbpublish> element has the following attributes:

<mrbpublish>元素具有以下属性:

version: a token specifying the mrb-publish package version. The value is fixed as '1.0' for this version of the package. The attribute MUST be present.

版本:指定mrb发布包版本的标记。此版本的包的值固定为“1.0”。属性必须存在。

The <mrbpublish> element has the following child elements, and there MUST NOT be more than one such child element in any <mrbpublish> message:

<mrbpublish>元素具有以下子元素,并且在任何<mrbpublish>消息中不得有多个子元素:

<mrbrequest> for sending an MRB request. See Section 5.1.3.

<mrbrequest>用于发送MRB请求。见第5.1.3节。

<mrbresponse> for sending an MRB response. See Section 5.1.4.

<mrbresponse>用于发送MRB响应。见第5.1.4节。

<mrbnotification> for sending an MRB notification. See Section 5.1.5.

<mrbnotification>用于发送MRB通知。见第5.1.5节。

5.1.3. <mrbrequest>
5.1.3. <mrbrequest>

This section defines the <mrbrequest> element used to initiate requests from an MRB to a Media Server. The element describes information relevant for the interrogation of a Media Server.

本节定义用于启动从MRB到媒体服务器的请求的<mrbrequest>元素。元素描述与查询媒体服务器相关的信息。

The <mrbrequest> element has no defined attributes.

<mrbrequest>元素没有定义的属性。

The <mrbrequest> element has the following child element:

<mrbrequest>元素具有以下子元素:

<subscription> for initiating a subscription to a Media Server from an MRB. See Section 5.1.3.1.

<subscription>用于从MRB启动对媒体服务器的订阅。见第5.1.3.1节。

5.1.3.1. <subscription>
5.1.3.1. <订阅>

The <subscription> element is included in a request from an MRB to a Media Server to provide the details relating to the configuration of updates (known as a subscription session). This element can be used either to request a new subscription or to update an existing one (e.g., to change the frequency of the updates), and to remove ongoing subscriptions as well (e.g., to stop an indefinite update). The MRB will inform the Media Server regarding how long it wishes to receive updates and the frequency that updates should be sent. Updates related to the subscription are sent using the <mrbnotification> element.

<subscription>元素包含在MRB向媒体服务器发出的请求中,以提供有关更新配置的详细信息(称为订阅会话)。此元素可用于请求新订阅或更新现有订阅(例如,更改更新频率),以及删除正在进行的订阅(例如,停止无限期更新)。MRB将通知媒体服务器其希望接收更新的时间和发送更新的频率。使用<mrbnotification>元素发送与订阅相关的更新。

The <subscription> element has the following attributes:

<subscription>元素具有以下属性:

id: Indicates a unique token representing the subscription session between the MRB and the Media Server. The attribute MUST be present.

id:表示表示MRB和媒体服务器之间订阅会话的唯一令牌。属性必须存在。

seqnumber: Indicates a sequence number to be used in conjunction with the subscription session ID to identify a specific subscription command. The first subscription MUST contain a non-zero number 'seqnumber', and subsequent subscriptions MUST contain a higher number than the previous 'seqnumber' value. If a subsequent 'seqnumber' is not higher, a 405 response code is generated as per Section 5.1.4. The attribute MUST be present.

seqnumber:表示与订阅会话ID一起使用的序列号,以标识特定的订阅命令。第一个订阅必须包含非零的数字“seqnumber”,后续订阅必须包含比前一个“seqnumber”值更高的数字。如果后续的“seqnumber”不高,则根据第5.1.4节生成405响应代码。属性必须存在。

action: Provides the operation that should be carried out on the subscription:

操作:提供应在订阅上执行的操作:

* The value of 'create' instructs the Media Server to attempt to set up a new subscription.

* “创建”的值指示媒体服务器尝试设置新订阅。

* The value of 'update' instructs the Media Server to attempt to update an existing subscription.

* “update”的值指示媒体服务器尝试更新现有订阅。

* The value of 'remove' instructs the Media Server to attempt to remove an existing subscription and consequently stop any ongoing related notification.

* “remove”的值指示媒体服务器尝试删除现有订阅,从而停止任何正在进行的相关通知。

The attribute MUST be present.

属性必须存在。

The <subscription> element has zero or more of the following child elements:

<subscription>元素具有以下零个或多个子元素:

<expires>: Provides the amount of time in seconds that a subscription should be installed for notifications at the Media Server. Once the amount of time has passed, the subscription expires, and the MRB has to subscribe again if it is still interested in receiving notifications from the Media Server. The element MAY be present.

<expires>:提供在媒体服务器上安装通知订阅所需的时间(秒)。一旦时间过去,订阅将过期,如果MRB仍有兴趣接收来自媒体服务器的通知,则必须再次订阅。元素可能存在。

<minfrequency>: Provides the minimum frequency in seconds that the MRB wishes to receive notifications from the Media Server. The element MAY be present.

<minfrequency>:提供MRB希望从媒体服务器接收通知的最小频率(秒)。元素可能存在。

<maxfrequency>: Provides the maximum frequency in seconds that the MRB wishes to receive notifications from the Media Server. The element MAY be present.

<maxfrequency>:提供MRB希望从媒体服务器接收通知的最大频率(以秒为单位)。元素可能存在。

Please note that these three optional pieces of information provided by the MRB only act as a suggestion: the Media Server MAY change the proposed values if it considers the suggestions unacceptable (e.g., if the MRB has requested a notification frequency that is too high). In such a case, the request would not fail, but the updated, acceptable values would be reported in the <mrbresponse> accordingly.

请注意,MRB提供的这三条可选信息仅作为建议:如果媒体服务器认为建议不可接受(例如,如果MRB请求的通知频率过高),则可能会更改建议的值。在这种情况下,请求不会失败,但更新后的可接受值将相应地报告在<mrbr响应>中。

5.1.4. <mrbresponse>
5.1.4. <mrb响应>

Responses to requests are indicated by an <mrbresponse> element.

对请求的响应由<mrbresponse>元素表示。

The <mrbresponse> element has the following attributes:

<mrbresponse>元素具有以下属性:

status: numeric code indicating the response status. The attribute MUST be present.

状态:表示响应状态的数字代码。属性必须存在。

reason: string specifying a reason for the response status. The attribute MAY be present.

原因:指定响应状态原因的字符串。该属性可能存在。

The <mrbresponse> element has a single child element:

<mrbresponse>元素有一个子元素:

<subscription> for providing details related to a subscription requested by a Media Server (see below in this section).

<subscription>提供与媒体服务器请求的订阅相关的详细信息(请参阅本节下文)。

The following status codes are defined for 'status':

为“状态”定义了以下状态代码:

   +-----------+-------------------------------------------------------+
   | code      | description                                           |
   +-----------+-------------------------------------------------------+
   | 200       | OK                                                    |
   |           |                                                       |
   | 400       | Syntax error                                          |
   |           |                                                       |
   | 401       | Unable to create Subscription                         |
   |           |                                                       |
   | 402       | Unable to update Subscription                         |
   |           |                                                       |
   | 403       | Unable to remove Subscription                         |
   |           |                                                       |
   | 404       | Subscription does not exist                           |
   |           |                                                       |
   | 405       | Wrong sequence number                                 |
   |           |                                                       |
   | 406       | Subscription already exists                           |
   |           |                                                       |
   | 420       | Unsupported attribute or element                      |
   +-----------+-------------------------------------------------------+
        
   +-----------+-------------------------------------------------------+
   | code      | description                                           |
   +-----------+-------------------------------------------------------+
   | 200       | OK                                                    |
   |           |                                                       |
   | 400       | Syntax error                                          |
   |           |                                                       |
   | 401       | Unable to create Subscription                         |
   |           |                                                       |
   | 402       | Unable to update Subscription                         |
   |           |                                                       |
   | 403       | Unable to remove Subscription                         |
   |           |                                                       |
   | 404       | Subscription does not exist                           |
   |           |                                                       |
   | 405       | Wrong sequence number                                 |
   |           |                                                       |
   | 406       | Subscription already exists                           |
   |           |                                                       |
   | 420       | Unsupported attribute or element                      |
   +-----------+-------------------------------------------------------+
        
                    Table 1: <mrbresponse> Status Codes
        
                    Table 1: <mrbresponse> Status Codes
        

If a new subscription request made by an MRB (action='create') has been accepted, the Media Server MUST reply with an <mrbresponse> with status code 200. The same rule applies whenever a request to update (action='update') or remove (action='remove') an existing transaction can be fulfilled by the Media Server.

如果MRB(action='create')发出的新订阅请求已被接受,则媒体服务器必须以状态代码为200的<mrbresponse>回复。当媒体服务器可以完成更新(action='update')或删除(action='remove')现有事务的请求时,同样的规则适用。

A subscription request, nevertheless, may fail for several reasons. In such a case, the status codes defined in Table 1 must be used instead. Specifically, if the Media Server fails to handle a request due to a syntax error in the request itself (e.g., incorrect XML, violation of the schema constraints, or invalid values in any of the attributes/elements), the Media Server MUST reply with an <mrbresponse> with status code 400. If a syntactically correct request fails because the request also includes any attribute/element the Media Server doesn't understand, the Media Server MUST reply with an <mrbresponse> with status code 420. If a syntactically correct request fails because the MRB wants to create a new subscription, but the provided unique 'id' for the subscription already exists, the Media Server MUST reply with an <mrbresponse> with status code 406. If a syntactically correct request fails because the MRB wants to update/remove a subscription that doesn't exist, the Media Server MUST reply with an <mrbresponse> with status code 404. If the Media

然而,订阅请求可能会由于几个原因而失败。在这种情况下,必须使用表1中定义的状态代码。具体而言,如果媒体服务器由于请求本身的语法错误(例如,不正确的XML、违反模式约束或任何属性/元素中的无效值)而无法处理请求,则媒体服务器必须使用状态代码400的<mrbreresponse>回复。如果语法正确的请求失败,因为该请求还包含媒体服务器不理解的任何属性/元素,则媒体服务器必须使用状态代码420的<mrbreresponse>进行回复。如果由于MRB希望创建新订阅而导致语法正确的请求失败,但为订阅提供的唯一“id”已存在,则媒体服务器必须使用状态代码为406的<mrbresponse>回复。如果由于MRB想要更新/删除不存在的订阅而导致语法正确的请求失败,则媒体服务器必须使用状态代码为404的<mrbresponse>回复。如果媒体

Server is unable to accept a request for any other reason (e.g., the MRB has no more resources to fulfill the request), the Media Server MUST reply with an <mrbresponse> with status code 401/402/403, depending on the action the MRB provided in its request:

服务器由于任何其他原因(例如,MRB没有更多资源来满足请求)无法接受请求,媒体服务器必须使用状态代码为401/402/403的<mrbresponse>回复,具体取决于MRB在其请求中提供的操作:

o action='create' --> 401;

o action='create'->401;

o action='update' --> 402;

o action='update'->402;

o action='remove' --> 403;

o action='remove'->403;

A response to a subscription request that has a status code of 200 indicates that the request is successful. The response MAY also contain a <subscription> child that describes the subscription. The <subscription> child MAY contain 'expires', 'minfrequency', and 'maxfrequency' values even if they were not contained in the request.

对状态代码为200的订阅请求的响应表示该请求成功。响应还可能包含描述订阅的<subscription>子级。<subscription>子项可能包含“expires”、“minfrequency”和“maxfrequency”值,即使它们未包含在请求中。

The Media Server can choose to change the suggested 'expires', 'minfrequency', and 'maxfrequency' values provided by the MRB in its <mrbrequest> if it considers them unacceptable (e.g., the requested frequency range is too high). In such a case, the response MUST contain a <subscription> element describing the subscription as the Media Server accepted it, and the Media Server MUST include in the <subscription> element all of those values that it modified relative to the request, to inform the MRB about the change.

如果媒体服务器认为MRB在其<mrbrequest>中提供的“expires”、“minfrequency”和“maxfrequency”值不可接受(例如,请求的频率范围太高),则可以选择更改这些值。在这种情况下,响应必须包含一个<subscription>元素,描述媒体服务器接受的订阅,并且媒体服务器必须在<subscription>元素中包含它相对于请求修改的所有值,以便将更改通知MRB。

5.1.5. <mrbnotification>
5.1.5. <mrbnotification>

The <mrbnotification> element is included in a request from a Media Server to an MRB to provide the details relating to current status. The Media Server will inform the MRB of its current status as defined by the information in the <subscription> element. Updates are sent using the <mrbnotification> element.

<mrbnotification>元素包含在从媒体服务器到MRB的请求中,以提供与当前状态相关的详细信息。媒体服务器将根据<subscription>元素中的信息将其当前状态通知MRB。使用<mrbnotification>元素发送更新。

The <mrbnotification> element has the following attributes:

<mrbnotification>元素具有以下属性:

id: indicates a unique token representing the session between the MRB and the Media Server and is the same as the one appearing in the <subscription> element. The attribute MUST be present.

id:表示表示MRB和媒体服务器之间会话的唯一令牌,该令牌与<subscription>元素中显示的令牌相同。属性必须存在。

seqnumber: indicates a sequence number to be used in conjunction with the subscription session ID to identify a specific notification update. The first notification update MUST contain a non-zero number 'seqnumber', and subsequent notification updates MUST contain a higher number than the previous 'seqnumber' value. If a subsequent 'seqnumber' is not higher, the situation should be

seqnumber:指示与订阅会话ID一起使用的序列号,以标识特定的通知更新。第一次通知更新必须包含非零的数字“seqnumber”,后续通知更新必须包含比先前的“seqnumber”值更高的数字。如果后续的“seqnumber”不高,则情况应为

considered an error by the entity receiving the notification update. How the receiving entity deals with this situation is implementation specific. The attribute MUST be present.

接收通知更新的实体认为存在错误。接收实体如何处理这种情况是具体实施的。属性必须存在。

It's important to point out that the 'seqnumber' that appears in an <mrbnotification> is not related to the 'seqnumber' appearing in a <subscription>. In fact, the latter is associated with subscriptions and would increase at every command issued by the MRB, while the former is associated with the asynchronous notifications the Media Server would trigger according to the subscription and as such would increase at every notification message to enable the MRB to keep track of them.

需要指出的是,<mrbnotification>中出现的“seqnumber”与<subscription>中出现的“seqnumber”无关。事实上,后者与订阅关联,并在MRB发出的每个命令时增加,而前者与媒体服务器将根据订阅触发的异步通知关联,因此将在每个通知消息时增加,以使MRB能够跟踪它们。

The following sub-sections provide details of the child elements that make up the contents of the <mrbnotification> element.

以下小节提供了构成<mrbnotification>元素内容的子元素的详细信息。

5.1.5.1. <media-server-id>
5.1.5.1. <媒体服务器id>

The <media-server-id> element provides a unique system-wide identifier for a Media Server instance. The element MUST be present and MUST be chosen such that it is extremely unlikely that two different Media Servers would present the same id to a given MRB.

<media server id>元素为媒体服务器实例提供唯一的系统范围标识符。元素必须存在并且必须选择为两个不同的媒体服务器极不可能向给定的MRB提供相同的id。

5.1.5.2. <supported-packages>
5.1.5.2. <支持的软件包>

The <supported-packages> element provides the list of Media Control Channel packages supported by the Media Server. The element MAY be present.

<supported packages>元素提供媒体服务器支持的媒体控制通道包的列表。元素可能存在。

The <supported-packages> element has no attributes.

<supported packages>元素没有属性。

The <supported-packages> element has a single child element:

<supported packages>元素有一个子元素:

<package>: Gives the name of a package supported by the Media Server. The <package> element has a single attribute, 'name', which provides the name of the supported Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230].

<package>:提供媒体服务器支持的包的名称。<package>元素有一个单独的属性“name”,它提供了受支持的媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求。

5.1.5.3. <active-rtp-sessions>
5.1.5.3. <活动rtp会话>

The <active-rtp-sessions> element provides information detailing the current active Real-time Transport Protocol (RTP) sessions. The element MAY be present.

<active rtp sessions>元素提供详细说明当前活动实时传输协议(rtp)会话的信息。元素可能存在。

The <active-rtp-sessions> element has no attributes.

<active rtp sessions>元素没有属性。

The <active-rtp-sessions> element has a single child element:

<active rtp sessions>元素有一个子元素:

<rtp-codec>: Describes a supported codec and the number of active sessions using that codec. The <rtp-codec> element has one attribute. The value of the attribute, 'name', is a media type (which can include parameters per [RFC6381]). The <rtp-codec> element has two child elements. The child element <decoding> has as content the decimal number of RTP sessions being decoded using the specified codec, and the child element <encoding> has as content the decimal number of RTP sessions being encoded using the specified codec.

<rtp codec>:描述支持的编解码器以及使用该编解码器的活动会话数。<rtp codec>元素有一个属性。属性“name”的值是一种媒体类型(根据[RFC6381]可以包括参数)。<rtp codec>元素有两个子元素。子元素<解码>的内容为使用指定编解码器解码的RTP会话的十进制数,子元素<编码>的内容为使用指定编解码器编码的RTP会话的十进制数。

5.1.5.4. <active-mixer-sessions>
5.1.5.4. <active mixer sessions>

The <active-mixer-sessions> element provides information detailing the current active mixed RTP sessions. The element MAY be present.

<active mixer sessions>元素提供详细说明当前活动混合RTP会话的信息。元素可能存在。

The <active-mixer-sessions> element has no attributes.

<active mixer sessions>元素没有属性。

The <active-mixer-sessions> element has a single child element:

<active mixer sessions>元素有一个子元素:

<active-mix>: Describes a mixed active RTP session. The <active-mix> element has one attribute. The value of the attribute, 'conferenceid', is the name of the mix. The <active-mix> element has one child element. The child element, <rtp-codec>, contains the same information relating to RTP sessions as that defined in Section 5.1.5.3. The element MAY be present.

<active mix>:描述混合的活动RTP会话。<active mix>元素有一个属性。属性'conferenceid'的值是混合的名称。<active mix>元素有一个子元素。子元素<rtp codec>,包含与第5.1.5.3节中定义的rtp会话相关的相同信息。元素可能存在。

5.1.5.5. <non-active-rtp-sessions>
5.1.5.5. <非活动rtp会话>

The <non-active-rtp-sessions> element provides information detailing the currently available inactive RTP sessions, that is, how many more RTP streams this Media Server can support. The element MAY be present.

<non-active rtp sessions>元素提供了详细说明当前可用的非活动rtp会话的信息,即此媒体服务器可以支持的rtp流的数量。元素可能存在。

The <non-active-rtp-sessions> element has no attributes.

<non-active rtp sessions>元素没有属性。

The <non-active-rtp-sessions> element has a single child element:

<non-active rtp sessions>元素有一个子元素:

   <rtp-codec>:  Describes a supported codec and the number of
      non-active sessions for that codec.  The <rtp-codec> element has
      one attribute.  The value of the attribute, 'name', is a media
      type (which can include parameters per [RFC6381]).  The
      <rtp-codec> element has two child elements.  The child element
      <decoding> has as content the decimal number of RTP sessions
        
   <rtp-codec>:  Describes a supported codec and the number of
      non-active sessions for that codec.  The <rtp-codec> element has
      one attribute.  The value of the attribute, 'name', is a media
      type (which can include parameters per [RFC6381]).  The
      <rtp-codec> element has two child elements.  The child element
      <decoding> has as content the decimal number of RTP sessions
        

available for decoding using the specified codec, and the child element <encoding> has as content the decimal number of RTP sessions available for encoding using the specified codec.

可用于使用指定编解码器进行解码,并且子元素<encoding>的内容为可用于使用指定编解码器进行编码的RTP会话的十进制数。

5.1.5.6. <non-active-mixer-sessions>
5.1.5.6. <非活动混音器会话>

The <non-active-mixer-sessions> element provides information detailing the current inactive mixed RTP sessions, that is, how many more mixing sessions this Media Server can support. The element MAY be present.

<non-active mixer sessions>元素提供了详细说明当前非活动混合RTP会话的信息,即此媒体服务器可以支持的混合会话数。元素可能存在。

The <non-active-mixer-sessions> element has no attributes.

<non-active mixer sessions>元素没有属性。

The <non-active-mixer-sessions> element has a single child element:

<non-active mixer sessions>元素有一个子元素:

<non-active-mix>: Describes available mixed RTP sessions. The <non-active-mix> element has one attribute. The value of the attribute, 'available', is the number of mixes that could be used using that profile. The <non-active-mix> element has one child element. The child element, <rtp-codec>, contains the same information relating to RTP sessions as that defined in Section 5.1.5.5. The element MAY be present.

<non-active mix>:描述可用的混合RTP会话。<non-active mix>元素有一个属性。属性“available”的值是可以使用该配置文件的混合数。<non-active mix>元素有一个子元素。子元素<rtp codec>,包含与第5.1.5.5节中定义的rtp会话相关的相同信息。元素可能存在。

5.1.5.7. <media-server-status>
5.1.5.7. <媒体服务器状态>

The <media-server-status> element provides information detailing the current status of the Media Server. The element MUST be present. It can return one of the following values:

<media server status>元素提供详细说明媒体服务器当前状态的信息。元素必须存在。它可以返回以下值之一:

active: Indicates that the Media Server is available for service.

活动:表示媒体服务器可用于服务。

deactivated: Indicates that the Media Server has been withdrawn from service, and as such requests should not be sent to it before it becomes 'active' again.

停用:表示媒体服务器已退出服务,因此,在其再次变为“活动”之前,不应向其发送请求。

unavailable: Indicates that the Media Server continues to process past requests but cannot accept new requests, and as such should not be contacted before it becomes 'active' again.

不可用:表示媒体服务器继续处理过去的请求,但无法接受新请求,因此,在媒体服务器再次变为“活动”之前,不应联系媒体服务器。

The <media-server-status> element has no attributes.

<media server status>元素没有属性。

The <media-server-status> element has no child elements.

<media server status>元素没有子元素。

5.1.5.8. <supported-codecs>
5.1.5.8. <支持的编解码器>

The <supported-codecs> element provides information detailing the current codecs supported by a Media Server and associated actions. The element MAY be present.

<supported codecs>元素提供详细说明媒体服务器支持的当前编解码器和相关操作的信息。元素可能存在。

The <supported-codecs> element has no attributes.

<supported codecs>元素没有属性。

The <supported-codecs> element has a single child element:

<supported codecs>元素有一个子元素:

<supported-codec>: Has a single attribute, 'name', which provides the name of the codec about which this element provides information. A valid value is a media type that, depending on its definition, can include additional parameters (e.g., [RFC6381]). The <supported-codec> element then has a further child element, <supported-codec-package>. The <supported-codec-package> element has a single attribute, 'name', which provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the codec support applies. The <supported-codec-package> element has zero or more <supported-action> children, each one of which describes an action that a Media Server can apply to this codec:

<supported codec>:具有单个属性“name”,该属性提供此元素提供信息的编解码器的名称。有效值是一种媒体类型,根据其定义,它可以包括其他参数(例如,[RFC6381])。然后,<supported codec>元素还有一个子元素,<supported codec package>。<supported codec package>元素有一个单独的属性“name”,它提供了媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求,编解码器支持适用于该节。<supported codec package>元素具有零个或多个<supported action>子元素,其中每个子元素描述了媒体服务器可以应用于此编解码器的操作:

* 'decoding', meaning a decoder for this codec is available;

* “解码”,表示此编解码器的解码器可用;

* 'encoding', meaning an encoder for this codec is available;

* “encoding”,表示此编解码器的编码器可用;

* 'passthrough', meaning the Media Server is able to pass a stream encoded using that codec through, without re-encoding.

* “passthrough”,意味着媒体服务器能够通过使用该编解码器编码的流,而无需重新编码。

5.1.5.9. <application-data>
5.1.5.9. <应用程序数据>

The <application-data> element provides an arbitrary string of characters as application-level data. This data is meant to only have meaning at the application-level logic and as such is not otherwise restricted by this specification. The set of allowed characters is the same as those in XML (viz., tab, carriage return, line feed, and the legal characters of Unicode and ISO/IEC 10646 [ISO.10646.2012] (see also Section 2.2 of <http://www.w3.org/TR/xml/>)). The element MAY be present.

<application data>元素提供一个任意字符串作为应用程序级数据。此数据仅在应用程序级逻辑上有意义,因此不受本规范的限制。允许的字符集与XML中的字符集相同(即,制表符、回车符、换行符以及Unicode和ISO/IEC 10646[ISO.10646.2012]的法定字符)(另请参见第2.2节)<http://www.w3.org/TR/xml/>)). 元素可能存在。

The <application-data> element has no attributes.

<application data>元素没有属性。

The <application-data> element has no child elements.

<application data>元素没有子元素。

5.1.5.10. <file-formats>
5.1.5.10. <文件格式>

The <file-formats> element provides a list of file formats supported for the purpose of playing media. The element MAY be present.

<file formats>元素提供播放媒体所支持的文件格式列表。元素可能存在。

The <file-formats> element has no attributes.

<file formats>元素没有属性。

The <file-formats> element has zero of more the following child elements:

<file formats>元素没有以下子元素中的任何一个:

<supported-format>: Has a single attribute, 'name', which provides the type of file format that is supported. A valid value is a media type that, depending on its definition, can include additional parameters (e.g., [RFC6381]). The <supported-format> element then has a further child element, <supported-file-package>. The <supported-file-package> element provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the file format support applies.

<supported format>:具有单个属性“name”,该属性提供支持的文件格式类型。有效值是一种媒体类型,根据其定义,它可以包括其他参数(例如,[RFC6381])。然后,<supported format>元素还有一个子元素,<supported file package>。<supported file package>元素提供符合[RFC6230]第13.1.1节的媒体控制通道框架包的名称,文件格式支持适用于该包。

5.1.5.11. <max-prepared-duration>
5.1.5.11. <max prepared duration>

The <max-prepared-duration> element provides the maximum amount of time a media dialog will be kept in the prepared state before timing out (see Section 4.4.2.2.6 of RFC 6231 [RFC6231]. The element MAY be present.

<max prepared duration>元素提供超时前媒体对话框保持准备状态的最长时间(参见RFC 6231[RFC6231]第4.4.2.2.6节)。该元素可能存在。

The <max-prepared-duration> element has no attributes.

<max prepared duration>元素没有属性。

The <max-prepared-duration> element has a single child element:

<max prepared duration>元素有一个子元素:

<max-time>: Has a single attribute, 'max-time-seconds', which provides the amount of time in seconds that a media dialog can be in the prepared state. The <max-time> element then has a further child element, <max-time-package>. The <max-time-package> element provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the time period applies.

<max time>:有一个属性“max time seconds”,它提供媒体对话框处于准备状态的时间量(秒)。<max-time>元素还有一个子元素<max-time-package>。<max time package>元素提供了媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求,时间段适用于该包。

5.1.5.12. <dtmf-support>
5.1.5.12. <dtmf支持>

The <dtmf-support> element specifies the supported methods to detect Dual-Tone Multi-Frequency (DTMF) tones and to generate them. The element MAY be present.

元素指定检测双音多频(dtmf)音调并生成它们的受支持方法。元素可能存在。

The <dtmf-support> element has no attributes.

<dtmf support>元素没有属性。

The <dtmf-support> element has zero of more of the following child elements:

<dtmf support>元素具有以下子元素中的零个或多个:

<detect>: Indicates the support for DTMF detection. The <detect> element has no attributes. The <detect> element then has a further child element, <dtmf-type>. The <dtmf-type> element has two attributes: 'name' and 'package'. The 'name' attribute provides the type of DTMF being used, and it can only be a case-insensitive string containing either 'RFC4733' [RFC4733] or 'Media' (detecting tones as signals from the audio stream). The 'package' attribute provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the DTMF type applies.

<detect>:表示支持DTMF检测。<detect>元素没有属性。然后,<detect>元素还有一个子元素,<dtmf type>。元素有两个属性:'name'和'package'。“name”属性提供所使用的DTMF类型,它只能是包含“RFC4733”[RFC4733]或“Media”(将音调检测为音频流中的信号)的不区分大小写的字符串。“package”属性提供了媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求,DTMF类型适用于该包。

<generate>: Indicates the support for DTMF generation. The <generate> element has no attributes. The <generate> element then has a further child element, <dtmf-type>. The <dtmf-type> element has two attributes: 'name' and 'package'. The 'name' attribute provides the type of DTMF being used, and it can only be a case-insensitive string containing either 'RFC4733' [RFC4733] or 'Media' (generating tones as signals in the audio stream). The 'package' attribute provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the DTMF type applies.

<generate>:表示对DTMF生成的支持。<generate>元素没有属性。然后,<generate>元素还有一个子元素,<dtmftype>。元素有两个属性:'name'和'package'。“name”属性提供正在使用的DTMF类型,它只能是包含“RFC4733”[RFC4733]或“Media”(在音频流中生成作为信号的音调)的不区分大小写的字符串。“package”属性提供了媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求,DTMF类型适用于该包。

<passthrough>: Indicates the support for passing DTMF through without re-encoding. The <passthrough> element has no attributes. The <passthrough> element then has a further child element, <dtmf-type>. The <dtmf-type> element has two attributes: 'name' and 'package'. The 'name' attribute provides the type of DTMF being used, and it can only be a case-insensitive string containing either 'RFC4733' [RFC4733] or 'Media' (passing tones as signals through the audio stream). The 'package' attribute provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the DTMF type applies.

<passthrough>:表示支持在不重新编码的情况下通过DTMF。<passthrough>元素没有属性。然后,<passthrough>元素还有一个子元素,<dtmf type>。元素有两个属性:'name'和'package'。“name”属性提供正在使用的DTMF类型,它只能是包含“RFC4733”[RFC4733]或“Media”(通过音频流将音调作为信号传递)的不区分大小写的字符串。“package”属性提供了媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求,DTMF类型适用于该包。

5.1.5.13. <mixing-modes>
5.1.5.13. <混合模式>

The <mixing-modes> element provides information about the support for audio and video mixing of a Media Server, specifically a list of supported algorithms to mix audio and a list of supported video presentation layouts. The element MAY be present.

<mixing modes>元素提供有关支持媒体服务器的音频和视频混合的信息,特别是支持的音频混合算法列表和支持的视频演示布局列表。元素可能存在。

The <mixing-modes> element has no attributes.

<mixing modes>元素没有属性。

The <mixing-modes> element has zero or more of the following child elements:

<mixing modes>元素具有以下零个或多个子元素:

<audio-mixing-modes>: Describes the available algorithms for audio mixing. The <audio-mixing-modes> element has no attributes. The <audio-mixing-modes> element has one child element. The child element, <audio-mixing-mode>, contains a specific available algorithm. Valid values for the <audio-mixing-mode> element are algorithm names, e.g., 'nbest' and 'controller' as defined in [RFC6505]. The element has a single attribute, 'package'. The attribute 'package' provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the algorithm support applies.

<音频混合模式>:介绍音频混合的可用算法。<audio mixing modes>元素没有属性。<audio mixing modes>元素有一个子元素。子元素<音频混合模式>,包含特定的可用算法。<audio mixing mode>元素的有效值是算法名称,例如[RFC6505]中定义的“nbest”和“controller”。元素只有一个属性“package”。属性“package”提供了媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求,算法支持适用于该包。

<video-mixing-modes>: Describes the available video presentation layouts and the supported functionality related to video mixing. The <video-mixing-modes> element has two attributes: 'vas' and 'activespeakermix'. The 'vas' attribute is of type boolean with a value of 'true' indicating that the Media Server supports automatic Voice Activated Switching. The 'activespeakermix' is of type boolean with a value of 'true' indicating that the Media Server is able to prepare an additional video stream for the loudest speaker participant without its contribution. The <video-mixing-modes> element has one child element. The child element, <video-mixing-mode>, contains the name of a specific video presentation layout. The name may refer to one of the predefined video layouts defined in the XCON conference information data model [RFC6501], or to non-XCON layouts as well, as long as they are properly prefixed according to the schema they belong to. The <video-mixing-mode> element has a single attribute, 'package'. The attribute 'package' provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the algorithm support applies.

<video mixing modes>:介绍可用的视频演示布局和支持的与视频混合相关的功能。<video mixing modes>元素有两个属性:“vas”和“activespeakermix”。“vas”属性为布尔类型,值为“true”,表示媒体服务器支持自动语音激活切换。“activespeakermix”是布尔类型,其值为“true”,表示媒体服务器能够为声音最大的扬声器参与者准备额外的视频流,而无需其贡献。<video mixing modes>元素有一个子元素。子元素<视频混合模式>,包含特定视频演示布局的名称。该名称可以指XCON会议信息数据模型[RFC6501]中定义的预定义视频布局之一,也可以指非XCON布局,只要根据它们所属的模式正确地加上前缀即可。<video mixing mode>元素有一个属性“package”。属性“package”提供了媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求,算法支持适用于该包。

5.1.5.14. <supported-tones>
5.1.5.14. <supported tones>

The <supported-tones> element provides information about which tones a Media Server is able to play and recognize. In particular, the support is reported by referring to both support for country codes (ISO 3166-1 [ISO.3166-1]) and supported functionality (ITU-T Recommendation Q.1950 [ITU-T.Q.1950]). The element MAY be present.

<supported tones>元素提供有关媒体服务器能够播放和识别哪些音调的信息。特别是,通过引用国家代码支持(ISO 3166-1[ISO.3166-1])和支持功能(ITU-T建议Q.1950[ITU-T.Q.1950])来报告支持情况。元素可能存在。

The <supported-tones> element has no attributes.

<supported tones>元素没有属性。

The <supported-tones> element has zero or more of the following child elements:

<supported tones>元素具有以下零个或多个子元素:

<supported-country-codes>: Describes the supported country codes with respect to tones. The <supported-country-codes> element has no attributes. The <supported-country-codes> element has one child element. The child element, <country-code>, reports support for a specific country code, compliant with the ISO 3166-1 [ISO.3166-1] specification. The <country-code> element has a single attribute, 'package'. The attribute 'package' provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], in which the tones from the specified country code are supported.

<supported country codes>:描述与音调相关的受支持国家/地区代码。<supported country codes>元素没有属性。<supported country codes>元素有一个子元素。子元素<country code>报告对符合ISO 3166-1[ISO.3166-1]规范的特定国家代码的支持。<country code>元素只有一个属性“package”。属性“package”提供符合[RFC6230]第13.1.1节的媒体控制频道框架包的名称,其中支持来自指定国家代码的音调。

   <supported-h248-codes>:  Describes the supported H.248 codes with
      respect to tones.  The <supported-h248-codes> element has no
      attributes.  The <supported-h248-codes> element has one child
      element.  The child element, <h248-code>, reports support for a
      specific H.248 code, compliant with the ITU-T Recommendation
      Q.1950 [ITU-T.Q.1950] specification.  The codes can be either
      specific (e.g., cg/dt to only report the Dial Tone from the Call
      Progress Tones package) or generic (e.g., cg/* to report all the
      tones from the Call Progress Tones package), using wildcards.  The
      <h248-code> element has a single attribute, 'package'.  The
      attribute 'package' provides the name of the Media Control Channel
      Framework package, compliant with Section 13.1.1 of [RFC6230], in
      which the specified codes are supported.
        
   <supported-h248-codes>:  Describes the supported H.248 codes with
      respect to tones.  The <supported-h248-codes> element has no
      attributes.  The <supported-h248-codes> element has one child
      element.  The child element, <h248-code>, reports support for a
      specific H.248 code, compliant with the ITU-T Recommendation
      Q.1950 [ITU-T.Q.1950] specification.  The codes can be either
      specific (e.g., cg/dt to only report the Dial Tone from the Call
      Progress Tones package) or generic (e.g., cg/* to report all the
      tones from the Call Progress Tones package), using wildcards.  The
      <h248-code> element has a single attribute, 'package'.  The
      attribute 'package' provides the name of the Media Control Channel
      Framework package, compliant with Section 13.1.1 of [RFC6230], in
      which the specified codes are supported.
        
5.1.5.15. <file-transfer-modes>
5.1.5.15. <文件传输模式>

The <file-transfer-modes> element allows the Media Server to specify which scheme names are supported for transferring files to a Media Server for each Media Control Channel Framework package type, for example, whether the Media Server supports fetching resources via HTTP, HTTPS, NFS, etc. The element MAY be present.

<file transfer modes>元素允许媒体服务器为每种媒体控制通道框架包类型指定支持哪些方案名称以将文件传输到媒体服务器,例如,媒体服务器是否支持通过HTTP、HTTPS、NFS等获取资源。该元素可能存在。

The <file-transfer-modes> element has no attributes.

<file transfer modes>元素没有属性。

The <file-transfer-modes> element has a single child element:

<file transfer modes>元素有一个子元素:

<file-transfer-mode>: Has two attributes: 'name' and 'package'. The 'name' attribute provides the scheme name of the protocol that can be used for file transfer (e.g., HTTP, HTTPS, NFS, etc.); the value of the attribute is case insensitive. The 'package' attribute provides the name of the Media Control Channel Framework package, compliant with the specification in the related IANA registry (e.g., "msc-ivr/1.0"), for which the scheme name applies.

<file transfer mode>:有两个属性:“name”和“package”。“name”属性提供可用于文件传输的协议的方案名称(例如HTTP、HTTPS、NFS等);该属性的值不区分大小写。“package”属性提供媒体控制通道框架包的名称,该名称符合相关IANA注册表中的规范(例如,“msc ivr/1.0”),方案名称适用于该规范。

It is important to point out that this element provides no information about whether or not the Media Server supports any flavor of live streaming: for instance, a value of "HTTP" for the IVR (Interactive Voice Response) Package would only mean the 'http' scheme makes sense to the Media Server within the context of that package. Whether or not the Media Server can make use of HTTP to only fetch resources, or also to attach an HTTP live stream to a call, is to be considered implementation specific to the Media Server and irrelevant to the Application Server and/or MRB. Besides, the Media Server supporting a scheme does not imply that it also supports the related secure versions: for instance, if the Media Server supports both HTTP and HTTPS, both the schemes will appear in the element. A lack of the "HTTPS" value would need to be interpreted as a lack of support for the 'https' scheme.

需要指出的是,此元素不提供有关媒体服务器是否支持任何类型的实时流媒体的信息:例如,IVR(交互式语音响应)包的“HTTP”值仅表示“HTTP”方案对该包上下文中的媒体服务器有意义。媒体服务器是否可以使用HTTP仅获取资源,或者是否还可以将HTTP实时流附加到调用,将被视为媒体服务器特定的实现,而与应用服务器和/或MRB无关。此外,支持方案的媒体服务器并不意味着它也支持相关的安全版本:例如,如果媒体服务器同时支持HTTP和HTTPS,那么这两个方案都将出现在元素中。缺少“HTTPS”值需要解释为缺少对“HTTPS”方案的支持。

5.1.5.16. <asr-tts-support>
5.1.5.16. <asr tts支持>

The <asr-tts-support> element provides information about the support for Automatic Speech Recognition (ASR) and Text-to-Speech (TTS) functionality in a Media Server. The functionality is reported by referring to the supported languages (using ISO 639-1 [ISO.639.2002] codes) regarding both ASR and TTS. The element MAY be present.

元素提供有关在媒体服务器中支持自动语音识别(asr)和文本到语音(tts)功能的信息。通过参考支持的ASR和TTS语言(使用ISO 639-1[ISO.639.2002]代码)报告功能。元素可能存在。

The <asr-tts-support> element has no attributes.

<asr tts support>元素没有属性。

The <asr-tts-support> element has zero or more of the following child elements:

<asr tts support>元素具有以下零个或多个子元素:

<asr-support>: Describes the available languages for ASR. The <asr-support> element has no attributes. The <asr-support> element has one child element. The child element, <language>, reports that the Media Server supports ASR for a specific language. The <language> element has a single attribute, 'xml:lang'. The attribute 'xml:lang' contains the ISO 639-1 [ISO.639.2002] code of the supported language.

<asr支持>:描述asr可用的语言。<asr support>元素没有属性。<asr support>元素有一个子元素。子元素<language>报告媒体服务器支持特定语言的ASR。<language>元素只有一个属性“xml:lang”。属性“xml:lang”包含受支持语言的ISO 639-1[ISO.639.2002]代码。

<tts-support>: Describes the available languages for TTS. The <tts-support> element has no attributes. The <tts-support> element has one child element. The child element, <language>, reports that the Media Server supports TTS for a specific language. The <language> element has a single attribute, 'xml:lang'. The attribute 'xml:lang' contains the ISO 639-1 [ISO.639.2002] code of the supported language.

<tts支持>:描述tts可用的语言。<tts support>元素没有属性。元素有一个子元素。子元素<language>报告媒体服务器支持特定语言的TTS。<language>元素只有一个属性“xml:lang”。属性“xml:lang”包含受支持语言的ISO 639-1[ISO.639.2002]代码。

5.1.5.17. <vxml-support>
5.1.5.17. <vxml支持>

The <vxml-support> element specifies if the Media Server supports VoiceXML (VXML) and, if it does, through which protocols the support is exposed (e.g., via the control framework, RFC 4240 [RFC4240], or RFC 5552 [RFC5552]). The element MAY be present.

<vxml support>元素指定媒体服务器是否支持VoiceXML(vxml),如果支持,则指定通过哪些协议公开支持(例如,通过控制框架、RFC 4240[RFC4240]或RFC 5552[RFC5552])。元素可能存在。

The <vxml-support> element has no attributes.

<vxml support>元素没有属性。

The <vxml-support> element has a single child element:

<vxml support>元素有一个子元素:

<vxml-mode>: Has two attributes: 'package' and 'support'. The 'package' attribute provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the VXML support applies. The 'support' attribute provides the type of VXML support provided by the Media Server (e.g., RFC 5552 [RFC5552], RFC 4240 [RFC4240], or the IVR Package [RFC6231]), and valid values are case-insensitive RFC references (e.g., "rfc6231" to specify that the Media Server supports VoiceXML as provided by the IVR Package [RFC6231]).

<vxml模式>:有两个属性:“包”和“支持”。“package”属性提供符合[RFC6230]第13.1.1节的媒体控制通道框架包的名称,VXML支持适用于该包。“support”属性提供媒体服务器提供的VXML支持类型(例如,RFC 5552[RFC5552]、RFC 4240[RFC4240]或IVR包[RFC6231]),有效值为不区分大小写的RFC引用(例如,“RFC6231”用于指定媒体服务器支持IVR包[RFC6231]提供的VoiceXML)。

The presence of at least one <vxml-mode> child element would indicate that the Media Server does support VXML as specified by the child element itself. An empty <vxml> element would otherwise indicate that the Media Server does not support VXML at all.

至少有一个子元素<vxml mode>表示媒体服务器支持子元素本身指定的vxml。如果<vxml>元素为空,则表示媒体服务器根本不支持vxml。

5.1.5.18. <media-server-location>
5.1.5.18. <媒体服务器位置>

The <media-server-location> element provides information about the civic location of a Media Server. Its description makes use of the Civic Address Schema standardized in RFC 5139 [RFC5139]. The element MAY be present. More precisely, this section is entirely optional, and it's implementation specific to fill it with just the details each implementer deems necessary for any optimization that may be needed.

<media server location>元素提供有关媒体服务器位置的信息。其描述使用了RFC 5139[RFC5139]中标准化的公民地址模式。元素可能存在。更准确地说,这一部分完全是可选的,它的具体实现是用每个实现者认为可能需要的任何优化所必需的细节来填充它。

The <media-server-location> element has no attributes.

<media server location>元素没有属性。

The <media-server-location> element has a single child element:

<media server location>元素有一个子元素:

<civicAddress>: Describes the civic address location of the Media Server, whose representation refers to Section 4 of RFC 5139 [RFC5139].

<civicAddress>:描述媒体服务器的公民地址位置,其表示参考RFC 5139[RFC5139]第4节。

5.1.5.19. <label>
5.1.5.19. <label>

The <label> element allows a Media Server to declare a piece of information that will be understood by the MRB. For example, the Media Server can declare if it's a blue or green one. It's a string to allow arbitrary values to be returned to allow arbitrary classification. The element MAY be present.

<label>元素允许媒体服务器声明MRB可以理解的信息。例如,媒体服务器可以声明它是蓝色还是绿色。它是一个允许返回任意值以允许任意分类的字符串。元素可能存在。

The <label> element has no attributes.

<label>元素没有属性。

The <label> element has no child elements.

<label>元素没有子元素。

5.1.5.20. <media-server-address>
5.1.5.20. <媒体服务器地址>

The <media-server-address> element allows a Media Server to provide a direct SIP URI where it can be reached (e.g., the URI that the Application Server would call in order to set up a Control Channel and relay SIP media dialogs). The element MAY be present.

<media server address>元素允许媒体服务器提供可访问的直接SIP URI(例如,应用服务器将调用的URI,以便设置控制通道和中继SIP媒体对话框)。元素可能存在。

The <media-server-address> element has no attributes.

<media server address>元素没有属性。

The <media-server-address> element has no child elements.

<media server address>元素没有子元素。

5.1.5.21. <encryption>
5.1.5.21. <encryption>

The <encryption> element allows a Media Server to declare support for encrypting RTP media streams using RFC 3711 [RFC3711]. The element MAY be present. If the element is present, then the Media Server supports DTLS-SRTP (a Secure Real-time Transport Protocol (SRTP) extension for Datagram Transport Layer Security (DTLS)) [RFC5763].

<encryption>元素允许媒体服务器声明支持使用RFC 3711[RFC3711]加密RTP媒体流。元素可能存在。如果存在该元素,则媒体服务器支持DTLS-SRTP(数据报传输层安全性(DTLS)的安全实时传输协议(SRTP)扩展)[RFC5763]。

The <encryption> element has no attributes.

<encryption>元素没有属性。

The <encryption> element has no child elements.

<encryption>元素没有子元素。

5.2. Media Service Resource Consumer Interface
5.2. 媒体服务资源使用者接口

The Media Server Consumer interface provides the ability for clients of an MRB, such as Application Servers, to request an appropriate Media Server to satisfy specific criteria. This interface allows a client to pass detailed meta-information to the MRB to help select an appropriate Media Server. The MRB is then able to make an informed

媒体服务器使用者界面为MRB的客户端(如应用程序服务器)提供了请求适当媒体服务器以满足特定标准的能力。此接口允许客户端将详细的元信息传递给MRB,以帮助选择适当的媒体服务器。然后,MRB能够做出知情的决定

decision and provide the client with an appropriate Media Server resource. The MRB Consumer interface includes both 1) the In-line Aware MRB Mode (IAMM), which uses the Session Initiation Protocol (SIP) and 2) the Query mode, which uses the Hypertext Transfer Protocol (HTTP) [RFC2616]. The MRB Consumer interface does not include the In-line Unaware Mode (IUMM), which is further explained in Section 5.3. The following sub-sections provide guidance on using the Consumer interface, which is represented by the 'application/mrb-consumer+xml' media type in Section 11, with HTTP and SIP.

决定并为客户端提供适当的媒体服务器资源。MRB消费者接口包括1)使用会话启动协议(SIP)的在线感知MRB模式(IAMM)和2)使用超文本传输协议(HTTP)[RFC2616]的查询模式。MRB消费者界面不包括在线不知道模式(IUMM),第5.3节对此作了进一步解释。以下小节提供了使用消费者接口的指南,消费者接口在第11节中以“application/mrb Consumer+xml”媒体类型表示,带有HTTP和SIP。

5.2.1. Query Mode/HTTP Consumer Interface Usage
5.2.1. 查询模式/HTTP使用者接口使用情况

An appropriate interface for such a 'query' style interface is in fact an HTTP usage. Using HTTP and XML combined reduces complexity and encourages the use of common tools that are widely available in the industry today. The following information explains the primary operations required to request and then receive information from an MRB, by making use of HTTP [RFC2616] and HTTPS [RFC2818] as transport for a query for a media resource, and the appropriate response.

这种“查询”式接口的合适接口实际上是HTTP用法。结合使用HTTP和XML可以降低复杂性,并鼓励使用当今业界广泛使用的通用工具。以下信息解释了通过使用HTTP[RFC2616]和HTTPS[RFC2818]作为媒体资源查询和相应响应的传输,请求并从MRB接收信息所需的主要操作。

The media resource query, as defined by the <mediaResourceRequest> element from Section 11, MUST be carried in the body of an HTTP/HTTPS POST request. The media type contained in the HTTP/HTTPS request/ response MUST be 'application/mrb-consumer+xml'. This value MUST be reflected in the appropriate HTTP headers, such as 'Content-Type' and 'Accept'. The body of the HTTP/HTTPS POST request MUST only contain an <mrbconsumer> root element with only one child <mediaResourceRequest> element as defined in Section 11.

第11节中的<mediaResourceRequest>元素定义的媒体资源查询必须包含在HTTP/HTTPS POST请求的主体中。HTTP/HTTPS请求/响应中包含的媒体类型必须为“application/mrb consumer+xml”。此值必须反映在适当的HTTP头中,例如“内容类型”和“接受”。HTTP/HTTPS POST请求的主体必须只包含一个<mrbconsumer>根元素,并且只有一个子元素<mediaResourceRequest>,如第11节所定义。

The media resource response to a query, as defined by the <mediaResourceResponse> element from Section 11, MUST be carried in the body of an HTTP/HTTPS 200 response to the original HTTP/HTTPS POST request. The media type contained in the HTTP/HTTPS request/ response MUST be 'application/mrb-consumer+xml'. This value MUST be reflected in the appropriate HTTP headers, such as 'Content-Type' and 'Accept'. The body of the HTTP/HTTPS 200 response MUST only contain an <mrbconsumer> root element with only one child <mediaResourceResponse> element as defined in Section 11.

第11节中的<mediaResourceResponse>元素定义的对查询的媒体资源响应必须包含在对原始HTTP/HTTPS POST请求的HTTP/HTTPS 200响应的主体中。HTTP/HTTPS请求/响应中包含的媒体类型必须为“application/mrb consumer+xml”。此值必须反映在适当的HTTP头中,例如“内容类型”和“接受”。HTTP/HTTPS 200响应的主体必须只包含一个<mrbconsumer>根元素,并且只有一个子元素<mediaResourceResponse>,如第11节所定义。

When an Application Server wants to release previously awarded media resources granted through a prior request/response exchange with an MRB, it will send a new request with an <action> element with value 'remove', as described in Section 5.2.3 ("Consumer Interface Lease Mechanism").

当应用服务器希望释放通过与MRB的先前请求/响应交换授予的先前授予的媒体资源时,它将发送一个新请求,该请求包含一个值为“remove”的<action>元素,如第5.2.3节(“消费者接口租赁机制”)所述。

5.2.2. In-Line Aware Mode/SIP Consumer Interface Usage
5.2.2. 在线感知模式/SIP用户接口使用

This document provides a complete toolkit for MRB deployment that includes the ability to interact with an MRB using SIP for the Consumer interface. The following information explains the primary operations required to request and then receive information from an MRB, by making use of SIP [RFC3261] as transport for a request for media resources, and the appropriate response when using IAMM as the mode of operation (as discussed in Section 5.2.2.1).

本文档提供了一个完整的MRB部署工具包,其中包括使用SIP与MRB进行交互的能力。以下信息说明了通过使用SIP[RFC3261]作为媒体资源请求的传输,以及使用IAMM作为操作模式时的相应响应(如第5.2.2.1节所述),请求并从MRB接收信息所需的主要操作。

The use of IAMM, besides having the MRB select appropriate media resources on behalf of a client application, includes setting up either a Control Framework Control Channel between an Application Server and one of the Media Servers (Section 5.2.2.1) or a media dialog session between an Application Server and one of the Media Servers (Section 5.2.2.2). Note that in either case the SIP URIs of the selected Media Servers are made known to the requesting Application Server in the SIP 200 OK response by means of one or more <media-server-address> child elements in the <response-session-info> element (Section 5.2.6).

IAMM的使用,除了让MRB代表客户端应用程序选择适当的媒体资源外,还包括在应用程序服务器和其中一个媒体服务器之间设置控制框架控制通道(第5.2.2.1节)或在应用程序服务器和其中一个媒体服务器之间设置媒体对话会话(第5.2.2.2节)。请注意,在任何一种情况下,通过<response session info>元素(第5.2.6节)中的一个或多个<Media Server address>子元素,在SIP 200 OK响应中向请求应用服务器告知所选媒体服务器的SIP URI。

5.2.2.1. IAMM and Setting Up a Control Framework Control Channel
5.2.2.1. IAMM和建立控制框架控制渠道

The media resource request information, as defined by the <mediaResourceRequest> element from Section 11, is carried in a SIP INVITE request. The INVITE request will be constructed as it would have been to connect to a Media Server, as defined by the Media Control Channel Framework [RFC6230]. It should be noted that this specification does not exclude the use of an offerless INVITE as defined in RFC 3261 [RFC3261]. Using offerless INVITE messages to an MRB can potentially cause confusion when applying resource selection algorithms, and an MRB, like any other SIP device, can choose to reject with a 4xx response. For an offerless INVITE to be treated appropriately, additional contextual information would need to be provided with the request; this is out of scope for this document. The following additional steps MUST be followed when using the Consumer interface:

由第11节中的<mediaResourceRequest>元素定义的媒体资源请求信息携带在SIP INVITE请求中。根据媒体控制通道框架[RFC6230]的定义,INVITE请求将被构造为连接到媒体服务器。应注意,本规范不排除使用RFC 3261[RFC3261]中定义的无要约邀请。在应用资源选择算法时,向MRB使用无要约邀请消息可能会导致混淆,并且MRB与任何其他SIP设备一样,可以选择使用4xx响应拒绝。为了适当处理无要约邀请,需要在请求中提供额外的上下文信息;这超出了本文档的范围。使用使用者界面时,必须遵循以下附加步骤:

o The Consumer client will include a payload in the SIP INVITE request of type 'multipart/mixed' [RFC2046]. One of the parts to be included in the 'multipart/mixed' payload MUST be the 'application/sdp' format, which is constructed as specified in the Media Control Channel Framework [RFC6230].

o 消费者客户端将在SIP INVITE请求中包含类型为“multipart/mixed”[RFC2046]的有效负载。“多部分/混合”有效负载中包含的一个部分必须是“应用程序/sdp”格式,该格式按照媒体控制通道框架[RFC6230]中的规定构造。

o Another part of the 'multipart/mixed' payload MUST be of type 'application/mrb-consumer+xml', as specified in this document and defined in Section 11. The body part MUST be an XML document without prolog and whose root element is <mediaResourceRequest>.

o “多部分/混合”有效负载的另一部分必须为“应用程序/mrb使用者+xml”类型,如本文件所述,并在第11节中定义。正文部分必须是不带prolog的XML文档,其根元素为<mediaResourceRequest>。

o The INVITE request will then be dispatched to the MRB, as defined by [RFC6230].

o 然后,INVITE请求将被发送到MRB,如[RFC6230]所定义。

On receiving a SIP INVITE request containing the multipart/mixed payload as specified previously, the MRB will complete a number of steps to fulfill the request. It will:

在收到包含前面指定的多部分/混合有效负载的SIP INVITE请求时,MRB将完成许多步骤以满足该请求。它将:

o Extract the multipart MIME payload from the SIP INVITE request. It will then use the contextual information provided by the client in the 'application/mrb-consumer+xml' part to determine which Media Server (or Media Servers, if more than one is deemed to be needed) should be selected to service the request.

o 从SIP INVITE请求中提取多部分MIME负载。然后,它将使用客户机在“应用程序/mrb使用者+xml”部分中提供的上下文信息来确定应选择哪个媒体服务器(或媒体服务器,如果认为需要多个媒体服务器)来服务请求。

o Extract the 'application/sdp' part from the payload and use it as the body of a new SIP INVITE request for connecting the client to one of the selected Media Servers, as defined in the Media Channel Control Framework [RFC6230]. The policy the MRB follows to pick a specific Media Server out of the Media Servers it selects is implementation specific and out of scope for this document. It is important to configure the SIP elements between the MRB and the Media Server in such a way that the INVITE will not fork. In the case of a failure in reaching the chosen Media Server, the MRB SHOULD proceed to the next one, if available.

o 从有效负载中提取“应用程序/sdp”部分,并将其用作新SIP INVITE请求的主体,用于将客户端连接到所选媒体服务器之一,如媒体通道控制框架[RFC6230]中所定义。MRB从其选择的媒体服务器中选择特定媒体服务器所遵循的策略是特定于实现的,超出了本文档的范围。在MRB和媒体服务器之间配置SIP元素,使INVITE不会分叉,这一点很重要。如果无法到达所选的媒体服务器,MRB应转到下一个媒体服务器(如果可用)。

If none of the available Media Servers can be reached, the MRB MUST reply with a SIP 503 error message that includes a Retry-After header with a non-zero value. The Application Server MUST NOT attempt to set up a new session before the time that the MRB asked it to wait has passed.

如果无法访问任何可用的媒体服务器,MRB必须回复SIP 503错误消息,其中包括一个非零值的Retry After标头。在MRB要求其等待的时间过去之前,应用程序服务器不得尝试设置新会话。

If at least one Media Server is reachable, the MRB acts as a Back-to-Back User Agent (B2BUA) that extracts the 'application/ mrb-consumer+xml' information from the SIP INVITE request and then sends a corresponding SIP INVITE request to the Media Server it has selected, to negotiate a Control Channel as defined in the Media Channel Control Framework [RFC6230].

如果至少有一个媒体服务器是可访问的,则MRB充当背靠背用户代理(B2BUA),从SIP INVITE请求中提取“应用程序/MRB消费者+xml”信息,然后向其选择的媒体服务器发送相应的SIP INVITE请求,协商媒体通道控制框架[RFC6230]中定义的控制通道。

In the case of a failure in negotiating the Control Channel with the Media Server, the MRB SHOULD proceed to the next one, if available, as explained above. If none of the available Media Servers can be reached, or the negotiations of the Control Channel with all of them fail, the MRB MUST reply with a SIP 503 error message that includes a Retry-After header with a non-zero value. The Application Server MUST NOT attempt to set up a new session before the time that the MRB asked it to wait has expired.

如果无法与媒体服务器协商控制通道,MRB应继续进行下一个通道(如果可用),如上所述。如果无法访问任何可用的媒体服务器,或者与所有媒体服务器的控制通道协商失败,MRB必须回复SIP 503错误消息,其中包含一个非零值的Retry After标头。在MRB要求其等待的时间到期之前,应用程序服务器不得尝试设置新会话。

Once the MRB receives the SIP response from the selected media resource (i.e., Media Server), it will in turn respond to the requesting client (i.e., Application Server).

一旦MRB接收到来自所选媒体资源(即媒体服务器)的SIP响应,它将依次响应请求客户端(即应用服务器)。

The media resource response generated by an MRB to a request, as defined by the <mediaResourceResponse> element from Section 11, MUST be carried in the payload of a SIP 200 OK response to the original SIP INVITE request. The SIP 200 OK response will be constructed as it would have been to connect from a Media Server, as defined by the Media Control Channel Framework [RFC6230]. The following additional steps MUST be followed when using the Consumer interface:

MRB对请求生成的媒体资源响应(由第11节中的<mediaResourceResponse>元素定义)必须包含在对原始SIP INVITE请求的SIP 200 OK响应的有效负载中。按照媒体控制通道框架[RFC6230]的定义,SIP 200 OK响应将被构造为从媒体服务器连接。使用使用者界面时,必须遵循以下附加步骤:

o Include a payload in the SIP 200 response of type 'multipart/ mixed' as per RFC 2046 [RFC2046]. One of the parts to be included in the 'multipart/mixed' payload MUST be the 'application/sdp' format, which is constructed as specified in the Media Control Channel Framework [RFC6230] and based on the incoming response from the selected media resource.

o 根据RFC 2046[RFC2046],在SIP 200响应中包括“多部分/混合”类型的有效负载。“多部分/混合”有效负载中包含的一个部分必须是“应用程序/sdp”格式,该格式按照媒体控制通道框架[RFC6230]中的规定构造,并基于所选媒体资源的传入响应。

o Another part of the 'multipart/mixed' payload MUST be of type 'application/mrb-consumer+xml', as specified in this document and defined in Section 11. Only the <mediaResourceResponse> and its child elements can be included in the payload.

o “多部分/混合”有效负载的另一部分必须为“应用程序/mrb使用者+xml”类型,如本文件所述,并在第11节中定义。有效负载中只能包含<mediaResourceResponse>及其子元素。

o The SIP 200 response will then be dispatched from the MRB.

o 然后将从MRB发送SIP 200响应。

o A SIP ACK to the 200 response will then be sent back to the MRB.

o 然后,对200响应的SIP确认将发送回MRB。

Considering that the use of SIP as a transport for Consumer transactions may result in failure, the IAMM relies on a successful INVITE transaction to address the previously discussed sequence (using the 'seq' XML element) increment mechanism. This means that if the INVITE is unsuccessful for any reason, the Application Server MUST use the same 'seq' value as previously used for the next Consumer request that it may want to send to the MRB for the same session.

考虑到使用SIP作为消费者事务的传输可能会导致失败,IAMM依靠成功的INVITE事务来处理前面讨论的序列(使用“seq”XML元素)增量机制。这意味着,如果INVITE因任何原因失败,则应用程序服务器必须使用与之前用于下一个使用者请求相同的“seq”值,该消费者请求可能希望发送给MRB用于同一会话。

An MRB implementation may be programmed to conclude that the requested resources are no longer needed when it receives a SIP BYE from the Application Server or Media Server that concludes the SIP dialog that initiated the request, or when the lease (Section 5.2.3) interval expires.

MRB实现可编程为,当其从应用服务器或媒体服务器接收到SIP BYE(结束发起请求的SIP对话框)时,或当租约(第5.2.3节)间隔到期时,不再需要请求的资源。

5.2.2.2. IAMM and Setting Up a Media Dialog
5.2.2.2. IAMM和设置媒体对话框

This scenario is identical to the description in the previous section for setting up a Control Framework Control Channel, with the exception that the application/sdp payload conveys content appropriate for setting up the media dialog to the media resource, as per RFC 3261 [RFC3261], instead of setting up a Control Channel.

此场景与上一节中关于设置控制框架控制通道的描述相同,但应用程序/sdp有效负载根据RFC 3261[RFC3261]将适合设置媒体对话框的内容传送到媒体资源,而不是设置控制通道。

5.2.3. Consumer Interface Lease Mechanism
5.2.3. 消费者界面租赁机制

The Consumer interface defined in Sections 5.2 and 11 allows a client to request an appropriate media resource based on information included in the request (either an HTTP POST or SIP INVITE message). In the case of success, the response that is returned to the client MUST contain a <response-session-info> element in either the SIP 200 or HTTP 200 response. The success response contains the description of certain resources that have been reserved to a specific Consumer client in a (new or revised) "resource session", which is identified in the <response-session-info>. The resource session is a "lease", in that the reservation is scheduled to expire at a particular time in the future, releasing the resources to be assigned for other uses. The lease may be extended or terminated earlier by future Consumer client requests that identify and reference a specific resource session.

第5.2节和第11节中定义的使用者接口允许客户端根据请求中包含的信息(HTTP POST或SIP INVITE消息)请求适当的媒体资源。如果成功,返回给客户端的响应必须在SIP 200或HTTP 200响应中包含<response session info>元素。成功响应包含在(新的或修订的)“资源会话”中保留给特定消费者客户端的特定资源的描述,该会话在<response session info>中标识。资源会话是一种“租约”,因为预定将在将来的某个特定时间到期,释放要分配给其他用途的资源。通过识别和引用特定资源会话的未来消费者客户端请求,可以提前延长或终止租约。

Before delving into the details of such a lease mechanism, it is worth clarifying its role within the context of the Consumer interface. As explained in Section 5.1, the knowledge the MRB has of the resources of all the Media Servers it is provisioned to manage is not real-time. How an MRB actually manages such resources is implementation specific -- for example, an implementation may choose to have the MRB keeping track and state of the allocated resources, or simply rely on the Media Servers themselves to provide the information using the Publish interface. Further information may also be inferred by the signaling, in the case where an MRB is in the path of media dialogs.

在深入研究这种租赁机制的细节之前,有必要澄清它在消费者界面中的作用。如第5.1节所述,MRB对其配置管理的所有媒体服务器资源的了解不是实时的。MRB实际如何管理这些资源取决于具体的实现——例如,一个实现可以选择让MRB跟踪分配资源的状态,或者简单地依靠媒体服务器本身使用发布接口提供信息。在MRB位于媒体对话框的路径中的情况下,还可以通过信令推断出进一步的信息。

The <mediaResourceResponse> element returned from the MRB contains a <response-session-info> element if the request is successful. The <response-session-info> element has zero or more of the following child elements, which provide the appropriate resource session information:

如果请求成功,则从MRB返回的<mediaResourceResponse>元素包含<response session info>元素。<response session info>元素具有以下零个或多个子元素,这些子元素提供适当的资源会话信息:

o <session-id> is a unique identifier that enables a Consumer client and MRB to correlate future media resource requests related to an initial media resource request. The <session-id> MUST be included in all future related requests (see the <session-id> paragraph later in this section, where constructing a subsequent request is discussed).

o <session id>是一个唯一标识符,它使客户机和MRB能够将未来的媒体资源请求与初始媒体资源请求关联起来。<session id>必须包含在所有未来的相关请求中(请参阅本节后面的<session id>段落,其中讨论了构建后续请求)。

o <seq> is a numeric value returned to the Consumer client. On issuing any future requests related to the media resource session (as determined by the <session-id> element), the Consumer client MUST increment the value returned in the <seq> element and include it in the request (see the <seq> paragraph later in this section, where constructing a subsequent request is discussed). Its value is a non-negative integer that MUST be limited within the 0..2^31-1 range.

o <seq>是返回给消费者客户端的数值。在发出与媒体资源会话相关的任何未来请求(由<session id>元素确定)时,消费者客户端必须增加<seq>元素中返回的值,并将其包含在请求中(请参阅本节后面的<seq>段,其中讨论了构建后续请求)。其值为非负整数,必须限制在0..2^31-1范围内。

o <expires> provides a value indicating the number of seconds that the request for media resources is deemed alive. The Consumer client should issue a refresh of the request, as discussed later in this section, if the expiry is due to fire and the media resources are still required.

o <expires>提供一个值,指示媒体资源请求被视为活动的秒数。如本节后面所述,如果到期时间因火灾而到期,并且仍然需要媒体资源,则使用者客户端应发出请求刷新。

o <media-server-address> provides information representing an assigned Media Server. More instances of this element may appear should the MRB assign more Media Servers to a Consumer request.

o <media server address>提供表示分配的媒体服务器的信息。如果MRB为消费者请求分配更多的媒体服务器,则可能会出现此元素的更多实例。

The <mediaResourceRequest> element is used in subsequent Consumer interface requests if the client wishes to manipulate the session. The Consumer client MUST include the <session-info> element, which enables the receiving MRB to determine an existing media resource allocation session. The <session-info> element has the following child elements, which provide the appropriate resource session information to the MRB:

如果客户端希望操纵会话,则在后续的使用者接口请求中使用<mediaResourceRequest>元素。消费者客户端必须包含<session info>元素,该元素使接收MRB能够确定现有的媒体资源分配会话。<session info>元素具有以下子元素,它们向MRB提供适当的资源会话信息:

o <session-id> is a unique identifier that allows a Consumer client to indicate the appropriate existing media resource session to be manipulated by the MRB for this request. The value was provided by the MRB in the initial request for media resources, as discussed earlier in this section (<session-id> element included as part of the <session-info> element in the initial <mediaResourceResponse>).

o <session id>是一个唯一标识符,允许使用者客户端指示MRB为此请求操纵的适当的现有媒体资源会话。该值由MRB在初始媒体资源请求中提供,如本节前面所述(<session id>元素作为初始<mediaResourceResponse>中的<session info>元素的一部分包含)。

o <seq> is a numeric value returned to the Consumer client in the initial request for media resources, as discussed earlier in this section (<seq> element included as part of the <session-info> element in the initial <mediaResourceResponse>). On issuing any future requests related to the specific media resource session (as determined by the <session-id> element), the Consumer client MUST increment the value returned in the <seq> element from the initial response (contained in the <mediaResourceResponse>) for every new request. The value of the <seq> element in requests acts as a counter and when used in conjunction with the unique <session-id> allows for unique identification of a request. As anticipated before, the <seq> value is limited to the 0..2^31-1 range: in the unlikely case that the counter increases to reach the highest allowed value, the <seq> value MUST be set to 0. The first numeric value for the <seq> element is not meant to be '1' but SHOULD be generated randomly by the MRB: this is to reduce the chances of a malicious MRB disrupting the session created by this MRB, as explained in Section 12.

o <seq>是在初始媒体资源请求中返回给消费者客户端的数值,如本节前面所述(<seq>元素作为初始<mediaResourceResponse>中的<session info>元素的一部分包含)。在发出与特定媒体资源会话相关的任何未来请求(由<session id>元素确定)时,消费者客户端必须为每个新请求增加<seq>元素中从初始响应(包含在<mediaResourceResponse>中)返回的值。请求中<seq>元素的值充当计数器,当与unique<session id>一起使用时,允许对请求进行唯一标识。如前所述,<seq>值被限制在0..2^31-1范围内:在计数器增加以达到最高允许值的不太可能的情况下,<seq>值必须设置为0。<seq>元素的第一个数值不是“1”,而是由MRB随机生成的:如第12节所述,这是为了减少恶意MRB中断该MRB创建的会话的机会。

o <action> provides the operation to be carried out by the MRB on receiving the request:

o <action>提供MRB在收到请求时要执行的操作:

* The value of 'update' is a request by the Consumer client to update the existing session on the MRB with alternate media resource requirements. If the requested resource information is identical to the existing MRB session, the MRB will attempt a session refresh. If the information has changed, the MRB will attempt to update the existing session with the new information. If the operation is successful, the 200 status code in the response is returned in the status attribute of the <mediaResourceResponseType> element. If the operation is not successful, a 409 status code in the response is returned in the status attribute of the <mediaResourceResponseType> element.

* “更新”的值是消费者客户端请求使用备用媒体资源需求更新MRB上的现有会话。如果请求的资源信息与现有MRB会话相同,MRB将尝试刷新会话。如果信息已更改,MRB将尝试使用新信息更新现有会话。如果操作成功,响应中的200状态代码将在<mediaResourceResponseType>元素的status属性中返回。如果操作未成功,响应中的409状态代码将在<mediaResourceResponseType>元素的status属性中返回。

* The value of 'remove' is a request by the Consumer client to remove the session on the MRB. This provides a mechanism for Consumer clients to release unwanted resources before they expire. If the operation is successful, a 200 status code in the response is returned in the status attribute of the <mediaResourceResponseType> element. If the operation is not successful, a 410 status code in the response is returned in the status attribute of the <mediaResourceResponseType> element.

* “remove”的值是消费者客户端请求删除MRB上的会话。这为使用者客户端提供了一种机制,可以在不需要的资源过期之前释放它们。如果操作成功,响应中的200状态代码将在<mediaResourceResponseType>元素的status属性中返回。如果操作未成功,响应中的410状态代码将在<mediaResourceResponseType>元素的status属性中返回。

Omitting the 'action' attribute means requesting a new set of resources.

省略“action”属性意味着请求一组新的资源。

When used with HTTP, the <session-info> element MUST be included in an HTTP POST message (as defined in [RFC2616]). When used with SIP, the <session-info> element MUST instead be included in either a SIP INVITE or a SIP re-INVITE (as defined in [RFC3261]), or in a SIP UPDATE (as defined in [RFC3311]) request: in fact, any SIP dialog, be it a new or an existing one, can be exploited to carry leasing information, and as such new SIP INVITE messages can update other leases as well as request a new one.

与HTTP一起使用时,<session info>元素必须包含在HTTP POST消息中(如[RFC2616]中所定义)。当与SIP一起使用时,<session info>元素必须包含在SIP INVITE或SIP REINVITE(定义见[RFC3261])或SIP UPDATE(定义见[RFC3311])请求中:事实上,任何SIP对话框,无论是新的还是现有的,都可以被利用来携带租赁信息,因此,新的SIP INVITE消息可以更新其他租约,也可以请求新的租约。

With IAMM, the Application Server or Media Server will eventually send a SIP BYE to end the SIP session, whether it was for a Control Channel or a media dialog. That BYE contains no Consumer interface lease information.

使用IAMM,应用服务器或媒体服务器最终将发送SIP BYE以结束SIP会话,无论是用于控制通道还是媒体对话框。该BYE不包含使用者界面租赁信息。

5.2.4. <mrbconsumer>
5.2.4. <mrbconsumer>

This section defines the XML elements for the Consumer interface. The formal XML schema definition for the Consumer interface can be found in Section 11.

本节定义消费者接口的XML元素。消费者接口的正式XML模式定义见第11节。

The root element is <mrbconsumer>. All other XML elements (requests, responses) are contained within it. The MRB Consumer interface request element is detailed in Section 5.2.5.1. The MRB Consumer interface response element is detailed in Section 5.2.6.1.

根元素是<mrbconsumer>。所有其他XML元素(请求、响应)都包含在其中。MRB消费者接口请求元素详见第5.2.5.1节。第5.2.6.1节详细介绍了MRB消费者界面响应元素。

The <mrbconsumer> element has the following attributes:

<mrbconsumer>元素具有以下属性:

version: a token specifying the mrb-consumer package version. The value is fixed as '1.0' for this version of the package. The attribute MUST be present.

版本:指定mrb消费者软件包版本的令牌。此版本的包的值固定为“1.0”。属性必须存在。

The <mrbconsumer> element may have zero or more children of one of the following child element types:

<mrbconsumer>元素可能具有以下子元素类型之一的零个或多个子元素:

<mediaResourceRequest> for sending a Consumer request. See Section 5.2.5.1.

<mediaResourceRequest>用于发送使用者请求。见第5.2.5.1节。

<mediaResourceResponse> for sending a Consumer response. See Section 5.2.6.1.

<mediaResourceResponse>用于发送使用者响应。见第5.2.6.1节。

5.2.5. Media Service Resource Request
5.2.5. 媒体服务资源请求

This section provides the element definitions for use in Consumer interface requests. The requests are carried in the <mediaResourceRequest> element.

本节提供用于使用者接口请求的元素定义。请求在<mediaResourceRequest>元素中进行。

5.2.5.1. <mediaResourceRequest>
5.2.5.1. <mediaResourceRequest>

The <mediaResourceRequest> element provides information for clients wishing to query an external MRB entity. The <mediaResourceRequest> element has a single mandatory attribute, 'id': this attribute contains a random identifier, generated by the client, that will be included in the response in order to map it to a specific request. The <mediaResourceRequest> element has <generalInfo>, <ivrInfo>, and <mixerInfo> as child elements. These three elements are used to describe the requirements of a client requesting a Media Server and are covered in Sections 5.2.5.1.1, 5.2.5.1.2, and 5.2.5.1.3, respectively.

<mediaResourceRequest>元素为希望查询外部MRB实体的客户端提供信息。<mediaResourceRequest>元素有一个强制属性“id”:该属性包含由客户端生成的随机标识符,该标识符将包含在响应中,以便将其映射到特定请求。<mediaResourceRequest>元素将<generalInfo>、<ivrInfo>和<mixerInfo>作为子元素。这三个元素用于描述请求媒体服务器的客户端的要求,分别在第5.2.5.1.1、5.2.5.1.2和5.2.5.1.3节中介绍。

5.2.5.1.1. <generalInfo>
5.2.5.1.1. <generalInfo>

The <generalInfo> element provides general Consumer request information that is neither IVR specific nor mixer specific. This includes session information that can be used for subsequent requests as part of the leasing mechanism described in Section 5.2.3. The following sub-sections describe the <session-info> and <packages> elements, as used by the <generalInfo> element.

<generalInfo>元素提供既不特定于IVR也不特定于混音器的一般消费者请求信息。这包括可用于后续请求的会话信息,作为第5.2.3节所述租赁机制的一部分。以下小节描述了<generalInfo>元素使用的<session info>和<packages>元素。

5.2.5.1.1.1. <session-info>
5.2.5.1.1.1. <会话信息>

The <session-info> element is included in Consumer requests when an update is being made to an existing media resource session. The ability to change and remove an existing media resource session is described in more detail in Section 5.2.3. The element MAY be present.

更新现有媒体资源会话时,<session info>元素包含在使用者请求中。第5.2.3节详细介绍了更改和删除现有媒体资源会话的能力。元素可能存在。

The <session-info> element has no attributes.

<session info>元素没有属性。

The <session-info> element has zero or more of the following child elements:

<session info>元素具有以下零个或多个子元素:

<session-id>: A unique identifier that explicitly references an existing media resource session on the MRB. The identifier is included to update the existing session and is described in more detail in Section 5.2.3.

<session id>:明确引用MRB上现有媒体资源会话的唯一标识符。该标识符用于更新现有会话,在第5.2.3节中有更详细的描述。

<seq>: Used in association with the <session-id> element in a subsequent request to update an existing media resource session on an MRB. The <seq> number is incremented from its original value returned in response to the initial request for media resources. Its value is a non-negative integer that MUST be limited within the 0..2^31-1 range. In the unlikely case that the counter increases to reach the highest allowed value, the <seq> value MUST be set to 0. More information about its use is provided in Section 5.2.3.

<seq>:与后续请求中的<session id>元素关联使用,以更新MRB上的现有媒体资源会话。<seq>编号从最初请求媒体资源时返回的原始值开始递增。其值为非负整数,必须限制在0..2^31-1范围内。在计数器增加以达到最高允许值的不太可能的情况下,<seq>值必须设置为0。第5.2.3节提供了有关其使用的更多信息。

<action>: Provides the operation that should be carried out on an existing media resource session on an MRB:

<action>:提供应在MRB上的现有媒体资源会话上执行的操作:

* The value of 'update' instructs the MRB to attempt to update the existing media resource session with the information contained in the <ivrInfo> and <mixerInfo> elements.

* “更新”的值指示MRB尝试使用<ivrInfo>和<mixerInfo>元素中包含的信息更新现有媒体资源会话。

* The value of 'remove' instructs the MRB to attempt to remove the existing media resource session. More information on its use is provided in Section 5.2.3.

* “remove”的值指示MRB尝试删除现有的媒体资源会话。第5.2.3节提供了有关其使用的更多信息。

5.2.5.1.1.2. <packages>
5.2.5.1.1.2. <packages>

The <packages> element provides a list of Media Control Channel Framework compliant packages that are required by the Consumer client. The element MAY be present.

<packages>元素提供消费者客户端所需的媒体控制通道框架兼容包的列表。元素可能存在。

The <packages> element has no attributes.

<packages>元素没有属性。

The <packages> element has a single child element:

<packages>元素有一个子元素:

<package>: Contains a string representing the Media Control Channel Framework package required by the Consumer client. The <package> element can appear multiple times. A valid value is a Control Package name compliant with Section 13.1.1 of [RFC6230].

<package>:包含一个字符串,表示使用者客户端所需的媒体控制通道框架包。<package>元素可以出现多次。有效值是符合[RFC6230]第13.1.1节的控制包名称。

5.2.5.1.2. <ivrInfo>
5.2.5.1.2. <ivrInfo>

The <ivrInfo> element provides information for general Consumer request information that is IVR specific. The following sub-sections describe the elements of the <ivrInfo> element: <ivr-sessions>, <file-formats>, <dtmf>, <tones>, <asr-tts>, <vxml>, <location>, <encryption>, <application-data>, <max-prepared-duration>, and <file-transfer-modes>.

<ivrInfo>元素为IVR特定的一般消费者请求信息提供信息。以下小节描述了<ivrInfo>元素的元素:<ivr会话>、<file formats>、<dtmf>、<tones>、<asr tts>、<vxml>、<location>、<encryption>、<application data>、<max prepared duration>和<file transfer modes>。

5.2.5.1.2.1. <ivr-sessions>
5.2.5.1.2.1. <ivr会话>

The <ivr-sessions> element indicates the number of IVR sessions that a Consumer client requires from a media resource. The element MAY be present.

<ivr sessions>元素表示使用者客户端从媒体资源中需要的ivr会话数。元素可能存在。

The <ivr-sessions> element has no attributes.

<ivr sessions>元素没有属性。

The <ivr-sessions> element has a single child element:

<ivr sessions>元素有一个子元素:

<rtp-codec>: Describes a required codec and the number of sessions using that codec. The <rtp-codec> element has one attribute. The value of the attribute, 'name', is a media type (which can include parameters per [RFC6381]). The <rtp-codec> element has two child elements. The child element <decoding> contains the number of RTP sessions required for decoding using the specified codec, and the child element <encoding> contains the number of RTP sessions required for encoding using the specified codec.

<rtp codec>:描述所需的编解码器以及使用该编解码器的会话数。<rtp codec>元素有一个属性。属性“name”的值是一种媒体类型(根据[RFC6381]可以包括参数)。<rtp codec>元素有两个子元素。子元素<解码>包含使用指定编解码器解码所需的RTP会话数,子元素<编码>包含使用指定编解码器编码所需的RTP会话数。

5.2.5.1.2.2. <file-formats>
5.2.5.1.2.2. <文件格式>

The <file-formats> element provides a list of file formats required for the purpose of playing media. It should be noted that this element describes media types and might better have been named "media-formats", but due to existing implementations the name "file-formats" is being used. The element MAY be present.

<file formats>元素提供播放媒体所需的文件格式列表。应该注意的是,该元素描述媒体类型,最好将其命名为“媒体格式”,但由于现有的实现,使用了“文件格式”这个名称。元素可能存在。

The <file-formats> element has no attributes.

<file formats>元素没有属性。

The <file-formats> element has a single child element:

<file formats>元素有一个子元素:

<required-format>: Has a single attribute, 'name', which provides the type of file format that is required. A valid value is a media type that, depending on its definition, can include additional parameters (e.g., [RFC6381]). The <required-format> element then has a further child element, <required-file-package>. The <required-file-package> element has a single attribute, 'required-file-package-name', which contains the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the file format support applies.

<required format>:只有一个属性“name”,它提供所需的文件格式类型。有效值是一种媒体类型,根据其定义,它可以包括其他参数(例如,[RFC6381])。然后,<required format>元素还有一个子元素,<required file package>。<required file package>元素有一个单独的属性“required file package name”,其中包含媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求,文件格式支持适用于该属性。

5.2.5.1.2.3. <dtmf>
5.2.5.1.2.3. <dtmf>

The <dtmf> element specifies the required methods to detect DTMF tones and to generate them. The element MAY be present.

<dtmf>元素指定检测并生成dtmf音调所需的方法。元素可能存在。

The <dtmf> element has no attributes.

<dtmf>元素没有属性。

The <dtmf> element has zero or more of the following child elements:

<dtmf>元素具有以下零个或多个子元素:

<detect>: Indicates the required support for DTMF detection. The <detect> element has no attributes. The <detect> element has a further child element, <dtmf-type>. The <dtmf-type> element has two attributes: 'name' and 'package'. The 'name' attribute provides the type of DTMF required and is a case-insensitive string containing either 'RFC4733' [RFC4733] or 'Media' (detecting tones as signals from the audio stream). The 'package' attribute provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the DTMF type applies.

<detect>:表示对DTMF检测所需的支持。<detect>元素没有属性。<detect>元素还有一个子元素<dtmf type>。元素有两个属性:'name'和'package'。“name”属性提供所需的DTMF类型,是一个不区分大小写的字符串,包含“RFC4733”[RFC4733]或“Media”(将音调检测为音频流中的信号)。“package”属性提供了媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求,DTMF类型适用于该包。

<generate>: Indicates the required support for DTMF generation. The <generate> element has no attributes. The <generate> element has a single child element, <dtmf-type>. The <dtmf-type> element has two attributes: 'name' and 'package'. The 'name' attribute provides the type of DTMF required and is a case-insensitive string containing either 'RFC4733' [RFC4733] or 'Media' (generating tones as signals in the audio stream). The 'package' attribute provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the DTMF type applies.

<generate>:表示生成DTMF所需的支持。<generate>元素没有属性。<generate>元素有一个子元素<dtmf type>。元素有两个属性:'name'和'package'。“name”属性提供所需的DTMF类型,是一个不区分大小写的字符串,包含“RFC4733”[RFC4733]或“Media”(在音频流中生成作为信号的音调)。“package”属性提供了媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求,DTMF类型适用于该包。

<passthrough>: Indicates the required support for passing DTMF through without re-encoding. The <passthrough> element has no attributes. The <passthrough> element then has a further child element, <dtmf-type>. The <dtmf-type> element has two attributes: 'name' and 'package'. The 'name' attribute provides the type of DTMF required and is a case-insensitive string containing either 'RFC4733' [RFC4733] or 'Media' (passing tones as signals through the audio stream). The 'package' attribute provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the DTMF type applies.

<passthrough>:表示在不重新编码的情况下通过DTMF所需的支持。<passthrough>元素没有属性。然后,<passthrough>元素还有一个子元素,<dtmf type>。元素有两个属性:'name'和'package'。“name”属性提供所需的DTMF类型,是一个不区分大小写的字符串,包含“RFC4733”[RFC4733]或“Media”(通过音频流将音调作为信号传递)。“package”属性提供了媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求,DTMF类型适用于该包。

5.2.5.1.2.4. <tones>
5.2.5.1.2.4. <tones>

The <tones> element provides requested tones that a Media Server must support for IVR. In particular, the request refers to both support for country codes (ISO 3166-1 [ISO.3166-1]) and requested functionality (ITU-T Recommendation Q.1950 [ITU-T.Q.1950]). The element MAY be present.

<tones>元素提供媒体服务器必须支持的IVR请求的音调。具体而言,该请求涉及对国家代码(ISO 3166-1[ISO.3166-1])的支持和请求的功能(ITU-T建议Q.1950[ITU-T.Q.1950])。元素可能存在。

The <tones> element has no attributes.

<tones>元素没有属性。

The <tones> element has zero or more of the following child elements:

<tones>元素具有以下零个或多个子元素:

<country-codes>: Describes the requested country codes in relation to tones. The <country-codes> element has no attributes. The <country-codes> element has one child element. The child element, <country-code>, requests a specific country code, compliant with the ISO 3166-1 [ISO.3166-1] specification. The <country-code> element has a single attribute, 'package'. The attribute 'package' provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], in which the tones from the specified country code are requested.

<国家/地区代码>:描述与音调相关的请求国家/地区代码。<country code>元素没有属性。<country codes>元素有一个子元素。子元素<country code>,请求符合ISO 3166-1[ISO.3166-1]规范的特定国家代码。<country code>元素只有一个属性“package”。属性“package”提供媒体控制频道框架包的名称,符合[RFC6230]第13.1.1节的要求,其中请求来自指定国家代码的音调。

<h248-codes>: Describes the requested H.248 codes in relation to tones. The <h248-codes> element has no attributes. The <h248-codes> element has one child element. The child element, <h248-code>, requests a specific H.248 code, compliant with the ITU-T Recommendation Q.1950 [ITU-T.Q.1950] specification. The codes can be either specific (e.g., cg/dt to only report the Dial Tone from the Call Progress Tones package) or generic (e.g., cg/* to report all the tones from the Call Progress Tones package), using wildcards. The <h248-code> element has a single attribute, 'package'. The attribute 'package' provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], in which the specified codes are requested.

<h248代码>:描述请求的与音调相关的H.248代码。<h248 code>元素没有属性。<h248 code>元素有一个子元素。子元素<h248代码>,请求符合ITU-T建议Q.1950[ITU-T.Q.1950]规范的特定H.248代码。使用通配符,代码可以是特定的(例如cg/dt,仅报告呼叫进度音包中的拨号音)或通用的(例如cg/*报告呼叫进度音包中的所有音)。<h248 code>元素只有一个属性“package”。属性“package”提供符合[RFC6230]第13.1.1节的媒体控制通道框架包的名称,其中要求指定代码。

5.2.5.1.2.5. <asr-tts>
5.2.5.1.2.5. <asr tts>

The <asr-tts> element requests information about the support for Automatic Speech Recognition (ASR) and Text-to-Speech (TTS) functionality in a Media Server. The functionality is requested by referring to the supported languages (using ISO 639-1 [ISO.639.2002] codes) in relation to both ASR and TTS. The <asr-tts> element has no attributes. The <asr-tts> element has zero or more of the following child elements:

元素请求有关在媒体服务器中支持自动语音识别(asr)和文本到语音(tts)功能的信息。通过参考与ASR和TTS相关的支持语言(使用ISO 639-1[ISO.639.2002]代码)请求功能。<asr tts>元素没有属性。<asr tts>元素具有以下零个或多个子元素:

<asr-support>: Describes the available languages for ASR. The <asr-support> element has no attributes. The <asr-support> element has one child element. The child element, <language>,

<asr支持>:描述asr可用的语言。<asr support>元素没有属性。<asr support>元素有一个子元素。子元素,<language>,

requests that the Media Server supports ASR for a specific language. The <language> element has a single attribute, 'xml:lang'. The attribute 'xml:lang' contains the ISO 639-1 [ISO.639.2002] code of the supported language.

请求媒体服务器支持特定语言的ASR。<language>元素只有一个属性“xml:lang”。属性“xml:lang”包含受支持语言的ISO 639-1[ISO.639.2002]代码。

<tts-support>: Describes the available languages for TTS. The <tts-support> element has no attributes. The <tts-support> element has one child element. The child element, <language>, requests that the Media Server supports TTS for a specific language. The <language> element has a single attribute, 'xml:lang'. The attribute 'xml:lang' contains the ISO 639-1 [ISO.639.2002] code of the supported language.

<tts支持>:描述tts可用的语言。<tts support>元素没有属性。元素有一个子元素。子元素<language>请求媒体服务器支持特定语言的TTS。<language>元素只有一个属性“xml:lang”。属性“xml:lang”包含受支持语言的ISO 639-1[ISO.639.2002]代码。

5.2.5.1.2.6. <vxml>
5.2.5.1.2.6. <vxml>

The <vxml> element specifies if the Consumer client requires VoiceXML and, if so, which protocols are supported (e.g., via the control framework, RFC 4240 [RFC4240], or RFC 5552 [RFC5552]). The element MAY be present.

<vxml>元素指定消费者客户端是否需要VoiceXML,如果需要,支持哪些协议(例如,通过控制框架、RFC 4240[RFC4240]或RFC 5552[RFC5552])。元素可能存在。

The <vxml> element has a single child element:

<vxml>元素有一个子元素:

<vxml-mode>: Has two attributes: 'package' and 'require'. The 'package' attribute provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the VXML support applies. The 'require' attribute specifies the type of VXML support required by the Consumer client (e.g., RFC 5552 [RFC5552], RFC 4240 [RFC4240], or IVR Package [RFC6231]), and valid values are case-insensitive RFC references (e.g., "rfc6231" to specify that the client requests support for VoiceXML as provided by the IVR Package [RFC6231]).

<vxml模式>:有两个属性:“包”和“需要”。“package”属性提供符合[RFC6230]第13.1.1节的媒体控制通道框架包的名称,VXML支持适用于该包。“require”属性指定消费者客户端所需的VXML支持类型(例如,RFC 5552[RFC5552]、RFC 4240[RFC4240]或IVR包[RFC6231]),有效值为不区分大小写的RFC引用(例如,“RFC6231”指定客户端请求支持IVR包[RFC6231]提供的VoiceXML)。

The presence of at least one <vxml> child element would indicate that the Consumer client requires VXML support as specified by the child element itself. An empty <vxml> element would otherwise indicate that the Consumer client does not require VXML support.

至少存在一个<vxml>子元素将表明消费者客户端需要子元素本身指定的vxml支持。如果<vxml>元素为空,则表示使用者客户端不需要vxml支持。

5.2.5.1.2.7. <location>
5.2.5.1.2.7. <location>

The <location> element requests a civic location for an IVR Media Server. The request makes use of the Civic Address Schema standardized in RFC 5139 [RFC5139]. The element MAY be present. More precisely, this section is entirely optional and is implementation specific in its level of population.

元素为IVR媒体服务器请求一个civic位置。该请求使用RFC 5139[RFC5139]中标准化的公民地址模式。元素可能存在。更准确地说,这一部分完全是可选的,并且在人口水平上是特定于实现的。

The <location> element has no attributes.

<location>元素没有属性。

The <location> element has a single child element:

<location>元素有一个子元素:

<civicAddress>: Describes the civic address location of the requested Media Server, whose representation refers to Section 4 of RFC 5139 [RFC5139].

<civicAddress>:描述所请求媒体服务器的公民地址位置,其表示参考RFC 5139[RFC5139]第4节。

5.2.5.1.2.8. <encryption>
5.2.5.1.2.8. <encryption>

The <encryption> element allows a Consumer client to request support for encrypting RTP media streams using RFC 3711 [RFC3711]. The element MAY be present. If the element is present, then the Media Server supports DTLS-SRTP [RFC5763].

<encryption>元素允许消费者客户端请求支持使用RFC 3711[RFC3711]加密RTP媒体流。元素可能存在。如果存在该元素,则媒体服务器支持DTLS-SRTP[RFC5763]。

The <encryption> element has no attributes.

<encryption>元素没有属性。

The <encryption> element has no child elements.

<encryption>元素没有子元素。

5.2.5.1.2.9. <application-data>
5.2.5.1.2.9. <应用程序数据>

The <application-data> element provides an arbitrary string of characters as IVR application-level data. This data is meant to only have meaning at the application-level logic and as such is not otherwise restricted by this specification. The set of allowed characters is the same as those in XML (viz., tab, carriage return, line feed, and the legal characters of Unicode and ISO/IEC 10646 [ISO.10646.2012] (see also Section 2.2 of <http://www.w3.org/TR/xml/>)). The element MAY be present.

<application data>元素提供一个任意字符串作为IVR应用程序级数据。此数据仅在应用程序级逻辑上有意义,因此不受本规范的限制。允许的字符集与XML中的字符集相同(即,制表符、回车符、换行符以及Unicode和ISO/IEC 10646[ISO.10646.2012]的法定字符)(另请参见第2.2节)<http://www.w3.org/TR/xml/>)). 元素可能存在。

The <application-data> element has no attributes.

<application data>元素没有属性。

The <application-data> element has no child elements.

<application data>元素没有子元素。

5.2.5.1.2.10. <max-prepared-duration>
5.2.5.1.2.10. <max prepared duration>

The <max-prepared-duration> element indicates the amount of time required by the Consumer client representing media dialog preparation in the system before it is executed. The element MAY be present.

<max prepared duration>元素表示用户客户端在执行媒体对话框准备之前在系统中所需的时间量。元素可能存在。

The <max-prepared-duration> element has no attributes.

<max prepared duration>元素没有属性。

The <max-prepared-duration> element has a single child element:

<max prepared duration>元素有一个子元素:

   <max-time>:  Has a single attribute, 'max-time-seconds', which
      provides the amount of time in seconds that a media dialog can be
      in the prepared state.  The <max-time> element then has a further
      child element, <max-time-package>.  The <max-time-package> element
        
   <max-time>:  Has a single attribute, 'max-time-seconds', which
      provides the amount of time in seconds that a media dialog can be
      in the prepared state.  The <max-time> element then has a further
      child element, <max-time-package>.  The <max-time-package> element
        

provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the time period applies.

提供符合[RFC6230]第13.1.1节的媒体控制通道框架包的名称,该时间段适用于该包。

5.2.5.1.2.11. <file-transfer-modes>
5.2.5.1.2.11. <文件传输模式>

The <file-transfer-modes> element allows the Consumer client to specify which scheme names are required for file transfer to a Media Server for each Media Control Channel Framework package type. For example, does the Media Server support fetching media resources via HTTP, HTTPS, NFS, etc.? The element MAY be present.

<file transfer modes>元素允许使用者客户端为每种媒体控制通道框架包类型指定将文件传输到媒体服务器所需的方案名称。例如,媒体服务器是否支持通过HTTP、HTTPS、NFS等获取媒体资源。?元素可能存在。

The <file-transfer-modes> element has no attributes.

<file transfer modes>元素没有属性。

The <file-transfer-modes> element has a single child element:

<file transfer modes>元素有一个子元素:

<file-transfer-mode>: Has two attributes: 'name' and 'package'. The 'name' attribute provides the scheme name of the protocol required for fetching resources: valid values are case-insensitive scheme names (e.g., HTTP, HTTPS, NFS, etc.). The 'package' attribute provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the scheme name applies.

<file transfer mode>:有两个属性:“name”和“package”。“name”属性提供获取资源所需的协议的方案名称:有效值是不区分大小写的方案名称(例如HTTP、HTTPS、NFS等)。“package”属性提供了媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求,方案名称适用于该包。

The same considerations relating to file transfer and live streaming are explained further in Section 5.1.5.15 and apply here as well.

第5.1.5.15节进一步解释了与文件传输和流媒体直播相关的相同注意事项,此处也适用。

5.2.5.1.3. <mixerInfo>
5.2.5.1.3. <mixerInfo>

The <mixerInfo> element provides information for general Consumer request information that is mixer specific. The following sub-sections describe the elements of the <mixerInfo> element: <mixers>, <file-formats>, <dtmf>, <tones>, <mixing-modes>, <application-data>, <location>, and <encryption>.

<mixerInfo>元素提供特定于混音器的一般消费者请求信息。以下小节描述了<mixerInfo>元素的元素:<mixers>、<file formats>、<dtmf>、<tones>、<mixing modes>、<application data>、<location>和<encryption>。

5.2.5.1.3.1. <mixers>
5.2.5.1.3.1. <mixers>

The <mixers> element provides information detailing the required mixed RTP sessions. The element MAY be present.

<mixers>元素提供详细说明所需混合RTP会话的信息。元素可能存在。

The <mixers> element has no attributes.

<mixers>元素没有属性。

The <mixers> element has a single child element:

<mixers>元素有一个子元素:

   <mix>:  Describes the required mixed RTP sessions.  The <mix> element
      has one attribute.  The value of the attribute, 'users', is the
      number of participants required in the mix.  The <mix> element has
        
   <mix>:  Describes the required mixed RTP sessions.  The <mix> element
      has one attribute.  The value of the attribute, 'users', is the
      number of participants required in the mix.  The <mix> element has
        

one child element. The child element, <rtp-codec>, contains the same information relating to RTP sessions as that defined in Section 5.1.5.3. The element MAY be present.

一个子元素。子元素<rtp codec>,包含与第5.1.5.3节中定义的rtp会话相关的相同信息。元素可能存在。

5.2.5.1.3.2. <file-formats>
5.2.5.1.3.2. <文件格式>

The <file-formats> element provides a list of file formats required by the Consumer client for the purpose of playing media to a mix. The element MAY be present.

<file formats>元素提供了消费者客户端在向混音播放媒体时所需的文件格式列表。元素可能存在。

The <file-formats> element has no attributes.

<file formats>元素没有属性。

The <file-formats> element has a single child element:

<file formats>元素有一个子元素:

<required-format>: Has a single attribute, 'name', which provides the type of file format supported. A valid value is a media type that, depending on its definition, can include additional parameters (e.g., [RFC6381]). The <required-format> element has a child element, <required-file-package>. The <required-file-package> element contains a single attribute, 'required-file-package-name', which contains the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the file format support applies.

<required format>:只有一个属性“name”,它提供支持的文件格式类型。有效值是一种媒体类型,根据其定义,它可以包括其他参数(例如,[RFC6381])。<required format>元素有一个子元素<required file package>。<required file package>元素包含一个属性“required file package name”,该属性包含媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求,文件格式支持适用于该属性。

5.2.5.1.3.3. <dtmf>
5.2.5.1.3.3. <dtmf>

The <dtmf> element specifies the required methods to detect DTMF tones and to generate them in a mix. The element MAY be present.

<dtmf>元素指定检测dtmf音调并在混音中生成它们所需的方法。元素可能存在。

The <dtmf> element has no attributes.

<dtmf>元素没有属性。

The <dtmf> element has zero or more of the following child elements:

<dtmf>元素具有以下零个或多个子元素:

<detect>: Indicates the required support for DTMF detection. The <detect> element has no attributes. The <detect> element then has a further child element, <dtmf-type>. The <dtmf-type> element has two attributes: 'name' and 'package'. The 'name' attribute provides the type of DTMF being used and is a case-insensitive string containing either 'RFC4733' [RFC4733] or 'Media' (detecting tones as signals from the audio stream). The 'package' attribute provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the DTMF type applies.

<detect>:表示对DTMF检测所需的支持。<detect>元素没有属性。然后,<detect>元素还有一个子元素,<dtmf type>。元素有两个属性:'name'和'package'。“name”属性提供所使用的DTMF类型,是一个不区分大小写的字符串,包含“RFC4733”[RFC4733]或“Media”(将音调检测为音频流中的信号)。“package”属性提供了媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求,DTMF类型适用于该包。

   <generate>:  Indicates the required support for DTMF generation.  The
      <generate> element has no attributes.  The <generate> element has
      a single child element, <dtmf-type>.  The <dtmf-type> element has
      two attributes: 'name' and 'package'.  The 'name' attribute
        
   <generate>:  Indicates the required support for DTMF generation.  The
      <generate> element has no attributes.  The <generate> element has
      a single child element, <dtmf-type>.  The <dtmf-type> element has
      two attributes: 'name' and 'package'.  The 'name' attribute
        

provides the type of DTMF being used and is a case-insensitive string containing either 'RFC4733' [RFC4733] or 'Media' (generating tones as signals in the audio stream). The 'package' attribute provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the DTMF type applies.

提供正在使用的DTMF类型,是不区分大小写的字符串,包含“RFC4733”[RFC4733]或“媒体”(在音频流中生成作为信号的音调)。“package”属性提供了媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求,DTMF类型适用于该包。

<passthrough>: Indicates the required support for passing DTMF through without re-encoding. The <passthrough> element has no attributes. The <passthrough> element has a single child element, <dtmf-type>. The <dtmf-type> element has two attributes: 'name' and 'package'. The 'name' attribute provides the type of DTMF being used and is a case-insensitive string containing either 'RFC4733' [RFC4733] or 'Media' (passing tones as signals through the audio stream). The 'package' attribute provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the DTMF type applies.

<passthrough>:表示在不重新编码的情况下通过DTMF所需的支持。<passthrough>元素没有属性。<passthrough>元素有一个子元素<dtmf type>。元素有两个属性:'name'和'package'。“name”属性提供所使用的DTMF类型,是一个不区分大小写的字符串,包含“RFC4733”[RFC4733]或“Media”(通过音频流将音调作为信号传递)。“package”属性提供了媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求,DTMF类型适用于该包。

5.2.5.1.3.4. <tones>
5.2.5.1.3.4. <tones>

The <tones> element provides requested tones that a Media Server must support for a mix. In particular, the request refers to both support for country codes (ISO 3166-1 [ISO.3166-1]) and requested functionality (ITU-T Recommendation Q.1950 [ITU-T.Q.1950]). The element MAY be present.

<tones>元素提供媒体服务器在混音时必须支持的请求音调。具体而言,该请求涉及对国家代码(ISO 3166-1[ISO.3166-1])的支持和请求的功能(ITU-T建议Q.1950[ITU-T.Q.1950])。元素可能存在。

The <tones> element has no attributes.

<tones>元素没有属性。

The <tones> element has zero or more of the following child elements:

<tones>元素具有以下零个或多个子元素:

<country-codes>: Describes the requested country codes in relation to tones. The <country-codes> element has no attributes. The <country-codes> element has a single child element. The child element, <country-code>, requests a specific country code, compliant with the ISO 3166-1 [ISO.3166-1] specification. The <country-code> element has a single attribute, 'package'. The attribute 'package' provides the name of the Media Control Channel Framework package, compliant with the specification in the related IANA registry (e.g., "msc-ivr/1.0"), in which the tones from the specified country code are requested.

<国家/地区代码>:描述与音调相关的请求国家/地区代码。<country code>元素没有属性。<country codes>元素有一个子元素。子元素<country code>,请求符合ISO 3166-1[ISO.3166-1]规范的特定国家代码。<country code>元素只有一个属性“package”。属性“package”提供媒体控制频道框架包的名称,符合相关IANA注册表中的规范(例如,“msc ivr/1.0”),其中请求来自指定国家代码的音调。

<h248-codes>: Describes the requested H.248 codes with respect to tones. The <h248-codes> element has no attributes. The <h248-codes> element has a single child element. The child element, <h248-code>, requests a specific H.248 code, compliant with the ITU-T Recommendation Q.1950 [ITU-T.Q.1950] specification. The codes can be either specific (e.g., cg/dt to only report the Dial Tone from the Call Progress Tones package) or generic (e.g.,

<h248代码>:描述请求的与音调有关的H.248代码。<h248 code>元素没有属性。<h248 code>元素有一个子元素。子元素<h248代码>,请求符合ITU-T建议Q.1950[ITU-T.Q.1950]规范的特定H.248代码。代码可以是特定的(例如cg/dt,仅报告呼叫进度音包中的拨号音)或通用的(例如。,

      cg/* to report all the tones from the Call Progress Tones
      package), using wildcards.  The <h248-code> element has a single
      attribute, 'package'.  The attribute 'package' provides the name
      of the Media Control Channel Framework package, compliant with
      Section 13.1.1 of [RFC6230], in which the specified codes are
      requested.
        
      cg/* to report all the tones from the Call Progress Tones
      package), using wildcards.  The <h248-code> element has a single
      attribute, 'package'.  The attribute 'package' provides the name
      of the Media Control Channel Framework package, compliant with
      Section 13.1.1 of [RFC6230], in which the specified codes are
      requested.
        
5.2.5.1.3.5. <mixing-modes>
5.2.5.1.3.5. <混合模式>

The <mixing-modes> element requests information relating to support for audio and video mixing, more specifically a list of supported algorithms to mix audio and a list of supported video presentation layouts. The element MAY be present.

<mixing modes>元素请求与音频和视频混合支持相关的信息,更具体地说,请求支持的音频混合算法列表和支持的视频演示布局列表。元素可能存在。

The <mixing-modes> element has no attributes.

<mixing modes>元素没有属性。

The <mixing-modes> element has zero or more of the following child elements:

<mixing modes>元素具有以下零个或多个子元素:

<audio-mixing-modes>: Describes the requested algorithms for audio mixing. The <audio-mixing-modes> element has no attributes. The <audio-mixing-modes> element has one child element. The child element, <audio-mixing-mode>, contains a requested mixing algorithm. Valid values for the <audio-mixing-mode> element are algorithm names, e.g., 'nbest' and 'controller' as defined in [RFC6505]. The element has a single attribute, 'package'. The attribute 'package' provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the algorithm support is requested.

<audio mixing modes>:描述请求的音频混合算法。<audio mixing modes>元素没有属性。<audio mixing modes>元素有一个子元素。子元素<音频混合模式>,包含请求的混合算法。<audio mixing mode>元素的有效值是算法名称,例如[RFC6505]中定义的“nbest”和“controller”。元素只有一个属性“package”。属性“package”提供了媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求,需要算法支持。

<video-mixing-modes>: Describes the requested video presentation layouts for video mixing. The <video-mixing-modes> element has two attributes: 'vas' and 'activespeakermix'. The 'vas' attribute is of type boolean with a value of 'true' indicating that the Consumer client requires automatic Voice Activated Switching. The 'activespeakermix' attribute is of type boolean with a value of 'true' indicating that the Consumer client requires an additional video stream for the loudest speaker participant without its contribution. The <video-mixing-modes> element has one child element. The child element, <video-mixing-mode>, contains the name of a specific video presentation layout. The name may refer to one of the predefined video layouts defined in the XCON conference information data model, or to non-XCON layouts as well, as long as they are appropriately prefixed. The <video-mixing-mode> element has a single attribute, 'package'. The attribute 'package' provides the name of the Media Control Channel Framework package, compliant with Section 13.1.1 of [RFC6230], for which the algorithm support is requested.

<video mixing modes>:描述视频混合所需的视频演示布局。<video mixing modes>元素有两个属性:“vas”和“activespeakermix”。“vas”属性为布尔类型,值为“true”,表示消费者客户端需要自动语音激活切换。“activespeakermix”属性属于布尔类型,其值为“true”,表示消费者客户端需要为声音最大的扬声器参与者提供额外的视频流,而无需其贡献。<video mixing modes>元素有一个子元素。子元素<视频混合模式>,包含特定视频演示布局的名称。该名称可以指XCON会议信息数据模型中定义的预定义视频布局之一,也可以指非XCON布局,只要它们有适当的前缀。<video mixing mode>元素有一个属性“package”。属性“package”提供了媒体控制通道框架包的名称,符合[RFC6230]第13.1.1节的要求,需要算法支持。

5.2.5.1.3.6. <application-data>
5.2.5.1.3.6. <应用程序数据>

The <application-data> element provides an arbitrary string of characters as mixer application-level data. This data is meant to only have meaning at the application-level logic and as such is not otherwise restricted by this specification. The set of allowed characters is the same as those in XML (viz., tab, carriage return, line feed, and the legal characters of Unicode and ISO/IEC 10646 [ISO.10646.2012] (see also Section 2.2 of <http://www.w3.org/TR/xml/>)). The element MAY be present.

<application data>元素提供一个任意字符串作为混合器应用程序级数据。此数据仅在应用程序级逻辑上有意义,因此不受本规范的限制。允许的字符集与XML中的字符集相同(即,制表符、回车符、换行符以及Unicode和ISO/IEC 10646[ISO.10646.2012]的法定字符)(另请参见第2.2节)<http://www.w3.org/TR/xml/>)). 元素可能存在。

The <application-data> element has no attributes.

<application data>元素没有属性。

The <application-data> element has no child elements.

<application data>元素没有子元素。

5.2.5.1.3.7. <location>
5.2.5.1.3.7. <location>

The <location> element requests a civic location for a mixer Media Server. The request makes use of the Civic Address Schema standardized in RFC 5139 [RFC5139]. The element MAY be present. More precisely, this section is entirely optional, and it's implementation specific to fill it with just the details each implementer deems necessary for any optimization that may be needed.

<location>元素为混音器媒体服务器请求一个civic位置。该请求使用RFC 5139[RFC5139]中标准化的公民地址模式。元素可能存在。更准确地说,这一部分完全是可选的,它的具体实现是用每个实现者认为可能需要的任何优化所必需的细节来填充它。

The <location> element has no attributes.

<location>元素没有属性。

The <location> element has a single child element:

<location>元素有一个子元素:

<civicAddress>: Describes the civic address location of the requested Media Server, whose representation refers to Section 4 of RFC 5139 [RFC5139].

<civicAddress>:描述所请求媒体服务器的公民地址位置,其表示参考RFC 5139[RFC5139]第4节。

5.2.5.1.3.8. <encryption>
5.2.5.1.3.8. <encryption>

The <encryption> element allows a Consumer client to request support for encrypting mixed RTP media streams using RFC 3711 [RFC3711]. The element MAY be present. If the element is present, then the Media Server supports DTLS-SRTP [RFC5763].

<encryption>元素允许消费者客户端请求支持使用RFC 3711[RFC3711]加密混合RTP媒体流。元素可能存在。如果存在该元素,则媒体服务器支持DTLS-SRTP[RFC5763]。

The <encryption> element has no attributes.

<encryption>元素没有属性。

The <encryption> element has no child elements.

<encryption>元素没有子元素。

5.2.6. Media Service Resource Response
5.2.6. 媒体服务资源响应

This section provides the element definitions for use in Consumer interface responses. The responses are carried in the <mediaResourceResponse> element.

本节提供用于使用者界面响应的元素定义。响应在<mediaResourceResponse>元素中进行。

5.2.6.1. <mediaResourceResponse>
5.2.6.1. <mediaResourceResponse>

The <mediaResourceResponse> element provides information for clients receiving response information from an external MRB entity.

<mediaResourceResponse>元素为从外部MRB实体接收响应信息的客户端提供信息。

The <mediaResourceResponse> element has two mandatory attributes: 'id' and 'status'. The 'id' attribute must contain the same value that the client provided in the 'id' attribute in the <mediaResourceRequest> to which the response is mapped. The 'status' attribute indicates the status code of the operation. The following status codes are defined for 'status':

<mediaResourceResponse>元素有两个必需属性:“id”和“status”。“id”属性必须包含与响应映射到的<mediaResourceRequest>中的“id”属性中提供的客户端相同的值。“状态”属性表示操作的状态代码。为“状态”定义了以下状态代码:

   +-----------+-------------------------------------------------------+
   | code      | description                                           |
   +-----------+-------------------------------------------------------+
   | 200       | OK                                                    |
   |           |                                                       |
   | 400       | Syntax error                                          |
   |           |                                                       |
   | 405       | Wrong sequence number                                 |
   |           |                                                       |
   | 408       | Unable to find Resource                               |
   |           |                                                       |
   | 409       | Unable to update Resource                             |
   |           |                                                       |
   | 410       | Unable to remove Resource                             |
   |           |                                                       |
   | 420       | Unsupported attribute or element                      |
   +-----------+-------------------------------------------------------+
        
   +-----------+-------------------------------------------------------+
   | code      | description                                           |
   +-----------+-------------------------------------------------------+
   | 200       | OK                                                    |
   |           |                                                       |
   | 400       | Syntax error                                          |
   |           |                                                       |
   | 405       | Wrong sequence number                                 |
   |           |                                                       |
   | 408       | Unable to find Resource                               |
   |           |                                                       |
   | 409       | Unable to update Resource                             |
   |           |                                                       |
   | 410       | Unable to remove Resource                             |
   |           |                                                       |
   | 420       | Unsupported attribute or element                      |
   +-----------+-------------------------------------------------------+
        
               Table 2: <mediaResourceResponse> Status Codes
        
               Table 2: <mediaResourceResponse> Status Codes
        

If a new media resource request made by a client application has been accepted, the MRB MUST reply with a <mediaResourceResponse> with status code 200. The same rule applies whenever a request to update (action='update') or remove (action='remove') an existing transaction can be fulfilled by the MRB.

如果客户端应用程序发出的新媒体资源请求已被接受,MRB必须使用状态代码为200的<mediaResourceResponse>进行回复。当MRB可以满足更新(action='update')或删除(action='remove')现有事务的请求时,同样的规则适用。

A media resource request, nevertheless, may fail for several reasons. In such a case, the status codes defined in Table 2 must be used instead. Specifically, if the MRB fails to handle a request due to a syntax error in the request itself (e.g., incorrect XML, violation of

然而,媒体资源请求可能会由于几个原因而失败。在这种情况下,必须使用表2中定义的状态代码。具体来说,如果MRB由于请求本身的语法错误(例如,不正确的XML、违反

the schema constraints, or invalid values in any of the attributes/ elements), the MRB MUST reply with a <mediaResourceResponse> with status code 400. If a syntactically correct request fails because the request also includes any attribute/element the MRB doesn't understand, the MRB MUST reply with a <mediaResourceResponse> with status code 420. If a syntactically correct request fails because it contains a wrong sequence number, that is, a 'seq' value not consistent with the increment the MRB expects according to Section 5.2.3, the MRB MUST reply with a <mediaResourceResponse> with status code 405. If a syntactically correct request fails because the MRB couldn't find any Media Server able to fulfill the requirements presented by the Application Server in its request, the MRB MUST reply with a <mediaResourceResponse> with status code 408. If a syntactically correct request fails because the MRB couldn't update an existing request according to the new requirements presented by the Application Server in its request, the MRB MUST reply with a <mediaResourceResponse> with status code 409. If a syntactically correct request fails because the MRB couldn't remove an existing request and release the related resources as requested by the Application Server, the MRB MUST reply with a <mediaResourceResponse> with status code 410.

模式约束或任何属性/元素中的无效值),MRB必须使用状态代码400的<mediaResourceResponse>进行回复。如果语法正确的请求失败,因为该请求还包括MRB不理解的任何属性/元素,MRB必须使用状态代码420的<mediaResourceResponse>进行回复。如果语法正确的请求因包含错误的序列号而失败,即“seq”值与MRB根据第5.2.3节预期的增量不一致,MRB必须使用状态代码405的<mediaResourceResponse>进行回复。如果语法正确的请求失败,因为MRB找不到任何能够满足应用服务器在其请求中提出的要求的媒体服务器,则MRB必须使用状态代码408的<mediaResourceResponse>进行回复。如果语法正确的请求失败,因为MRB无法根据应用服务器在其请求中提出的新要求更新现有请求,则MRB必须使用状态代码为409的<mediaResourceResponse>进行回复。如果由于MRB无法删除现有请求并根据应用服务器的请求释放相关资源而导致语法正确的请求失败,则MRB必须使用状态代码410的<mediaResourceResponse>进行回复。

Further details on status codes 409 and 410 are included in Section 5.2.3, where the leasing mechanism, along with its related scenarios, is described in more detail.

有关状态代码409和410的更多详细信息,请参见第5.2.3节,其中将更详细地描述租赁机制及其相关场景。

The <mediaResourceResponse> element has <response-session-info> as a child element. This element is used to describe the response of a Consumer interface query and is covered in the following sub-section.

<mediaResourceResponse>元素将<response session info>作为子元素。此元素用于描述使用者接口查询的响应,将在以下小节中介绍。

5.2.6.1.1. <response-session-info>
5.2.6.1.1. <响应会话信息>

The <response-session-info> element is included in Consumer responses. This applies to responses to both requests for new resources and requests to update an existing media resource session. The ability to change and remove an existing media resource session is described in more detail in Section 5.2.3. If the request was successful, the <mediaResourceResponse> MUST have one <response-session-info> child, which describes the media resource session addressed by the request. If the request was not successful, the <mediaResourceResponse> MUST NOT have a <response-session-info> child.

消费者响应中包含<response session info>元素。这适用于对新资源请求和更新现有媒体资源会话请求的响应。第5.2.3节详细介绍了更改和删除现有媒体资源会话的能力。如果请求成功,<mediaResourceResponse>必须有一个子<response session info>,该子项描述请求所处理的媒体资源会话。如果请求未成功,<mediaResourceResponse>不能有<response session info>子级。

The <response-session-info> element has no attributes.

<response session info>元素没有属性。

The <response-session-info> element has zero or more of the following child elements:

<response session info>元素具有以下零个或多个子元素:

<session-id>: A unique identifier that explicitly references an existing media resource session on the MRB. The identifier is included to update the existing session and is described in more detail in Section 5.2.3.

<session id>:明确引用MRB上现有媒体资源会话的唯一标识符。该标识符用于更新现有会话,在第5.2.3节中有更详细的描述。

<seq>: Used in association with the <session-id> element in a subsequent request to update an existing media resource session on an MRB. The <seq> number is incremented from its original value returned in response to the initial request for media resources. More information on its use is provided in Section 5.2.3.

<seq>:与后续请求中的<session id>元素关联使用,以更新MRB上的现有媒体资源会话。<seq>编号从最初请求媒体资源时返回的原始值开始递增。第5.2.3节提供了有关其使用的更多信息。

<expires>: Includes the number of seconds that the media resources are reserved as part of this interaction. If the lease is not refreshed before expiry, the MRB will reclaim the resources and they will no longer be guaranteed. It is RECOMMENDED that a minimum value of 300 seconds be used for the value of the 'expires' attribute. It is also RECOMMENDED that a Consumer client refresh the lease at an interval that is not too close to the expiry time. A value of 80% of the timeout period could be used. For example, if the timeout period is 300 seconds, the Consumer client would refresh the transaction at 240 seconds. More information on its use is provided in Section 5.2.3.

<expires>:包括作为此交互的一部分保留媒体资源的秒数。如果租约到期前未刷新,MRB将收回资源,并且不再保证这些资源。建议对“expires”属性的值使用300秒的最小值。还建议消费者客户端以不太接近到期时间的间隔刷新租约。可以使用80%的超时时间。例如,如果超时时间为300秒,消费者客户端将在240秒刷新事务。第5.2.3节提供了有关其使用的更多信息。

<media-server-address>: Provides information to reach the Media Server handling the requested media resource. One or more instances of these elements may appear. The <media-server-address> element has a single attribute named 'uri', which supplies a SIP URI that reaches the specified Media Server. It also has three optional elements: <connection-id>, <ivr-sessions>, and <mixers>. The <ivr-sessions> and <mixers> elements are defined in Sections 5.2.5.1.2.1 and 5.2.5.1.3.1, respectively, and have the same meaning but are applied to individual Media Server instances as a subset of the overall resources reported in the <connection-id> element. If multiple Media Servers are assigned in an IAMM operation, exactly one <media-server-address> element, more specifically the Media Server that provided the media dialog or CFW response, will have a <connection-id> element. Additional information relating to the use of the <connection-id> element for media dialogs is included in Section 6.

<media server address>:提供到达处理请求的媒体资源的媒体服务器的信息。可能会出现这些元素的一个或多个实例。<media server address>元素有一个名为“uri”的属性,该属性提供到达指定媒体服务器的SIP uri。它还有三个可选元素:<connection id>、<ivr sessions>和<mixers>。<ivr sessions>和<mixers>元素分别在第5.2.5.1.2.1节和第5.2.5.1.3.1节中定义,具有相同的含义,但作为<connection id>元素中报告的总体资源的子集应用于各个媒体服务器实例。如果在IAMM操作中分配了多个媒体服务器,则只有一个<Media server address>元素,更具体地说,提供媒体对话框或CFW响应的媒体服务器将具有<connection id>元素。第6节包含了与媒体对话框使用<connection id>元素相关的附加信息。

5.3. In-Line Unaware MRB Interface
5.3. 在线MRB接口

An entity acting as an In-line MRB can act in one of two roles for a request, as introduced in Section 4.2: the In-line Unaware MRB Mode (IUMM) of operation and the In-line Aware MRB Mode (IAMM) of operation. This section further describes IUMM.

作为在线MRB的实体可以作为请求的两个角色之一,如第4.2节所述:在线无意识MRB模式(IUMM)操作和在线感知MRB模式(IAMM)操作。本节进一步介绍IUMM。

It should be noted that the introduction of an MRB entity into the network, as specified in this document, requires interfaces to be implemented by those requesting Media Server resources (for example, an Application Server). This applies when using the Consumer interface as discussed in Sections 5.2.1 (Query mode) and 5.2.2 (IAMM). An MRB entity can also act in a client-unaware mode when deployed into the network. This allows any SIP-compliant client entity, as defined by RFC 3261 [RFC3261] and its extensions, to send requests to an MRB that in turn will select an appropriate Media Server based on knowledge of Media Server resources it currently has available transparently to the client entity. Using an MRB in this mode allows for easy migration of current applications and services that are unaware of the MRB concept and would simply require a configuration change resulting in the MRB being set as a SIP outbound proxy for clients requiring media services.

应注意,如本文件所述,将MRB实体引入网络需要由请求媒体服务器资源的人(例如,应用服务器)实现接口。这适用于使用第5.2.1节(查询模式)和第5.2.2节(IAMM)中讨论的消费者界面。当部署到网络中时,MRB实体也可以在客户端不知道模式下运行。这允许RFC 3261[RFC3261]及其扩展所定义的任何符合SIP的客户端实体向MRB发送请求,MRB将根据其当前对客户端实体透明可用的媒体服务器资源的知识选择适当的媒体服务器。在此模式下使用MRB允许轻松迁移不知道MRB概念的当前应用程序和服务,只需更改配置即可将MRB设置为需要媒体服务的客户端的SIP出站代理。

With IUMM, the MRB may conclude that an assigned media resource is no longer needed when it receives a SIP BYE from the Application Server or Media Server that ends the SIP dialog that initiated the request.

使用IUMM,当MRB从应用服务器或媒体服务器接收到结束发起请求的SIP对话框的SIP BYE时,MRB可能认为不再需要分配的媒体资源。

As with IAMM, in IUMM the SIP INVITE from the Application Server could convey the application/sdp payload to either set up a media dialog or a Control Framework Control Channel. In either case, in order to permit the Application Server to associate a media dialog with a Control Channel to the same Media Server, using the procedures of [RFC6230] Section 6, the MRB should be acting as a SIP proxy (and not a B2BUA). This allows the SIP URI of the targeted Media Server to be transparently passed back to the Application Server in the SIP response, resulting in a direct SIP dialog between the Application Server and the Media Server.

与IAMM一样,在IUMM中,来自应用服务器的SIP INVITE可以传递应用程序/sdp有效负载,以建立媒体对话框或控制框架控制通道。在任何一种情况下,为了允许应用服务器使用[RFC6230]第6节中的过程将媒体对话与控制通道关联到同一媒体服务器,MRB应充当SIP代理(而不是B2BUA)。这允许在SIP响应中将目标媒体服务器的SIP URI透明地传递回应用服务器,从而在应用服务器和媒体服务器之间形成直接的SIP对话。

While IUMM has the least impact on legacy Application Servers, it also provides the least versatility. See Section 8.

虽然IUMM对传统应用服务器的影响最小,但它也提供了最少的通用性。见第8节。

6. MRB Acting as a B2BUA
6. 作为B2BUA的MRB

An MRB entity can act as a SIP Back-to-Back User Agent (B2BUA) or a SIP Proxy Server as defined in RFC 3261 [RFC3261]. When an MRB acts as a B2BUA, issues can arise when using Media Control Channel packages such as the IVR [RFC6231] and mixer [RFC6505] packages. Specifically, the framework attribute 'connectionid' as provided in

MRB实体可以充当SIP背靠背用户代理(B2BUA)或RFC 3261[RFC3261]中定义的SIP代理服务器。当MRB充当B2BUA时,使用媒体控制通道包(如IVR[RFC6231]和混音器[RFC6505]包)时可能会出现问题。具体来说,框架属性“connectionid”如中所述

Appendix A ("Common Package Components") of [RFC6230] uses a concatenation of the SIP dialog identifiers to be used for referencing SIP dialogs within the Media Control Channel. When a request traverses an MRB acting as a B2BUA, the SIP dialog identifiers change, and so the 'connectionid' cannot be used as intended due to this change. For this reason, when an MRB wishes to act as a SIP B2BUA when handling a request from an Application Server to set up a media dialog to a Media Server, it MUST include the optional <connection-id> element in a Consumer interface response with a value that provides the equivalent for the 'connectionid' ('Local Dialog Tag' + 'Remote Dialog Tag') for the far side of the B2BUA. If present, this value MUST be used as the value for the 'connectionid' in packages where the Common Package Components are used. The <connection-id> element MUST NOT be included in an HTTP Consumer interface response.

[RFC6230]的附录A(“通用包组件”)使用SIP对话框标识符的串联,用于引用媒体控制通道内的SIP对话框。当请求通过充当B2BUA的MRB时,SIP对话框标识符会更改,因此由于此更改,“connectionid”无法按预期使用。因此,当MRB希望在处理从应用服务器到媒体服务器设置媒体对话的请求时充当SIP B2BUA时,它必须在消费者接口响应中包含可选的<connection id>元素,该元素的值为“connectionid”(“Local dialog Tag”+“Remote dialog Tag”)提供等效值对于B2BUA的远端。如果存在,此值必须用作使用公共包组件的包中“connectionid”的值。HTTP使用者接口响应中不得包含<connection id>元素。

It is important to point out that although more Media Server instances may be returned in a Consumer response (i.e., the MRB has assigned more than one Media Server to a Consumer request to fulfill the Application Server requirements), in IAMM the MRB will only act as a B2BUA with a single Media Server. In this case, exactly one <media-server-address> element, describing the media dialog or CFW response, will have a <connection-id> element that will not be included in any additional <media-server-address> elements.

需要指出的是,尽管消费者响应中可能会返回更多的媒体服务器实例(即,MRB为消费者请求分配了多个媒体服务器以满足应用程序服务器要求),但在IAMM中,MRB将仅作为具有单个媒体服务器的B2BUA。在这种情况下,只有一个描述媒体对话框或CFW响应的<media server address>元素将包含一个<connection id>元素,该元素不会包含在任何其他<media server address>元素中。

7. Multimodal MRB Implementations
7. 多模式MRB实现

An MRB implementation may operate multimodally with a collection of Application Server clients all sharing the same pool of media resources. That is, an MRB may be simultaneously operating in Query mode, IAMM, and IUMM. It knows in which mode to act on any particular request from a client, depending on the context of the request:

MRB实现可以与共享同一媒体资源池的应用服务器客户端集合进行多模式操作。也就是说,MRB可以同时在查询模式、IAMM和IUMM下运行。根据请求的上下文,它知道以何种模式对来自客户端的任何特定请求进行操作:

o If the received request is an HTTP POST message with application/ mrb-consumer+xml content, then the MRB processes it in Query mode.

o 如果收到的请求是包含应用程序/mrb使用者+xml内容的HTTP POST消息,则mrb将以查询模式对其进行处理。

o If the received request is a SIP INVITE with application/ mrb-consumer+xml content and application/sdp content, then the MRB processes it in IAMM.

o 如果收到的请求是SIP邀请,其中包含应用程序/mrb使用者+xml内容和应用程序/sdp内容,则mrb将在IAMM中处理该请求。

o If the received request is a SIP INVITE without application/ mrb-consumer+xml content but with application/sdp content, then the MRB processes it in IUMM.

o 如果收到的请求是没有应用程序/mrb使用者+xml内容但有应用程序/sdp内容的SIP邀请,则mrb在IUMM中处理该请求。

8. Relative Merits of Query Mode, IAMM, and IUMM
8. 查询模式、IAMM和IUMM的相对优点

At a high level, the possible Application Server MRB interactions can be distinguished by the following basic types:

在较高级别上,可以通过以下基本类型区分可能的应用程序服务器MRB交互:

a. Query mode - the client is requesting the assignment by the MRB of suitable Media Server resources;

a. 查询模式-客户端请求MRB分配合适的媒体服务器资源;

b. IAMM/media dialog - the client is requesting the assignment by the MRB of suitable Media Server resources and the establishment of a media dialog to one of the Media Servers;

b. IAMM/媒体对话-客户机请求MRB分配合适的媒体服务器资源,并向其中一个媒体服务器建立媒体对话;

c. IAMM/Control Channel - the client is requesting the assignment by the MRB of suitable Media Server resources and the establishment of a CFW Control Channel to one of the Media Servers;

c. IAMM/控制通道-客户机请求MRB分配合适的媒体服务器资源,并建立一个到其中一个媒体服务器的CFW控制通道;

d. IUMM/media dialog - the client is requesting the establishment of a media dialog to a Media Server resource;

d. IUMM/媒体对话-客户端请求建立媒体服务器资源的媒体对话;

e. IUMM/Control Channel - the client is requesting the establishment of a CFW Control Channel to a Media Server resource.

e. IUMM/控制通道-客户端请求建立到媒体服务器资源的CFW控制通道。

Each type of interaction has advantages and disadvantages, where such considerations relate to the versatility of what the MRB can provide, technical aspects such as efficiency in different application scenarios, complexity, delay, use with legacy Application Servers, or use with the Media Control Channel Framework. Depending on the characteristics of a particular setting that an MRB is intended to support, some of the above interaction types may be more appropriate than others. This section provides a few observations on relative merits but is not intended to be exhaustive. Some constraints of a given interaction type may be subtle.

每种类型的交互都有优点和缺点,其中这些考虑因素涉及MRB可以提供的多功能性、技术方面,如不同应用场景中的效率、复杂性、延迟、与传统应用服务器的使用或与媒体控制通道框架的使用。根据MRB拟支持的特定设置的特征,上述一些交互类型可能比其他类型更合适。本节提供了一些关于相对优点的意见,但并非详尽无遗。给定交互类型的某些约束可能很微妙。

o Operation with other types of media control: Any of the types of interactions work with the mechanisms described in RFC 4240 [RFC4240] and RFC 5552 [RFC5552] where initial control instructions are conveyed in the SIP INVITE from the Application Server for the media dialog to the Media Server and subsequent instructions may be fetched using HTTP. Query mode (a), IAMM/ media dialog (b), and IUMM/media dialog (d) work with the Media Server Markup Language (MSML) as per RFC 5707 [RFC5707] or the Media Server Control Markup Language (MSCML) as per RFC 5022 [RFC5022].

o 使用其他类型的媒体控制操作:任何类型的交互都使用RFC 4240[RFC4240]和RFC 5552[RFC5552]中描述的机制,其中初始控制指令在SIP INVITE中从媒体对话框的应用服务器传输到媒体服务器,后续指令可以使用HTTP获取。查询模式(a)、IAMM/媒体对话框(b)和IUMM/媒体对话框(d)根据RFC 5707[RFC5707]使用媒体服务器标记语言(MSML)或根据RFC 5022[RFC5022]使用媒体服务器控制标记语言(MSCML)。

o As stated previously, IUMM has no interface impacts on an Application Server. When using IUMM, the Application Server does not specify the characteristics of the type of media resource it requires, as the <mediaResourceRequest> element is not passed to

o 如前所述,IUMM对应用服务器没有接口影响。使用IUMM时,应用程序服务器不会指定所需媒体资源类型的特征,因为<mediaResourceRequest>元素不会传递给

the MRB. For IUMM/media dialog (d), the MRB can deduce an appropriate media resource on a best-effort basis using information gleaned from examining information in the SIP INVITE. This includes the SDP information for the media dialog, or initial control information in the SIP Request-URI as per RFC 4240 [RFC4240]. With IUMM/Control Channel (e), there is even less information for the MRB to use.

MRB。对于IUMM/媒体对话框(d),MRB可以使用从检查SIP邀请中的信息中收集的信息,尽最大努力推断出适当的媒体资源。这包括媒体对话框的SDP信息,或根据RFC 4240[RFC4240]在SIP请求URI中的初始控制信息。对于IUMM/控制通道(e),MRB使用的信息更少。

o If using IUMM/Control Channel (e), the subsequent sending of the media dialog to the Media Server should not be done using IUMM/ media dialog. That is, the SIP signaling to send the media dialog to the selected Media Server must be directly between the Application Server and that Media Server, and not through the MRB. Unless resources can be confidentially identified, the MRB could send the media dialog to a different Media Server. Likewise, if using IUMM/media dialog (d), the subsequent establishment of a Control Channel should not be done with IUMM/Control Channel (e) unless definitive information is available.

o 如果使用IUMM/控制通道(e),则不应使用IUMM/介质对话框向介质服务器发送介质对话框。也就是说,将媒体对话框发送到所选媒体服务器的SIP信令必须直接位于应用程序服务器和该媒体服务器之间,而不是通过MRB。除非可以机密地识别资源,否则MRB可以将媒体对话框发送到其他媒体服务器。同样,如果使用IUMM/介质对话框(d),除非有明确的信息可用,否则不应使用IUMM/控制通道(e)完成控制通道的后续建立。

o Query mode (a) and IAMM/Control Channel (c) lend themselves to requesting a pool of media resources (e.g., a number of IVR or conferencing ports) in advance of use and retaining use over a period of time, independent of whether there are media dialogs to those resources at any given moment, whereas the other types of interactions do not. This also applies to making a subsequent request to increase or decrease the amount of resources previously awarded.

o 查询模式(a)和IAMM/控制通道(c)有助于在使用前请求媒体资源池(例如,多个IVR或会议端口),并在一段时间内保持使用,这与在任何给定时刻是否存在与这些资源的媒体对话无关,而其他类型的交互则没有。这也适用于后续请求增加或减少先前授予的资源量。

o While Query mode (a) and IAMM/Control Channel (c) are the most versatile interaction types, the former is completely decoupled from the use or non-use of a Control Channel, whereas the latter requires the use of a Control Channel.

o 虽然查询模式(a)和IAMM/控制通道(c)是最通用的交互类型,但前者与控制通道的使用或不使用完全分离,而后者需要使用控制通道。

o When Media Control Channel Framework Control Channels are to be used in conjunction with the use of an MRB, Query mode (a) would typically result in fewer such channels being established over time, as compared to IAMM/Control Channel (c). That is because the latter would involve setting up an additional Control Channel every time an Application Server has a new request for an MRB for media resources.

o 当媒体控制通道框架控制通道与MRB的使用结合使用时,查询模式(a)通常会导致随着时间的推移,与IAMM/控制通道(c)相比,建立的此类通道更少。这是因为后者将涉及在每次应用程序服务器对媒体资源的MRB有新请求时设置额外的控制通道。

9. Examples
9. 例子

This section provides examples of both the Publish and Consumer interfaces. Both the Query mode and In-line mode are addressed.

本节提供发布界面和使用者界面的示例。查询模式和在线模式都被处理。

Note that due to RFC formatting conventions, this section often splits HTTP, SIP/SDP, and CFW across lines whose content would exceed 72 characters. A backslash character marks where this line folding has taken place. This backslash, and its trailing CRLF and whitespace, would not appear in the actual protocol contents. Also note that the indentation of the XML content is only provided for readability: actual messages will follow strict XML syntax, which allows for but does not require indentation.

请注意,由于RFC格式约定,本节通常跨内容超过72个字符的行拆分HTTP、SIP/SDP和CFW。反斜杠字符标记此折线发生的位置。此反斜杠及其尾部的CRLF和空格不会出现在实际的协议内容中。还要注意,XML内容的缩进只是为了可读性而提供的:实际消息将遵循严格的XML语法,这允许但不需要缩进。

9.1. Publish Example
9.1. 发布示例

The following example assumes that a Control Channel has been established and synced as described in the Media Control Channel Framework ([RFC6230]).

以下示例假设已按照媒体控制通道框架([RFC6230])中的描述建立并同步控制通道。

Figure 9 shows the subscription/notification mechanism the Publish interface is based on, as defined in Section 5.1. The MRB subscribes for information at the Media Server (message A1.), and the Media Server accepts the subscription (A2.). Notifications are triggered by the Media Server (B1.) and acknowledged by the MRB (B2.).

图9显示了发布接口所基于的订阅/通知机制,如第5.1节所定义。MRB在媒体服务器上订阅信息(消息A1.),媒体服务器接受订阅(A2.)。通知由媒体服务器(B1.)触发,并由MRB(B2.)确认。

         MRB                                            MS
          |                                              |
          | A1. CONTROL (MRB subscription)               |
          |--------------------------------------------->|
          |                                   A2. 200 OK |
          |<---------------------------------------------|
          |                                              |
          .                                              .
          .                                              .
          |                                              |
          |                                              |--+ collect
          |                                              |  | up-to-date
          |                                              |<-+ info
          |               B1. CONTROL (MRB notification) |
          |<---------------------------------------------|
          | B2. 200 OK                                   |
          |--------------------------------------------->|
          |                                              |
          .                                              .
          .                                              .
        
         MRB                                            MS
          |                                              |
          | A1. CONTROL (MRB subscription)               |
          |--------------------------------------------->|
          |                                   A2. 200 OK |
          |<---------------------------------------------|
          |                                              |
          .                                              .
          .                                              .
          |                                              |
          |                                              |--+ collect
          |                                              |  | up-to-date
          |                                              |<-+ info
          |               B1. CONTROL (MRB notification) |
          |<---------------------------------------------|
          | B2. 200 OK                                   |
          |--------------------------------------------->|
          |                                              |
          .                                              .
          .                                              .
        

Figure 9: Publish Example: Sequence Diagram

图9:发布示例:序列图

The rest of this section includes a full dump of the messages associated with the previous sequence diagram, specifically:

本节的其余部分包括与上一个序列图关联的消息的完整转储,特别是:

1. the subscription (A1.), in an <mrbrequest> (CFW CONTROL);

1. 订阅(A1.),在<mrbrequest>中(CFW控制);

2. the Media Server accepting the subscription (A2.), in an <mrbresponse> (CFW 200);

2. 在<mrbr响应>(CFW 200)中接受订阅(A2.)的媒体服务器;

3. a notification (B1.), in an <mrbnotification> (CFW CONTROL);

3. <MRB通知>(CFW控制)中的通知(B1);

4. the ack to the notification (B2.), in a framework-level 200 message (CFW 200).

4. 框架级别200消息(CFW 200)中对通知(B2.)的确认。

A1. MRB -> MS (CONTROL, publish request)
----------------------------------------
CFW lidc30BZObiC CONTROL
Control-Package: mrb-publish/1.0
Content-Type: application/mrb-publish+xml
Content-Length: 337
        
A1. MRB -> MS (CONTROL, publish request)
----------------------------------------
CFW lidc30BZObiC CONTROL
Control-Package: mrb-publish/1.0
Content-Type: application/mrb-publish+xml
Content-Length: 337
        
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mrbpublish version="1.0" xmlns="urn:ietf:params:xml:ns:mrb-publish">
    <mrbrequest>
        <subscription action="create" seqnumber="1" id="p0T65U">
            <expires>600</expires>
            <minfrequency>20</minfrequency>
            <maxfrequency>20</maxfrequency>
        </subscription>
    </mrbrequest>
</mrbpublish>
        
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mrbpublish version="1.0" xmlns="urn:ietf:params:xml:ns:mrb-publish">
    <mrbrequest>
        <subscription action="create" seqnumber="1" id="p0T65U">
            <expires>600</expires>
            <minfrequency>20</minfrequency>
            <maxfrequency>20</maxfrequency>
        </subscription>
    </mrbrequest>
</mrbpublish>
        
A2. MRB <- MS (200 to CONTROL, request accepted)
------------------------------------------------
CFW lidc30BZObiC 200
Timeout: 10
Content-Type: application/mrb-publish+xml
Content-Length: 139
        
A2. MRB <- MS (200 to CONTROL, request accepted)
------------------------------------------------
CFW lidc30BZObiC 200
Timeout: 10
Content-Type: application/mrb-publish+xml
Content-Length: 139
        
<mrbpublish version="1.0" xmlns="urn:ietf:params:xml:ns:mrb-publish">
        <mrbresponse status="200" reason="OK: Request accepted"/>
</mrbpublish>
        
<mrbpublish version="1.0" xmlns="urn:ietf:params:xml:ns:mrb-publish">
        <mrbresponse status="200" reason="OK: Request accepted"/>
</mrbpublish>
        
B1. MRB <- MS (CONTROL, event notification from MS)
---------------------------------------------------
CFW 03fff52e7b7a CONTROL
Control-Package: mrb-publish/1.0
Content-Type: application/mrb-publish+xml
Content-Length: 4226
        
B1. MRB <- MS (CONTROL, event notification from MS)
---------------------------------------------------
CFW 03fff52e7b7a CONTROL
Control-Package: mrb-publish/1.0
Content-Type: application/mrb-publish+xml
Content-Length: 4226
        
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <mrbpublish version="1.0"
             xmlns="urn:ietf:params:xml:ns:mrb-publish">
    <mrbnotification seqnumber="1" id="QQ6J3c">
        <media-server-id>a1b2c3d4</media-server-id>
        <supported-packages>
            <package name="msc-ivr/1.0"/>
            <package name="msc-mixer/1.0"/>
        
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <mrbpublish version="1.0"
             xmlns="urn:ietf:params:xml:ns:mrb-publish">
    <mrbnotification seqnumber="1" id="QQ6J3c">
        <media-server-id>a1b2c3d4</media-server-id>
        <supported-packages>
            <package name="msc-ivr/1.0"/>
            <package name="msc-mixer/1.0"/>
        
            <package name="mrb-publish/1.0"/>
            <package name="msc-example-pkg/1.0"/>
        </supported-packages>
        <active-rtp-sessions>
            <rtp-codec name="audio/basic">
                <decoding>10</decoding>
                <encoding>20</encoding>
            </rtp-codec>
        </active-rtp-sessions>
        <active-mixer-sessions>
            <active-mix conferenceid="7cfgs43">
                <rtp-codec name="audio/basic">
                    <decoding>3</decoding>
                    <encoding>3</encoding>
                </rtp-codec>
            </active-mix>
        </active-mixer-sessions>
        <non-active-rtp-sessions>
            <rtp-codec name="audio/basic">
                <decoding>50</decoding>
                <encoding>40</encoding>
            </rtp-codec>
        </non-active-rtp-sessions>
        <non-active-mixer-sessions>
            <non-active-mix available="15">
                <rtp-codec name="audio/basic">
                    <decoding>15</decoding>
                    <encoding>15</encoding>
                </rtp-codec>
            </non-active-mix>
        </non-active-mixer-sessions>
        <media-server-status>active</media-server-status>
        <supported-codecs>
            <supported-codec name="audio/basic">
                <supported-codec-package name="msc-ivr/1.0">
                    <supported-action>encoding</supported-action>
                    <supported-action>decoding</supported-action>
                </supported-codec-package>
                <supported-codec-package name="msc-mixer/1.0">
                    <supported-action>encoding</supported-action>
                    <supported-action>decoding</supported-action>
                </supported-codec-package>
            </supported-codec>
        </supported-codecs>
        <application-data>TestbedPrototype</application-data>
        
            <package name="mrb-publish/1.0"/>
            <package name="msc-example-pkg/1.0"/>
        </supported-packages>
        <active-rtp-sessions>
            <rtp-codec name="audio/basic">
                <decoding>10</decoding>
                <encoding>20</encoding>
            </rtp-codec>
        </active-rtp-sessions>
        <active-mixer-sessions>
            <active-mix conferenceid="7cfgs43">
                <rtp-codec name="audio/basic">
                    <decoding>3</decoding>
                    <encoding>3</encoding>
                </rtp-codec>
            </active-mix>
        </active-mixer-sessions>
        <non-active-rtp-sessions>
            <rtp-codec name="audio/basic">
                <decoding>50</decoding>
                <encoding>40</encoding>
            </rtp-codec>
        </non-active-rtp-sessions>
        <non-active-mixer-sessions>
            <non-active-mix available="15">
                <rtp-codec name="audio/basic">
                    <decoding>15</decoding>
                    <encoding>15</encoding>
                </rtp-codec>
            </non-active-mix>
        </non-active-mixer-sessions>
        <media-server-status>active</media-server-status>
        <supported-codecs>
            <supported-codec name="audio/basic">
                <supported-codec-package name="msc-ivr/1.0">
                    <supported-action>encoding</supported-action>
                    <supported-action>decoding</supported-action>
                </supported-codec-package>
                <supported-codec-package name="msc-mixer/1.0">
                    <supported-action>encoding</supported-action>
                    <supported-action>decoding</supported-action>
                </supported-codec-package>
            </supported-codec>
        </supported-codecs>
        <application-data>TestbedPrototype</application-data>
        
        <file-formats>
            <supported-format name="audio/x-wav">
                <supported-file-package>
                    msc-ivr/1.0
                </supported-file-package>
            </supported-format>
        </file-formats>
        <max-prepared-duration>
            <max-time max-time-seconds="3600">
                <max-time-package>msc-ivr/1.0</max-time-package>
            </max-time>
        </max-prepared-duration>
        <dtmf-support>
            <detect>
                <dtmf-type package="msc-ivr/1.0" name="RFC4733"/>
                <dtmf-type package="msc-mixer/1.0" name="RFC4733"/>
            </detect>
            <generate>
                <dtmf-type package="msc-ivr/1.0" name="RFC4733"/>
                <dtmf-type package="msc-mixer/1.0" name="RFC4733"/>
            </generate>
            <passthrough>
                <dtmf-type package="msc-ivr/1.0" name="RFC4733"/>
                <dtmf-type package="msc-mixer/1.0" name="RFC4733"/>
            </passthrough>
        </dtmf-support>
        <mixing-modes>
            <audio-mixing-modes>
                <audio-mixing-mode package="msc-ivr/1.0">
                     nbest
                </audio-mixing-mode>
            </audio-mixing-modes>
            <video-mixing-modes activespeakermix="true" vas="true">
                <video-mixing-mode package="msc-mixer/1.0">
                     single-view
                </video-mixing-mode>
                <video-mixing-mode package="msc-mixer/1.0">
                     dual-view
                </video-mixing-mode>
                <video-mixing-mode package="msc-mixer/1.0">
                     dual-view-crop
                </video-mixing-mode>
                <video-mixing-mode package="msc-mixer/1.0">
                     dual-view-2x1
                </video-mixing-mode>
                <video-mixing-mode package="msc-mixer/1.0">
                     dual-view-2x1-crop
                </video-mixing-mode>
        
        <file-formats>
            <supported-format name="audio/x-wav">
                <supported-file-package>
                    msc-ivr/1.0
                </supported-file-package>
            </supported-format>
        </file-formats>
        <max-prepared-duration>
            <max-time max-time-seconds="3600">
                <max-time-package>msc-ivr/1.0</max-time-package>
            </max-time>
        </max-prepared-duration>
        <dtmf-support>
            <detect>
                <dtmf-type package="msc-ivr/1.0" name="RFC4733"/>
                <dtmf-type package="msc-mixer/1.0" name="RFC4733"/>
            </detect>
            <generate>
                <dtmf-type package="msc-ivr/1.0" name="RFC4733"/>
                <dtmf-type package="msc-mixer/1.0" name="RFC4733"/>
            </generate>
            <passthrough>
                <dtmf-type package="msc-ivr/1.0" name="RFC4733"/>
                <dtmf-type package="msc-mixer/1.0" name="RFC4733"/>
            </passthrough>
        </dtmf-support>
        <mixing-modes>
            <audio-mixing-modes>
                <audio-mixing-mode package="msc-ivr/1.0">
                     nbest
                </audio-mixing-mode>
            </audio-mixing-modes>
            <video-mixing-modes activespeakermix="true" vas="true">
                <video-mixing-mode package="msc-mixer/1.0">
                     single-view
                </video-mixing-mode>
                <video-mixing-mode package="msc-mixer/1.0">
                     dual-view
                </video-mixing-mode>
                <video-mixing-mode package="msc-mixer/1.0">
                     dual-view-crop
                </video-mixing-mode>
                <video-mixing-mode package="msc-mixer/1.0">
                     dual-view-2x1
                </video-mixing-mode>
                <video-mixing-mode package="msc-mixer/1.0">
                     dual-view-2x1-crop
                </video-mixing-mode>
        
                <video-mixing-mode package="msc-mixer/1.0">
                     quad-view
                </video-mixing-mode>
                <video-mixing-mode package="msc-mixer/1.0">
                     multiple-5x1
                </video-mixing-mode>
                <video-mixing-mode package="msc-mixer/1.0">
                     multiple-3x3
                </video-mixing-mode>
                <video-mixing-mode package="msc-mixer/1.0">
                     multiple-4x4
                </video-mixing-mode>
            </video-mixing-modes>
        </mixing-modes>
        <supported-tones>
            <supported-country-codes>
                <country-code package="msc-ivr/1.0">GB</country-code>
                <country-code package="msc-ivr/1.0">IT</country-code>
                <country-code package="msc-ivr/1.0">US</country-code>
            </supported-country-codes>
            <supported-h248-codes>
                <h248-code package="msc-ivr/1.0">cg/*</h248-code>
                <h248-code package="msc-ivr/1.0">biztn/ofque</h248-code>
                <h248-code package="msc-ivr/1.0">biztn/erwt</h248-code>
                <h248-code package="msc-mixer/1.0">conftn/*</h248-code>
            </supported-h248-codes>
        </supported-tones>
        <file-transfer-modes>
            <file-transfer-mode package="msc-ivr/1.0" name="HTTP"/>
        </file-transfer-modes>
        <asr-tts-support>
            <asr-support>
                <language xml:lang="en"/>
            </asr-support>
            <tts-support>
                <language xml:lang="en"/>
            </tts-support>
        </asr-tts-support>
        <vxml-support>
            <vxml-mode package="msc-ivr/1.0" support="RFC6231"/>
        </vxml-support>
        <media-server-location>
            <civicAddress xml:lang="it">
                <country>IT</country>
                <A1>Campania</A1>
                <A3>Napoli</A3>
                <A6>Via Claudio</A6>
                <HNO>21</HNO>
        
                <video-mixing-mode package="msc-mixer/1.0">
                     quad-view
                </video-mixing-mode>
                <video-mixing-mode package="msc-mixer/1.0">
                     multiple-5x1
                </video-mixing-mode>
                <video-mixing-mode package="msc-mixer/1.0">
                     multiple-3x3
                </video-mixing-mode>
                <video-mixing-mode package="msc-mixer/1.0">
                     multiple-4x4
                </video-mixing-mode>
            </video-mixing-modes>
        </mixing-modes>
        <supported-tones>
            <supported-country-codes>
                <country-code package="msc-ivr/1.0">GB</country-code>
                <country-code package="msc-ivr/1.0">IT</country-code>
                <country-code package="msc-ivr/1.0">US</country-code>
            </supported-country-codes>
            <supported-h248-codes>
                <h248-code package="msc-ivr/1.0">cg/*</h248-code>
                <h248-code package="msc-ivr/1.0">biztn/ofque</h248-code>
                <h248-code package="msc-ivr/1.0">biztn/erwt</h248-code>
                <h248-code package="msc-mixer/1.0">conftn/*</h248-code>
            </supported-h248-codes>
        </supported-tones>
        <file-transfer-modes>
            <file-transfer-mode package="msc-ivr/1.0" name="HTTP"/>
        </file-transfer-modes>
        <asr-tts-support>
            <asr-support>
                <language xml:lang="en"/>
            </asr-support>
            <tts-support>
                <language xml:lang="en"/>
            </tts-support>
        </asr-tts-support>
        <vxml-support>
            <vxml-mode package="msc-ivr/1.0" support="RFC6231"/>
        </vxml-support>
        <media-server-location>
            <civicAddress xml:lang="it">
                <country>IT</country>
                <A1>Campania</A1>
                <A3>Napoli</A3>
                <A6>Via Claudio</A6>
                <HNO>21</HNO>
        
                <LMK>University of Napoli Federico II</LMK>
                <NAM>Dipartimento di Informatica e Sistemistica</NAM>
                <PC>80210</PC>
            </civicAddress>
        </media-server-location>
        <label>TestbedPrototype-01</label>
     <media-server-address>sip:MS1@ms.example.net</media-server-address>
     <encryption/>
    </mrbnotification>
   </mrbpublish>
        
                <LMK>University of Napoli Federico II</LMK>
                <NAM>Dipartimento di Informatica e Sistemistica</NAM>
                <PC>80210</PC>
            </civicAddress>
        </media-server-location>
        <label>TestbedPrototype-01</label>
     <media-server-address>sip:MS1@ms.example.net</media-server-address>
     <encryption/>
    </mrbnotification>
   </mrbpublish>
        
B2. MRB -> MS (200 to CONTROL)
------------------------------
CFW 03fff52e7b7a 200
        
B2. MRB -> MS (200 to CONTROL)
------------------------------
CFW 03fff52e7b7a 200
        
9.2. Consumer Examples
9.2. 消费者示例

As specified in Section 5.2, the Consumer interface can be involved in two different modes: Query and In-line aware. When in Query mode, Consumer messages are transported in HTTP messages: an example of such an approach is presented in Section 9.2.1. When in In-line aware mode, messages are instead transported as part of SIP negotiations: considering that SIP negotiations may be related to either the creation of a Control Channel or to a User Agent Client (UAC) media dialog, two separate examples of such an approach are presented in Section 9.2.2.

如第5.2节所述,消费者界面可采用两种不同的模式:查询模式和在线感知模式。在查询模式下,消费者消息以HTTP消息传输:第9.2.1节给出了这种方法的示例。当处于在线感知模式时,消息作为SIP协商的一部分进行传输:考虑到SIP协商可能与控制通道的创建或用户代理客户端(UAC)媒体对话有关,第9.2.2节给出了此类方法的两个单独示例。

9.2.1. Query Example
9.2.1. 查询示例

The following example assumes that the interested Application Server already knows the HTTP URL where an MRB is listening for Consumer messages.

下面的示例假设感兴趣的应用程序服务器已经知道MRB正在侦听消费者消息的HTTP URL。

Figure 10 shows the HTTP-based transaction between the Application Server (AS, as shown in the figure) and the MRB. The Application Server sends a Consumer request as payload of an HTTP POST message (1.), and the MRB provides an answer in an HTTP 200 OK message (2.). Specifically, as will be shown in the examples, the Application Server is interested in 100 IVR ports: the MRB finds two Media Servers that can satisfy the request (one providing 60 ports and the other providing 40 ports) and reports them to the Application Server.

图10显示了应用服务器(如图所示)和MRB之间基于HTTP的事务。应用服务器发送消费者请求作为HTTP POST消息(1.)的有效负载,MRB在HTTP 200 OK消息(2.)中提供答案。具体来说,如示例中所示,应用服务器对100个IVR端口感兴趣:MRB找到两个可以满足请求的媒体服务器(一个提供60个端口,另一个提供40个端口),并将它们报告给应用服务器。

     AS                                             MRB
      |                                              |
      | 1. HTTP POST (Consumer request)              |
      |--------------------------------------------->|
      |                                              |
      |                                              |
      |                                              |--+ Parse request
      |                                              |  | and see if any
      |                                              |<-+ MS applies
      |                                              |
      |                2. 200 OK (Consumer response) |
      |<---------------------------------------------|
      |                                              |
      |--+ Parse response and                        |
      |  | start session (SIP/COMEDIA/CFW)           |
      |<-+ with first MS reported by MRB             |
      |                                              |
      .                                              .
      .                                              .
        
     AS                                             MRB
      |                                              |
      | 1. HTTP POST (Consumer request)              |
      |--------------------------------------------->|
      |                                              |
      |                                              |
      |                                              |--+ Parse request
      |                                              |  | and see if any
      |                                              |<-+ MS applies
      |                                              |
      |                2. 200 OK (Consumer response) |
      |<---------------------------------------------|
      |                                              |
      |--+ Parse response and                        |
      |  | start session (SIP/COMEDIA/CFW)           |
      |<-+ with first MS reported by MRB             |
      |                                              |
      .                                              .
      .                                              .
        

Figure 10: Consumer Example (Query): Sequence Diagram

图10:消费者示例(查询):序列图

The rest of this section includes a full dump of the messages associated with the previous sequence diagram, specifically:

本节的其余部分包括与上一个序列图关联的消息的完整转储,特别是:

1. the Consumer request (1.), in a <mediaResourceRequest> (HTTP POST, Content-Type 'application/mrb-consumer+xml');

1. 消费者请求(1.),位于<mediaResourceRequest>中(HTTP POST,内容类型为'application/mrb Consumer+xml');

2. the Consumer response (2.), in a <mediaResourceResponse> (HTTP 200 OK, Content-Type 'application/mrb-consumer+xml').

2. 消费者响应(2.)位于<mediaResourceResponse>中(HTTP 200 OK,内容类型为“应用程序/mrb消费者+xml”)。

1. AS -> MRB (HTTP POST, Consumer request) ------------------------------------------ POST /Mrb/Consumer HTTP/1.1 Content-Length: 893 Content-Type: application/mrb-consumer+xml Host: mrb.example.net:8080 Connection: Keep-Alive User-Agent: Apache-HttpClient/4.0.1 (java 1.5)

1. AS->MRB(HTTP POST,消费者请求)--------------------------------------POST/MRB/Consumer HTTP/1.1内容长度:893内容类型:应用程序/MRB消费者+xml主机:MRB.example.net:8080连接:保持活动用户代理:Apache HttpClient/4.0.1(java 1.5)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mrbconsumer version="1.0" xmlns="urn:ietf:params:xml:ns:mrb-consumer">
    <mediaResourceRequest id="gh11x23v">
        <generalInfo>
            <packages>
                <package>msc-ivr/1.0</package>
                <package>msc-mixer/1.0</package>
            </packages>
        </generalInfo>
        <ivrInfo>
            <ivr-sessions>
                <rtp-codec name="audio/basic">
                    <decoding>100</decoding>
                    <encoding>100</encoding>
                </rtp-codec>
            </ivr-sessions>
            <file-formats>
                <required-format name="audio/x-wav"/>
            </file-formats>
            <file-transfer-modes>
                <file-transfer-mode package="msc-ivr/1.0" name="HTTP"/>
            </file-transfer-modes>
        </ivrInfo>
    </mediaResourceRequest>
</mrbconsumer>
        
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mrbconsumer version="1.0" xmlns="urn:ietf:params:xml:ns:mrb-consumer">
    <mediaResourceRequest id="gh11x23v">
        <generalInfo>
            <packages>
                <package>msc-ivr/1.0</package>
                <package>msc-mixer/1.0</package>
            </packages>
        </generalInfo>
        <ivrInfo>
            <ivr-sessions>
                <rtp-codec name="audio/basic">
                    <decoding>100</decoding>
                    <encoding>100</encoding>
                </rtp-codec>
            </ivr-sessions>
            <file-formats>
                <required-format name="audio/x-wav"/>
            </file-formats>
            <file-transfer-modes>
                <file-transfer-mode package="msc-ivr/1.0" name="HTTP"/>
            </file-transfer-modes>
        </ivrInfo>
    </mediaResourceRequest>
</mrbconsumer>
        

2. AS <- MRB (200 to POST, Consumer response) --------------------------------------------- HTTP/1.1 200 OK X-Powered-By: Servlet/2.5 Server: Sun GlassFish Communications Server 1.5 Content-Type: application/mrb-consumer+xml;charset=ISO-8859-1 Content-Length: 1133 Date: Mon, 12 Apr 2011 14:59:26 GMT

2. AS<-MRB(200-to-POST,Consumer response)-------------------------------------------------------------HTTP/1.1 200 OK X-Powered-By:Servlet/2.5服务器:Sun GlassFish通信服务器1.5内容类型:应用程序/MRB消费者+xml;charset=ISO-8859-1内容长度:1133日期:2011年4月12日星期一14:59:26 GMT

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mrbconsumer version="1.0" xmlns="urn:ietf:params:xml:ns:mrb-consumer" >
    <mediaResourceResponse reason="Resource found" status="200"
                           id="gh11x23v">
        <response-session-info>
            <session-id>5t3Y4IQ84gY1</session-id>
            <seq>9</seq>
            <expires>3600</expires>
            <media-server-address
                              uri="sip:MediaServer@ms.example.com:5080">
                <ivr-sessions>
                    <rtp-codec name="audio/basic">
                        <decoding>60</decoding>
                        <encoding>60</encoding>
                    </rtp-codec>
                </ivr-sessions>
            </media-server-address>
            <media-server-address
                       uri="sip:OtherMediaServer@pool.example.net:5080">
                <ivr-sessions>
                    <rtp-codec name="audio/basic">
                        <decoding>40</decoding>
                        <encoding>40</encoding>
                    </rtp-codec>
                </ivr-sessions>
            </media-server-address>
        </response-session-info>
    </mediaResourceResponse>
</mrbconsumer>
        
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mrbconsumer version="1.0" xmlns="urn:ietf:params:xml:ns:mrb-consumer" >
    <mediaResourceResponse reason="Resource found" status="200"
                           id="gh11x23v">
        <response-session-info>
            <session-id>5t3Y4IQ84gY1</session-id>
            <seq>9</seq>
            <expires>3600</expires>
            <media-server-address
                              uri="sip:MediaServer@ms.example.com:5080">
                <ivr-sessions>
                    <rtp-codec name="audio/basic">
                        <decoding>60</decoding>
                        <encoding>60</encoding>
                    </rtp-codec>
                </ivr-sessions>
            </media-server-address>
            <media-server-address
                       uri="sip:OtherMediaServer@pool.example.net:5080">
                <ivr-sessions>
                    <rtp-codec name="audio/basic">
                        <decoding>40</decoding>
                        <encoding>40</encoding>
                    </rtp-codec>
                </ivr-sessions>
            </media-server-address>
        </response-session-info>
    </mediaResourceResponse>
</mrbconsumer>
        

As the example shows, the request and response are associated by means of the 'id' attribute (id="gh11x23v"). The MRB has picked '9' as the random sequence number that needs to be incremented by the Application Server for the subsequent request associated with the same session.

如示例所示,请求和响应通过“id”属性(id=“gh11x23v”)关联。MRB已选择“9”作为随机序列号,应用程序服务器需要为与同一会话关联的后续请求增加该随机序列号。

The rest of the scenario is omitted for brevity. After having received the 'mediaResourceResponse', the Application Server has the URIs of two Media Servers able to fulfill its media requirements and can start a control dialog with one or both of them.

为了简洁起见,将省略场景的其余部分。收到“mediaResourceResponse”后,应用程序服务器具有两个媒体服务器的URI,能够满足其媒体需求,并且可以启动一个或两个媒体服务器的控制对话框。

9.2.2. IAMM Examples
9.2.2. IAMM示例

Two separate examples are presented for the IAMM case: in fact, IAMM can take advantage of two different approaches with respect to the SIP dialogs to be exploited to carry Consumer messages, i.e., i) a SIP control dialog to create a Control Channel, and ii) a UAC media dialog to attach to a Media Server. To make things clearer for the reader, the same Consumer request as the one presented in the Query mode will be sent, in order to clarify how the behavior of the involved parties may differ.

针对IAMM案例给出了两个单独的示例:事实上,IAMM可以利用两种不同的方法来利用SIP对话框来传输消费者消息,即,i)SIP控制对话框来创建控制通道,ii)UAC媒体对话框来连接到媒体服务器。为了让读者更清楚,将发送与查询模式中呈现的消费者请求相同的消费者请求,以澄清相关方的行为可能存在的差异。

9.2.2.1. IAMM Example: CFW-Based Approach
9.2.2.1. IAMM示例:基于CFW的方法

The following example assumes that the interested Application Server already knows the SIP URI of an MRB.

下面的示例假设感兴趣的应用程序服务器已经知道MRB的SIPURI。

Figure 11 shows the first approach, i.e., SIP-based transactions between the Application Server, the MRB, and one Media Server that the MRB chooses from the two that are allocated to fulfill the request. The diagram is more complex than before. This is basically a scenario envisaging the MRB as a B2BUA. The Application Server sends a SIP INVITE (1.) containing both a CFW-related SDP and a Consumer request (multipart body). The MRB sends a provisional response to the Application Server (2.) and starts working on the request. First of all, it makes use of the Consumer request from the Application Server to determine which Media Servers should be exploited. Once the right Media Servers have been chosen (MS1 and MS2 in the example), the MRB sends a new SIP INVITE (3.) to one of the Media Servers (MS1 in the example) by just including the SDP part of the original request. That Media Server negotiates this INVITE as specified in [RFC6230] (4., 5., 6.), providing the MRB with its own CFW-related SDP. The MRB replies to the original Application Server INVITE preparing a SIP 200 OK with another multipart body (7.): this multipart body includes the Consumer response used by the MRB to determine the right Media Servers and the SDP returned by the Media Server (MS1) in (5.). The Application Server finally acknowledges the 200 OK (8.), and can start a CFW connection towards that Media Server (MS1). Since the MRB provided the Application Server with two Media Server instances to fulfill its requirements, the Application Server can use the URI in the <media-server-address> element in the <mediaResourceResponse> that describes the other Media Server to establish a CFW channel with that Media Server (MS2) as well.

图11显示了第一种方法,即应用程序服务器、MRB和一个媒体服务器之间基于SIP的事务,MRB从分配用于满足请求的两个媒体服务器中选择一个。这个图表比以前更复杂了。这基本上是一个将MRB设想为B2BUA的场景。应用程序服务器发送一个SIP INVITE(1),其中包含与CFW相关的SDP和使用者请求(多部分正文)。MRB向应用服务器(2.)发送临时响应,并开始处理请求。首先,它利用来自应用服务器的使用者请求来确定应该利用哪些媒体服务器。一旦选择了正确的媒体服务器(示例中为MS1和MS2),MRB通过仅包括原始请求的SDP部分,向其中一个媒体服务器(示例中为MS1)发送新的SIP INVITE(3))。该媒体服务器按照[RFC6230](4,5,6.)中的规定协商此邀请,为MRB提供其自己的CFW相关SDP。MRB使用另一个多部分正文(7)回复原始应用服务器INVITE准备SIP 200 OK:此多部分正文包括MRB用于确定正确媒体服务器的使用者响应以及(5.)中媒体服务器(MS1)返回的SDP。应用服务器最终确认200 OK(8.),并可以启动指向该媒体服务器(MS1)的CFW连接。由于MRB为应用服务器提供了两个媒体服务器实例以满足其要求,因此应用服务器可以使用<mediaResourceResponse>中<Media Server address>元素中的URI,该元素描述了另一个媒体服务器,以与该媒体服务器(MS2)建立CFW通道。

Please note that to ease the reading of the protocol contents a simple '=_Part' is used whenever a boundary for a 'multipart/mixed' payload is provided, instead of the actual boundary that would be inserted in the SIP messages.

请注意,为了便于读取协议内容,只要提供“多部分/混合”有效负载的边界,就使用简单的“=\u部分”,而不是将插入SIP消息中的实际边界。

  AS                     MRB                        MS1              MS2
  |                       |                           |                |
  | 1. INVITE             |                           |                |
  | (multipart/mixed)     |                           |                |
  |---------------------->|                           |                |
  |       2. 100 (Trying) |                           |                |
  |<----------------------|                           |                |
  |                       |--+ Extract SDP and        |                |
  |                       |  | MRB payloads; handle   |                |
  |                       |<-+ Consumer request to    |                |
  |                       |    pick MSs (MS1 and MS2) |                |
  |                       |                           |                |
  |                       | 3. INVITE                 |                |
  |                       | (only copy SDP from 1.)   |                |
  |                       |-------------------------->|                |
  |                       |           4. 100 (Trying) |                |
  |                       |<--------------------------|                |
  |                       |                           |--+ Negotiate   |
  |                       |                           |  | CFW Control |
  |                       |                           |<-+ Channel     |
  |                       |                 5. 200 OK |                |
  |                       |<--------------------------|                |
  |                       | 6. ACK                    |                |
  |                       |-------------------------->|                |
  |        Prepare new +--|                           |                |
  |       payload with |  |                           |                |
  |    SDP from MS and +->|                           |                |
  |     Consumer reply    |                           |                |
  |                       |                           |                |
  |             7. 200 OK |                           |                |
  |     (multipart/mixed) |                           |                |
  |<----------------------|                           |                |
  | 8. ACK                |                           |                |
  |---------------------->|                           |                |
  |                       |                           |                |
  |--+ Read Cons. reply   |                           |                |
  |  | and use SDP to     |                           |                |
  |<-+ create CFW Chn.    |                           |                |
  |                       |                           |                |
  |                                                   |                |
  |   Create TCP CFW channel towards MS1 (if needed)  |                |
  |-------------------------------------------------->|                |
  |                                                   |                |
        
  AS                     MRB                        MS1              MS2
  |                       |                           |                |
  | 1. INVITE             |                           |                |
  | (multipart/mixed)     |                           |                |
  |---------------------->|                           |                |
  |       2. 100 (Trying) |                           |                |
  |<----------------------|                           |                |
  |                       |--+ Extract SDP and        |                |
  |                       |  | MRB payloads; handle   |                |
  |                       |<-+ Consumer request to    |                |
  |                       |    pick MSs (MS1 and MS2) |                |
  |                       |                           |                |
  |                       | 3. INVITE                 |                |
  |                       | (only copy SDP from 1.)   |                |
  |                       |-------------------------->|                |
  |                       |           4. 100 (Trying) |                |
  |                       |<--------------------------|                |
  |                       |                           |--+ Negotiate   |
  |                       |                           |  | CFW Control |
  |                       |                           |<-+ Channel     |
  |                       |                 5. 200 OK |                |
  |                       |<--------------------------|                |
  |                       | 6. ACK                    |                |
  |                       |-------------------------->|                |
  |        Prepare new +--|                           |                |
  |       payload with |  |                           |                |
  |    SDP from MS and +->|                           |                |
  |     Consumer reply    |                           |                |
  |                       |                           |                |
  |             7. 200 OK |                           |                |
  |     (multipart/mixed) |                           |                |
  |<----------------------|                           |                |
  | 8. ACK                |                           |                |
  |---------------------->|                           |                |
  |                       |                           |                |
  |--+ Read Cons. reply   |                           |                |
  |  | and use SDP to     |                           |                |
  |<-+ create CFW Chn.    |                           |                |
  |                       |                           |                |
  |                                                   |                |
  |   Create TCP CFW channel towards MS1 (if needed)  |                |
  |-------------------------------------------------->|                |
  |                                                   |                |
        
  |<<############## TCP CONNECTION #################>>|                |
  |                                                   |                |
  | CFW SYNC                                          |                |
  |++++++++++++++++++++++++++++++++++++++++++++++++++>|                |
  |                                                   |                |
  .                       .                           .                .
  .                       .                           .                .
  |                                                   |                |
  |   Negotiate SIP control dialog with MS2                            |
  |<------------------------------------------------------------------>|
  |   Create TCP CFW channel towards MS2 as well (if needed)           |
  |------------------------------------------------------------------->|
  |                                                                    |
  |<<######################## TCP CONNECTION ########################>>|
  |                                                                    |
  | CFW SYNC                                                           |
  |+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>|
  |                                                                    |
  |                       |                           |                |
  .                       .                           .                .
  .                       .                           .                .
        
  |<<############## TCP CONNECTION #################>>|                |
  |                                                   |                |
  | CFW SYNC                                          |                |
  |++++++++++++++++++++++++++++++++++++++++++++++++++>|                |
  |                                                   |                |
  .                       .                           .                .
  .                       .                           .                .
  |                                                   |                |
  |   Negotiate SIP control dialog with MS2                            |
  |<------------------------------------------------------------------>|
  |   Create TCP CFW channel towards MS2 as well (if needed)           |
  |------------------------------------------------------------------->|
  |                                                                    |
  |<<######################## TCP CONNECTION ########################>>|
  |                                                                    |
  | CFW SYNC                                                           |
  |+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>|
  |                                                                    |
  |                       |                           |                |
  .                       .                           .                .
  .                       .                           .                .
        
   Figure 11: Consumer Example (IAMM/Control Channel): Sequence Diagram
        
   Figure 11: Consumer Example (IAMM/Control Channel): Sequence Diagram
        

The rest of this section includes an almost full trace of the messages associated with the previous sequence diagram. Only the relevant SIP messages are shown (both the INVITEs and the 200 OKs), and only the relevant headers are preserved for brevity (Content-Type and multipart-related information). Specifically:

本节的其余部分包括与前面的序列图相关联的几乎完整的消息跟踪。仅显示相关的SIP消息(包括INVITEs和200 OK),并且仅保留相关的头以简化(内容类型和多部分相关信息)。明确地:

1. the original INVITE (1.) containing both a CFW-related SDP (Connection-Oriented Media (COMEDIA) information to negotiate a new Control Channel) and a Consumer <mediaResourceRequest>;

1. 原始邀请(1.)包含与CFW相关的SDP(用于协商新控制渠道的面向连接的媒体(喜剧)信息)和消费者<mediaResourceRequest>;

2. the INVITE sent by the MRB (acting as a B2BUA) to the Media Server (3.), containing only the CFW-related SDP from the original INVITE;

2. MRB(作为B2BUA)发送到媒体服务器(3.)的INVITE,仅包含来自原始INVITE的CFW相关SDP;

3. the 200 OK sent by the Media Server back to the MRB (5.) to complete the CFW-related negotiation (SDP only);

3. 媒体服务器发送回MRB(5)的200 OK,以完成CFW相关协商(仅SDP);

4. the 200 OK sent by the MRB back to the Application Server in response to the original INVITE (7.), containing both the CFW-related information sent by the Media Server and a Consumer <mediaResourceRequest> documenting the MRB's decision to use that Media Server.

4. MRB响应原始邀请(7.)发送回应用程序服务器的200 OK,包含媒体服务器发送的CFW相关信息和消费者<mediaResourceRequest>,记录MRB使用该媒体服务器的决定。

1. AS -> MRB (INVITE multipart/mixed) ------------------------------------- [..] Content-Type: multipart/mixed;boundary="=_Part"

1. AS->MRB(邀请多部分/混合)--------------------------------------[..]内容类型:多部分/混合;边界=“=\u部分”

   =_Part
   Content-Type: application/sdp
        
   =_Part
   Content-Type: application/sdp
        
   v=0
   o=- 2890844526 2890842807 IN IP4 as.example.com
   s=MediaCtrl
   c=IN IP4 as.example.com
   t=0 0
   m=application 48035 TCP cfw
   a=connection:new
   a=setup:active
   a=cfw-id:vF0zD4xzUAW9
   a=ctrl-package:msc-mixer/1.0
   a=ctrl-package:msc-ivr/1.0
        
   v=0
   o=- 2890844526 2890842807 IN IP4 as.example.com
   s=MediaCtrl
   c=IN IP4 as.example.com
   t=0 0
   m=application 48035 TCP cfw
   a=connection:new
   a=setup:active
   a=cfw-id:vF0zD4xzUAW9
   a=ctrl-package:msc-mixer/1.0
   a=ctrl-package:msc-ivr/1.0
        
   =_Part
   Content-Type: application/mrb-consumer+xml
        
   =_Part
   Content-Type: application/mrb-consumer+xml
        
   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <mrbconsumer version="1.0"
                xmlns="urn:ietf:params:xml:ns:mrb-consumer">
    <mediaResourceRequest id="pz78hnq1">
        <generalInfo>
            <packages>
                <package>msc-ivr/1.0</package>
                <package>msc-mixer/1.0</package>
            </packages>
        </generalInfo>
        <ivrInfo>
            <ivr-sessions>
                <rtp-codec name="audio/basic">
                    <decoding>100</decoding>
                    <encoding>100</encoding>
                </rtp-codec>
            </ivr-sessions>
            <file-formats>
                <required-format name="audio/x-wav"/>
            </file-formats>
            <file-transfer-modes>
                <file-transfer-mode package="msc-ivr/1.0" name="HTTP"/>
            </file-transfer-modes>
        </ivrInfo>
    </mediaResourceRequest>
        
   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <mrbconsumer version="1.0"
                xmlns="urn:ietf:params:xml:ns:mrb-consumer">
    <mediaResourceRequest id="pz78hnq1">
        <generalInfo>
            <packages>
                <package>msc-ivr/1.0</package>
                <package>msc-mixer/1.0</package>
            </packages>
        </generalInfo>
        <ivrInfo>
            <ivr-sessions>
                <rtp-codec name="audio/basic">
                    <decoding>100</decoding>
                    <encoding>100</encoding>
                </rtp-codec>
            </ivr-sessions>
            <file-formats>
                <required-format name="audio/x-wav"/>
            </file-formats>
            <file-transfer-modes>
                <file-transfer-mode package="msc-ivr/1.0" name="HTTP"/>
            </file-transfer-modes>
        </ivrInfo>
    </mediaResourceRequest>
        
   </mrbconsumer>
        
   </mrbconsumer>
        

=_Part

=\u部分

3. MRB -> MS (INVITE sdp only) ------------------------------ [..] Content-Type: application/sdp

3. MRB->MS(仅邀请sdp)-------------------------------------[…]内容类型:应用程序/sdp

   v=0
   o=- 2890844526 2890842807 IN IP4 as.example.com
   s=MediaCtrl
   c=IN IP4 as.example.com
   t=0 0
   m=application 48035 TCP cfw
   a=connection:new
   a=setup:active
   a=cfw-id:vF0zD4xzUAW9
   a=ctrl-package:msc-mixer/1.0
   a=ctrl-package:msc-ivr/1.0
        
   v=0
   o=- 2890844526 2890842807 IN IP4 as.example.com
   s=MediaCtrl
   c=IN IP4 as.example.com
   t=0 0
   m=application 48035 TCP cfw
   a=connection:new
   a=setup:active
   a=cfw-id:vF0zD4xzUAW9
   a=ctrl-package:msc-mixer/1.0
   a=ctrl-package:msc-ivr/1.0
        

5. MRB <- MS (200 OK sdp) ------------------------- [..] Content-Type: application/sdp

5. MRB<-MS(200正常sdp)-------------[…]内容类型:应用程序/sdp

   v=0
   o=lminiero 2890844526 2890842808 IN IP4 ms.example.net
   s=MediaCtrl
   c=IN IP4 ms.example.net
   t=0 0
   m=application 7575 TCP cfw
   a=connection:new
   a=setup:passive
   a=cfw-id:vF0zD4xzUAW9
   a=ctrl-package:msc-mixer/1.0
   a=ctrl-package:msc-ivr/1.0
   a=ctrl-package:mrb-publish/1.0
   a=ctrl-package:msc-example-pkg/1.0
        
   v=0
   o=lminiero 2890844526 2890842808 IN IP4 ms.example.net
   s=MediaCtrl
   c=IN IP4 ms.example.net
   t=0 0
   m=application 7575 TCP cfw
   a=connection:new
   a=setup:passive
   a=cfw-id:vF0zD4xzUAW9
   a=ctrl-package:msc-mixer/1.0
   a=ctrl-package:msc-ivr/1.0
   a=ctrl-package:mrb-publish/1.0
   a=ctrl-package:msc-example-pkg/1.0
        

7. AS <- MRB (200 OK multipart/mixed) ------------------------------------- [..] Content-Type: multipart/mixed;boundary="=_Part"

7. AS<-MRB(200正常多部分/混合)--------------------------------------[..]内容类型:多部分/混合;边界=“=\u部分”

   =_Part
   Content-Type: application/sdp
        
   =_Part
   Content-Type: application/sdp
        
   v=0
   o=lminiero 2890844526 2890842808 IN IP4 ms.example.net
   s=MediaCtrl
   c=IN IP4 ms.example.net
   t=0 0
   m=application 7575 TCP cfw
   a=connection:new
   a=setup:passive
   a=cfw-id:vF0zD4xzUAW9
   a=ctrl-package:msc-mixer/1.0
   a=ctrl-package:msc-ivr/1.0
   a=ctrl-package:mrb-publish/1.0
   a=ctrl-package:msc-example-pkg/1.0
        
   v=0
   o=lminiero 2890844526 2890842808 IN IP4 ms.example.net
   s=MediaCtrl
   c=IN IP4 ms.example.net
   t=0 0
   m=application 7575 TCP cfw
   a=connection:new
   a=setup:passive
   a=cfw-id:vF0zD4xzUAW9
   a=ctrl-package:msc-mixer/1.0
   a=ctrl-package:msc-ivr/1.0
   a=ctrl-package:mrb-publish/1.0
   a=ctrl-package:msc-example-pkg/1.0
        
   =_Part
   Content-Type: application/mrb-consumer+xml
        
   =_Part
   Content-Type: application/mrb-consumer+xml
        
   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <mrbconsumer version="1.0"
                xmlns="urn:ietf:params:xml:ns:mrb-consumer" >
    <mediaResourceResponse reason="Resource found" status="200"
                           id="pz78hnq1">
        <response-session-info>
            <session-id>z1skKYZQ3eFu</session-id>
            <seq>9</seq>
            <expires>3600</expires>
            <media-server-address
                              uri="sip:MediaServer@ms.example.com:5080">
                <connection-id>32pbdxZ8:KQw677BF</connection-id>
                <ivr-sessions>
                    <rtp-codec name="audio/basic">
                        <decoding>60</decoding>
                        <encoding>60</encoding>
                    </rtp-codec>
                </ivr-sessions>
            </media-server-address>
            <media-server-address
                       uri="sip:OtherMediaServer@pool.example.net:5080">
                <ivr-sessions>
                    <rtp-codec name="audio/basic">
        
   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <mrbconsumer version="1.0"
                xmlns="urn:ietf:params:xml:ns:mrb-consumer" >
    <mediaResourceResponse reason="Resource found" status="200"
                           id="pz78hnq1">
        <response-session-info>
            <session-id>z1skKYZQ3eFu</session-id>
            <seq>9</seq>
            <expires>3600</expires>
            <media-server-address
                              uri="sip:MediaServer@ms.example.com:5080">
                <connection-id>32pbdxZ8:KQw677BF</connection-id>
                <ivr-sessions>
                    <rtp-codec name="audio/basic">
                        <decoding>60</decoding>
                        <encoding>60</encoding>
                    </rtp-codec>
                </ivr-sessions>
            </media-server-address>
            <media-server-address
                       uri="sip:OtherMediaServer@pool.example.net:5080">
                <ivr-sessions>
                    <rtp-codec name="audio/basic">
        
                        <decoding>40</decoding>
                        <encoding>40</encoding>
                    </rtp-codec>
                </ivr-sessions>
            </media-server-address>
        </response-session-info>
    </mediaResourceResponse>
   </mrbconsumer>
        
                        <decoding>40</decoding>
                        <encoding>40</encoding>
                    </rtp-codec>
                </ivr-sessions>
            </media-server-address>
        </response-session-info>
    </mediaResourceResponse>
   </mrbconsumer>
        

=_Part

=\u部分

As the previous example illustrates, the only difference in the response that the MRB provides to the Application Server is in the 'connection-id' attribute that is added to the first allocated Media Server instance: this allows the Application Server to understand that the MRB has sent the CFW channel negotiation to that specific Media Server and that the connection-id to be used is the one provided. This will be described in more detail in the following section for the media dialog-based approach.

如前一个例子所示,MRB向应用服务器提供的响应的唯一区别在于添加到第一个分配的媒体服务器实例的“连接id”属性:这允许应用服务器了解MRB已向该特定媒体服务器发送CFW通道协商,以及要使用的连接id是提供的那个。下一节将详细介绍基于媒体对话框的方法。

The continuation of the scenario (the Application Server connecting to MS1 to start the Control Channel and the related SYNC message, the Application Server connecting to MS2 as well later on, all the media dialogs being attached to either Media Server) is omitted for brevity.

为了简洁起见,省略了场景的延续(连接到MS1以启动控制通道和相关同步消息的应用程序服务器,稍后连接到MS2的应用程序服务器,连接到任一媒体服务器的所有媒体对话框)。

9.2.2.2. IAMM Example: Media Dialog-Based Approach
9.2.2.2. IAMM示例:基于媒体对话的方法

The following example assumes that the interested Application Server already knows the SIP URI of an MRB.

下面的示例假设感兴趣的应用程序服务器已经知道MRB的SIPURI。

Figure 12 shows the second approach, i.e., SIP-based transactions between a SIP client, the Application Server, the MRB, and the Media Server that the MRB chooses. The interaction is basically the same as previous examples (e.g., contents of the multipart body), but considering that a new party is involved in the communication, the diagram is slightly more complex than before. As before, the MRB acts as a B2BUA. A UAC sends a SIP INVITE to a SIP URI handled by the Application Server, since it is interested to its services (1.). The Application Server sends a provisional response (2.) and, since it doesn't have the resources yet, sends to the MRB a new SIP INVITE (3.) containing both the UAC media-related SDP and a Consumer request (multipart body). The MRB sends a provisional response to the Application Server (4.) and starts working on the request. First of all, it makes use of the Consumer request from the Application Server to determine which Media Servers should be chosen. Once the Media Server has been chosen, the MRB sends a new SIP INVITE to one of the Media Servers by including the SDP part of the original request (5.).

图12显示了第二种方法,即SIP客户端、应用程序服务器、MRB和MRB选择的媒体服务器之间基于SIP的事务。交互基本上与前面的示例相同(例如,多部分主体的内容),但考虑到通信中涉及了新的一方,图表比以前稍微复杂一些。与以前一样,MRB充当B2BUA。UAC向应用服务器处理的SIPURI发送SIP INVITE,因为它对自己的服务感兴趣(1)。应用服务器发送一个临时响应(2),由于它还没有资源,因此向MRB发送一个新的SIP INVITE(3),其中包含UAC媒体相关SDP和消费者请求(多部分主体)。MRB向应用服务器(4.)发送临时响应,并开始处理请求。首先,它利用来自应用服务器的使用者请求来确定应该选择哪些媒体服务器。一旦选择了媒体服务器,MRB将通过包括原始请求(5.)的SDP部分向其中一个媒体服务器发送新的SIP INVITE。

The Media Server negotiates this INVITE as specified in [RFC6230] (6., 7., 8.) to allocate the needed media resources to handle the new media dialog, eventually providing the MRB with its own media-related SDP. The MRB replies to the original Application Server INVITE preparing a SIP 200 OK with a multipart body (9.): this multipart body includes the Consumer response from the MRB indicating the chosen Media Servers and the SDP returned by the Media Server in (7.). The Application Server finally acknowledges the 200 OK (10.) and ends the scenario by eventually providing the UAC with the SDP it needs to set up the RTP channels with the chosen Media Server: a separate direct SIP control dialog may be initiated by the Application Server to the same Media Server in order to set up a Control Channel to manipulate the media dialog.

媒体服务器按照[RFC6230](6,7,8.)中的规定协商此邀请,以分配处理新媒体对话框所需的媒体资源,最终为MRB提供其自己的媒体相关SDP。MRB使用多部分正文(9.)回复原始应用服务器INVITE准备SIP 200 OK:此多部分正文包括来自MRB的消费者响应,指示所选媒体服务器和媒体服务器在(7.)中返回的SDP。应用服务器最终确认200 OK(10.)并通过最终向UAC提供SDP来结束该场景。UAC需要使用所选媒体服务器设置RTP通道:应用服务器可以向同一媒体服务器启动单独的直接SIP控制对话框,以设置控制通道来操作媒体对话框。

As with the IAMM/Control Channel example in the prior section, this example has the MRB selecting Media Server resources across two Media Server instances. The convention could be that the MRB sent the SIP INVITE to the first Media Server in the list provided to the Application Server in the Consumer response information. For the sake of brevity, considerations related to connecting to the other Media Servers as well are omitted, since they have already been addressed in the previous section.

与上一节中的IAMM/控制通道示例一样,此示例让MRB跨两个媒体服务器实例选择媒体服务器资源。约定可能是MRB将SIP INVITE发送到消费者响应信息中提供给应用服务器的列表中的第一个媒体服务器。为简洁起见,也省略了与连接到其他媒体服务器有关的注意事项,因为它们已在上一节中讨论过。

Please note that to ease the reading of the protocol contents, a simple '=_Part' is used whenever a boundary for a 'multipart/mixed' payload is provided, instead of the actual boundary that would be inserted in the SIP messages.

请注意,为了简化协议内容的读取,只要提供“多部分/混合”有效负载的边界,就使用简单的“=\u部分”,而不是插入SIP消息中的实际边界。

 UAC              AS                     MRB                          MS
  |               |                       |                           |
  | 1. INVITE     |                       |                           |
  | (media SDP)   |                       |                           |
  |-------------->|                       |                           |
  | 2. 100 Trying |                       |                           |
  |<--------------|                       |                           |
  |               | 3. INVITE             |                           |
  |               | (multipart/mixed)     |                           |
  |               |---------------------->|                           |
  |               |       4. 100 (Trying) |                           |
  |               |<----------------------|                           |
  |               |                       |--+ Extract SDP and        |
  |               |                       |  | MRB payloads; handle   |
  |               |                       |<-+ Consumer request to    |
  |               |                       |    pick Media Servers     |
  |               |                       |                           |
  |               |                       | 5. INVITE                 |
  |               |                       | (only copy SDP from 3.)   |
  |               |                       |-------------------------->|
  |               |                       |           6. 100 (Trying) |
  |               |                       |<--------------------------|
  |               |                       |                        +--|
  |               |                       |    Handle media dialog |  |
  |               |                       |        (connection-id) +->|
  |               |                       |                           |
  |               |                       |                 7. 200 OK |
  |               |                       |<--------------------------|
  |               |                       | 8. ACK                    |
  |               |                       |-------------------------->|
  |               |        Prepare new +--|                           |
  |               |       payload with |  |                           |
  |               |    SDP from MS and +->|                           |
  |               |     Consumer reply    |                           |
  |               |                       |                           |
  |               |             9. 200 OK |                           |
  |               |     (multipart/mixed) |                           |
  |               |<----------------------|                           |
  |               | 10. ACK               |                           |
  |               |---------------------->|                           |
  |               |                       |                           |
  |               |--+ Read Cons. reply   |                           |
  |               |  | and send SDP       |                           |
  |               |<-+ back to UAC        |                           |
  |    11. 200 OK |                       |                           |
  |<--------------|                       |                           |
  | 12. ACK       |                       |                           |
  |-------------->|                       |                           |
        
 UAC              AS                     MRB                          MS
  |               |                       |                           |
  | 1. INVITE     |                       |                           |
  | (media SDP)   |                       |                           |
  |-------------->|                       |                           |
  | 2. 100 Trying |                       |                           |
  |<--------------|                       |                           |
  |               | 3. INVITE             |                           |
  |               | (multipart/mixed)     |                           |
  |               |---------------------->|                           |
  |               |       4. 100 (Trying) |                           |
  |               |<----------------------|                           |
  |               |                       |--+ Extract SDP and        |
  |               |                       |  | MRB payloads; handle   |
  |               |                       |<-+ Consumer request to    |
  |               |                       |    pick Media Servers     |
  |               |                       |                           |
  |               |                       | 5. INVITE                 |
  |               |                       | (only copy SDP from 3.)   |
  |               |                       |-------------------------->|
  |               |                       |           6. 100 (Trying) |
  |               |                       |<--------------------------|
  |               |                       |                        +--|
  |               |                       |    Handle media dialog |  |
  |               |                       |        (connection-id) +->|
  |               |                       |                           |
  |               |                       |                 7. 200 OK |
  |               |                       |<--------------------------|
  |               |                       | 8. ACK                    |
  |               |                       |-------------------------->|
  |               |        Prepare new +--|                           |
  |               |       payload with |  |                           |
  |               |    SDP from MS and +->|                           |
  |               |     Consumer reply    |                           |
  |               |                       |                           |
  |               |             9. 200 OK |                           |
  |               |     (multipart/mixed) |                           |
  |               |<----------------------|                           |
  |               | 10. ACK               |                           |
  |               |---------------------->|                           |
  |               |                       |                           |
  |               |--+ Read Cons. reply   |                           |
  |               |  | and send SDP       |                           |
  |               |<-+ back to UAC        |                           |
  |    11. 200 OK |                       |                           |
  |<--------------|                       |                           |
  | 12. ACK       |                       |                           |
  |-------------->|                       |                           |
        
  |               |                       |                           |
  |<<*************************** RTP *******************************>>|
  |               |                       |                           |
  |               |--+ Negotiate          |                           |
  |               |  | CFW channel        |                           |
  |               |<-+ towards MS         |                           |
  |               |    (if needed)        |                           |
  .               .                       .                           .
  .               .                       .                           .
  |               |                       |                           |
  |               |                                                   |
  |               |    Create TCP CFW channel towards MS (if needed)  |
  |               |-------------------------------------------------->|
  |               |                                                   |
  |               |<<############## TCP CONNECTION #################>>|
  |               |                                                   |
  |               | CFW SYNC                                          |
  |               |++++++++++++++++++++++++++++++++++++++++++++++++++>|
  |               |                                                   |
  .               .                       .                           .
  .               .                       .                           .
        
  |               |                       |                           |
  |<<*************************** RTP *******************************>>|
  |               |                       |                           |
  |               |--+ Negotiate          |                           |
  |               |  | CFW channel        |                           |
  |               |<-+ towards MS         |                           |
  |               |    (if needed)        |                           |
  .               .                       .                           .
  .               .                       .                           .
  |               |                       |                           |
  |               |                                                   |
  |               |    Create TCP CFW channel towards MS (if needed)  |
  |               |-------------------------------------------------->|
  |               |                                                   |
  |               |<<############## TCP CONNECTION #################>>|
  |               |                                                   |
  |               | CFW SYNC                                          |
  |               |++++++++++++++++++++++++++++++++++++++++++++++++++>|
  |               |                                                   |
  .               .                       .                           .
  .               .                       .                           .
        
     Figure 12: Consumer Example (IAMM/Media Dialog): Sequence Diagram
        
     Figure 12: Consumer Example (IAMM/Media Dialog): Sequence Diagram
        

The rest of this section includes a trace of the messages associated with the previous sequence diagram. Only the relevant SIP messages are shown (both the INVITEs and the 200 OKs), and only the relevant headers are preserved for brevity (Content-Type, From/To, and multipart-related information). Specifically:

本节的其余部分包括与前面的序列图关联的消息的跟踪。仅显示相关的SIP消息(包括INVITEs和200 OK),并且仅保留相关的头以简洁(内容类型、From/To和多部分相关信息)。明确地:

1. the original INVITE (1.) containing the media-related SDP sent by a UAC;

1. 包含UAC发送的媒体相关SDP的原始邀请(1);

2. the INVITE sent by the AS to the MRB (3.), containing both the media-related SDP and a Consumer <mediaResourceRequest>;

2. AS发送给MRB(3.)的邀请,包含媒体相关SDP和消费者<mediaResourceRequest>;

3. the INVITE sent by the MRB (acting as a B2BUA) to the Media Server (5.), containing only the media-related SDP from the original INVITE;

3. MRB(作为B2BUA)发送到媒体服务器(5.)的邀请,仅包含来自原始邀请的媒体相关SDP;

4. the 200 OK sent by the Media Server back to the MRB (7.) to complete the media-related negotiation (SDP only);

4. 由媒体服务器发送回MRB(7)以完成媒体相关协商(仅SDP)的200 OK;

5. the 200 OK sent by the MRB back to the Application Server in response to the original INVITE (9.), containing both the media-related information sent by the Media Server and a Consumer <mediaResourceRequest> documenting the MRB's decision to use that Media Server;

5. MRB响应原始邀请(9.)发送回应用服务器的200 OK,包含媒体服务器发送的媒体相关信息和消费者<mediaResourceRequest>,记录MRB使用该媒体服务器的决定;

6. the 200 OK sent by the Application Server back to the UAC to have it set up the RTP channel(s) with the Media Server (11.).

6. 由应用服务器发送回UAC的200 OK,以使其与媒体服务器(11)建立RTP通道。

1. UAC -> AS (INVITE with media SDP) ------------------------------------ [..] From: <sip:lminiero@users.example.com>;tag=1153573888 To: <sip:mediactrlDemo@as.example.com> [..] Content-Type: application/sdp

1. UAC->AS(邀请媒体SDP)--------------------------------------[…]发件人:<sip:lminiero@users.example.com>;标签=1153573888至:<sip:mediactrlDemo@as.example.com>[…]内容类型:应用程序/sdp

   v=0
   o=lminiero 123456 654321 IN IP4 203.0.113.2
   s=A conversation
   c=IN IP4 203.0.113.2
   t=0 0
   m=audio 7078 RTP/AVP 0 3 8 101
   a=rtpmap:0 PCMU/8000/1
   a=rtpmap:3 GSM/8000/1
   a=rtpmap:8 PCMA/8000/1
   a=rtpmap:101 telephone-event/8000
   a=fmtp:101 0-11
   m=video 9078 RTP/AVP 98
        
   v=0
   o=lminiero 123456 654321 IN IP4 203.0.113.2
   s=A conversation
   c=IN IP4 203.0.113.2
   t=0 0
   m=audio 7078 RTP/AVP 0 3 8 101
   a=rtpmap:0 PCMU/8000/1
   a=rtpmap:3 GSM/8000/1
   a=rtpmap:8 PCMA/8000/1
   a=rtpmap:101 telephone-event/8000
   a=fmtp:101 0-11
   m=video 9078 RTP/AVP 98
        

3. AS -> MRB (INVITE multipart/mixed) ------------------------------------- [..] From: <sip:ApplicationServer@as.example.com>;tag=fd4fush5 To: <sip:Mrb@mrb.example.org> [..] Content-Type: multipart/mixed;boundary="=_Part"

3. AS->MRB(邀请多部分/混合)--------------------------------------[…]发件人:<sip:ApplicationServer@as.example.com>;标签=FD4FUS5至:<sip:Mrb@mrb.example.org>[…]内容类型:多部分/混合;边界=“=\u部分”

   =_Part
   Content-Type: application/sdp
        
   =_Part
   Content-Type: application/sdp
        

v=0 o=lminiero 123456 654321 IN IP4 203.0.113.2 s=A conversation c=IN IP4 203.0.113.2 t=0 0

v=0 o=IP4 203.0.113.2中的lminiero 123456 654321 s=A对话c=IP4 203.0.113.2中的t=0 0

   m=audio 7078 RTP/AVP 0 3 8 101
   a=rtpmap:0 PCMU/8000/1
   a=rtpmap:3 GSM/8000/1
   a=rtpmap:8 PCMA/8000/1
   a=rtpmap:101 telephone-event/8000
   a=fmtp:101 0-11
   m=video 9078 RTP/AVP 98
        
   m=audio 7078 RTP/AVP 0 3 8 101
   a=rtpmap:0 PCMU/8000/1
   a=rtpmap:3 GSM/8000/1
   a=rtpmap:8 PCMA/8000/1
   a=rtpmap:101 telephone-event/8000
   a=fmtp:101 0-11
   m=video 9078 RTP/AVP 98
        
   =_Part
   Content-Type: application/mrb-consumer+xml
        
   =_Part
   Content-Type: application/mrb-consumer+xml
        
   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <mrbconsumer version="1.0"
                xmlns="urn:ietf:params:xml:ns:mrb-consumer">
    <mediaResourceRequest id="ns56g1x0">
        <generalInfo>
            <packages>
                <package>msc-ivr/1.0</package>
                <package>msc-mixer/1.0</package>
            </packages>
        </generalInfo>
        <ivrInfo>
            <ivr-sessions>
                <rtp-codec name="audio/basic">
                    <decoding>100</decoding>
                    <encoding>100</encoding>
                </rtp-codec>
            </ivr-sessions>
            <file-formats>
                <required-format name="audio/x-wav"/>
            </file-formats>
            <file-transfer-modes>
                <file-transfer-mode package="msc-ivr/1.0" name="HTTP"/>
            </file-transfer-modes>
        </ivrInfo>
    </mediaResourceRequest>
   </mrbconsumer>
        
   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <mrbconsumer version="1.0"
                xmlns="urn:ietf:params:xml:ns:mrb-consumer">
    <mediaResourceRequest id="ns56g1x0">
        <generalInfo>
            <packages>
                <package>msc-ivr/1.0</package>
                <package>msc-mixer/1.0</package>
            </packages>
        </generalInfo>
        <ivrInfo>
            <ivr-sessions>
                <rtp-codec name="audio/basic">
                    <decoding>100</decoding>
                    <encoding>100</encoding>
                </rtp-codec>
            </ivr-sessions>
            <file-formats>
                <required-format name="audio/x-wav"/>
            </file-formats>
            <file-transfer-modes>
                <file-transfer-mode package="msc-ivr/1.0" name="HTTP"/>
            </file-transfer-modes>
        </ivrInfo>
    </mediaResourceRequest>
   </mrbconsumer>
        

=_Part

=\u部分

5. MRB -> MS (INVITE sdp only) ------------------------------ [..] From: <sip:Mrb@mrb.example.org:5060>;tag=32pbdxZ8 To: <sip:MediaServer@ms.example.com:5080> [..] Content-Type: application/sdp

5. MRB->MS(仅邀请sdp)-------------------------------------[…]发件人:<sip:Mrb@mrb.example.org:5060>;标签=32pbdxZ8至:<sip:MediaServer@ms.example.com:5080>[…]内容类型:应用程序/sdp

   v=0
   o=lminiero 123456 654321 IN IP4 203.0.113.2
   s=A conversation
   c=IN IP4 203.0.113.2
   t=0 0
   m=audio 7078 RTP/AVP 0 3 8 101
   a=rtpmap:0 PCMU/8000/1
   a=rtpmap:3 GSM/8000/1
   a=rtpmap:8 PCMA/8000/1
   a=rtpmap:101 telephone-event/8000
   a=fmtp:101 0-11
   m=video 9078 RTP/AVP 98
        
   v=0
   o=lminiero 123456 654321 IN IP4 203.0.113.2
   s=A conversation
   c=IN IP4 203.0.113.2
   t=0 0
   m=audio 7078 RTP/AVP 0 3 8 101
   a=rtpmap:0 PCMU/8000/1
   a=rtpmap:3 GSM/8000/1
   a=rtpmap:8 PCMA/8000/1
   a=rtpmap:101 telephone-event/8000
   a=fmtp:101 0-11
   m=video 9078 RTP/AVP 98
        

7. MRB <- MS (200 OK sdp) ------------------------- [..] From: <sip:Mrb@mrb.example.org:5060>;tag=32pbdxZ8 To: <sip:MediaServer@ms.example.com:5080>;tag=KQw677BF [..] Content-Type: application/sdp

7. MRB<-MS(200正常sdp)-------------[…]发件人:<sip:Mrb@mrb.example.org:5060>;标签=32pbdxZ8至:<sip:MediaServer@ms.example.com:5080>;tag=KQw677BF[…]内容类型:应用程序/sdp

   v=0
   o=lminiero 123456 654322 IN IP4 203.0.113.1
   s=MediaCtrl
   c=IN IP4 203.0.113.1
   t=0 0
   m=audio 63442 RTP/AVP 0 3 8 101
   a=rtpmap:0 PCMU/8000
   a=rtpmap:3 GSM/8000
   a=rtpmap:8 PCMA/8000
   a=rtpmap:101 telephone-event/8000
   a=fmtp:101 0-15
   a=ptime:20
   a=label:7eda834
   m=video 33468 RTP/AVP 98
   a=rtpmap:98 H263-1998/90000
   a=fmtp:98 CIF=2
   a=label:0132ca2
        
   v=0
   o=lminiero 123456 654322 IN IP4 203.0.113.1
   s=MediaCtrl
   c=IN IP4 203.0.113.1
   t=0 0
   m=audio 63442 RTP/AVP 0 3 8 101
   a=rtpmap:0 PCMU/8000
   a=rtpmap:3 GSM/8000
   a=rtpmap:8 PCMA/8000
   a=rtpmap:101 telephone-event/8000
   a=fmtp:101 0-15
   a=ptime:20
   a=label:7eda834
   m=video 33468 RTP/AVP 98
   a=rtpmap:98 H263-1998/90000
   a=fmtp:98 CIF=2
   a=label:0132ca2
        

9. AS <- MRB (200 OK multipart/mixed) ------------------------------------- [..] From: <sip:ApplicationServer@as.example.com>;tag=fd4fush5 To: <sip:Mrb@mrb.example.org>;tag=117652221 [..] Content-Type: multipart/mixed;boundary="=_Part"

9. AS<-MRB(200正常多部分/混合)---------------------------------------[…]来自:<sip:ApplicationServer@as.example.com>;标签=FD4FUS5至:<sip:Mrb@mrb.example.org>;标签=11765221[…]内容类型:多部分/混合;边界=“=\u部分”

   =_Part
   Content-Type: application/sdp
        
   =_Part
   Content-Type: application/sdp
        
   v=0
   o=lminiero 123456 654322 IN IP4 203.0.113.1
   s=MediaCtrl
   c=IN IP4 203.0.113.1
   t=0 0
   m=audio 63442 RTP/AVP 0 3 8 101
   a=rtpmap:0 PCMU/8000
   a=rtpmap:3 GSM/8000
   a=rtpmap:8 PCMA/8000
   a=rtpmap:101 telephone-event/8000
   a=fmtp:101 0-15
   a=ptime:20
   a=label:7eda834
   m=video 33468 RTP/AVP 98
   a=rtpmap:98 H263-1998/90000
   a=fmtp:98 CIF=2
   a=label:0132ca2
        
   v=0
   o=lminiero 123456 654322 IN IP4 203.0.113.1
   s=MediaCtrl
   c=IN IP4 203.0.113.1
   t=0 0
   m=audio 63442 RTP/AVP 0 3 8 101
   a=rtpmap:0 PCMU/8000
   a=rtpmap:3 GSM/8000
   a=rtpmap:8 PCMA/8000
   a=rtpmap:101 telephone-event/8000
   a=fmtp:101 0-15
   a=ptime:20
   a=label:7eda834
   m=video 33468 RTP/AVP 98
   a=rtpmap:98 H263-1998/90000
   a=fmtp:98 CIF=2
   a=label:0132ca2
        
   =_Part
   Content-Type: application/mrb-consumer+xml
        
   =_Part
   Content-Type: application/mrb-consumer+xml
        
   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <mrbconsumer version="1.0"
                xmlns="urn:ietf:params:xml:ns:mrb-consumer" >
    <mediaResourceResponse reason="Resource found" status="200"
                           id="ns56g1x0">
        <response-session-info>
            <session-id>z1skKYZQ3eFu</session-id>
            <seq>9</seq>
            <expires>3600</expires>
            <media-server-address
                              uri="sip:MediaServer@ms.example.com:5080">
                <connection-id>32pbdxZ8:KQw677BF</connection-id>
                <ivr-sessions>
                    <rtp-codec name="audio/basic">
                        <decoding>60</decoding>
                        <encoding>60</encoding>
        
   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <mrbconsumer version="1.0"
                xmlns="urn:ietf:params:xml:ns:mrb-consumer" >
    <mediaResourceResponse reason="Resource found" status="200"
                           id="ns56g1x0">
        <response-session-info>
            <session-id>z1skKYZQ3eFu</session-id>
            <seq>9</seq>
            <expires>3600</expires>
            <media-server-address
                              uri="sip:MediaServer@ms.example.com:5080">
                <connection-id>32pbdxZ8:KQw677BF</connection-id>
                <ivr-sessions>
                    <rtp-codec name="audio/basic">
                        <decoding>60</decoding>
                        <encoding>60</encoding>
        
                    </rtp-codec>
                </ivr-sessions>
            </media-server-address>
            <media-server-address
                       uri="sip:OtherMediaServer@pool.example.net:5080">
                <ivr-sessions>
                    <rtp-codec name="audio/basic">
                        <decoding>40</decoding>
                        <encoding>40</encoding>
                    </rtp-codec>
                </ivr-sessions>
            </media-server-address>
        </response-session-info>
    </mediaResourceResponse>
   </mrbconsumer>
        
                    </rtp-codec>
                </ivr-sessions>
            </media-server-address>
            <media-server-address
                       uri="sip:OtherMediaServer@pool.example.net:5080">
                <ivr-sessions>
                    <rtp-codec name="audio/basic">
                        <decoding>40</decoding>
                        <encoding>40</encoding>
                    </rtp-codec>
                </ivr-sessions>
            </media-server-address>
        </response-session-info>
    </mediaResourceResponse>
   </mrbconsumer>
        

=_Part

=\u部分

11. UAC <- AS (200 OK sdp) -------------------------- [..] From: <sip:lminiero@users.example.com>;tag=1153573888 To: <sip:mediactrlDemo@as.example.com>;tag=bcd47c32 [..] Content-Type: application/sdp

11. UAC<-AS(200正常sdp)------------------------------------[…]发件人:<sip:lminiero@users.example.com>;标签=1153573888至:<sip:mediactrlDemo@as.example.com>;标签=bcd47c32[…]内容类型:应用程序/sdp

   v=0
   o=lminiero 123456 654322 IN IP4 203.0.113.1
   s=MediaCtrl
   c=IN IP4 203.0.113.1
   t=0 0
   m=audio 63442 RTP/AVP 0 3 8 101
   a=rtpmap:0 PCMU/8000
   a=rtpmap:3 GSM/8000
   a=rtpmap:8 PCMA/8000
   a=rtpmap:101 telephone-event/8000
   a=fmtp:101 0-15
   a=ptime:20
   a=label:7eda834
   m=video 33468 RTP/AVP 98
   a=rtpmap:98 H263-1998/90000
   a=fmtp:98 CIF=2
   a=label:0132ca2
        
   v=0
   o=lminiero 123456 654322 IN IP4 203.0.113.1
   s=MediaCtrl
   c=IN IP4 203.0.113.1
   t=0 0
   m=audio 63442 RTP/AVP 0 3 8 101
   a=rtpmap:0 PCMU/8000
   a=rtpmap:3 GSM/8000
   a=rtpmap:8 PCMA/8000
   a=rtpmap:101 telephone-event/8000
   a=fmtp:101 0-15
   a=ptime:20
   a=label:7eda834
   m=video 33468 RTP/AVP 98
   a=rtpmap:98 H263-1998/90000
   a=fmtp:98 CIF=2
   a=label:0132ca2
        

As the examples illustrate, as in the IAMM/Control Channel example, the MRB provides the Application Server with a <media-server-address> element in the Consumer response: the 'uri' attribute identifies the

如示例所示,与IAMM/控制通道示例一样,MRB在使用者响应中为应用程序服务器提供<media Server address>元素:“uri”属性标识

specific Media Server to which the MRB has sent the SDP media negotiation, and the 'connection-id' enables the Application Server to identify to the Media Server the dialog between the MRB and Media Server. This attribute is needed, since according to the framework specification [RFC6230] the connection-id is built out of the From/To tags of the dialog between the MRB and Media Server; since the MRB acts as a B2BUA in this scenario, without that attribute the Application Server does not know the relevant tags, thus preventing the CFW protocol from working as expected.

MRB已向其发送SDP媒体协商的特定媒体服务器,并且“连接id”使应用程序服务器能够向媒体服务器标识MRB和媒体服务器之间的对话框。该属性是必需的,因为根据框架规范[RFC6230],连接id是由MRB和媒体服务器之间的对话框的From/to标记构建的;由于MRB在此场景中充当B2BUA,没有该属性,应用程序服务器就不知道相关标记,从而阻止CFW协议按预期工作。

The continuation of the scenario (the Application Server connecting to the Media Server to start the Control Channel, the SYNC message, etc.) is omitted for brevity.

为了简洁起见,省略了场景的延续(连接到媒体服务器以启动控制通道的应用程序服务器、同步消息等)。

10. Media Service Resource Publisher Interface XML Schema
10. 媒体服务资源发布者接口XML架构

This section gives the XML Schema Definition [W3C.REC-xmlschema-1-20041028] [W3C.REC-xmlschema-2-20041028] of the "application/mrb-publish+xml" format.

本节给出了“应用程序/mrb发布+XML”格式的XML模式定义[W3C.REC-xmlschema-1-20041028][W3C.REC-xmlschema-2-20041028]。

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="urn:ietf:params:xml:ns:mrb-publish"
 elementFormDefault="qualified" blockDefault="#all"
 xmlns="urn:ietf:params:xml:ns:mrb-publish"
 xmlns:fw="urn:ietf:params:xml:ns:control:framework-attributes"
 xmlns:ca="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="urn:ietf:params:xml:ns:mrb-publish"
 elementFormDefault="qualified" blockDefault="#all"
 xmlns="urn:ietf:params:xml:ns:mrb-publish"
 xmlns:fw="urn:ietf:params:xml:ns:control:framework-attributes"
 xmlns:ca="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        
 <xsd:annotation>
  <xsd:documentation>
   IETF MediaCtrl MRB 1.0
        
 <xsd:annotation>
  <xsd:documentation>
   IETF MediaCtrl MRB 1.0
        

This is the schema of the IETF MediaCtrl MRB package.

这是IETF MediaCtrl MRB包的模式。

   The schema namespace is urn:ietf:params:xml:ns:mrb-publish
        
   The schema namespace is urn:ietf:params:xml:ns:mrb-publish
        
  </xsd:documentation>
 </xsd:annotation>
        
  </xsd:documentation>
 </xsd:annotation>
        
 <!--
  #############################################################
        
 <!--
  #############################################################
        

SCHEMA IMPORTS

模式导入

  #############################################################
 -->
        
  #############################################################
 -->
        
 <xsd:import namespace="http://www.w3.org/XML/1998/namespace"
  schemaLocation="http://www.w3.org/2001/xml.xsd">
  <xsd:annotation>
   <xsd:documentation>
    This import brings in the XML attributes for
    xml:base, xml:lang, etc.
   </xsd:documentation>
  </xsd:annotation>
 </xsd:import>
        
 <xsd:import namespace="http://www.w3.org/XML/1998/namespace"
  schemaLocation="http://www.w3.org/2001/xml.xsd">
  <xsd:annotation>
   <xsd:documentation>
    This import brings in the XML attributes for
    xml:base, xml:lang, etc.
   </xsd:documentation>
  </xsd:annotation>
 </xsd:import>
        
 <xsd:import
  namespace="urn:ietf:params:xml:ns:control:framework-attributes"
  schemaLocation="framework.xsd">
  <xsd:annotation>
   <xsd:documentation>
    This import brings in the framework attributes for
    conferenceid and connectionid.
   </xsd:documentation>
  </xsd:annotation>
 </xsd:import>
        
 <xsd:import
  namespace="urn:ietf:params:xml:ns:control:framework-attributes"
  schemaLocation="framework.xsd">
  <xsd:annotation>
   <xsd:documentation>
    This import brings in the framework attributes for
    conferenceid and connectionid.
   </xsd:documentation>
  </xsd:annotation>
 </xsd:import>
        
 <xsd:import
  namespace="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr"
  schemaLocation="civicAddress.xsd">
  <xsd:annotation>
   <xsd:documentation>
    This import brings in the civicAddress specification
    from RFC 5139.
   </xsd:documentation>
  </xsd:annotation>
 </xsd:import>
        
 <xsd:import
  namespace="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr"
  schemaLocation="civicAddress.xsd">
  <xsd:annotation>
   <xsd:documentation>
    This import brings in the civicAddress specification
    from RFC 5139.
   </xsd:documentation>
  </xsd:annotation>
 </xsd:import>
        
<!--
  #####################################################
        
<!--
  #####################################################
        

Extensible core type

可扩展核心类型

  #####################################################
 -->
        
  #####################################################
 -->
        
 <xsd:complexType name="Tcore">
  <xsd:annotation>
   <xsd:documentation>
    This type is extended by other (non-mixed) component types to
    allow attributes from other namespaces.
   </xsd:documentation>
  </xsd:annotation>
        
 <xsd:complexType name="Tcore">
  <xsd:annotation>
   <xsd:documentation>
    This type is extended by other (non-mixed) component types to
    allow attributes from other namespaces.
   </xsd:documentation>
  </xsd:annotation>
        
  <xsd:sequence/>
  <xsd:anyAttribute namespace="##other" processContents="lax" />
 </xsd:complexType>
        
  <xsd:sequence/>
  <xsd:anyAttribute namespace="##other" processContents="lax" />
 </xsd:complexType>
        
<!--
  #####################################################
        
<!--
  #####################################################
        

TOP-LEVEL ELEMENT: mrbpublish

顶级元素:mrbpublish

  #####################################################
 -->
        
  #####################################################
 -->
        
<xsd:complexType name="mrbpublishType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:choice>
      <xsd:element ref="mrbrequest" />
      <xsd:element ref="mrbresponse" />
      <xsd:element ref="mrbnotification" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
     </xsd:choice>
    </xsd:sequence>
    <xsd:attribute name="version" type="version.datatype"
      use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:complexType name="mrbpublishType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:choice>
      <xsd:element ref="mrbrequest" />
      <xsd:element ref="mrbresponse" />
      <xsd:element ref="mrbnotification" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
     </xsd:choice>
    </xsd:sequence>
    <xsd:attribute name="version" type="version.datatype"
      use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="mrbpublish" type="mrbpublishType" />
        
 <xsd:element name="mrbpublish" type="mrbpublishType" />
        
<!--
  #####################################################
        
<!--
  #####################################################
        

mrbrequest TYPE

mrbrequest类型

  #####################################################
 -->
        
  #####################################################
 -->
        
<!--  mrbrequest -->
        
<!--  mrbrequest -->
        
 <xsd:complexType name="mrbrequestType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
        
 <xsd:complexType name="mrbrequestType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
        
     <xsd:element ref="subscription" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
     <xsd:element ref="subscription" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="mrbrequest" type="mrbrequestType" />
        
 <xsd:element name="mrbrequest" type="mrbrequestType" />
        
<!--  subscription -->
        
<!--  subscription -->
        
<xsd:complexType name="subscriptionType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="expires" type="xsd:nonNegativeInteger"
      minOccurs="0" maxOccurs="1" />
     <xsd:element name="minfrequency" type="xsd:nonNegativeInteger"
      minOccurs="0" maxOccurs="1" />
     <xsd:element name="maxfrequency" type="xsd:nonNegativeInteger"
      minOccurs="0" maxOccurs="1" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="id" type="id.datatype" use="required" />
    <xsd:attribute name="seqnumber" type="xsd:nonNegativeInteger"
      use="required" />
    <xsd:attribute name="action" type="action.datatype"
      use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:complexType name="subscriptionType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="expires" type="xsd:nonNegativeInteger"
      minOccurs="0" maxOccurs="1" />
     <xsd:element name="minfrequency" type="xsd:nonNegativeInteger"
      minOccurs="0" maxOccurs="1" />
     <xsd:element name="maxfrequency" type="xsd:nonNegativeInteger"
      minOccurs="0" maxOccurs="1" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="id" type="id.datatype" use="required" />
    <xsd:attribute name="seqnumber" type="xsd:nonNegativeInteger"
      use="required" />
    <xsd:attribute name="action" type="action.datatype"
      use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="subscription" type="subscriptionType" />
        
 <xsd:element name="subscription" type="subscriptionType" />
        
<!--
  #####################################################
        
<!--
  #####################################################
        

mrbresponse TYPE

mrb反应型

  #####################################################
 -->
        
  #####################################################
 -->
        
<!--  mrbresponse -->
        
<!--  mrbresponse -->
        
 <xsd:complexType name="mrbresponseType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element ref="subscription" minOccurs="0" maxOccurs="1" />
     <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="status" type="status.datatype"
     use="required" />
    <xsd:attribute name="reason" type="xsd:string" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:complexType name="mrbresponseType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element ref="subscription" minOccurs="0" maxOccurs="1" />
     <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="status" type="status.datatype"
     use="required" />
    <xsd:attribute name="reason" type="xsd:string" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="mrbresponse" type="mrbresponseType" />
        
 <xsd:element name="mrbresponse" type="mrbresponseType" />
        
<!--
  #####################################################
        
<!--
  #####################################################
        

mrbnotification TYPE

MRB通知类型

  #####################################################
 -->
        
  #####################################################
 -->
        
<!--  mrbnotification -->
        
<!--  mrbnotification -->
        
<xsd:complexType name="mrbnotificationType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="media-server-id"
        type="subscriptionid.datatype"/>
     <xsd:element ref="supported-packages" minOccurs="0" />
     <xsd:element ref="active-rtp-sessions" minOccurs="0" />
     <xsd:element ref="active-mixer-sessions" minOccurs="0" />
        
<xsd:complexType name="mrbnotificationType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="media-server-id"
        type="subscriptionid.datatype"/>
     <xsd:element ref="supported-packages" minOccurs="0" />
     <xsd:element ref="active-rtp-sessions" minOccurs="0" />
     <xsd:element ref="active-mixer-sessions" minOccurs="0" />
        
     <xsd:element ref="non-active-rtp-sessions" minOccurs="0" />
     <xsd:element ref="non-active-mixer-sessions" minOccurs="0" />
     <xsd:element ref="media-server-status" minOccurs="0" />
     <xsd:element ref="supported-codecs" minOccurs="0" />
     <xsd:element ref="application-data" minOccurs="0"
      maxOccurs="unbounded" />
     <xsd:element ref="file-formats" minOccurs="0" />
     <xsd:element ref="max-prepared-duration" minOccurs="0" />
     <xsd:element ref="dtmf-support" minOccurs="0" />
     <xsd:element ref="mixing-modes" minOccurs="0" />
     <xsd:element ref="supported-tones" minOccurs="0" />
     <xsd:element ref="file-transfer-modes" minOccurs="0" />
     <xsd:element ref="asr-tts-support" minOccurs="0" />
     <xsd:element ref="vxml-support" minOccurs="0" />
     <xsd:element ref="media-server-location" minOccurs="0" />
     <xsd:element ref="label" minOccurs="0" />
     <xsd:element ref="media-server-address" minOccurs="0" />
     <xsd:element ref="encryption" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
     <xsd:attribute name="id" type="subscriptionid.datatype"
      use="required" />
     <xsd:attribute name="seqnumber" type="xsd:nonNegativeInteger"
      use="required" />
     <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
     <xsd:element ref="non-active-rtp-sessions" minOccurs="0" />
     <xsd:element ref="non-active-mixer-sessions" minOccurs="0" />
     <xsd:element ref="media-server-status" minOccurs="0" />
     <xsd:element ref="supported-codecs" minOccurs="0" />
     <xsd:element ref="application-data" minOccurs="0"
      maxOccurs="unbounded" />
     <xsd:element ref="file-formats" minOccurs="0" />
     <xsd:element ref="max-prepared-duration" minOccurs="0" />
     <xsd:element ref="dtmf-support" minOccurs="0" />
     <xsd:element ref="mixing-modes" minOccurs="0" />
     <xsd:element ref="supported-tones" minOccurs="0" />
     <xsd:element ref="file-transfer-modes" minOccurs="0" />
     <xsd:element ref="asr-tts-support" minOccurs="0" />
     <xsd:element ref="vxml-support" minOccurs="0" />
     <xsd:element ref="media-server-location" minOccurs="0" />
     <xsd:element ref="label" minOccurs="0" />
     <xsd:element ref="media-server-address" minOccurs="0" />
     <xsd:element ref="encryption" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
     <xsd:attribute name="id" type="subscriptionid.datatype"
      use="required" />
     <xsd:attribute name="seqnumber" type="xsd:nonNegativeInteger"
      use="required" />
     <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="mrbnotification" type="mrbnotificationType" />
        
 <xsd:element name="mrbnotification" type="mrbnotificationType" />
        
<!--  supported-packages -->
        
<!--  supported-packages -->
        
 <xsd:complexType name="supported-packagesType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="package" minOccurs="0"
        maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:complexType name="supported-packagesType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="package" minOccurs="0"
        maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:element name="supported-packages" type="supported-packagesType"/>
        
<xsd:element name="supported-packages" type="supported-packagesType"/>
        
 <xsd:complexType name="packageType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:complexType name="packageType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="package" type="packageType" />
        
 <xsd:element name="package" type="packageType" />
        
<!--  active-rtp-sessions -->
        
<!--  active-rtp-sessions -->
        
 <xsd:complexType name="active-rtp-sessionsType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="rtp-codec" minOccurs="0"
        maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:complexType name="active-rtp-sessionsType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="rtp-codec" minOccurs="0"
        maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:element name="active-rtp-sessions" type="active-rtp-sessionsType"/>
        
<xsd:element name="active-rtp-sessions" type="active-rtp-sessionsType"/>
        
 <xsd:complexType name="rtp-codecType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element name="decoding" type="xsd:nonNegativeInteger" />
      <xsd:element name="encoding" type="xsd:nonNegativeInteger" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" use="required" />
        
 <xsd:complexType name="rtp-codecType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element name="decoding" type="xsd:nonNegativeInteger" />
      <xsd:element name="encoding" type="xsd:nonNegativeInteger" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" use="required" />
        
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="rtp-codec" type="rtp-codecType" />
        
 <xsd:element name="rtp-codec" type="rtp-codecType" />
        
<!--  active-mixer-sessions -->
        
<!--  active-mixer-sessions -->
        
<xsd:complexType name="active-mixer-sessionsType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="active-mix" minOccurs="0"
        maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:complexType name="active-mixer-sessionsType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="active-mix" minOccurs="0"
        maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="active-mixer-sessions"
  type="active-mixer-sessionsType" />
        
 <xsd:element name="active-mixer-sessions"
  type="active-mixer-sessionsType" />
        
<xsd:complexType name="active-mixType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="rtp-codec" minOccurs="0"
        maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attributeGroup ref="fw:framework-attributes" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:complexType name="active-mixType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="rtp-codec" minOccurs="0"
        maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attributeGroup ref="fw:framework-attributes" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="active-mix" type="active-mixType" />
        
 <xsd:element name="active-mix" type="active-mixType" />
        
<!--  non-active-rtp-sessions -->
        
<!--  non-active-rtp-sessions -->
        
<xsd:complexType name="non-active-rtp-sessionsType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="rtp-codec" minOccurs="0"
        maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:complexType name="non-active-rtp-sessionsType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="rtp-codec" minOccurs="0"
        maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="non-active-rtp-sessions"
  type="non-active-rtp-sessionsType" />
        
 <xsd:element name="non-active-rtp-sessions"
  type="non-active-rtp-sessionsType" />
        
<!--  non-active-mixer-sessions -->
        
<!--  non-active-mixer-sessions -->
        
<xsd:complexType name="non-active-mixer-sessionsType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="non-active-mix" minOccurs="0"
        maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:complexType name="non-active-mixer-sessionsType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="non-active-mix" minOccurs="0"
        maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="non-active-mixer-sessions"
  type="non-active-mixer-sessionsType" />
        
 <xsd:element name="non-active-mixer-sessions"
  type="non-active-mixer-sessionsType" />
        
 <xsd:complexType name="non-active-mixType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="rtp-codec" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="available" type="xsd:nonNegativeInteger"
      use="required" />
        
 <xsd:complexType name="non-active-mixType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="rtp-codec" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="available" type="xsd:nonNegativeInteger"
      use="required" />
        
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="non-active-mix" type="non-active-mixType" />
        
 <xsd:element name="non-active-mix" type="non-active-mixType" />
        
<!--  media-server-status -->
        
<!--  media-server-status -->
        
 <xsd:element name="media-server-status" type="msstatus.datatype" />
        
 <xsd:element name="media-server-status" type="msstatus.datatype" />
        
<!--  supported-codecs -->
        
<!--  supported-codecs -->
        
<xsd:complexType name="supported-codecsType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="supported-codec"
         minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
         maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:complexType name="supported-codecsType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="supported-codec"
         minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
         maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="supported-codecs" type="supported-codecsType" />
        
 <xsd:element name="supported-codecs" type="supported-codecsType" />
        
 <xsd:complexType name="supported-codecType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="supported-codec-package"
         minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:complexType name="supported-codecType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="supported-codec-package"
         minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="supported-codec" type="supported-codecType" />
        
 <xsd:element name="supported-codec" type="supported-codecType" />
        
 <xsd:complexType name="supported-codec-packageType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element name="supported-action" type="actions.datatype"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:complexType name="supported-codec-packageType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element name="supported-action" type="actions.datatype"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="supported-codec-package"
  type="supported-codec-packageType" />
        
 <xsd:element name="supported-codec-package"
  type="supported-codec-packageType" />
        
<!--  application-data -->
        
<!--  application-data -->
        
<xsd:element name="application-data" type="appdata.datatype" />
        
<xsd:element name="application-data" type="appdata.datatype" />
        
<!--  file-formats -->
        
<!--  file-formats -->
        
<xsd:complexType name="file-formatsType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="supported-format"
         minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
         maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:complexType name="file-formatsType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="supported-format"
         minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
         maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="file-formats" type="file-formatsType" />
        
 <xsd:element name="file-formats" type="file-formatsType" />
        
 <xsd:complexType name="supported-formatType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="supported-file-package"
         minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        
 <xsd:complexType name="supported-formatType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="supported-file-package"
         minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="supported-format" type="supported-formatType" />
        
 <xsd:element name="supported-format" type="supported-formatType" />
        
 <xsd:element name="supported-file-package"
  type="xsd:string" />
        
 <xsd:element name="supported-file-package"
  type="xsd:string" />
        
<!--  max-prepared-duration -->
        
<!--  max-prepared-duration -->
        
<xsd:complexType name="max-prepared-durationType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="max-time" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:complexType name="max-prepared-durationType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="max-time" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="max-prepared-duration"
  type="max-prepared-durationType" />
        
 <xsd:element name="max-prepared-duration"
  type="max-prepared-durationType" />
        
 <xsd:complexType name="max-timeType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element name="max-time-package" type="xsd:string" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="max-time-seconds" type="xsd:nonNegativeInteger"
     use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:complexType name="max-timeType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element name="max-time-package" type="xsd:string" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="max-time-seconds" type="xsd:nonNegativeInteger"
     use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="max-time" type="max-timeType" />
        
 <xsd:element name="max-time" type="max-timeType" />
        
<!--  dtmf-support -->
        
<!--  dtmf-support -->
        
<xsd:complexType name="dtmf-supportType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="detect" />
       <xsd:element ref="generate" />
       <xsd:element ref="passthrough" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:complexType name="dtmf-supportType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="detect" />
       <xsd:element ref="generate" />
       <xsd:element ref="passthrough" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="dtmf-support" type="dtmf-supportType" />
        
 <xsd:element name="dtmf-support" type="dtmf-supportType" />
        
 <xsd:complexType name="detectType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="dtmf-type"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:complexType name="detectType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="dtmf-type"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="detect" type="detectType" />
        
 <xsd:element name="detect" type="detectType" />
        
 <xsd:complexType name="generateType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="dtmf-type"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:complexType name="generateType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="dtmf-type"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="generate" type="generateType" />
        
 <xsd:element name="generate" type="generateType" />
        
 <xsd:complexType name="passthroughType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="dtmf-type"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:complexType name="passthroughType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="dtmf-type"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="passthrough" type="passthroughType" />
        
 <xsd:element name="passthrough" type="passthroughType" />
        
 <xsd:complexType name="dtmf-typeType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="dtmf.datatype" use="required" />
    <xsd:attribute name="package" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:complexType name="dtmf-typeType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="dtmf.datatype" use="required" />
    <xsd:attribute name="package" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="dtmf-type" type="dtmf-typeType" />
        
 <xsd:element name="dtmf-type" type="dtmf-typeType" />
        
<!--  mixing-modes -->
        
<!--  mixing-modes -->
        
<xsd:complexType name="mixing-modesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
      <xsd:element ref="audio-mixing-modes"
        minOccurs="0" maxOccurs="1" />
      <xsd:element ref="video-mixing-modes"
        minOccurs="0" maxOccurs="1" />
      <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
        
<xsd:complexType name="mixing-modesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
      <xsd:element ref="audio-mixing-modes"
        minOccurs="0" maxOccurs="1" />
      <xsd:element ref="video-mixing-modes"
        minOccurs="0" maxOccurs="1" />
      <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
        
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="mixing-modes" type="mixing-modesType" />
        
<xsd:element name="mixing-modes" type="mixing-modesType" />
        
<xsd:complexType name="audio-mixing-modesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="audio-mixing-mode"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="audio-mixing-modesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="audio-mixing-mode"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="audio-mixing-modes" type="audio-mixing-modesType" />
        
<xsd:element name="audio-mixing-modes" type="audio-mixing-modesType" />
        
<xsd:complexType name="audio-mixing-modeType" mixed="true">
 <xsd:sequence>
    <xsd:any namespace="##other" minOccurs="0"
     maxOccurs="unbounded" processContents="lax" />
 </xsd:sequence>
 <xsd:attribute name="package" type="xsd:string" use="required" />
 <xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
        
<xsd:complexType name="audio-mixing-modeType" mixed="true">
 <xsd:sequence>
    <xsd:any namespace="##other" minOccurs="0"
     maxOccurs="unbounded" processContents="lax" />
 </xsd:sequence>
 <xsd:attribute name="package" type="xsd:string" use="required" />
 <xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
        
<xsd:element name="audio-mixing-mode" type="audio-mixing-modeType" />
        
<xsd:element name="audio-mixing-mode" type="audio-mixing-modeType" />
        
<xsd:complexType name="video-mixing-modesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="video-mixing-mode"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:attribute name="vas" type="boolean.datatype"
     default="false" />
   <xsd:attribute name="activespeakermix" type="boolean.datatype"
     default="false" />
        
<xsd:complexType name="video-mixing-modesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="video-mixing-mode"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:attribute name="vas" type="boolean.datatype"
     default="false" />
   <xsd:attribute name="activespeakermix" type="boolean.datatype"
     default="false" />
        
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="video-mixing-modes" type="video-mixing-modesType" />
        
<xsd:element name="video-mixing-modes" type="video-mixing-modesType" />
        
<xsd:complexType name="video-mixing-modeType" mixed="true">
 <xsd:sequence>
    <xsd:any namespace="##other" minOccurs="0"
     maxOccurs="unbounded" processContents="lax" />
 </xsd:sequence>
 <xsd:attribute name="package" type="xsd:string" use="required" />
 <xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
        
<xsd:complexType name="video-mixing-modeType" mixed="true">
 <xsd:sequence>
    <xsd:any namespace="##other" minOccurs="0"
     maxOccurs="unbounded" processContents="lax" />
 </xsd:sequence>
 <xsd:attribute name="package" type="xsd:string" use="required" />
 <xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
        
<xsd:element name="video-mixing-mode" type="video-mixing-modeType" />
        
<xsd:element name="video-mixing-mode" type="video-mixing-modeType" />
        
<!--  supported-tones -->
        
<!--  supported-tones -->
        
<xsd:complexType name="supported-tonesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
      <xsd:element ref="supported-country-codes"
        minOccurs="0" maxOccurs="1" />
      <xsd:element ref="supported-h248-codes"
        minOccurs="0" maxOccurs="1" />
      <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="supported-tonesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
      <xsd:element ref="supported-country-codes"
        minOccurs="0" maxOccurs="1" />
      <xsd:element ref="supported-h248-codes"
        minOccurs="0" maxOccurs="1" />
      <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="supported-tones" type="supported-tonesType" />
        
<xsd:element name="supported-tones" type="supported-tonesType" />
        
<xsd:complexType name="supported-country-codesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="country-code"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
        
<xsd:complexType name="supported-country-codesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="country-code"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
        
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="supported-country-codes"
  type="supported-country-codesType" />
        
<xsd:element name="supported-country-codes"
  type="supported-country-codesType" />
        
<xsd:complexType name="country-codeType" mixed="true">
 <xsd:sequence>
    <xsd:any namespace="##other" minOccurs="0"
     maxOccurs="unbounded" processContents="lax" />
 </xsd:sequence>
 <xsd:attribute name="package" type="xsd:string" use="required" />
 <xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
        
<xsd:complexType name="country-codeType" mixed="true">
 <xsd:sequence>
    <xsd:any namespace="##other" minOccurs="0"
     maxOccurs="unbounded" processContents="lax" />
 </xsd:sequence>
 <xsd:attribute name="package" type="xsd:string" use="required" />
 <xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
        
<xsd:element name="country-code" type="country-codeType" />
        
<xsd:element name="country-code" type="country-codeType" />
        
<xsd:complexType name="supported-h248-codesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="h248-code"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="supported-h248-codesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="h248-code"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="supported-h248-codes"
  type="supported-h248-codesType" />
        
<xsd:element name="supported-h248-codes"
  type="supported-h248-codesType" />
        
<xsd:complexType name="h248-codeType" mixed="true">
 <xsd:sequence>
    <xsd:any namespace="##other" minOccurs="0"
     maxOccurs="unbounded" processContents="lax" />
 </xsd:sequence>
 <xsd:attribute name="package" type="xsd:string" use="required" />
 <xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
        
<xsd:complexType name="h248-codeType" mixed="true">
 <xsd:sequence>
    <xsd:any namespace="##other" minOccurs="0"
     maxOccurs="unbounded" processContents="lax" />
 </xsd:sequence>
 <xsd:attribute name="package" type="xsd:string" use="required" />
 <xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
        
<xsd:element name="h248-code" type="h248-codeType" />
        
<xsd:element name="h248-code" type="h248-codeType" />
        
<!--  file-transfer-modes -->
        
<!--  file-transfer-modes -->
        
 <xsd:complexType name="file-transfer-modesType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="file-transfer-mode"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:complexType name="file-transfer-modesType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="file-transfer-mode"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="file-transfer-modes"
              type="file-transfer-modesType" />
        
 <xsd:element name="file-transfer-modes"
              type="file-transfer-modesType" />
        
 <xsd:complexType name="file-transfer-modeType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="transfermode.datatype"
     use="required" />
    <xsd:attribute name="package" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="file-transfer-mode" type="file-transfer-modeType" />
        
 <xsd:complexType name="file-transfer-modeType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="transfermode.datatype"
     use="required" />
    <xsd:attribute name="package" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="file-transfer-mode" type="file-transfer-modeType" />
        
<!--  asr-tts-support -->
        
<!--  asr-tts-support -->
        
<xsd:complexType name="asr-tts-supportType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
      <xsd:element ref="asr-support"
        minOccurs="0" maxOccurs="1" />
      <xsd:element ref="tts-support"
        minOccurs="0" maxOccurs="1" />
      <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
        
<xsd:complexType name="asr-tts-supportType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
      <xsd:element ref="asr-support"
        minOccurs="0" maxOccurs="1" />
      <xsd:element ref="tts-support"
        minOccurs="0" maxOccurs="1" />
      <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
        
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="asr-tts-support" type="asr-tts-supportType" />
        
<xsd:element name="asr-tts-support" type="asr-tts-supportType" />
        
<xsd:complexType name="asr-supportType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="language"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="asr-supportType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="language"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="asr-support" type="asr-supportType" />
        
<xsd:element name="asr-support" type="asr-supportType" />
        
<xsd:complexType name="tts-supportType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="language"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="tts-supportType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="language"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="tts-support" type="tts-supportType" />
        
<xsd:element name="tts-support" type="tts-supportType" />
        
<xsd:complexType name="languageType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:attribute ref="xml:lang" />
        
<xsd:complexType name="languageType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:attribute ref="xml:lang" />
        
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="language" type="languageType" />
        
<xsd:element name="language" type="languageType" />
        
<!--  media-server-location -->
        
<!--  media-server-location -->
        
<xsd:complexType name="media-server-locationType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element name="civicAddress" type="ca:civicAddress"
                        minOccurs="1" maxOccurs="1" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:complexType name="media-server-locationType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element name="civicAddress" type="ca:civicAddress"
                        minOccurs="1" maxOccurs="1" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:element name="media-server-location"
  type="media-server-locationType" />
        
<xsd:element name="media-server-location"
  type="media-server-locationType" />
        
<!--  vxml-support -->
        
<!--  vxml-support -->
        
 <xsd:complexType name="vxml-supportType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="vxml-mode"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:complexType name="vxml-supportType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="vxml-mode"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="vxml-support" type="vxml-supportType" />
        
 <xsd:element name="vxml-support" type="vxml-supportType" />
        
 <xsd:complexType name="vxml-modeType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="package" type="xsd:string" use="required" />
    <xsd:attribute name="support" type="vxml.datatype" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:complexType name="vxml-modeType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="package" type="xsd:string" use="required" />
    <xsd:attribute name="support" type="vxml.datatype" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="vxml-mode" type="vxml-modeType" />
        
 <xsd:element name="vxml-mode" type="vxml-modeType" />
        
<!--  label -->
        
<!--  label -->
        
 <xsd:element name="label" type="label.datatype" />
        
 <xsd:element name="label" type="label.datatype" />
        
<!-- media-server-address -->
        
<!-- media-server-address -->
        
 <xsd:element name="media-server-address" type="xsd:anyURI" />
        
 <xsd:element name="media-server-address" type="xsd:anyURI" />
        
<!--  encryption -->
        
<!--  encryption -->
        
 <xsd:complexType name="encryptionType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:complexType name="encryptionType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="encryption" type="encryptionType" />
        
 <xsd:element name="encryption" type="encryptionType" />
        
<!--
  ####################################################
        
<!--
  ####################################################
        

DATATYPES

数据类型

  ####################################################
 -->
        
  ####################################################
 -->
        
 <xsd:simpleType name="version.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="1.0" />
  </xsd:restriction>
 </xsd:simpleType>
        
 <xsd:simpleType name="version.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="1.0" />
  </xsd:restriction>
 </xsd:simpleType>
        
<xsd:simpleType name="id.datatype">
  <xsd:restriction base="xsd:NMTOKEN" />
 </xsd:simpleType>
        
<xsd:simpleType name="id.datatype">
  <xsd:restriction base="xsd:NMTOKEN" />
 </xsd:simpleType>
        
 <xsd:simpleType name="status.datatype">
  <xsd:restriction base="xsd:positiveInteger">
   <xsd:pattern value="[0-9][0-9][0-9]" />
  </xsd:restriction>
 </xsd:simpleType>
        
 <xsd:simpleType name="status.datatype">
  <xsd:restriction base="xsd:positiveInteger">
   <xsd:pattern value="[0-9][0-9][0-9]" />
  </xsd:restriction>
 </xsd:simpleType>
        
 <xsd:simpleType name="msstatus.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="active" />
   <xsd:enumeration value="deactivated" />
   <xsd:enumeration value="unavailable" />
  </xsd:restriction>
 </xsd:simpleType>
        
 <xsd:simpleType name="msstatus.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="active" />
   <xsd:enumeration value="deactivated" />
   <xsd:enumeration value="unavailable" />
  </xsd:restriction>
 </xsd:simpleType>
        
 <xsd:simpleType name="action.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="create" />
   <xsd:enumeration value="update" />
   <xsd:enumeration value="remove" />
  </xsd:restriction>
 </xsd:simpleType>
        
 <xsd:simpleType name="action.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="create" />
   <xsd:enumeration value="update" />
   <xsd:enumeration value="remove" />
  </xsd:restriction>
 </xsd:simpleType>
        
 <xsd:simpleType name="actions.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="encoding" />
   <xsd:enumeration value="decoding" />
   <xsd:enumeration value="passthrough" />
  </xsd:restriction>
 </xsd:simpleType>
        
 <xsd:simpleType name="actions.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="encoding" />
   <xsd:enumeration value="decoding" />
   <xsd:enumeration value="passthrough" />
  </xsd:restriction>
 </xsd:simpleType>
        
 <xsd:simpleType name="appdata.datatype">
  <xsd:restriction base="xsd:string" />
 </xsd:simpleType>
        
 <xsd:simpleType name="appdata.datatype">
  <xsd:restriction base="xsd:string" />
 </xsd:simpleType>
        
 <xsd:simpleType name="dtmf.datatype">
  <xsd:restriction base="xsd:NMTOKEN"/>
 </xsd:simpleType>
        
 <xsd:simpleType name="dtmf.datatype">
  <xsd:restriction base="xsd:NMTOKEN"/>
 </xsd:simpleType>
        
 <xsd:simpleType name="transfermode.datatype">
  <xsd:restriction base="xsd:NMTOKEN" />
 </xsd:simpleType>
        
 <xsd:simpleType name="transfermode.datatype">
  <xsd:restriction base="xsd:NMTOKEN" />
 </xsd:simpleType>
        
 <xsd:simpleType name="boolean.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="true" />
   <xsd:enumeration value="false" />
  </xsd:restriction>
 </xsd:simpleType>
        
 <xsd:simpleType name="boolean.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="true" />
   <xsd:enumeration value="false" />
  </xsd:restriction>
 </xsd:simpleType>
        
 <xsd:simpleType name="vxml.datatype">
  <xsd:restriction base="xsd:NMTOKEN"/>
 </xsd:simpleType>
        
 <xsd:simpleType name="vxml.datatype">
  <xsd:restriction base="xsd:NMTOKEN"/>
 </xsd:simpleType>
        
 <xsd:simpleType name="label.datatype">
  <xsd:restriction base="xsd:NMTOKEN" />
 </xsd:simpleType>
        
 <xsd:simpleType name="label.datatype">
  <xsd:restriction base="xsd:NMTOKEN" />
 </xsd:simpleType>
        
 <xsd:simpleType name="subscriptionid.datatype">
  <xsd:restriction base="xsd:NMTOKEN" />
 </xsd:simpleType>
        
 <xsd:simpleType name="subscriptionid.datatype">
  <xsd:restriction base="xsd:NMTOKEN" />
 </xsd:simpleType>
        
</xsd:schema>
        
</xsd:schema>
        
11. Media Service Resource Consumer Interface XML Schema
11. 媒体服务资源使用者接口XML模式

This section gives the XML Schema Definition [W3C.REC-xmlschema-1-20041028] [W3C.REC-xmlschema-2-20041028] of the "application/mrb-consumer+xml" format.

本节给出了“应用程序/mrb消费者+XML”格式的XML模式定义[W3C.REC-xmlschema-1-20041028][W3C.REC-xmlschema-2-20041028]。

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="urn:ietf:params:xml:ns:mrb-consumer"
 elementFormDefault="qualified" blockDefault="#all"
 xmlns="urn:ietf:params:xml:ns:mrb-consumer"
 xmlns:ca="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="urn:ietf:params:xml:ns:mrb-consumer"
 elementFormDefault="qualified" blockDefault="#all"
 xmlns="urn:ietf:params:xml:ns:mrb-consumer"
 xmlns:ca="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        
 <xsd:annotation>
  <xsd:documentation>
   IETF MediaCtrl MRB 1.0
        
 <xsd:annotation>
  <xsd:documentation>
   IETF MediaCtrl MRB 1.0
        

This is the schema of the IETF MediaCtrl MRB Consumer interface.

这是IETF MediaCtrl MRB用户界面的模式。

   The schema namespace is urn:ietf:params:xml:ns:mrb-consumer
        
   The schema namespace is urn:ietf:params:xml:ns:mrb-consumer
        
  </xsd:documentation>
 </xsd:annotation>
        
  </xsd:documentation>
 </xsd:annotation>
        
 <!--
  #############################################################
        
 <!--
  #############################################################
        

SCHEMA IMPORTS

模式导入

  #############################################################
 -->
        
  #############################################################
 -->
        
 <xsd:import namespace="http://www.w3.org/XML/1998/namespace"
  schemaLocation="http://www.w3.org/2001/xml.xsd">
  <xsd:annotation>
   <xsd:documentation>
    This import brings in the XML attributes for
    xml:base, xml:lang, etc.
   </xsd:documentation>
  </xsd:annotation>
 </xsd:import>
        
 <xsd:import namespace="http://www.w3.org/XML/1998/namespace"
  schemaLocation="http://www.w3.org/2001/xml.xsd">
  <xsd:annotation>
   <xsd:documentation>
    This import brings in the XML attributes for
    xml:base, xml:lang, etc.
   </xsd:documentation>
  </xsd:annotation>
 </xsd:import>
        
 <xsd:import
  namespace="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr"
  schemaLocation="civicAddress.xsd">
  <xsd:annotation>
   <xsd:documentation>
        
 <xsd:import
  namespace="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr"
  schemaLocation="civicAddress.xsd">
  <xsd:annotation>
   <xsd:documentation>
        
    This import brings in the civicAddress specification
    from RFC 5139.
   </xsd:documentation>
  </xsd:annotation>
 </xsd:import>
        
    This import brings in the civicAddress specification
    from RFC 5139.
   </xsd:documentation>
  </xsd:annotation>
 </xsd:import>
        
<!--
  #####################################################
        
<!--
  #####################################################
        

Extensible core type

可扩展核心类型

  #####################################################
 -->
        
  #####################################################
 -->
        
 <xsd:complexType name="Tcore">
  <xsd:annotation>
   <xsd:documentation>
    This type is extended by other (non-mixed) component types to
    allow attributes from other namespaces.
   </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence/>
  <xsd:anyAttribute namespace="##other" processContents="lax" />
 </xsd:complexType>
        
 <xsd:complexType name="Tcore">
  <xsd:annotation>
   <xsd:documentation>
    This type is extended by other (non-mixed) component types to
    allow attributes from other namespaces.
   </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence/>
  <xsd:anyAttribute namespace="##other" processContents="lax" />
 </xsd:complexType>
        
<!--
  #####################################################
        
<!--
  #####################################################
        

TOP-LEVEL ELEMENT: mrbconsumer

顶级元素:mrbconsumer

  #####################################################
 -->
        
  #####################################################
 -->
        
<xsd:complexType name="mrbconsumerType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:choice>
      <xsd:element ref="mediaResourceRequest" />
      <xsd:element ref="mediaResourceResponse" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
     </xsd:choice>
    </xsd:sequence>
    <xsd:attribute name="version" type="version.datatype"
      use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
        
<xsd:complexType name="mrbconsumerType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:choice>
      <xsd:element ref="mediaResourceRequest" />
      <xsd:element ref="mediaResourceResponse" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
     </xsd:choice>
    </xsd:sequence>
    <xsd:attribute name="version" type="version.datatype"
      use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
        
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
 <xsd:element name="mrbconsumer" type="mrbconsumerType" />
        
 <xsd:element name="mrbconsumer" type="mrbconsumerType" />
        
<!--
  #####################################################
        
<!--
  #####################################################
        

mediaResourceRequest TYPE

mediaResourceRequest类型

  #####################################################
 -->
        
  #####################################################
 -->
        
<!--  mediaResourceRequest -->
        
<!--  mediaResourceRequest -->
        
 <xsd:complexType name="mediaResourceRequestType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="generalInfo" minOccurs="0" />
      <xsd:element ref="ivrInfo" minOccurs="0" />
      <xsd:element ref="mixerInfo" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:string"
      use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:complexType name="mediaResourceRequestType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="generalInfo" minOccurs="0" />
      <xsd:element ref="ivrInfo" minOccurs="0" />
      <xsd:element ref="mixerInfo" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:string"
      use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="mediaResourceRequest"
         type="mediaResourceRequestType" />
        
 <xsd:element name="mediaResourceRequest"
         type="mediaResourceRequestType" />
        
<!--
  #####################################################
        
<!--
  #####################################################
        

generalInfo TYPE

通用信息类型

  #####################################################
-->
        
  #####################################################
-->
        
<!--  generalInfo -->
        
<!--  generalInfo -->
        
<xsd:complexType name="generalInfoType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="session-info" minOccurs="0" />
      <xsd:element ref="packages" minOccurs="0" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:complexType name="generalInfoType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="session-info" minOccurs="0" />
      <xsd:element ref="packages" minOccurs="0" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:element name="generalInfo" type="generalInfoType" />
        
<xsd:element name="generalInfo" type="generalInfoType" />
        
<!--  session-info -->
        
<!--  session-info -->
        
<xsd:complexType name="session-infoType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element name="session-id" type="id.datatype"/>
       <xsd:element name="seq" type="xsd:nonNegativeInteger"/>
       <xsd:element name="action" type="action.datatype"/>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:complexType name="session-infoType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element name="session-id" type="id.datatype"/>
       <xsd:element name="seq" type="xsd:nonNegativeInteger"/>
       <xsd:element name="action" type="action.datatype"/>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:element name="session-info" type="session-infoType" />
        
<xsd:element name="session-info" type="session-infoType" />
        
<!--  packages -->
        
<!--  packages -->
        
<xsd:complexType name="packagesType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element name="package" type="xsd:string" minOccurs="0"
        maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="packagesType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element name="package" type="xsd:string" minOccurs="0"
        maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="packages" type="packagesType"/>
        
<xsd:element name="packages" type="packagesType"/>
        
<!--
  #####################################################
        
<!--
  #####################################################
        

ivrInfo TYPE

ivrInfo型

  #####################################################
-->
        
  #####################################################
-->
        
<!--  ivrInfo -->
        
<!--  ivrInfo -->
        
<xsd:complexType name="ivrInfoType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="ivr-sessions" minOccurs="0" />
      <xsd:element ref="file-formats" minOccurs="0" />
      <xsd:element ref="dtmf-type" minOccurs="0" />
      <xsd:element ref="tones" minOccurs="0" />
      <xsd:element ref="asr-tts" minOccurs="0" />
      <xsd:element ref="vxml" minOccurs="0" />
      <xsd:element ref="location" minOccurs="0" />
      <xsd:element ref="encryption" minOccurs="0" />
      <xsd:element ref="application-data" minOccurs="0" />
      <xsd:element ref="max-prepared-duration" minOccurs="0" />
      <xsd:element ref="file-transfer-modes" minOccurs="0" />
      <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
        
<xsd:complexType name="ivrInfoType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="ivr-sessions" minOccurs="0" />
      <xsd:element ref="file-formats" minOccurs="0" />
      <xsd:element ref="dtmf-type" minOccurs="0" />
      <xsd:element ref="tones" minOccurs="0" />
      <xsd:element ref="asr-tts" minOccurs="0" />
      <xsd:element ref="vxml" minOccurs="0" />
      <xsd:element ref="location" minOccurs="0" />
      <xsd:element ref="encryption" minOccurs="0" />
      <xsd:element ref="application-data" minOccurs="0" />
      <xsd:element ref="max-prepared-duration" minOccurs="0" />
      <xsd:element ref="file-transfer-modes" minOccurs="0" />
      <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
        
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:element name="ivrInfo" type="ivrInfoType" />
        
<xsd:element name="ivrInfo" type="ivrInfoType" />
        
<!--
  #####################################################
        
<!--
  #####################################################
        

mixerInfo TYPE

混合器信息类型

  #####################################################
-->
        
  #####################################################
-->
        
<!--  mixerInfo -->
        
<!--  mixerInfo -->
        
<xsd:complexType name="mixerInfoType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="mixers" minOccurs="0"/>
      <xsd:element ref="file-formats" minOccurs="0"/>
      <xsd:element ref="dtmf-type" minOccurs="0"/>
      <xsd:element ref="tones" minOccurs="0"/>
      <xsd:element ref="mixing-modes" minOccurs="0"/>
      <xsd:element ref="application-data" minOccurs="0"/>
      <xsd:element ref="location" minOccurs="0"/>
      <xsd:element ref="encryption" minOccurs="0"/>
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:complexType name="mixerInfoType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="mixers" minOccurs="0"/>
      <xsd:element ref="file-formats" minOccurs="0"/>
      <xsd:element ref="dtmf-type" minOccurs="0"/>
      <xsd:element ref="tones" minOccurs="0"/>
      <xsd:element ref="mixing-modes" minOccurs="0"/>
      <xsd:element ref="application-data" minOccurs="0"/>
      <xsd:element ref="location" minOccurs="0"/>
      <xsd:element ref="encryption" minOccurs="0"/>
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:element name="mixerInfo" type="mixerInfoType" />
        
<xsd:element name="mixerInfo" type="mixerInfoType" />
        
<!--
  #####################################################
        
<!--
  #####################################################
        

mediaResourceResponse TYPE

mediaResourceResponse类型

  #####################################################
 -->
        
  #####################################################
 -->
        
<!--  mediaResourceResponse -->
        
<!--  mediaResourceResponse -->
        
 <xsd:complexType name="mediaResourceResponseType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="response-session-info" minOccurs="0" />
       <xsd:any namespace="##other" minOccurs="0"
          maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:string"
     use="required" />
    <xsd:attribute name="status" type="status.datatype"
     use="required" />
    <xsd:attribute name="reason" type="xsd:string" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:complexType name="mediaResourceResponseType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="response-session-info" minOccurs="0" />
       <xsd:any namespace="##other" minOccurs="0"
          maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:string"
     use="required" />
    <xsd:attribute name="status" type="status.datatype"
     use="required" />
    <xsd:attribute name="reason" type="xsd:string" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="mediaResourceResponse"
         type="mediaResourceResponseType" />
        
 <xsd:element name="mediaResourceResponse"
         type="mediaResourceResponseType" />
        
<!--
  ####################################################
        
<!--
  ####################################################
        

ELEMENTS

元素

  ####################################################
 -->
        
  ####################################################
 -->
        
<!--  response-session-info -->
        
<!--  response-session-info -->
        
<xsd:complexType name="response-session-infoType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element name="session-id" type="id.datatype"/>
       <xsd:element name="seq" type="xsd:nonNegativeInteger"/>
        
<xsd:complexType name="response-session-infoType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element name="session-id" type="id.datatype"/>
       <xsd:element name="seq" type="xsd:nonNegativeInteger"/>
        
       <xsd:element name="expires" type="xsd:nonNegativeInteger"/>
       <xsd:element ref="media-server-address"
          minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
         maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
       <xsd:element name="expires" type="xsd:nonNegativeInteger"/>
       <xsd:element ref="media-server-address"
          minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
         maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:element name="response-session-info"
   type="response-session-infoType" />
        
<xsd:element name="response-session-info"
   type="response-session-infoType" />
        
<!-- media-server-address -->
        
<!-- media-server-address -->
        
<xsd:complexType name="media-server-addressTYPE">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="connection-id" type="xsd:string"
         minOccurs="0" maxOccurs="unbounded" />
     <xsd:element ref="ivr-sessions" minOccurs="0"/>
     <xsd:element ref="mixers" minOccurs="0"/>
     <xsd:any namespace="##other" minOccurs="0"
         maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="uri" type="xsd:anyURI" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="media-server-addressTYPE">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="connection-id" type="xsd:string"
         minOccurs="0" maxOccurs="unbounded" />
     <xsd:element ref="ivr-sessions" minOccurs="0"/>
     <xsd:element ref="mixers" minOccurs="0"/>
     <xsd:any namespace="##other" minOccurs="0"
         maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="uri" type="xsd:anyURI" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="media-server-address"
    type="media-server-addressTYPE" />
        
<xsd:element name="media-server-address"
    type="media-server-addressTYPE" />
        
<!--  ivr-sessions -->
        
<!--  ivr-sessions -->
        
<xsd:complexType name="ivr-sessionsType">
 <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="rtp-codec" minOccurs="0"
        maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
        
<xsd:complexType name="ivr-sessionsType">
 <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="rtp-codec" minOccurs="0"
        maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
        
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:element name="ivr-sessions" type="ivr-sessionsType" />
        
<xsd:element name="ivr-sessions" type="ivr-sessionsType" />
        
<xsd:complexType name="rtp-codecType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element name="decoding" type="xsd:nonNegativeInteger" />
      <xsd:element name="encoding" type="xsd:nonNegativeInteger" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:complexType name="rtp-codecType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element name="decoding" type="xsd:nonNegativeInteger" />
      <xsd:element name="encoding" type="xsd:nonNegativeInteger" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:element name="rtp-codec" type="rtp-codecType" />
        
<xsd:element name="rtp-codec" type="rtp-codecType" />
        
<!-- file-formats -->
        
<!-- file-formats -->
        
<xsd:complexType name="file-formatsType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="required-format"
         minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
         maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="file-formatsType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="required-format"
         minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
         maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="file-formats" type="file-formatsType" />
        
<xsd:element name="file-formats" type="file-formatsType" />
        
<xsd:complexType name="required-formatType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="required-file-package"
         minOccurs="0" maxOccurs="unbounded" />
        
<xsd:complexType name="required-formatType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="required-file-package"
         minOccurs="0" maxOccurs="unbounded" />
        
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="required-format" type="required-formatType" />
        
<xsd:element name="required-format" type="required-formatType" />
        
<xsd:complexType name="required-file-packageType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element name="required-file-package-name" type="xsd:string"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="required-file-packageType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element name="required-file-package-name" type="xsd:string"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="required-file-package"
  type="required-file-packageType" />
        
<xsd:element name="required-file-package"
  type="required-file-packageType" />
        
<!--  dtmf-type -->
        
<!--  dtmf-type -->
        
<xsd:complexType name="dtmfType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="detect" />
       <xsd:element ref="generate" />
       <xsd:element ref="passthrough" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="dtmfType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="detect" />
       <xsd:element ref="generate" />
       <xsd:element ref="passthrough" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="dtmf" type="dtmfType" />
        
<xsd:element name="dtmf" type="dtmfType" />
        
<xsd:complexType name="detectType">
        
<xsd:complexType name="detectType">
        
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="dtmf-type"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="dtmf-type"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="detect" type="detectType" />
        
<xsd:element name="detect" type="detectType" />
        
<xsd:complexType name="generateType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="dtmf-type"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="generateType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="dtmf-type"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="generate" type="generateType" />
        
<xsd:element name="generate" type="generateType" />
        
<xsd:complexType name="passthroughType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="dtmf-type"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="passthroughType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="dtmf-type"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="passthrough" type="passthroughType" />
        
<xsd:element name="passthrough" type="passthroughType" />
        
<xsd:complexType name="dtmf-typeType">
        
<xsd:complexType name="dtmf-typeType">
        
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="dtmf.datatype" use="required" />
    <xsd:attribute name="package" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="dtmf.datatype" use="required" />
    <xsd:attribute name="package" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="dtmf-type" type="dtmf-typeType" />
        
<xsd:element name="dtmf-type" type="dtmf-typeType" />
        
<!--  tones -->
        
<!--  tones -->
        
<xsd:complexType name="required-tonesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
      <xsd:element ref="country-codes"
        minOccurs="0" maxOccurs="1" />
      <xsd:element ref="h248-codes"
        minOccurs="0" maxOccurs="1" />
      <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="required-tonesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
      <xsd:element ref="country-codes"
        minOccurs="0" maxOccurs="1" />
      <xsd:element ref="h248-codes"
        minOccurs="0" maxOccurs="1" />
      <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="tones" type="required-tonesType" />
        
<xsd:element name="tones" type="required-tonesType" />
        
<xsd:complexType name="required-country-codesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="country-code"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="required-country-codesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="country-code"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="country-codes"
   type="required-country-codesType" />
        
<xsd:element name="country-codes"
   type="required-country-codesType" />
        
<xsd:complexType name="country-codeType" mixed="true">
 <xsd:sequence>
    <xsd:any namespace="##other" minOccurs="0"
     maxOccurs="unbounded" processContents="lax" />
 </xsd:sequence>
 <xsd:attribute name="package" type="xsd:string" use="required" />
 <xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
        
<xsd:complexType name="country-codeType" mixed="true">
 <xsd:sequence>
    <xsd:any namespace="##other" minOccurs="0"
     maxOccurs="unbounded" processContents="lax" />
 </xsd:sequence>
 <xsd:attribute name="package" type="xsd:string" use="required" />
 <xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
        
<xsd:element name="country-code" type="country-codeType" />
        
<xsd:element name="country-code" type="country-codeType" />
        
<xsd:complexType name="required-h248-codesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="h248-code"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="required-h248-codesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="h248-code"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="h248-codes"
   type="required-h248-codesType" />
        
<xsd:element name="h248-codes"
   type="required-h248-codesType" />
        
<xsd:complexType name="h248-codeType" mixed="true">
 <xsd:sequence>
    <xsd:any namespace="##other" minOccurs="0"
     maxOccurs="unbounded" processContents="lax" />
 </xsd:sequence>
 <xsd:attribute name="package" type="xsd:string" use="required" />
 <xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
        
<xsd:complexType name="h248-codeType" mixed="true">
 <xsd:sequence>
    <xsd:any namespace="##other" minOccurs="0"
     maxOccurs="unbounded" processContents="lax" />
 </xsd:sequence>
 <xsd:attribute name="package" type="xsd:string" use="required" />
 <xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
        
<xsd:element name="h248-code" type="h248-codeType" />
        
<xsd:element name="h248-code" type="h248-codeType" />
        
<!--  asr-tts -->
        
<!--  asr-tts -->
        
<xsd:complexType name="asr-ttsType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
        
<xsd:complexType name="asr-ttsType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
        
      <xsd:element ref="asr-support"
        minOccurs="0" maxOccurs="1" />
      <xsd:element ref="tts-support"
        minOccurs="0" maxOccurs="1" />
      <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
      <xsd:element ref="asr-support"
        minOccurs="0" maxOccurs="1" />
      <xsd:element ref="tts-support"
        minOccurs="0" maxOccurs="1" />
      <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="asr-tts" type="asr-ttsType" />
        
<xsd:element name="asr-tts" type="asr-ttsType" />
        
<xsd:complexType name="asr-supportType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="language"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="asr-supportType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="language"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="asr-support" type="asr-supportType" />
        
<xsd:element name="asr-support" type="asr-supportType" />
        
<xsd:complexType name="tts-supportType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="language"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="tts-supportType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="language"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="tts-support" type="tts-supportType" />
        
<xsd:element name="tts-support" type="tts-supportType" />
        
<xsd:complexType name="languageType">
 <xsd:complexContent>
        
<xsd:complexType name="languageType">
 <xsd:complexContent>
        
  <xsd:extension base="Tcore">
   <xsd:sequence>
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:attribute ref="xml:lang" />
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
  <xsd:extension base="Tcore">
   <xsd:sequence>
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:attribute ref="xml:lang" />
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="language" type="languageType" />
        
<xsd:element name="language" type="languageType" />
        
<!--  vxml -->
        
<!--  vxml -->
        
<xsd:complexType name="vxmlType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="vxml-mode"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="vxmlType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="vxml-mode"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="vxml" type="vxmlType" />
        
<xsd:element name="vxml" type="vxmlType" />
        
<xsd:complexType name="vxml-modeType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="package" type="xsd:string" use="required" />
    <xsd:attribute name="require" type="vxml.datatype" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="vxml-modeType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="package" type="xsd:string" use="required" />
    <xsd:attribute name="require" type="vxml.datatype" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="vxml-mode" type="vxml-modeType" />
        
<xsd:element name="vxml-mode" type="vxml-modeType" />
        
<!--  location -->
        
<!--  location -->
        
<xsd:complexType name="locationType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="ca:civicAddress"
                        minOccurs="1" maxOccurs="1" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:complexType name="locationType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="ca:civicAddress"
                        minOccurs="1" maxOccurs="1" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
<xsd:element name="location" type="locationType" />
        
<xsd:element name="location" type="locationType" />
        
<!--  encryption -->
        
<!--  encryption -->
        
 <xsd:complexType name="encryptionType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:complexType name="encryptionType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>
        
 <xsd:element name="encryption" type="encryptionType" />
        
 <xsd:element name="encryption" type="encryptionType" />
        
<!--  application-data -->
        
<!--  application-data -->
        
<xsd:element name="application-data" type="appdata.datatype" />
        
<xsd:element name="application-data" type="appdata.datatype" />
        
<!--  max-prepared-duration -->
        
<!--  max-prepared-duration -->
        
<xsd:complexType name="max-prepared-durationType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="max-time" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
        
<xsd:complexType name="max-prepared-durationType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="max-time" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
        
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="max-prepared-duration"
  type="max-prepared-durationType" />
        
<xsd:element name="max-prepared-duration"
  type="max-prepared-durationType" />
        
<xsd:complexType name="max-timeType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element name="max-time-package" type="xsd:string" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="max-time-seconds" type="xsd:nonNegativeInteger"
     use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="max-timeType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element name="max-time-package" type="xsd:string" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="max-time-seconds" type="xsd:nonNegativeInteger"
     use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="max-time" type="max-timeType" />
        
<xsd:element name="max-time" type="max-timeType" />
        
<!--  file-transfer-modes -->
        
<!--  file-transfer-modes -->
        
<xsd:complexType name="file-transfer-modesType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="file-transfer-mode"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="file-transfer-modesType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="file-transfer-mode"
        minOccurs="0" maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="file-transfer-modes"
             type="file-transfer-modesType" />
        
<xsd:element name="file-transfer-modes"
             type="file-transfer-modesType" />
        
<xsd:complexType name="file-transfer-modeType">
        
<xsd:complexType name="file-transfer-modeType">
        
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="transfermode.datatype"
     use="required" />
    <xsd:attribute name="package" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="name" type="transfermode.datatype"
     use="required" />
    <xsd:attribute name="package" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="file-transfer-mode" type="file-transfer-modeType" />
        
<xsd:element name="file-transfer-mode" type="file-transfer-modeType" />
        
<!--  mixers -->
        
<!--  mixers -->
        
<xsd:complexType name="mixerssessionsType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="mix" minOccurs="0"
        maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="mixerssessionsType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="mix" minOccurs="0"
        maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="mixers" type="mixerssessionsType" />
        
<xsd:element name="mixers" type="mixerssessionsType" />
        
<xsd:complexType name="mixType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="rtp-codec" minOccurs="0"
        maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="users" type="xsd:nonNegativeInteger"
     use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
        
<xsd:complexType name="mixType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="rtp-codec" minOccurs="0"
        maxOccurs="unbounded" />
       <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="users" type="xsd:nonNegativeInteger"
     use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
        
</xsd:complexType>
        
</xsd:complexType>
        
<xsd:element name="mix" type="mixType" />
        
<xsd:element name="mix" type="mixType" />
        
<!--  mixing-modes -->
        
<!--  mixing-modes -->
        
<xsd:complexType name="mixing-modesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
      <xsd:element ref="audio-mixing-modes"
        minOccurs="0" maxOccurs="1" />
      <xsd:element ref="video-mixing-modes"
        minOccurs="0" maxOccurs="1" />
      <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="mixing-modesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
      <xsd:element ref="audio-mixing-modes"
        minOccurs="0" maxOccurs="1" />
      <xsd:element ref="video-mixing-modes"
        minOccurs="0" maxOccurs="1" />
      <xsd:any namespace="##other" minOccurs="0"
        maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="mixing-modes" type="mixing-modesType" />
        
<xsd:element name="mixing-modes" type="mixing-modesType" />
        
<xsd:complexType name="audio-mixing-modesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="audio-mixing-mode"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="audio-mixing-modesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="audio-mixing-mode"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="audio-mixing-modes" type="audio-mixing-modesType" />
        
<xsd:element name="audio-mixing-modes" type="audio-mixing-modesType" />
        
<xsd:complexType name="audio-mixing-modeType" mixed="true">
 <xsd:sequence>
    <xsd:any namespace="##other" minOccurs="0"
     maxOccurs="unbounded" processContents="lax" />
 </xsd:sequence>
 <xsd:attribute name="package" type="xsd:string" use="required" />
 <xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
        
<xsd:complexType name="audio-mixing-modeType" mixed="true">
 <xsd:sequence>
    <xsd:any namespace="##other" minOccurs="0"
     maxOccurs="unbounded" processContents="lax" />
 </xsd:sequence>
 <xsd:attribute name="package" type="xsd:string" use="required" />
 <xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
        
<xsd:element name="audio-mixing-mode" type="audio-mixing-modeType" />
        
<xsd:element name="audio-mixing-mode" type="audio-mixing-modeType" />
        
<xsd:complexType name="video-mixing-modesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="video-mixing-mode"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:attribute name="vas" type="boolean.datatype"
     default="false" />
   <xsd:attribute name="activespeakermix" type="boolean.datatype"
     default="false" />
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:complexType name="video-mixing-modesType">
 <xsd:complexContent>
  <xsd:extension base="Tcore">
   <xsd:sequence>
     <xsd:element ref="video-mixing-mode"
        minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
   </xsd:sequence>
   <xsd:attribute name="vas" type="boolean.datatype"
     default="false" />
   <xsd:attribute name="activespeakermix" type="boolean.datatype"
     default="false" />
   <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>
        
<xsd:element name="video-mixing-modes" type="video-mixing-modesType" />
        
<xsd:element name="video-mixing-modes" type="video-mixing-modesType" />
        
<xsd:complexType name="video-mixing-modeType" mixed="true">
 <xsd:sequence>
    <xsd:any namespace="##other" minOccurs="0"
     maxOccurs="unbounded" processContents="lax" />
 </xsd:sequence>
 <xsd:attribute name="package" type="xsd:string" use="required" />
 <xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
        
<xsd:complexType name="video-mixing-modeType" mixed="true">
 <xsd:sequence>
    <xsd:any namespace="##other" minOccurs="0"
     maxOccurs="unbounded" processContents="lax" />
 </xsd:sequence>
 <xsd:attribute name="package" type="xsd:string" use="required" />
 <xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType>
        
<xsd:element name="video-mixing-mode" type="video-mixing-modeType" />
        
<xsd:element name="video-mixing-mode" type="video-mixing-modeType" />
        
<!--
  ####################################################
        
<!--
  ####################################################
        

DATATYPES

数据类型

  ####################################################
 -->
        
  ####################################################
 -->
        
<xsd:simpleType name="version.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="1.0" />
  </xsd:restriction>
</xsd:simpleType>
        
<xsd:simpleType name="version.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="1.0" />
  </xsd:restriction>
</xsd:simpleType>
        
<xsd:simpleType name="id.datatype">
  <xsd:restriction base="xsd:NMTOKEN" />
</xsd:simpleType>
        
<xsd:simpleType name="id.datatype">
  <xsd:restriction base="xsd:NMTOKEN" />
</xsd:simpleType>
        
<xsd:simpleType name="status.datatype">
  <xsd:restriction base="xsd:positiveInteger">
   <xsd:pattern value="[0-9][0-9][0-9]" />
  </xsd:restriction>
</xsd:simpleType>
        
<xsd:simpleType name="status.datatype">
  <xsd:restriction base="xsd:positiveInteger">
   <xsd:pattern value="[0-9][0-9][0-9]" />
  </xsd:restriction>
</xsd:simpleType>
        
<xsd:simpleType name="transfermode.datatype">
  <xsd:restriction base="xsd:NMTOKEN"/>
</xsd:simpleType>
        
<xsd:simpleType name="transfermode.datatype">
  <xsd:restriction base="xsd:NMTOKEN"/>
</xsd:simpleType>
        
<xsd:simpleType name="action.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="remove" />
   <xsd:enumeration value="update" />
  </xsd:restriction>
</xsd:simpleType>
        
<xsd:simpleType name="action.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="remove" />
   <xsd:enumeration value="update" />
  </xsd:restriction>
</xsd:simpleType>
        
<xsd:simpleType name="dtmf.datatype">
  <xsd:restriction base="xsd:NMTOKEN"/>
</xsd:simpleType>
        
<xsd:simpleType name="dtmf.datatype">
  <xsd:restriction base="xsd:NMTOKEN"/>
</xsd:simpleType>
        
<xsd:simpleType name="boolean.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="true" />
   <xsd:enumeration value="false" />
  </xsd:restriction>
</xsd:simpleType>
        
<xsd:simpleType name="boolean.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="true" />
   <xsd:enumeration value="false" />
  </xsd:restriction>
</xsd:simpleType>
        
<xsd:simpleType name="vxml.datatype">
  <xsd:restriction base="xsd:NMTOKEN"/>
</xsd:simpleType>
        
<xsd:simpleType name="vxml.datatype">
  <xsd:restriction base="xsd:NMTOKEN"/>
</xsd:simpleType>
        
<xsd:simpleType name="appdata.datatype">
  <xsd:restriction base="xsd:string" />
 </xsd:simpleType>
        
<xsd:simpleType name="appdata.datatype">
  <xsd:restriction base="xsd:string" />
 </xsd:simpleType>
        
</xsd:schema>
        
</xsd:schema>
        
12. Security Considerations
12. 安全考虑

The MRB network entity has two primary interfaces -- Publish and Consumer -- that carry sensitive information and must therefore be appropriately protected and secured.

MRB网络实体有两个主要接口——发布接口和使用者接口,它们携带敏感信息,因此必须得到适当的保护和保护。

The Publish interface, as defined in and described in Section 5.1, uses the Media Control Channel Framework [RFC6230] as a mechanism to connect an MRB to a Media Server. It is very important that the communication between the MRB and the Media Server is secured: a malicious entity may change or even delete subscriptions to a Media Server, thus affecting the view the MRB has of the resources actually available on a Media Server, leading it to incorrect selection when media resources are being requested by an Application Server. A malicious entity may even manipulate available resources on a Media Server, for example, to make the MRB think no resources are available at all. Considering that the Publish interface is a CFW Control Package, the same security considerations included in the Media Control Channel Framework specification apply here to protect interactions between an MRB and a Media Server.

第5.1节中定义和描述的发布接口使用媒体控制通道框架[RFC6230]作为将MRB连接到媒体服务器的机制。确保MRB和媒体服务器之间的通信安全非常重要:恶意实体可能更改甚至删除对媒体服务器的订阅,从而影响MRB对媒体服务器上实际可用资源的查看,当应用服务器请求媒体资源时,会导致选择错误。恶意实体甚至可能操纵媒体服务器上的可用资源,例如,使MRB认为根本没有可用资源。考虑到发布接口是一个CFW控制包,媒体控制通道框架规范中包含的相同安全注意事项适用于保护MRB和媒体服务器之间的交互。

The Publish interface also allows a Media Server, as explained in Section 5.1.5.18, to provide more or less accurate information about its geographic location, should Application Servers be interested in such details when looking for services at an MRB. While the usage of this information is entirely optional and the level of detail to be provided is implementation specific, it is important to draw attention to the potential security issues that the disclosure of such addresses may introduce. As such, it is important to make sure MRB implementations don't disclose this information as is to interested Application Servers but only exploit those addresses as part of computation algorithms to pick the most adequate resources Application Servers may be looking for.

发布界面还允许媒体服务器(如第5.1.5.18节所述)提供有关其地理位置的更多或更少的准确信息,如果应用服务器在MRB寻找服务时对这些细节感兴趣。虽然此信息的使用是完全可选的,并且提供的详细程度是特定于实现的,但重要的是要提请注意披露此类地址可能带来的潜在安全问题。因此,重要的是要确保MRB实现不会向感兴趣的应用程序服务器公开这些信息,而只利用这些地址作为计算算法的一部分,以选择应用程序服务器可能寻找的最充分的资源。

The Consumer interface, as defined in and described in Section 5.2, conceives transactions based on a session ID. These transactions may be transported either by means of HTTP messages or SIP dialogs. This means that malicious users could be able to disrupt or manipulate an MRB session should they have access to the above-mentioned session ID or replicate it somehow: for instance, a malicious entity could modify an existing session between an Application Server and the MRB, e.g., requesting less resources than originally requested to cause media dialogs to be rejected by the Application Server, or requesting many more resources instead to try and lock as many of (if not all) the resources an MRB can provide, thus making them unavailable to other legitimate Application Servers in subsequent requests. In order to prevent this, it is strongly advised that MRB implementations generate session identifiers that are very hard to

如第5.2节所定义和描述,消费者接口设想基于会话ID的事务。这些事务可以通过HTTP消息或SIP对话框传输。这意味着,如果恶意用户能够访问上述会话ID或以某种方式复制该会话ID,则他们可以中断或操纵MRB会话:例如,恶意实体可以修改应用程序服务器和MRB之间的现有会话,例如。,请求的资源少于最初请求的资源,以导致应用程序服务器拒绝媒体对话框,或者请求更多的资源来尝试锁定MRB可以提供的尽可能多(如果不是全部)的资源,从而使其他合法的应用程序服务器在后续请求中无法使用这些资源。为了防止这种情况,强烈建议MRB实现生成非常难以识别的会话标识符

replicate, in order to minimize the chances that malicious users could gain access to valid identifiers by just guessing or by means of brute-force attacks. It is very important, of course, to also secure the way that these identifiers are transported by the involved parties, in both requests and responses, in order to prevent network attackers from intercepting Consumer messages and having access to session IDs. The Consumer interface uses either the Hypertext Transfer Protocol (HTTP) or the Session Initiation Protocol (SIP) as the mechanism for clients to connect to an MRB to request media resources. In the case where HTTP is used, any binding using the Consumer interface MUST be capable of being transacted over Transport Layer Security (TLS), as described in RFC 2818 [RFC2818]. In the case where SIP is used, the same security considerations included in the Media Control Channel Framework specification apply here to protect interactions between a client requesting media resources and an MRB.

复制,以最大限度地减少恶意用户通过猜测或暴力攻击获取有效标识符的机会。当然,还必须确保相关方在请求和响应中传输这些标识符的方式安全,以防止网络攻击者截获消费者消息并访问会话ID。使用者接口使用超文本传输协议(HTTP)或会话启动协议(SIP)作为客户端连接到MRB以请求媒体资源的机制。在使用HTTP的情况下,任何使用使用者接口的绑定必须能够通过传输层安全性(TLS)进行交易,如RFC 2818[RFC2818]所述。在使用SIP的情况下,媒体控制通道框架规范中包含的相同安全注意事项适用于此处,以保护请求媒体资源的客户端与MRB之间的交互。

Should a valid session ID be compromised somehow (that is, intercepted or just guessed by a malicious user), as a further means to prevent disruption the Consumer interface also prescribes the use of a sequence number in its transactions. This sequence number is to be increased after each successful transaction, starting from a first value randomly generated by the MRB when the session is first created, and it must match in every request/response. While this adds complexity to the protocol (implementations must pay attention to those sequence numbers, since wrong values will cause "Wrong sequence number" errors and the failure of the related requests), it is an important added value for security. In fact, considering that different transactions related to the same session could be transported in different, unrelated HTTP messages (or SIP INVITEs in cases where the In-line mode is being used), this sequence number protection prevents the chances of session replication or disruption, especially in cases where the session ID has been compromised: that is, it should make it harder for malicious users to manipulate or remove a session for which they have obtained the session ID. It is strongly advised that the MRB doesn't choose 1 as the first sequence number for a new session but rather picks a random value to start from. The reaction to transactions that are out of sequence is left to MRB implementations: a related error code is available, but implementations may decide to enforce further limitations or actions upon the receipt of too many failed attempts in a row or of what looks like blatant attempts to guess what the current, valid sequence number is.

如果有效会话ID以某种方式被破坏(即被恶意用户截获或猜测),作为防止中断的进一步手段,使用者界面还规定在其事务中使用序列号。该序列号在每次成功交易后增加,从MRB首次创建会话时随机生成的第一个值开始,并且必须在每个请求/响应中匹配。虽然这增加了协议的复杂性(实现必须注意这些序列号,因为错误的值将导致“错误的序列号”错误和相关请求的失败),但它是一个重要的安全附加值。事实上,考虑到与同一会话相关的不同事务可以在不同的、不相关的HTTP消息中传输(或在使用串联模式的情况下使用SIP邀请),此序列号保护可防止会话复制或中断的机会,特别是在会话ID被泄露的情况下:也就是说,这会使恶意用户更难操纵或删除他们已获得会话ID的会话。强烈建议MRB不要选择1作为新会话的第一个序列号,而是选择一个随机值开始。对顺序错误的事务的反应留给MRB实现:相关的错误代码可用,但实现可能会决定在收到太多连续失败的尝试或看起来像是猜测当前有效序列号的公然尝试后实施进一步的限制或操作。

It is also worth noting that in In-line mode (both IAMM and IUMM) the MRB may act as a Back-to-Back User Agent (B2BUA). This means that when acting as a B2BUA the MRB may modify SIP bodies: it is the case, for instance, for the IAMM handling multipart/mixed payloads. This

还值得注意的是,在在线模式下(IAMM和IUMM),MRB可以充当背靠背用户代理(B2BUA)。这意味着,当充当B2BUA时,MRB可能会修改SIP主体:例如,IAMM处理多部分/混合有效载荷就是这种情况。这

impacts the ability to use any SIP security feature that protects the body (e.g., RFC 4474 [RFC4474], S/MIME, etc.), unless the MRB acts as a mediator for the security association. This should be taken into account when implementing an MRB compliant with this specification.

影响使用保护主体的任何SIP安全功能(例如RFC 4474[RFC4474],S/MIME等)的能力,除非MRB充当安全关联的中介。在实施符合本规范的MRB时,应考虑到这一点。

Both the Publishing interface and Consumer interface may address the location of a Media Server: the Publishing interface may be used to inform the MRB where a Media Server is located (approximately or precisely), and the Consumer interface may be used to ask for a Media Server located somewhere in a particular region (e.g., a conference bridge close to San Francisco). Both Media Server and MRB implementers need to take this into account when deciding whether or not to make this location information available, and if so how many bits of information really need to be made available for brokering purposes.

发布界面和消费者界面都可以确定媒体服务器的位置:发布界面可用于通知MRB媒体服务器的位置(大致或准确),消费者界面可用于请求位于特定区域某处的媒体服务器(例如,靠近旧金山的一座会议桥)。媒体服务器和MRB实施者在决定是否提供此位置信息时需要考虑到这一点,如果是的话,需要提供多少位信息用于中介目的。

It is worthwhile to cover authorization issues related to this specification. Neither the Publishing interface nor the Consumer interface provides an explicit means for implementing authentication, i.e., they do not contain specific protocol interactions to ensure that authorized Application Servers can make use of the services provided by an MRB instance. Considering that both interfaces are transported using well-established protocols (HTTP, SIP, CFW), support for such functionality can be expressed by means of the authentication mechanisms provided by the protocols themselves. Therefore, any MRB-aware entity (Application Servers, Media Servers, MRBs themselves) MUST support HTTP and SIP Digest access authentication. The usage of such Digest access authentications is recommended and not mandatory, which means MRB-aware entities MAY exploit it in deployment.

值得讨论与本规范相关的授权问题。发布接口和使用者接口都没有提供实现身份验证的明确方法,即它们不包含特定的协议交互,以确保授权应用程序服务器可以使用MRB实例提供的服务。考虑到两个接口都是使用成熟的协议(HTTP、SIP、CFW)传输的,因此可以通过协议本身提供的身份验证机制来表示对此类功能的支持。因此,任何支持MRB的实体(应用程序服务器、媒体服务器、MRB本身)都必须支持HTTP和SIP摘要访问认证。建议使用此类摘要访问身份验证,而不是强制使用,这意味着MRB感知实体可以在部署中利用它。

An MRB may want to enforce further constraints on the interactions between an Application Server/Media Server and an MRB. For example, it may choose to only accept requests associated with a specific session ID from the IP address that originated the first request or may just make use of pre-shared certificates to assess the identity of legitimate Application Servers and/or Media Servers.

MRB可能希望对应用服务器/媒体服务器与MRB之间的交互实施进一步的约束。例如,它可以选择仅从发起第一个请求的IP地址接受与特定会话ID相关联的请求,或者可以仅使用预共享证书来评估合法应用服务器和/或媒体服务器的身份。

13. IANA Considerations
13. IANA考虑

There are several IANA considerations associated with this specification.

与本规范相关的IANA注意事项有几个。

13.1. Media Control Channel Framework Package Registration
13.1. 媒体控制通道框架包注册

This section registers a new Media Control Channel Framework package, per the instructions in Section 13.1 of [RFC6230].

根据[RFC6230]第13.1节中的说明,本节注册了一个新的媒体控制通道框架包。

Package Name: mrb-publish/1.0

包名称:mrb发布/1.0

Published Specification(s): RFC 6917

已发布规范:RFC 6917

Person and email address to contact for further information: IETF MediaCtrl working group (mediactrl@ietf.org), Chris Boulton (chris@ns-technologies.com).

联系人和电子邮件地址以获取更多信息:IETF MediaCtrl工作组(mediactrl@ietf.org),克里斯·博尔顿(chris@ns-(www.technologies.com)。

13.2. application/mrb-publish+xml Media Type
13.2. 应用程序/mrb发布+xml媒体类型

To: application

收件人:申请

   Subject:  Registration of media type application/mrb-publish+xml
        
   Subject:  Registration of media type application/mrb-publish+xml
        

Type name: application

类型名称:应用程序

Subtype name: mrb-publish+xml

子类型名称:mrb publish+xml

Required parameters: none

所需参数:无

Optional parameters: Same as charset parameter of application/xml as specified in RFC 3023 [RFC3023].

可选参数:与RFC 3023[RFC3023]中指定的application/xml的字符集参数相同。

Encoding considerations: Same as encoding considerations of application/xml as specified in RFC 3023 [RFC3023].

编码注意事项:与RFC 3023[RFC3023]中指定的应用程序/xml的编码注意事项相同。

Security considerations: See Section 10 of RFC 3023 [RFC3023] and Section 12 of RFC 6917.

安全注意事项:参见RFC 3023[RFC3023]第10节和RFC 6917第12节。

Interoperability considerations: none.

互操作性考虑:无。

Published specification: Section 10 of RFC 6917.

已发布规范:RFC 6917第10节。

Applications that use this media type: This media type is used to support a Media Resource Broker (MRB) entity.

使用此媒体类型的应用程序:此媒体类型用于支持媒体资源代理(MRB)实体。

Additional Information:

其他信息:

Magic Number: None

神奇数字:无

File Extension: .xdf

文件扩展名:.xdf

Macintosh file type code: "TEXT"

Macintosh文件类型代码:“文本”

Person and email address to contact for further information: Chris Boulton (chris@ns-technologies.com).

联系人和电子邮件地址以获取更多信息:Chris Boulton(chris@ns-(www.technologies.com)。

Intended usage: COMMON

预期用途:普通

Author/Change controller: The IETF.

作者/变更控制者:IETF。

13.3. application/mrb-consumer+xml Media Type
13.3. 应用程序/mrb使用者+xml媒体类型

To: application

收件人:申请

   Subject:  Registration of media type application/mrb-consumer+xml
        
   Subject:  Registration of media type application/mrb-consumer+xml
        

Type name: application

类型名称:应用程序

Subtype name: mrb-consumer+xml

子类型名称:mrb consumer+xml

Mandatory parameters: none

强制参数:无

Optional parameters: Same as charset parameter of application/xml as specified in RFC 3023 [RFC3023].

可选参数:与RFC 3023[RFC3023]中指定的application/xml的字符集参数相同。

Encoding considerations: Same as encoding considerations of application/xml as specified in RFC 3023 [RFC3023].

编码注意事项:与RFC 3023[RFC3023]中指定的应用程序/xml的编码注意事项相同。

Security considerations: See Section 10 of RFC 3023 [RFC3023] and Section 12 of RFC 6917.

安全注意事项:参见RFC 3023[RFC3023]第10节和RFC 6917第12节。

Interoperability considerations: none.

互操作性考虑:无。

Published specification: Section 11 of RFC 6917.

已发布规范:RFC 6917第11节。

Applications that use this media type: This media type is used to support a Media Resource Broker (MRB) entity.

使用此媒体类型的应用程序:此媒体类型用于支持媒体资源代理(MRB)实体。

Additional Information:

其他信息:

Magic Number: None

神奇数字:无

File Extension: .xdf

文件扩展名:.xdf

Macintosh file type code: "TEXT"

Macintosh文件类型代码:“文本”

Person and email address to contact for further information: Chris Boulton (chris@ns-technologies.com).

联系人和电子邮件地址以获取更多信息:Chris Boulton(chris@ns-(www.technologies.com)。

Intended usage: COMMON

预期用途:普通

Author/Change controller: The IETF.

作者/变更控制者:IETF。

13.4. URN Sub-Namespace Registration for mrb-publish
13.4. mrb发布的URN子命名空间注册

IANA has registered the URN "urn:ietf:params:xml:ns:mrb-publish", with the ID of "mrb-publish". The schema of the XML namespace named urn:ietf:params:xml:ns:mrb-publish is in Section 10.

IANA已注册URN“URN:ietf:params:xml:ns:mrb publish”,ID为“mrb publish”。第10节介绍了名为urn:ietf:params:XML:ns:mrb publish的XML名称空间的模式。

13.5. URN Sub-Namespace Registration for mrb-consumer
13.5. mrb使用者的URN子命名空间注册

IANA has registered the URN "urn:ietf:params:xml:ns:mrb-consumer", with the ID of "mrb-consumer". The schema of the XML namespace named urn:ietf:params:xml:ns:mrb-consumer is in Section 11.

IANA已注册URN“URN:ietf:params:xml:ns:mrb consumer”,ID为“mrb consumer”。名为urn:ietf:params:XML:ns:mrb consumer的XML命名空间的模式在第11节中。

13.6. XML Schema Registration for mrb-publish
13.6. mrb发布的XML模式注册

IANA has registered the schema for mrb-publish:

IANA已注册mrb发布的架构:

   URI:  urn:ietf:params:xml:schema:mrb-publish
        
   URI:  urn:ietf:params:xml:schema:mrb-publish
        

ID: mrb-publish

ID:mrb发布

Filename: mrb-publish

文件名:mrb发布

Registrant Contact: IETF MediaCtrl working group (mediactrl@ietf.org)

注册人联系人:IETF MediaCtrl工作组(mediactrl@ietf.org)

Schema: The XML for the schema is in Section 10 of this document.

模式:模式的XML在本文档的第10节中。

13.7. XML Schema Registration for mrb-consumer
13.7. mrb使用者的XML模式注册

Please register the schema for mrb-consumer:

请为mrb使用者注册架构:

   URI:  urn:ietf:params:xml:schema:mrb-consumer
        
   URI:  urn:ietf:params:xml:schema:mrb-consumer
        

ID: mrb-consumer

ID:mrb消费者

Filename: mrb-consumer

文件名:mrb消费者

Registrant Contact: IETF MediaCtrl working group (mediactrl@ietf.org)

注册人联系人:IETF MediaCtrl工作组(mediactrl@ietf.org)

Schema: The XML for the schema is in Section 11 of this document.

模式:模式的XML在本文档的第11节中。

14. Acknowledgements
14. 致谢

The authors would like to thank the members of the Publish Interface design team, who provided valuable input into this document. The design team consisted of Adnan Saleem, Michael Trank, Victor Paulsamy, Martin Dolly, and Scott McGlashan. The authors would also like to thank John Dally, Bob Epley, Simon Romano, Henry Lum, Christian Groves, and Jonathan Lennox for input into this specification.

作者要感谢发布界面设计团队的成员,他们为本文档提供了宝贵的输入。设计团队由阿德南·萨利姆、迈克尔·特兰克、维克多·保萨米、马丁·多利和斯科特·麦克拉桑组成。作者还要感谢John Dally、Bob Epley、Simon Romano、Henry Lum、Christian Groves和Jonathan Lennox对本规范的投入。

Ben Campbell carried out the RAI expert review on an early version of this specification and provided a great deal of invaluable input.

Ben Campbell对本规范的早期版本进行了RAI专家评审,并提供了大量宝贵的意见。

15. References
15. 工具书类
15.1. Normative References
15.1. 规范性引用文件

[ISO.10646.2012] International Organization for Standardization, "Information technology -- Universal Coded Character Set (UCS)", ISO Standard 10646, 2012.

[ISO.10646.2012]国际标准化组织,“信息技术——通用编码字符集(UCS)”,ISO标准106462012。

[ISO.3166-1] International Organization for Standardization, "Codes for the representation of names of countries and their subdivisions - Part 1: Country codes", ISO Standard 3166-1:2006, 2006.

[ISO.3166-1]国际标准化组织,“国家及其分支机构名称表示代码-第1部分:国家代码”,ISO标准3166-1:2006,2006年。

[ISO.639.2002] International Organization for Standardization, "Codes for the representation of names of languages -- Part 1: Alpha-2 code", ISO Standard 639, 2002.

[ISO.639.2002]国际标准化组织,“语言名称表示代码——第1部分:Alpha-2代码”,ISO标准6392002。

[ITU-T.Q.1950] International Telecommunication Union, "Bearer independent call bearer control protocol", ITU-T Recommendation Q.1950, December 2002.

[ITU-T.Q.1950]国际电信联盟,“承载独立呼叫承载控制协议”,ITU-T建议Q.1950,2002年12月。

[RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", RFC 2046, November 1996.

[RFC2046]Freed,N.和N.Borenstein,“多用途Internet邮件扩展(MIME)第二部分:媒体类型”,RFC 20461996年11月。

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。

[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.

[RFC2616]菲尔丁,R.,盖蒂斯,J.,莫卧儿,J.,弗莱斯蒂克,H.,马斯特,L.,利奇,P.,和T.伯纳斯李,“超文本传输协议——HTTP/1.1”,RFC 2616,1999年6月。

[RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML Media Types", RFC 3023, January 2001.

[RFC3023]Murata,M.,St.Laurent,S.,和D.Kohn,“XML媒体类型”,RFC 3023,2001年1月。

[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, June 2002.

[RFC3261]Rosenberg,J.,Schulzrinne,H.,Camarillo,G.,Johnston,A.,Peterson,J.,Sparks,R.,Handley,M.,和E.Schooler,“SIP:会话启动协议”,RFC 3261,2002年6月。

[RFC3311] Rosenberg, J., "The Session Initiation Protocol (SIP) UPDATE Method", RFC 3311, October 2002.

[RFC3311]Rosenberg,J.,“会话启动协议(SIP)更新方法”,RFC3311,2002年10月。

[RFC3711] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. Norrman, "The Secure Real-time Transport Protocol (SRTP)", RFC 3711, March 2004.

[RFC3711]Baugher,M.,McGrew,D.,Naslund,M.,Carrara,E.,和K.Norrman,“安全实时传输协议(SRTP)”,RFC 37112004年3月。

[RFC5139] Thomson, M. and J. Winterbottom, "Revised Civic Location Format for Presence Information Data Format Location Object (PIDF-LO)", RFC 5139, February 2008.

[RFC5139]Thomson,M.和J.Winterbottom,“状态信息数据格式位置对象(PIDF-LO)的修订公民位置格式”,RFC 5139,2008年2月。

[RFC5763] Fischl, J., Tschofenig, H., and E. Rescorla, "Framework for Establishing a Secure Real-time Transport Protocol (SRTP) Security Context Using Datagram Transport Layer Security (DTLS)", RFC 5763, May 2010.

[RFC5763]Fischl,J.,Tschofenig,H.,和E.Rescorla,“使用数据报传输层安全性(DTLS)建立安全实时传输协议(SRTP)安全上下文的框架”,RFC 5763,2010年5月。

[W3C.REC-xmlschema-1-20041028] Thompson, H., Beech, D., Maloney, M., and N. Mendelsohn, "XML Schema Part 1: Structures Second Edition", World Wide Web Consortium Recommendation REC-xmlschema-1-20041028, October 2004, <http://www.w3.org/TR/2004/REC-xmlschema-1-20041028>.

[W3C.REC-xmlschema-1-20041028]Thompson,H.,Beech,D.,Maloney,M.,和N.Mendelsohn,“XML模式第1部分:结构第二版”,万维网联盟建议REC-xmlschema-1-20041028,2004年10月<http://www.w3.org/TR/2004/REC-xmlschema-1-20041028>.

[W3C.REC-xmlschema-2-20041028] Biron, P. and A. Malhotra, "XML Schema Part 2: Datatypes Second Edition", World Wide Web Consortium Recommendation REC-xmlschema-2-20041028, October 2004, <http://www.w3.org/TR/2004/REC-xmlschema-2-20041028>.

[W3C.REC-xmlschema-2-20041028]Biron,P.和A.Malhotra,“XML模式第2部分:数据类型第二版”,万维网联盟建议REC-xmlschema-2-20041028,2004年10月<http://www.w3.org/TR/2004/REC-xmlschema-2-20041028>.

15.2. Informative References
15.2. 资料性引用

[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.

[RFC2818]Rescorla,E.,“TLS上的HTTP”,RFC2818,2000年5月。

[RFC4240] Burger, E., Van Dyke, J., and A. Spitzer, "Basic Network Media Services with SIP", RFC 4240, December 2005.

[RFC4240]Burger,E.,Van Dyke,J.,和A.Spitzer,“具有SIP的基本网络媒体服务”,RFC 42402005年12月。

[RFC4474] Peterson, J. and C. Jennings, "Enhancements for Authenticated Identity Management in the Session Initiation Protocol (SIP)", RFC 4474, August 2006.

[RFC4474]Peterson,J.和C.Jennings,“会话启动协议(SIP)中身份验证管理的增强”,RFC 4474,2006年8月。

[RFC4733] Schulzrinne, H. and T. Taylor, "RTP Payload for DTMF Digits, Telephony Tones, and Telephony Signals", RFC 4733, December 2006.

[RFC4733]Schulzrinne,H.和T.Taylor,“DTMF数字、电话音和电话信号的RTP有效载荷”,RFC 47332006年12月。

[RFC5022] Van Dyke, J., Burger, E., and A. Spitzer, "Media Server Control Markup Language (MSCML) and Protocol", RFC 5022, September 2007.

[RFC5022]Van Dyke,J.,Burger,E.,和A.Spitzer,“媒体服务器控制标记语言(MSCML)和协议”,RFC 5022,2007年9月。

[RFC5167] Dolly, M. and R. Even, "Media Server Control Protocol Requirements", RFC 5167, March 2008.

[RFC5167]Dolly,M.和R.Een,“媒体服务器控制协议要求”,RFC 51672008年3月。

[RFC5552] Burke, D. and M. Scott, "SIP Interface to VoiceXML Media Services", RFC 5552, May 2009.

[RFC5552]Burke,D.和M.Scott,“VoiceXML媒体服务的SIP接口”,RFC55552,2009年5月。

[RFC5567] Melanchuk, T., "An Architectural Framework for Media Server Control", RFC 5567, June 2009.

[RFC5567]Melanchuk,T.,“媒体服务器控制的体系结构框架”,RFC5567,2009年6月。

[RFC5707] Saleem, A., Xin, Y., and G. Sharratt, "Media Server Markup Language (MSML)", RFC 5707, February 2010.

[RFC5707]Saleem,A.,Xin,Y.,和G.Sharratt,“媒体服务器标记语言(MSML)”,RFC 57072010年2月。

[RFC6230] Boulton, C., Melanchuk, T., and S. McGlashan, "Media Control Channel Framework", RFC 6230, May 2011.

[RFC6230]Boulton,C.,Melanchuk,T.,和S.McGrashan,“媒体控制渠道框架”,RFC 6230,2011年5月。

[RFC6231] McGlashan, S., Melanchuk, T., and C. Boulton, "An Interactive Voice Response (IVR) Control Package for the Media Control Channel Framework", RFC 6231, May 2011.

[RFC6231]McGrashan,S.,Melanchuk,T.,和C.Boulton,“媒体控制频道框架的交互式语音应答(IVR)控制包”,RFC 62312011年5月。

[RFC6381] Gellens, R., Singer, D., and P. Frojdh, "The 'Codecs' and 'Profiles' Parameters for "Bucket" Media Types", RFC 6381, August 2011.

[RFC6381]Gellens,R.,Singer,D.,和P.Frojdh,“桶”媒体类型的“编解码器”和“配置文件”参数”,RFC 63812011年8月。

[RFC6501] Novo, O., Camarillo, G., Morgan, D., and J. Urpalainen, "Conference Information Data Model for Centralized Conferencing (XCON)", RFC 6501, March 2012.

[RFC6501]Novo,O.,Camarillo,G.,Morgan,D.,和J.Urpalainen,“集中会议的会议信息数据模型(XCON)”,RFC 65012012年3月。

[RFC6505] McGlashan, S., Melanchuk, T., and C. Boulton, "A Mixer Control Package for the Media Control Channel Framework", RFC 6505, March 2012.

[RFC6505]McGlashan,S.,Melanchuk,T.,和C.Boulton,“媒体控制频道框架的混音控制包”,RFC 65052012年3月。

Authors' Addresses

作者地址

Chris Boulton NS-Technologies

克里斯·博尔顿技术公司

   EMail: chris@ns-technologies.com
        
   EMail: chris@ns-technologies.com
        

Lorenzo Miniero Meetecho Via Carlo Poerio 89 Napoli 80100 Italy

Lorenzo Miniero Meetecho Via Carlo Poerio 89那不勒斯80100意大利

   EMail: lorenzo@meetecho.com
        
   EMail: lorenzo@meetecho.com
        

Gary Munson AT&T 200 Laurel Avenue South Middletown, New Jersey 07748 USA

美国新泽西州南米德尔顿市劳雷尔大道200号加里·蒙森电话电报公司,邮编:07748

   EMail: gamunson@gmail.com
        
   EMail: gamunson@gmail.com