BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

案例研究:IP电话集成架构

| 作者 Scott Delap 关注 0 他的粉丝 ,译者 魏泉 关注 0 他的粉丝 发布于 2007年6月21日. 估计阅读时间: 25 分钟 | 都知道硅谷人工智能做的好,你知道 硅谷的运维技术 也值得参考吗?QCon上海带你探索其中的奥义

简介

作为InfoQ的一个案例研究,本文将向我们展示电话领域的一个有趣的解决方案。LiteScape Technologies是一家私有制的软件公司,它为每个机构提供通讯一体化的应用。这些应用可能使用任何IP设备,例如IP电话、移动设备和PC,利用业务应用系统和协同的数据来安全地整合IP电话技术。LiteScape的解决方案已经被应用于多个垂直行业,包括零售业、制造业、专业服务业、金融服务业、公共事业和医疗保障。今时今日现代化的工作环境衍生了一系列通讯媒介,例如Email、电话会议、在线演示。每种方式都有自己的用户界面、进行初始化的方式等。LiteScape的软件应用系统简化了这些方式的使用,并有效的在早期不兼容的数据和设备间进行集成,它通过这种方法将以上通讯媒介整合在一起。

本案例将揭开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的服务器组件的可能性。

总的来说,LiteScape努力不使他们的产品成为新技术的实验品(译者注:原文使用“guinea pig”,指用于做实验的材料)。他们静候每项技术的成熟,并且努力不使他们的客户依赖于任何他们还未熟练应用的技术。当合适的时机来临时,他们一步一个脚印地完成升级,从而拓宽技术支持的范围(将新的技术纳入架构之中),支持更多的应用。最终的结果是,这个系统能使企业充分并且有效地访问自身服务,而企业的业务也因此受益。

查看英文原文:Casestudy: IP Telephony Integration
译者简介:魏泉,具有多年企业级开发经验,曾担任过博文视点出版公司的技术编辑,是《Spring技术手册》《Spring专业开发指南》的责任编辑。武汉大学Google Camp 的创建者之一,关注Web发展的最新趋势。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT