靠谱 的软件外包伙伴

您的位置:首页 > 新闻动态 > IP电话集成软件系统架构开发案例

IP电话集成软件系统架构开发案例

2016-02-20 10:08:56

本案例将揭开LiteScape软件解决方案的神秘面纱,引导你从需求的角度审视它们基于Java和.Net实现的架构全貌,随后我们还将聚焦它们项目中一些有趣的技术方向,包括基于WebEx/LiveMeeting的电话集成、对Java与.NET间互操作的集成,安装在同台计算机上的各个操作系统间的HTTP与IPC通信比较,最后是此项目中的收获。

问题域分析

作为端到端业务解决方案的提供方,ListScape必须支持以下一系列的输入和输出:

 
  • Outlook/Exchange
  • 远程协同组件(WebEx, Live Meeting等)
  • CRM 解决方案 (例如Salesforce.com, MS-CRM)
  • 目录服务 (LDAP / Active Directory)
  • Presence服务器(MS-LCS, AOL)
  • 通信基础设施 (IP-PBX的产品, MS-LCS, 桌面电话)

这些服务利用网络进行传输,涉及许多不同的协议和接口。客户接着会希望通过Web、桌面客户端甚至是基于IP的电话来访问同样的信息。

事实上电话正在成为多媒体终端,它们直接集成用户在PC上完成的所有工作,并加以补充。它们还能像智能设备那样代替PC提供高级通讯功能。电话成为桌面计算机的一个扩展,它比计算机更适合来简化通讯任务并使之自动化。这类用途的例子包括用于启动/加入电话会议的one-touch式 应用,在呼叫联系人前在电话上显示联系人信息,以及访问共享的和个人的目录服务。公司还使用IP电话网络来广播信息,例如广播火灾警报,信息中包括标有针对每个员工最快逃生路径的可视地图,逃生路径根据员工的电话在大楼中的物理位置产生。

将应用扩展到IP电 话上并非易事。大多数情况下,用户界面就不能直接迁徙。要兼容各种电话的输入和特定的屏幕,设计用户界面时就一定要慎重思考。这种扩展更侧重于应用或数据在电话中的呈现,而非简单的将应用迁徙到电话上。一旦这个过程完成,登录到在线会议就会非常简单,在电话上查看会议日历,随后选择“加入会议”的按钮来同时加入到同一个协同会话的音频会议和Web会议中(译者注:音频会议使用电话,Web会议使用PC)。

 

当LiteScape首次提供IP电话时,任务的特殊性是集成案例的一大特点。例如,在许多环境中(零售业或制造业),电脑是稀缺的并且不能为每个人所使用,这归咎于预算限制和业务的特殊性,但IP电话没有这些问题。因此,公司能够依赖IP电话应用来进行各项活动,例如工时卡打卡或多媒体产品培训。律师事务所也发现IP电话的作用,例如直接记录利用客户端进行通话所耗费的时间,并且在每次通话结束后将时间与客户端/事件的记录关联起来,这在减少时间和纸张成本方面具有不可估量的价值。LiteScape的应用提供了针对各个领域的系统级集成,这些领域包括目录服务和时间/帐单管理等。该技术也成为许多其它公司竞相使用的平台,例如Infosys和WebEx利用该平台将自身的产品和服务扩展到IP电话级别。

解决方案概述

LiteScape 的架构可分为三个部分。第一部分是公司已经拥有的第三方通讯基础设施组件,例如PBX系统,IP电话,以及企业级业务应用系统和目录。架构的第二个组成元素是LiteScape的多态应用系统平台(MAP)。最后是LiteScape 架构的第三个部分,它包括多种客户端,这些客户端利用MAP将应用扩展到用户的IP电话和计算机桌面。客户端包括Outlook/Notes插件,一个标准的桌面客户端,以及Web浏览器。

图1: LiteScape架构总览 

随着LiteScape的产品不断升级,产品的技术也在不断发展。产品最初不过是基于Java的解决方案。然而,与Microsoft Unified Communications进行集成的需求使得公司开始将.NET纳入基础设施中。今天,以Java Web Start和.NET客户端的形式,Java和.Net都能被用作产品的前后端,LiteScape产品支持装有IIS的Windows 2003和基于Java的集成产品(例如Sun的Java Media Framework服务器)。

他们使用IntelliJ IDE进行Java开发,使用Visual Studio.Net进行.Net开发。LiteScape的服务器安装Windows 2003并使用IIS,同时利用一些Windows服务来支持.Net编写的集成产品。与此同时,一份Apache Tomcat的拷贝会被安装在不同的端口,来运行任何必要的Java组件。服务器上的Java应用服务器满足了一些API的需要,使得诸如Apache Axis能够提供Web服务支持。.Net和Java的Web服务器一起运行在同一台计算机上。在对应的客户端中,基于.Net的OnCast客户端提供Windows XP和2003平台上的桌面访问,而企业级的Linux同样提供了Java Swing Web Start客户端来满足企业需要。

图2: Map服务器组件

图2中展示了MAP服务器的动态组成部分。IIS和Windows服务的.Net组件提供了一些功能(例如OnCast的目录模块)。Tomcat服务和Java组件提供了另一些功能(例如SIP的网关)。利用Apache Axis,基于Java的Web服务被部署为servlet。最终,某些模块,例如OnCast Presence和CTI(Computer Telephony Integration,计算机电话集成),贯穿于Java和.Net的运行时。

撇开架构自身,各式各样的技术性协议成为我们下一个关注的方向,它们共同为图2中所介绍的这类用户提供了统一的通讯体验。

图3: 涉及到的通讯协议总览

LiteScape 的OnCast客户端(OC客户端)是一个桌面程序,它能够展示从MAP服务器获取的消息,同时还能够与其它桌面程序(例如地址簿和Microsoft Outlook)等交互。它还可以启动一些第三方程序,例如Web浏览器和WebEx,来实现一些通讯功能(例如在线会议)。OnCast客户端利用一个通讯层(OC CIL)来与LiteScape的MAP服务器通讯。通讯过程依赖于任务执行中所涉及的各项协议。对实时通讯而言,SIP协议是最为有效的。其它活动,例如验证和个性化都由Web服务来处理。MAP服务还使得客户端能够访问第三方组件(例如像Microsoft Active Directory和OpenLDAP这样的目录服务)。MAP服务器还能初始化某些IP电话网络的功能,这些IP电话网络通常运行在第三方的IP- PBX(译者注:IP-PBX,基于IP的公司电话系统)上,第三方IP-PBX包括Cisco CallManager, Avaya Communication Manager, 或者 Asterisk。针对目录服务的通讯由平台的每个特定的协议来处理。协议/传输技术,例如XML,HTTP,Java Telephone API,以及SNMP,都会被应用于基于后端系统的IP-PBX通讯。

深入探索1: 集成WebEx/LiveMeeting

以下是一个此类应用与IP电话集成的例子,LiteScape提供了基于WebEx/Microsoft LiveMeeting的会议支持。在尝试开始或加入在线会议的过程中,许多人频频受挫于复杂的URL、数字键入以及必需的访问码。 LiteScape使这个流程自动化,因此它不仅能通过电话被初始化,还能在用户桌面中与WebEx/LiveMeeting进行集成。

在一些典型使用案例中,用户已经被邀请来加入到WebEx/LiveMeeting会话中,以下两种方式之一都可以使流程继续。第一种方式,用户可以手工将邀请添加到他们的日历中。而在拥有OnCase服务器扩展(以email服务器的形式监听邀请email,Exchange接收它们的方式与此相同)的情况下,邀请同样可以自动地被添加到用户的MS-Outlook或Exchange中。随后,集成过程将继续执行。

会议开始前应该启动OnCast MAP服务器(使用IP电话协议),通过向用户的电话发送OCM(OnCast Multimedia message)来传递WebEx/LiveMeeting会话。OCM的结构中提供了一个集合来容纳一个有效负载(译者注:payload)XML脚本的文档和必需的相关内容,这些内容都是LiteScape平台在各类通讯终端(例如桌面代理、电话、IP/模拟扬声器等)间进行双向多媒体传输时所需要的。

OCM的结构为许多基本的内容形式提供了支持,这些内容形式包括文本、音频、图像、语音,同时该节后还支持诸多混合内容的处理器,如协同工作、RSS种子、股票报价、多选项调查、MS-Power-Point演示、Adobe PDF文件等。

LiteScape的OCM包含一个基于“有效负载”的XML文档,这个文档提到了必需的字段和属性,以及将被传递的多态事件处理需求。

以下是OCM有效负载的片段,这个片段针对的是一个现实场景中的会话,用户采用Cisco和Avaya类型的IP电话参与到这个会话中来:


  
   John.Coyle
   20353
   20353
   CN=John Coyle,CN=Users,DC=litescape,DC=local|AD
   
   IP-PBX 1
   IP-PBX 1
   Headquarters
   
   10.12.2.52
   
   Cisco 7961
   20353
  
  
  
  
     NONE
     MULTICAST
  
  
    
  

   
    0
  
  
  
  
  
  

170
    107
    195
    132
    http://10.2.0.145:80/MW/HandleEvent.aspx?scannedItemSize=26
    25|BLUE+RIBBON|Dark+Blue|01FFAA06000104E0
  

   
  
     Samira Kashani
     20365
     20365
     CN=Samira Kashani,CN=Users,DC=litescape,DC=local|AD
     
     IP-PBX 1
     IP-PBX 1
     Headquarters
     
     10.11.2.4
     
     Cisco IP Communicator
     20365
  
  
    ...
  
  
    ...
  
  

   ConferenceTemplates\WebEx.ocm
  
     18665551212
     
  
  Dial

  http://10.12.0.5:80/oncastdirdialer/AD/createShortcut.aspx?key=20353
  
  
  False
  True
  58c5cdcb-b1be-4dab-9bcd-7d9ea3a55465
  
  
     RunBCPayLoad
  
 
 

OCM 可能会包括一张发出会议呼叫请求的用户的图片(被嵌入或链接的),一个附件或一个用来指向与会议内容相关ppt的链接,又或者一段与会议相关的视频剪辑 (被嵌入或链接的)。用户随后可以通过他们的电话选择加入电话会议。这个时候MAP服务器将接收到请求并启动WebEx/LiveMeeting会话。 MAP服务器还会通知IP PBX来初始化WebEx/LiveMeeting会议的呼叫监听。MAP服务器还将与桌面的OnCast客户端通讯,该客户端将在用户桌面自动启动一个WebEx会话,并将它们登录到会议的会话中。图4展示的是这个顺序:

图4:通过IP电话启动WebEx会话的流程

深入探索2: Java与.NET

图2展示了LiteScape MAP平台服务器中的组件。MAP平台服务器同时使用了Java和.NET技术。像OnCast目录这样以.NET编写的组件,它们能与已安装的IIS实例通讯,并以 Windows服务的形式运行。其它组件,例如SIP网关,是以Java编写的。最终,MAP平台也会包括同时使用Java和. NET的混合组件,例如OnCast Presence和CTI(Computer Telephony Integration)模块。

由于一些原因,LiteScape同时选择了Java和.NET技术。首先,他们的客户有强烈的意愿去运行集成在Windows中的桌面客户端。他们同样也希望访问特定平台上的数据,例如能用微软的MAPI接口来访问的Outlook地址簿。最后,还需要提供安全的单点登录。应用.NET的话, LiteScape可以选择Windows授权和域安全机制。所有这些除了.NET外,还能访问Java的服务(例如Sun的Java Media Framework服务器)。一个最佳组合的解决方案也简化了部署。许多LiteScape的客户都已经选择了微软的技术。因此,IIS早已被安装了。

为了支持这种混合架构,我们需要不依赖于平台的通讯方式。运行在MAP服务器上的.NET和Java组件提供了基于Web服务的XML,这些Web服务提供了许多通用功能。这些组件还使用了TCP和基于SIP的协议。

其它选项,例如JNI和其它.NET与Java间的集成库,它们没有入选的理由很多。LiteScape的架构缺少前期成功使用这些技术的经验。在实现实时通讯时,它们还存在若干障碍可能需要再开发。最为重要的一点,LiteScape不愿意受制于第三方集成库。某种技术被第三方库中止开发或第三方库提供的技术不够完善,由此导致LiteScape需要开发一个自身技术体系中的关键技术,这是它不希望遇到的。

LiteScape的架构选择多种技术并存,而非以一种技术满足所有形式的需要。例如,这使得在提供呼叫控制功能时,在支持Java电话API的设备上能够使用此API。其它集成例如Exchange和活动目录,使用.Net让编程更容易。最后的难题是将五花八门的技术连接在一起。

各个部分通过技术手段进行互操作的一个例子是,当CTI引擎收到呼叫时,它将随后激活一个针对所有相关部分 (其中包括用Java编写的SIP网关)的事件。典型的业务案例是,当关于呼叫发起人的目录和业务信息进入企业时,对一些现有的基本信息进行补充。为实现这个功能,SIP网关要通过Web服务将一个请求传递给基于.NET的OnCast目录组件。获得了补充的信息后,SIP网关将利用SIP/CSTA通知 OnCast客户端,为用户展现呼叫发起人的额外信息。

深入探索3: 利用OnCast客户端和Outlook/Notes插件来简化通讯

一个利用LiteScape的技术提供统一通讯体验的具体例子就是Outlook集成插件。它的特点就是,在email中右键点击一个名字将初始化一个电话/会议的呼叫。

 

技术上,为支持这个操作,系统执行了一系列步骤。

Outlook 插件是.NET编写的,它的安装需要基于.NET的OnCast通讯层(CIL)。OnCast通讯层是一个与系统无关的模块,提供例如联系人加载、用户(参加会议的用户)状态更新、P2P消息传递和SIP消息传递等服务。OnCast CIL用一个独立的线程上的HTTPListener来过监听一个TCP端口,从而接收任何可能的OC CIL基本命令。它以套接字服务器的形式启动,处理HTTP协议中传输的请求(拨号、会议、广播、协同工作和远程呼叫控制请求)。这使得命令需要以简单URL的形式发出:

Dial: http://127.0.0.1/dial?number= [Number]

图4: 从HTTPListener到OnCast目录的一个示例命令的流程

图4中所展示的http呼叫在基于.NET的OnCast CIL库中,被转换为HTTPCommand对象。随后这将触发一个CIL命令,从而导致OC CIL客户端与MAP服务器的通讯,执行如初始化呼叫的操作。从协议的角度来看,请求的流程以HTTP开始,随后被转换为.NET的内部方法调用,然后以Web服务请求的形式传输,最终被MAP服务器以IP-PBX的形式执行,从而启动一次呼叫。

这种方式集成带来的一个显然的疑问是,为什么将 HTTP协议用于客户端,而不是在OnCast客户端和Outlook插件以及OnCast CIL通讯库间使用纯粹的.NET集成。这种设计的理由有两重。首先,提供基于HTTP的API,这将允许其它客户端在技术上使用诸如Java Swing,来实现同样的功能。第二,在LiteScape的经验中,Outlook插件易于崩溃。使集成保持尽可能的松耦合,那么一个插件的崩溃将不会影响客户端电脑上运行的OnCast CIL服务。Outlook随后只需要重新启动,而用户也能再次尝试进行通讯。

经验/最佳实践

在LiteScape服务器与客户端平台组件的开发过程中,它们的工程师收获了许多经验:

  • 为了使未来的集成中更简单,组件都应该尽量不依赖于平台。例如,如果一个编码库被以Java编写了,那么相应地,LiteScape需要为.Net编写一个同样的库。当考虑第三方技术时,同样需要这样思考。
  • 如果无法确定第三方组件,那么使用平台无关的协议(例如上面提到过的那些)在传输层进行集成。
  • 关注平台的特定通讯特征,如换行和缓冲以及Unicode字符转换。
  • .Net 领域的社区和可用组件比Java领域少。然而,能够拿起电话并拨打800寻求技术支持(指微软的技术支持),这一点的价值不可估量。而Java或Java 相关库中的问题诊断通常需要搜索知识库和邮件列表。相比之下,微软技术支持代表往往能够一针见血地指出组件例如IIS的问题所在。
  • IP电话是一门快速变化的技术,只能通过最佳组合的策略来支持。一个一成不变的应用将无法应对每个客户的需求。I
  • 使用符合你需要的协议或技术。由于协议而导致的5-10秒的额外邮件延迟是可以接受的。以毫秒来计算电话呼叫,像这样的目标是永远无法实现的。

未来的方向

LiteScape会继续使用他们最佳组合的技术。随着IP电话、VoIP和协同空间日新月异,这些支持必然会被纳入新电话的研制,并成为例如WebEx和Microsoft Live Meeting技术上的模块,增强其通讯能力。LiteScape还在找寻应用领域范围来继续扩展集成,这些领域包括CRM、库存管理和人力资源。在技术层面,他们已经探索了利用Mono库,在基于Linux的服务器上部署基于.NET的服务器组件的可能性。

 

关于:中科研拓

深圳市中科研拓科技有限公司专注提供软件外包、app开发、智能硬件开发、O2O电商平台、手机应用程序、大数据系统、物联网项目等开发外包服务,十年研发经验,上百成功案例,中科院软件外包合作企业。通过IT技术实现创造客户和社会的价值,致力于为用户提供最佳的软件解决方案。联系电话400-0316-532,邮箱sales@zhongkerd.com,网址www.zhongkerd.com


  上一篇   [返回首页] [打印] [返回上页]   下一篇