CN103098023A - 用于通话控制和媒体控制的统一框架和方法 - Google Patents

用于通话控制和媒体控制的统一框架和方法 Download PDF

Info

Publication number
CN103098023A
CN103098023A CN2011800290600A CN201180029060A CN103098023A CN 103098023 A CN103098023 A CN 103098023A CN 2011800290600 A CN2011800290600 A CN 2011800290600A CN 201180029060 A CN201180029060 A CN 201180029060A CN 103098023 A CN103098023 A CN 103098023A
Authority
CN
China
Prior art keywords
unified
event
media
application
api
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011800290600A
Other languages
English (en)
Other versions
CN103098023B (zh
Inventor
陈为
刘志雨
祝效普
何塞·玛丽亚·小德卡斯特罗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cisco Technology Inc
Vihana Inc
Original Assignee
Voxeo Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Voxeo Corp filed Critical Voxeo Corp
Publication of CN103098023A publication Critical patent/CN103098023A/zh
Application granted granted Critical
Publication of CN103098023B publication Critical patent/CN103098023B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • H04L65/1104Session initiation protocol [SIP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Telephonic Communication Services (AREA)

Abstract

一种通信系统和方法,包括在Java虚拟机内主持交互式语音应答或自助式应用的服务器。通信应用采用由统一应用框架提供的统一通信API编程。API提供一组统一的类对象用于通话控制和媒体控制。统一的类对象由基于标准的独立Java通话控制API和媒体控制API中的类对象基元构成。结构体是一种符合应用及其状态的对象模型的结构化和限制性集合。API具有用于通话控制和媒体控制的统一事件处理器并且根据事件类型和对象模型的应用状态向应用分配事件。

Description

用于通话控制和媒体控制的统一框架和方法
技术领域
本发明涉及远程通信和网络计算机电话系统,包括互联网和公共交换电话系统,并且更具体地涉及一种用于实现供通话控制和媒体控制使用的统一框架的系统和方法。
背景技术
世界范围内已经发展出两种主要的远程通信网络。第一种是形式为公共交换电话系统(PSTN)的电话系统网络。该网络最初被设计用于传送语音通信,不过随后也适用于传输数据。第二种是形式为互联网的计算机系统网络。互联网不但被设计用于传送数据,而且正越来越多地被用于传输语音和多媒体信息。计算机实现的电话应用已经被集成到这两种远程通信网络中以提供更好的通信服务。例如在PSTN上,计算机电话集成已经为POTS(普通老式电话服务)提供了更多的功能和控制。在互联网上,计算机自身就是用于语音通信的终端设备并且还用作供终端设备的主机使用的智能路由器和控制器。
互联网是根据TCP/IP(传输控制协议/互联网协议)套件通信的IP网络全球通信网。具体地,语音和其他多媒体信息根据VoIP(互联网语音传输)协议在互联网上传输。
PSTN和IP网络的集成通过利用IP网络固有的路由灵活性和计算可达性而允许在自动化语音应用方面有更多便利。
美国专利US6922411中介绍了一种用于简单配置电话应用的示例性平台,通过引用将其全部公开内容并入本文。实际上,网络电话系统允许用户配置与指定电话号码相关联的互联网计算机电话应用。电话应用很容易由用户在XML(扩展标记语言)中用预定义的电话XML标签(例如VoiceXML)创建并且易于在网站上配置。电话XML标签包括用于通话控制和媒体控制的内容。用于这些指定电话号码中任何一个的通话都可以源于任何一种网络电话系统例如PSTN(公共交换电话系统)、无线网络或互联网。通话由互联网上安装的应用网关中心(AGC)接收。类似于网络浏览器,AGC提供设备以用于从其网站中检索相关的XML应用并相应地处理通话。
这种类型的电话平台允许在互联网上构建和配置非常强大而又简单的电话应用。以下是在这种平台上配置的电话应用的一些示例。“跟踪/发现(Follow me,find me)”应用相继呼叫由用户指明的一系列电话号码,直到其中一个号码应答并随后连接该通话为止。否则,它就做一些别的事例如收取信息或发送电子邮件或者向呼叫中心发送呼叫等。在另一个示例中,电话调查应用查询待调查人口的电话号码数据库。然后仅受所支持的并行对话最大数量限制地并行呼叫多个号码,然后响应于被呼叫方的应答播放一系列交互式语音提示/信息并在数据库中记录结果等。在另一个示例中,帮助台(Help Desk)应用响应于被呼叫方的应答播放一系列交互式语音提示/信息并且可以将连接与在线客服通话作为一种选择等。在又一个示例中,股市或银行交易应用响应于被呼叫方的应答播放一系列交互式语音提示/信息并且利用后端数据库或网络应用来进行合适的交易等。
后面的示例通常称为自助式应用。在语音领域,自助式应用被称为IVR。IVR涉及交互式语音应答并且是一种与电话呼叫方自动交互的技术。企业正越来越多地转至IVR以降低常规的销售、服务、催收催缴、查询和支持其公司往来呼叫的成本。
IVR解决方案使用户能够从任意的电话中通过音频信道将语音用作媒体内容或其他形式的输入以检索包括银行结存、航班时刻表、产品细节、订单状态、电影上映时间与更多内容的信息。另外,IVR解决方案正越来越多地用于设置呼出电话以输送或收集关于预约、过期账单以及其他时间关键性事件和活动的信息。
图1示意性地示出了通信应用环境。通信应用环境10包括与应用平台100内的通信应用服务器200交互的一个或多个客户端。应用平台100主持由以面向对象软件编写的应用脚本210指明的应用。通信应用服务器200包括用于解读并执行应用脚本210的浏览器220。应用脚本的执行调用应用服务器200内的一个或多个服务器端组件。在客户端和通信服务器中,这些组件310提供的服务用于通话控制、与一个或多个媒体服务器230之间的媒体控制还有与后端系统240例如数据库以及业务逻辑和遗留系统例如CRM(客户关系管理)和ERP(企业资源管理)的交互。该平台的一个示例是主持一种在多信道环境中用语音、文本信息和其他客户端交互的IVR应用。
通信应用平台在任意数量的客户端20,22,30之间提供了第三方通话控制。应用脚本210定义了通信应用300并且指导如何处理通话。例如,当用户通过语音客户端例如电话听筒20或VoIP电话22向IVR发起呼叫时,检索与呼叫号码相关联的语音应用脚本210。浏览器220执行或提供检索到的语音应用脚本以允许用户与语音应用300交互。
终端和第三方通话控制器之间的多媒体信息通信通常都需要通话控制和媒体控制。
图2A至图2C示出了多个客户端例如VoIP电话22或终端与通信应用服务器200中的各种通话场景。
图2A示出了VoIP电话形式的客户端呼叫通信应用服务器。例如,通信应用服务器200主持IVR并且VoIP电话22呼叫IVR。呼叫信号和媒体内容在VoIP电话22和应用服务器200之间交换。
图2B示出了第一VoIP电话呼叫第二VoIP电话。作为第三方通话控制器,应用服务器200控制第一和第二电话之间的通话。在第一电话22-1和应用服务器200之间建立起一个通话连接。在第二电话22-2和应用服务器200之间建立起另一个通话连接。两个电话随后连接在应用服务器上以允许第一电话与第二电话通话。在此场景中,媒体内容可以用两种模式中的一种进行处理。在桥接模式下,两部电话之间交换的媒体内容通过应用服务器路由。在直连模式下,媒体内容在两部电话之间直接交换。
图2C示出了处于会议中的三部电话。在此场景中,每一部电话都建立起接至应用服务器的通话。三路通话随后在应用服务器连接或混合以提供会议功能。
对于通话控制,已经提出了用于互通性的多种协议标准。例如,H.323标准是一种由ITU(国际电信联盟)推荐的用于IP技术的信号传输和通话控制的协议标准。
一种越来越普及的替代H.323用于通话控制的标准是SIP(“会话发起协议”)。SIP是一种IETF(互联网工程任务组)协议,用于IP电话的信号传输和通话控制以及两台或多台终端之间的多媒体通信。这种协议基于文本并且更加以网络为中心,因此是一种相对简单和更加轻量级的替代H.323的协议。
在传统的网络范例中,形式为运行网络浏览器的客户机的用户主体向网络服务器发出请求。网络服务器返回对请求的响应。通信根据HTTP(超文本传输协议)进行。具体地,网络浏览器请求网络资源例如由来自网络服务器的网址明确的网页。通常网络服务器通过返回请求的网页做出响应。网页可以包含文本内容以及用于浏览器以在网页中显示出文本的嵌入指令。在更为复杂的应用中,网页经常通过使用服务器端程序动态生成并且可以加入例如来自后端数据库的查询结果等内容。因此,部分内容并非硬编码在网页上而是由网络服务器动态地生成和显示。服务器端程序也可以用于将数据从客户端发送至后端数据库。
通常,这些服务器端程序被实现为符合CGI(通用网关接口)协议的脚本。CGI是在网络服务器上执行任务以生成并显示动态内容或者执行其他后端功能的代码模块。
但是,CGI具有若干缺点。首先,CGI的移植性不太好,原因在于不同的网络服务机器具有不同的处理器和操作系统,可能需要它们自用版本的脚本。其次,CGI不能有效地利用服务器的资源。不同的CGI在与起动它们的服务器不同的进程关联中运行。对于每一个请求都有创建一个新进程的开销,并且不同的进程无法访问服务器资源中的公共集。
JAVATM服务器端应用程序(servlet)模型解决了CGI的这些缺点。Servlet是用高度可移植性的JAVATM编程语言编写的模块,由于它们是在相同的JAVA虚拟机中运行,因此独立于处理器的硬件或者操作系统。在面向对象的Java编程语言中,分析HTTP请求并使之与软件对象交互,软件对象根据由应用操作的实际对象建模。类似地,生成符合HTTP协议的响应并随后发往请求者。Servlet运行在Java服务器的多线程环境中并且允许通过单独的tread类来处理每一个请求。与并发请求需要载入多份CGI脚本副本的CGI相比,还有一种Java脚本的范例则需要载入到处理器内存中。原始Servlet符合HTTP协议并且可以被视为“HTTP servlet”。Servlet模型提供了通过在应用服务器内载入对应的servlet容器而实现的一组API(应用程序设计接口)。Servlet模型使开发人员能够快速开发应用并且将其移植到不同的服务器并能够高效运行。Servlet模型在网络应用中广泛使用并且以开放性的标准为基础。
API是描述一种用于与组件所用函数组交互的接口的抽象。它是一种包含库内所包括函数组的描述并且解决特定问题的列表。在当前Java面向对象语言的语境中,API包括一组Java类定义以及扩展类定义的描述,扩展类定义具有与类相关联的一组行为。API可以被认为是通过类(类接口)公开的所有方法的全集。这就意味着API规定了用于处理由类定义得出的对象的方法。
对于通话控制,SIP servlet已经被开发并确立为用于根据SIP协议处理请求的标准,正如HTTP servlet根据HTTP协议处理请求一样。
图3A示出了图1所示通信应用中服务器端组件的通话控制对象实现为SIP servlet的现有实施方式。通话控制对象的形式为SIP servlet 320。这一点通过实现SIP servlet容器340和SIP servlet通话控制API 350而可行。
SIP Servlet Specification(JSR 289)是一种基于容器的方法(根据HTTP servlet范例建模)以利用会话发起协议(SIP)开发通信应用。SIPservlet是一种执行SIP信号传输的Java编程语言的服务器端组件。SIPservlet由SIP servlet容器管理,其通常是实现SIP的应用服务器的一部分。SIP servlet通过响应输入的SIP请求并返回对应的SIP响应而与客户端交互。SIP servlet由Java Servlet Specification提供的通用servletAPI构建,Java Servlet Specification是一种由Java CommunityProcess(SM)程序通过Java Specification Request(JSR)过程建立的开放性标准。
将SIP servlet(JSR 289)用于通话控制以发挥servlet模型的优势。还提供了独立于底层媒体服务器控制协议的Java API。
美国专利US7865607B2公开了一种用于富媒体应用的servlet模型。用于通话控制的SIP servlet通过媒体控制API扩充。但是,媒体控制API是定制的,而且并不符合servlet模型。
对于媒体控制,媒体控制对象如图3A所示由基于标准的媒体控制API,JSR 309支持。因此,媒体服务器的细节由JSR 309驱动器处理,允许应用开发人员独立于媒体服务器的供应商利用JSR 390的API编程。用这种方式,应用程序就能够与由不同操作人员和服务供应商配置的不同媒体服务器一起工作。
因此,应用开发人员就能根据开放性标准JSR 289在底层通话控制对象和API方面开发出形式为SIP Servlet的通信应用组件,并且在底层媒体控制对象和API方面开发出形式为开放性标准JSR 309的通信应用组件。
利用底层和通用对象及其API工作的一种缺点是开发人员必须重复性地处理底层的细节,即使是这些细节在建模对象处于某些状态时无关紧要也仍然如此。
图3B示出了现有的应用实施方式为何必须根据图3A中所示的标准通话控制和媒体控制API处理每一个事件。例如,SIP servlet接收到再见(BYE)请求以结束通话。它检查现在所处的状态以相应地采取动作。在仍处于“连通(CONNECTED)”状态时,调用doBYE方法以终止连接并执行相关的通话切断和清理任务。但是,用户即使在通话连接建立之前也可能会决定终止呼叫。在此情况下甚至并未处于“CONNECTED”状态,并且因此根据状态无需servlet接收BYE请求并执行任何通话切断任务。尽管如此,在当前的实施方式中,每一次接收到BYE请求,servlet仍然必须对其状态进行检查并相应地采取动作。因此而增加的检查和处理无关请求的负担就变成了应用代码的一部分。这一点对于媒体事件同样成立,并且应用程序必须提供逻辑和附加代码来处理可能无法应用于当前状态的事件。
希望研发出一种应用程序不必处理与当前处理的对象模型无关的细节。而且,希望获得一种系统和一致的处理通话控制和媒体控制事件的方法,不必处理它们在应用中的底层细节从而获得简洁和高效的代码。
发明内容
根据本发明的一种主要应用,一种通信系统包括在Java虚拟机中主持通信应用的服务器。通信应用采用统一的通信API编程。统一的通信API是一种在基于标准的通话控制API和基于标准的媒体控制API上层的统一通信框架层。统一的通信API提供对用于应用对象模型的统一类对象的访问。统一的类对象由独立的通话控制API和媒体控制API中的基元类对象构成。
根据本发明的一种应用,统一的类对象包括事件源对象,它以统一的方式处理通话控制API和媒体控制API中通常独立的事件。具体地,事件源对象仅根据事件类型和应用状态向应用分配与应用的对象模型相符的事件。
用这种方式,应用可以通过将Java类对象加工为应用的对象模型而方便地构建,其中类对象以基于标准的API中的基元Java类对象为基础。与此同时,由于能够集中在业务逻辑上而不必处理基元类对象中的底层细节,因此应用编程得以简化。
本发明的更多目标、特征和优点将根据以下对其优选实施例的说明而得到理解,这些说明内容应该与附图相结合。
附图简要说明
图1示意性地示出了通信应用环境。
图2A示出了呼叫通信应用服务器的VoIP电话形式的客户端。
图2B示出了呼叫第二VoIP电话的第一VoIP电话。
图2C示出了处于会议中的三部电话。
图3A示出了图1所示通信应用中实现为SIP servlet的服务器端组件的通话控制对象。
图3B示出了应用为何必须根据图3A中所示的标准通话控制和媒体控制API处理每一个事件。
图4示意性地示出了统一通信框架的常用实施方式。
图5示出了用于编程通信应用的统一通信框架的实施方式,其中通信服务器类似于图1和图2A-2C中所示用作第三方的通话控制和媒体控制。
图6示出了通过统一通信框架中的应用有效处理事件的示例。
图7以UML(统一建模语言)示意图示出了应用对象。
图8以UML示意图示出了通话对象。
图9以UML示意图示出了会议对象。
图10以UML示意图示出了媒体服务对象。
图11以UML示意图示出了事件源对象。
图12示出了统一通信框架的优选实施方式中的各种类。
用于通话控制和媒体控制的统一框架
根据本发明的一种主要应用,一种通信系统包括主持通信应用的服务器。通信应用采用统一的通信API编程。统一的通信API是一种在基于标准的通话控制API和基于标准的媒体控制API上层的统一通信框架层。统一的通信API提供对由独立的通话控制API和媒体控制API中的基元对象构成的统一对象的访问。
软件框架在计算机编程中是一种抽象,其中提供一般性功能的通用代码可以由提供专用功能的用户代码选择性地专用。框架是软件库的一种特殊情形,原因在于它们是包装在精确定义的API中的可重复使用的抽象代码,然而它们包含一些使其不同于普通库的关键区别特征。在此情况下,统一的通信API表示从基元通话控制和媒体控制API得出的进一步抽象,其更加接近地建模由应用解决的实际情况。
更高层对象模型的抽象通过允许设计和编程人员将他们的时间投入到满足软件要求而不是处理更多的提供工作系统的标准底层细节而有助于软件开发,由此缩短总体的开发时间。
图4示意性地示出了统一通信框架的常用实施方式。统一的调用控制和媒体控制API 420在统一的通信框架400中提供。统一的API 420定义了一组类对象422(统一的通信对象),这是对象模型更高层次的抽象。统一的通信对象422是由底层通话控制API 350和媒体控制API 360定义的基元对象的更高层结构。因此,应用组件不再是通过操作基元对象构建,而是通过统一通信对象中的内容来构建。
图5示出了用于编程通信应用的统一通信框架的实施方式,其中通信服务器类似于图1和图2A-2C中所示用作第三方的通话控制和媒体控制。它通过提供用于通话和媒体控制的统一模型同时仍然给出对底层JSR 289/309API的直接访问而在SIP Servlet(JSR 289)API 350和Java媒体控制(JSR309)API 360的基础上构建。但是,对象模型足够通用以允许在其他协议例如Jingle和其他类型的通信例如即时通信的顶层实现。统一的通信框架提供了统一的框架API 420,其中包括一组统一的通信对象类。通信应用可以在处理这些统一通信对象类以及JSR 289和JSR 309的API中的基元对象类方面进行编码。这些统一通信对象的示例有通话(Call)440、混合器(Mixer)442、媒体服务(MediaService)446、事件源(EventSource)430、SIPServlet 320、媒体事件监听器(MediaEventListener)332、观测器(observer)450等。
用统一通信框架建立应用的优点在于应用是由更加专用于所述应用的高层对象构建。通话控制和媒体控制事件被关联至这些高层对象的具体行为,结果就是以更加系统和一致的方式处理这些事件而不必让应用去处理底层的细节。用这种方式就对应用开发人员屏蔽了与对象模型无关的底层细节,并且应用的代码更加简洁和高效。
图6示出了通过统一通信框架中的应用有效处理事件的示例。统一的事件处理由统一事件源对象430和观测器对象450实现。统一事件源对象EventSource 430将所有的通话控制事件和媒体控制事件串行化以使监听事件源的应用组件每次只需处理一个事件。应用300加入观测器对象450以监听来自统一事件源对象430的事件。观测器对象450定义的事件处理方法只有单个单数并且其类型是由统一事件源对象430产生的事件类型。事件处理方法确定由统一应用框架定义的
Figure BPA00001656723800091
(状态)注释。统一事件源对象430在事件类型匹配事件处理方法中定义的单个单数类型或者是单个参数类型的父类型时向事件处理方法分配事件。如果
Figure BPA00001656723800092
注释的值不为空,那么统一事件源对象仅在
Figure BPA00001656723800101
注释的值匹配统一事件源对象的状态性质时才向事件处理方法分配事件。
由此观测器对象450只有在事件源430适当地处于某些应用状态时才接收来自于事件源430的事件。例如,应用只有在已被初始化之后(也就是处于“初始化”状态时)才能开始考虑成为通话一方的邀请。在接收到该事件时,应用随后应调用MyInviteHandler(我的邀请处理器)来处理邀请。类似地,终止通话的事件(也就是BYE)及其相关切断和清理操作只有在通话已经实际建立之后(也就是处于“Connected”状态时)才是合适的。在接收到该事件时,应用随后应调用MyByeHandler(我的再见处理器)来处理BYE。类似地,播放媒体的OutputCompleteEvent(输出完成事件)在应用处于“Connected”状态时的环境中才是合适的。在接收到该事件时,应用随后应调用MyPlayerHandler(我的播放器处理器)来处理媒体。
与图3B中示出的应用必须监听并处理由JSR 289 API和JSR 309 API生成的每一个事件的现有示例不同,这些事件首先由统一通信框架中的事件源对象430进行处理。事件源将仅向应用发送选择性的设定事件。例如,如果事件是BYE并且状态是“Connected”,那么可以向应用发送事件。另一方面,如果状态是“not connected”(未连通),那么就不向应用发送事件。通过处理从JSR 289和JSR 309的底层对象中抽象出的高层对象,在应用层级的编程就会更加高效并且与手头的问题更加相关。
统一通信框架中的通话控制模型被设计用于由第三方服务器应用例如PBX、IVR、会议和呼叫中心应用控制的通话和媒体。假设所有通话都至少使其信号由通信应用控制。在大多数情况下,媒体也应该优选地由通信应用控制。
表1列出了优选实施例中统一通信框架的调用控制所涉及的示例性类/对象。
Figure BPA00001656723800111
图7以UML(统一建模语言)示意图示出了Application(应用)对象。它通过实现init()和destroy()而负责用于生命周期管理。而且它还通过利用SignalEvent(信号事件)类型实现观测器方法来观测呼入通话。
借用CCXML和JSR 309中的概念,统一框架使用各种连接方法来连接不同的通话支路。Participant(参与者)可以与其他的Participant相连。MultiStreamParticipant(多流参与者)中的各种流可以通过使用JSR 309的可连接结构来连接。统一框架还支持多连接和自动降级连接。
通常呼入通话都可以得到送往应用的InviteEvent(邀请事件)。应用可以决定是接受、拒绝还是重新定向InviteEvent。一旦接受InviteEvent,通话(支路)即告形成。观测器可以加在通话上以继续监测和控制支路。应用可以进一步将通话与媒体服务器相连,或者将通话连接至另一终端,或者将通话连接至另一参与者。
图8以UML示意图示出了Call(通话)对象。它具有多种方法,包括连接、getMediaService(获取媒体服务)、静音、取消静音等。它继承自MultiStreamParticipant对象,而MultiStreamParticipant对象相应地继承自Participant对象。
图9以UML示意图示出了Conference(会议)对象。它继承自Mixer对象,Mixer对象相应地继承自MultiStreamParticipant对象,而MultiStreamParticipant对象相应地继承自Participant对象。披露的所述方法在其相应的框内示出。
统一通信框架中的媒体控制模型假设每一路通话都具有媒体能力,只要其媒体流被连接至JSR 309的兼容媒体服务器即可。一旦通话处于INPROGRESS(进行中)或CONNECTED状态,getMediaService()即可被用于访问媒体服务。在以DIRECT(直连)模式连接媒体流的情况下,(例如参见图2A)统一通信框架即可尝试重新邀请媒体流返回媒体服务器,进入BRIDGE(桥接)模式(例如参见图2B)。
表2列出了优选实施例中统一通信框架的媒体控制所涉及的示例性类/对象。MediaService(媒体服务)定义了通话可用的所有媒体功能
Figure BPA00001656723800121
为了使用Call上的媒体控制,简单地从Call中获取MediaService。如果媒体并未经过服务器,那么只要有可能统一通信框架就尝试重新邀请媒体返回服务器。
图10以UML示意图示出了媒体服务对象。
统一框架编程模型是一种事件驱动模型。它具有粗粒度的事件类型以使应用集中于业务逻辑而不是底层协议。它与基于状态的事件分配机制和每一事件有一个线程的事件源(在大多数情况下)相结合以使应用更加易写。
表3列出了优选实施例中统一通信框架的事件所涉及的示例性类/对象。
Figure BPA00001656723800131
图11以UML示意图示出了EventSource(事件源)对象。EventSource根据MediaEvent和SignalEvent对象生成统一事件。
通话控制可以在SignalEvent上执行例如接受。为了简单起见,根据通话控制功能在相对较短时间内完成的事实(例如最大SIP超时约为32秒),几乎所有的通话控制功能都被模型化为同步方法。
另一方面,媒体控制功能因为媒体功能可能任意长而被模型化为异步方法。任何媒体功能的结果都可以作为MediaEvent(媒体事件)返回。如果应用想要在进行其他动作之前等待媒体功能完成,这可以通过Future.get()轻松实现,原因是媒体功能会返回Future(将来)值以允许通话查询其状态。
每一个通话都是能够生成SignalEvent和MediaEvent的事件源。为了获得通知,应用必须向通话中加入观测器(Observer)或事件监听器(EventListener)。
事件编程通常与状态管理相关联。统一通信框架支持基于应用定义状态的事件分配。应用可以在每一个事件源上设定应用状态(setApplicationState)。通过调用setApplicationState也可以支持并发状态。统一通信框架可以根据其状态注释向合适的观测方法分配事件。
每一个事件源很可能都具有由底层协议驱动的系统状态。但是这些系统状态都应该与应用状态区分开。应用状态是简单的符号名称,完全由应用来管理。
以下的示例示出了MyObserverClass如何处理不同状态的InputCompleteEvent。在事件源发出InputCompleteEvent并且事件源的应用状态为“问候(greeting)”时调用greetingHandler。类似地,在事件源发出InputCompleteEvent并且事件源的应用状态分别为“支持(support)”和“销售(sales)”时调用supportHandler和salesHandler。
Figure BPA00001656723800141
Figure BPA00001656723800151
图12示出了统一通信框架的优选实施方式中的各种类。
尽管统一通信框架提供了根据JSR 289/309的底层对象构建的高层次统一对象,但是部分统一对象也可以映射为JSR 289或309的对象,这就允许应用直接访问JSR 289/309。例如,Call等价于JSR 289中的SipSession和JSR 309中的NetworkConnection。MediaService等价于JSR 309中的MediaGroup,Mixer等价于JSR 309中的Mixer。为了避免底层访问影响到统一框架中的状态,底层对象优选地通过代理对象来访问。
统一通信框架的包是简单的Java ARchive(JAR)。支持装载统一包的容器应该扫描包以获得并载入应用接口中的实现类。如果存在多种实现类,那么实现类可以由JAR的Manifest来指定应用类的入口。否则就载入随机的实现类。如果JSR-289容器不支持直接载入统一的包,那么统一通信框架应该打包成标准SAR。
以下是在统一通信框架中如何压缩可用于IVR应用的代码的示例。应用开发人员无需关注底层控制和协议并且能够简单地集中在业务逻辑上。
Figure BPA00001656723800152
Figure BPA00001656723800161
Figure BPA00001656723800171
Figure BPA00001656723800181
尽管已经介绍的本发明实施例是优选的实施方式,但是本领域技术人员应该理解其各种变形也是可行的。

Claims (20)

1.一种用于构建在服务器的Java虚拟机上执行的应用组件所用的通话控制和媒体控制的统一应用框架,包括:
通话控制API,用于提供通话控制所用的标准Java接口,所述通话控制API定义了一组用于通话控制的类对象基元;
媒体控制API,用于提供媒体服务器控制所用的标准Java接口,所述媒体控制API定义了一组用于媒体控制的类对象基元;
统一的通话控制和媒体控制API,定义了一组由通话控制API和媒体控制API的类对象基元构成的统一类对象;并且
其中所述应用组件由所述的统一类对象构建。
2.如权利要求1所述的统一应用框架,其中所述应用组件由统一类对象以及通话控制API的类对象基元构建。
3.如权利要求1所述的统一应用框架,其中所述应用组件由统一类对象以及媒体控制API的类对象基元构建。
4.如权利要求1所述的统一应用框架,其中所述统一类对象以规定通话控制API和媒体控制API的类对象基元中某些预定结构的特定对象模型为基础。
5.如权利要求1所述的统一应用框架,其中所述统一类对象包括在符合特定对象模型的预定应用状态下响应的统一事件处理器。
6.如权利要求1所述的统一应用框架,其中所述统一类对象包括将不适合于特定对象模型中场景的事件忽略的统一事件处理器。
7.如权利要求1所述的统一应用框架,其中所述统一类对象包括:
统一事件源对象,用于根据通话控制事件和媒体控制事件生成统一事件;
明确事件类型和应用状态的观测器对象;并且
所述统一事件源在事件类型和应用状态与所述观测器对象明确的内容相匹配时才向所述观测器对象分配具有所述事件类型的统一事件。
8.如权利要求7所述的统一应用框架,其中所述统一事件源将通话控制事件和媒体控制事件串行化以使监听所述事件源的应用组件每次只需处理一个事件。
9.如权利要求1所述的统一应用框架,其中所述应用组件是交互式语音应答应用的一部分。
10.如权利要求1所述的统一应用框架,其中所述应用组件是自助式应用的一部分。
11.一种操作服务器的方法,包括:
提供通话控制API,用于根据SIP提供通话控制所用的标准Java接口并且定义了一组用于通话控制的类对象基元;
提供媒体控制API,媒体控制API提供用于媒体服务器控制的标准Java接口并且定义了一组用于媒体控制的类对象基元;
构造统一的通话控制和媒体控制API,定义一组由通话控制API和媒体控制API的类对象基元构成的统一类对象;
配置应用,具有根据统一类对象的组构建的组件;并且
在所述服务器的Java虚拟机上执行应用。
12.如权利要求11所述的方法,其中所述应用组件由所述的统一类对象以及通话控制API的类对象基元构建。
13.如权利要求11所述的方法,其中所述应用组件由所述的统一类对象以及媒体控制API的类对象基元构建。
14.如权利要求11所述的方法,其中所述统一类对象以规定通话控制API和媒体控制API的类对象基元中某些预定结构的特定对象模型为基础。
15.如权利要求11所述的方法,其中所述统一类对象包括在符合特定对象模型的预定应用状态下响应的统一事件处理器。
16.如权利要求11所述的方法,其中所述统一类对象包括将不适合于特定对象模型中场景的事件忽略的统一事件处理器。
17.如权利要求11所述的方法,其中所述统一类对象包括:
统一事件源对象模型,用于生成通话控制事件和媒体控制事件;
明确事件类型和应用状态的观测器对象;并且
所述统一事件源在事件类型和应用状态与所述观测器对象明确的内容相匹配时才向所述观测器对象分配具有所述事件类型的统一事件。
18.如权利要求17所述的方法,其中所述统一事件源将通话控制事件和媒体控制事件串行化以使监听所述事件源的应用组件每次只需处理一个事件。
19.如权利要求11所述的方法,其中所述应用组件是交互式语音应答应用的一部分。
20.如权利要求11所述的方法,其中所述应用组件是自助式应用的一部分。
CN201180029060.0A 2010-04-18 2011-04-18 用于呼叫控制和媒体控制的统一框架和方法 Expired - Fee Related CN103098023B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US32535510P 2010-04-18 2010-04-18
US61/325,355 2010-04-18
US13/088,396 US8612932B2 (en) 2010-04-18 2011-04-17 Unified framework and method for call control and media control
US13/088,396 2011-04-17
PCT/US2011/032909 WO2011133472A1 (en) 2010-04-18 2011-04-18 Unified framework and method for call control and media control

Publications (2)

Publication Number Publication Date
CN103098023A true CN103098023A (zh) 2013-05-08
CN103098023B CN103098023B (zh) 2016-10-05

Family

ID=44789176

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180029060.0A Expired - Fee Related CN103098023B (zh) 2010-04-18 2011-04-18 用于呼叫控制和媒体控制的统一框架和方法

Country Status (4)

Country Link
US (1) US8612932B2 (zh)
EP (1) EP2561439B1 (zh)
CN (1) CN103098023B (zh)
WO (1) WO2011133472A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103838615B (zh) * 2014-02-28 2017-05-17 广州华多网络科技有限公司 策略执行方法、装置及系统

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9258334B2 (en) * 2012-03-14 2016-02-09 Avaya Inc. Universe media shuffling
US10397073B2 (en) * 2013-03-15 2019-08-27 Cisco Technology, Inc. Supporting programmability for arbitrary events in a software defined networking environment
US9648049B2 (en) * 2013-02-04 2017-05-09 Oracle International Corporation System and method for extending IP multimedia subsystem to HTML5 environments
US9712593B2 (en) 2013-02-04 2017-07-18 Oracle International Corporation Javascript API for WebRTC
US10476915B2 (en) 2013-02-04 2019-11-12 Oracle International Corporation Real-time communication signaling gateway
US9331967B2 (en) * 2013-02-04 2016-05-03 Oracle International Corporation Browser/HTML friendly protocol for real-time communication signaling
US9307031B2 (en) 2013-02-04 2016-04-05 Oracle International Corporation Generic model for customizing protocol behavior through javascript
US9509745B2 (en) * 2013-02-04 2016-11-29 Oracle International Corporation Java API for programming web real-time communication applications
US9473581B2 (en) * 2013-02-04 2016-10-18 Oracle International Corporation Integrated web-enabled session border controller

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1342290A (zh) * 1998-10-02 2002-03-27 国际商业机器公司 会话浏览器和会话系统
US20070280226A1 (en) * 2006-04-04 2007-12-06 Rohit Sonalkar Servlet model for media rich applications
CN101297537A (zh) * 2005-10-28 2008-10-29 惠普开发有限公司 电话和网络服务的协调

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6026426A (en) * 1996-04-30 2000-02-15 International Business Machines Corporation Application programming interface unifying multiple mechanisms
US6922411B1 (en) 2000-09-29 2005-07-26 Voxeo Corporation Networked computer telephony system driven by web-based applications

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1342290A (zh) * 1998-10-02 2002-03-27 国际商业机器公司 会话浏览器和会话系统
CN101297537A (zh) * 2005-10-28 2008-10-29 惠普开发有限公司 电话和网络服务的协调
US20070280226A1 (en) * 2006-04-04 2007-12-06 Rohit Sonalkar Servlet model for media rich applications

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ERICH GAMMA等: ""Design Patterns: Chain of Responsibility"", 《HTTP://WWW.INFORMIT.COM/ARTICLES/ARTICLE.ASPX?P=1398601》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103838615B (zh) * 2014-02-28 2017-05-17 广州华多网络科技有限公司 策略执行方法、装置及系统

Also Published As

Publication number Publication date
EP2561439A1 (en) 2013-02-27
US20110258597A1 (en) 2011-10-20
CN103098023B (zh) 2016-10-05
US8612932B2 (en) 2013-12-17
WO2011133472A1 (en) 2011-10-27
EP2561439B1 (en) 2020-03-11

Similar Documents

Publication Publication Date Title
CN103098023A (zh) 用于通话控制和媒体控制的统一框架和方法
US10154118B2 (en) System and method for telephony and communication services with message-based API
US8675859B2 (en) Implementing a contact center using open standards and non-proprietary components
US7167899B2 (en) Web-content aware automatic call transfer system and process for mobile users and operators
US7706521B2 (en) Standards based agent desktop for use with an open contact center solution
CN100407675C (zh) 建立协作通信的方法和系统
CN103098433A (zh) 用于xmpp协议的servlet api和方法
US7921158B2 (en) Using a list management server for conferencing in an IMS environment
US8045490B1 (en) Voice over internet call center integration
CN101635775B (zh) 基于规则的多媒体用户/企业交互-网络操作系统
US20020194272A1 (en) Method for establishing a communication connection between two or more users via a network of interconnected computers
CN101216761A (zh) 用于ngn业务开发的电信应用软件框架
WO2008104534A1 (en) Skills based routing in a standards based contact center using a presence server and expertise specific watchers
US7940916B2 (en) Orchestration engine as an intermediary between telephony functions and business processes
CN103155530B (zh) 包括将脚本命令下载至用户终端的网络-电信融合
US20070110031A1 (en) Automated connection to a VOIP session
CN101902455B (zh) 一种开放式的多媒体会议服务系统及实现方法
JP2004500754A (ja) ユーザ対話サービスのための仮想インテリジェントネットワーク
EP1649393B1 (en) Providing modular telephony service
Bessler et al. An orchestrated execution environment for hybrid services
Bo et al. Session and media signalling for communication components‐based open multimedia conferencing Web service over IP networks
Bo et al. A preliminary practice for BPEL based multimedia conference web services orchestration
Bond et al. A framework for converged telecom services and mashups
Bo et al. Design of services-orientated multimedia conference process management
Bhayani Developing converged application using open source software

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: TROPO, INC.

Free format text: FORMER OWNER: VOXEO RESEARCH CORPORATION

Effective date: 20150609

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150609

Address after: California, USA

Applicant after: Tropo Ltd.

Address before: California, USA

Applicant before: Voxeo Corp.

C41 Transfer of patent application or patent right or utility model
CB02 Change of applicant information

Address after: California, USA

Applicant after: TROPO LLC

Address before: California, USA

Applicant before: Tropo Ltd.

COR Change of bibliographic data
TA01 Transfer of patent application right

Effective date of registration: 20160523

Address after: California, USA

Applicant after: VIHANA, Inc.

Address before: California, USA

Applicant before: TROPO LLC

Effective date of registration: 20160523

Address after: California, USA

Applicant after: Cisco Technology, Inc.

Address before: California, USA

Applicant before: VIHANA, Inc.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20161005

CF01 Termination of patent right due to non-payment of annual fee