主机媒体处理(Windows版)参考设计指南
(二)
 

[ page1 ] [ page2 ]

关于本文
1.HMP(主机媒体处理)软件描述
 1.1 概述
 1.2 HMP的商业驱动力、市场机会和成本
 1.3 成本降低
 1.4 商业和市场总结
 1.5 参考资料
2.主机媒体处理配置描述
 2.1 解决方案配置描述
 2.2 应用场合
 2.3 设备测试
 2.4 软件参考系统的构架
3.安装主机媒体处理软件
 3.1 安装HMP软件
 3.2 卸载HMP软件
4.主机媒体处理软件的许可证程序
 4.1 获得评估运行许可证
 4.2 购买一个永久的HMP 许可证
 4.3 激活一个HMP许可证
 4.4 使用别的许可证
5.配置主机媒体处理软件
 5.1 配置概述
 5.2 配置过程
 5.3 启动和停止系统
6.理解IVR参考程序
 6.1 获取IVR参考代码
 6.2 状态机
 6.3 一个基本的状态机
 6.4 创建对象
 6.5 简单设备概念
 6.6 Simple Device Properties
7.解决方案配置的测试与性能
 7.1 解决方案配置测试
 7.2 测试方法
 7.3 测试场景和性能数据
 7.4 用Dialogic® NetStructure™ PBX-IP媒体网关配置HMP
8.你采用的解决方案的可选设计模式
9.索引

配置主机媒体处理软件

  本章讲述主机媒体处理软件(HMP)的配置和运行方面的内容:

  • 配置概述
  • 配置过程
  • 启动和停止系统

  5.1 配置概述

  主机媒体处理软件通过Dialogic® Dialogic® 配置管理器 (DCM)进行配置.本述讲述如何启动和使用DCM。DCM提供了图形化的用户界面来浏览和修改配置数据。当启动DCM时,它会自动检测HMP并找到配置设置。

  5.2 配置过程

  通过以下步骤启动DCM:

  1. 访问Dialogic Dialogic 配置管理器 (DCM). 从开始菜单, 选择程序> Dialogic HMP 1.0 > 配置管理器-DCM.
  注: 你必须有本机或远程连接的计算机的系统管理员权限才能使用DCM, 可通过联系你的网络管理员来给你建立必要的管理员权限。

  2. DCM启动后,通过计算机名称对话框指定要连接的机器
(图 20). 第一次运行DCM时会自动出现输入计算机名称的对话框,如果该对话框没有出现,你可以选择File下拉菜单中的Connect 选项或点击DCM主窗口中的Connect图标打开它

图 20. 输入计算机名称对话框

  3. 系统默认显示本机名称,要连接本机,直接点Connect. 要连接远程计算机,选择Remote钮并输入远程计算机名称,再点Connect. 对于TCP/IP网络,可输入远程计算机的IP地址来代替计算机名称。

  注: Dialogic Dialogic 系统使用DCOM对象来运行远程计算机上的Dialogic Dialogic 软件。远程的DCM Dialogic Dialogic 软件内部程序化的建立了DCOM安全等级。不要使用Windows 的DCOM配置程序dcomcnfg.exe 改变安全设置.如果你随意改变,那么Dialogic Dialogic 系统可能无法正常运行。
  注: 连接到计算机上后,将会出现一个窗口指示DCM检测程序已经运行。如果想要DCM识别一个新的许可证,必须从action菜单运行Restore Defaults,这样DCM将会检测到这个新的许可证。具体参见4.4节, "使用别的许可证"。
DCM主窗口显示如图21。在你指定了计算机名称(图20)后,将会出现该窗口。窗口中的第一行的 Configured Devices on...,显示出你连接的计算机名字。如果你在图20中输入的是IP地址,那么就会显示出该IP地址。

图 21. DCM主窗口

  5.3 启动和停止系统

  安装好HMP后, 请通过使用许可证管理器界面购买一个永久的HMP许可证,并启动DCM,这时你就可以启动Dialogic Dialogic 系统了。它将下载HMP的配置参数设置并启动设备驱动程序。接下来你可以在工作开始之前,使用 Dialogic 提供的工具检验系统的操作是否正确。具体内容如下:

  • 启动系统
  • 设置启动模式为自动模式

  5.3.1 启动系统

  从DCM窗口的Service下拉菜单中点Start Service选项或点DCM主窗口(图21)中的Start Service图标就可以启动系统了。
  注: 启动设备参考选型将不出现在DCM服务的下来菜单中,因为HMP 1.0版本中只有一块虚拟的板卡(SSPUM4.0)。

图22. 启动系统

  在等待期间,DCM在屏幕右上角显示一个进度条。当Dialogic Dialogic 系统启动后,主窗口下方的Dialogic Dialogic System Service Status 提示为Running。进度条直到Dialogic Dialogic系统启动后才正常显示。然而当连接到一个远程结点,例如,由于网络时延,启动Dialogic Dialogic系统的启动时间将会延长。如果进度条不再显示,但Dialogic Dialogic System Service Status没有提示为Running状态,这并不一定是出了问题,点Refresh图标定时地更新Dialogic Dialogic System Service Status 的提示。它最后会提示为Running. 如若不然,检查窗口事件查看器来看看是否发生了错误。在HMP还没有启动好前Dialogic Dialogic系统是启动不了的。同样,你也无法从控制面板启动Dialogic Dialogic 系统且打开DCM。如果你需要检测设备,请使用DCM的Action 菜单选项或控制面板中停止Dialogic Dialogic 系统并启动设备检测。

  5.3.2 设置启动模式为自动模式

  当Dialogic Dialogic系统需要自动启动时(不需要人为操作),具有管理员权限的用户可以使用DCM的用户界面中Service下拉菜单(图22)来设置启动模式为自动,也可以程序化地使用NCM API库。如果启动模型设置为自动,Dialogic Dialogic系统将在系统重启时自动启动。
  注:
  1. 请别使用Windows 服务程序来设置Dialogic Dialogic 系统的启动模式为自动。你必须使用DCOM的用户界面或NCM API来设置。因为Dialogic Dialogic驱动程序是通过它们内部地对启动模式进行设置的。如果使用了Windows 服务程序,将不能正确地建立驱动从属关系。

  2. 如果将启动模式设置为自动,你想要在重启计算机后通过DCM来重配置HMP,你必须使用DCOM来停止Dialogic Dialogic 系统,然后再对DCM进行正常的操作。(也可以通过Windows 服务程序来停止Dialogic Dialogic 系统,但是不推荐)



理解IVR参考程序

  本章讲述如下主题:

  • 获取IVR 参考代码
  • 状态机
  • 一个基本状态机
  • 创建对象
  • 简单设备概念
  • 简单设备特性

  IVR参考程序(SimpleIvr)为想用R4和包括软件开发包(SDK)的Global Call APIs 建立应用程序的Dialogic用户提供了演示代码。该应用程序用C++开发,使用面向对象的方法允许增加新的组件及对已有组件的重用。SimpleIvr应用程序设计为单线程、异步,符合必要的性能需求,并使用了一些特殊的技术,比如线程池,来处理长时间的运转。

  应用程序组件由SDK标准运行库(SRL)产生的事件驱动

  应用程序的组件由事件驱动,这些事件由SDK的标准运行时库产生,它们是对底层电话或网络电路物理动作的直接或间接的反应,同应用程序产生的事件一样,会放入SRL事件队列(自动布署的反应事件)中。就这方面而言,可以把应用程序看成一个反应系统,由事件驱动并且持续不断的响应来自外拨或内部的刺激信号。

  6.1 获取IVR参考代码

  可以从以下的网址获取IVR 参考代码:
http://www.Dialogic.com/

  6.2 状态机

  以上描述的系统能够用有限状态机来进行最佳的实现。有限自动机和与之对应的状态转移图是用来描述状态集合的规范机制。例如:"当事件α发生时,系统从状态A转变为状态B"。然而,复杂的系统往往会拥有非常多的状态以及更多的状态间的可能的转移关系。这将给我们带来的问题是如何为应用管理好状态图。有以下几种办法能够解决这个问题:可以开发一个外挂的状态管理子系统,它有自己的数据库来存储状态图,前段界面提供编辑和校对功能,代码生成器用来产生伪码,甚至用实际的编程语言来实现状态机。另外一种方法更复杂,它将一个大的状态机分解为小一些的相对独立或正交的子状态机(簇),然后桥接起来,这样能够降低成指数增加的状态转移的数量。还有其它一些方法能够解决大型状态机的问题,但这已经超出了本文的讨论范围。

  6.3 一个基本的状态机

  SimpleIvr示例程序实现了一个基本的状态机,它由用AαB的形式进行抽象的描述。由于使用了一个通用的状态W,状态的复杂度得以降低,它处理程序运行期间可能发生的异常和错误条件,并且将它们记录下来以供以后的分析和系统改进使用。这种抽象在应用程序中用SimpleStateMachine的形式进行表示,而且用SimpleStateMachine类来加以实现。

  为了举例说明如何创建一个状态机,下面用一段简单的代码来展示    SimpleIvrStateMachine 类构造器:

SimpleIvrStateMachine::SimpleIvrStateMachine()
{
// Associate states with actions
addStateAction(STATE_NULL, NullAction);
addStateAction(STATE_WAIT_CALL, WaitCall);
addStateAction(STATE_CALL_ACK, CallAck);
addStateAction(STATE_ANSWER, AnswerCall);
addStateAction(STATE_INIT_PROMPT, PlayInitialPrompt);

addStateAction(STATE_DROP, DropCall);
addStateAction(STATE_RELEASE, ReleaseCall);
addStateAction(STATE_RESET, ResetLineDev);
// Create state transitions
add(STATE_NULL, GCEV_UNBLOCKED, STATE_WAIT_CALL);
add(STATE_WAIT_CALL, GCEV_OFFERED, STATE_CALL_ACK);
add(STATE_WAIT_CALL, GCEV_DISCONNECTED, STATE_RESET);
add(STATE_CALL_ACK, GCEV_CALLPROC, STATE_ANSWER);
add(STATE_CALL_ACK, GCEV_DISCONNECTED, STATE_RESET);
add(STATE_ANSWER, GCEV_ANSWERED, STATE_INIT_PROMPT);
add(STATE_ANSWER, GCEV_DISCONNECTED, STATE_RESET);
add(STATE_PLAY_INIT_PROMPT, TDX_PLAY, STATE_PLAY_ENTER_CHOICE);
add(STATE_PLAY_INIT_PROMPT, GCEV_DISCONNECTED, STATE_DROP);
add(STATE_PLAY_ENTER_CHOICE, TDX_PLAY, STATE_ENTER_CHOICE);
add(STATE_PLAY_ENTER_CHOICE, GCEV_DISCONNECTED, STATE_DROP);
add(STATE_ENTER_CHOICE, TDX_GETDIG, STATE_ENTER_CHOICE_ANALYZE);
add(STATE_ENTER_CHOICE, GCEV_DISCONNECTED, STATE_DROP);
add(STATE_ENTER_CHOICE_ANALYZE, EV_DIGIT_1, STATE_PLAY_ENTER_ACCOUNT);
add(STATE_ENTER_CHOICE_ANALYZE, EV_DIGIT_2, STATE_PLAY_ENTER_DIGITS);
add(STATE_ENTER_CHOICE_ANALYZE, EV_DIGIT_3, STATE_PLAY_ENTER_MAILBOX_R);
add(STATE_ENTER_CHOICE_ANALYZE, EV_DIGIT_4, STATE_PLAY_ENTER_MAILBOX_P);
add(STATE_ENTER_CHOICE_ANALYZE, EV_DIGIT_STAR, STATE_PLAY_ENTER_CHOICE);
add(STATE_ENTER_CHOICE_ANALYZE, EV_DIGIT_OTHER, STATE_PLAY_ENTER_CHOICE);
add(STATE_ENTER_CHOICE_ANALYZE, GCEV_DISCONNETED, STATE_DROP);
add(STATE_PLAY_ENTER_ACCOUNT, TDX_PLAY, STATE_ENTER_ACOUNT);
add(STATE_PLAY_ENTER_ACCOUNT, GCEV_DISCONNECTED, STATE_DROP);
add(STATE_ENTER_ACCOUNT, TDX_GETDIG, STATE_ENTER_ACCOUNT_ANALYZE);
add(STATE_ENTER_ACCOUNT, GCEV_DISCONNECTED, STATE_DROP);
add(STATE_ENTER_ACCOUNT_ANALYZE, EV_DB_RETRIEVED, STATE_ACCOUNT_PLAY);
add(STATE_ENTER_ACCOUNT_ANALYZE, EV_DB_ERR, STATE_PLAY_ACCOUNT_NOT_FOUND);
add(STATE_ENTER_ACCOUNT_ANALYZE, GCEV_DISCONNECTED, STATE_DROP);
add(STATE_ACCOUNT_PLAY, TDX_PLAY, STATE_PLAY_ENTER_CHOICE);
add(STATE_ACCOUNT_PLAY, GCEV_DISCONNECTED, STATE_DROP);
add(STATE_PLAY_ACCOUNT_NOT_FOUND, TDX_PLAY, STATE_ENTER_ACCOUNT);
add(STATE_PLAY_ACCOUNT_NOT_FOUND, GCEV_DISCONNECTED, STATE_DROP);
...
add(STATE_DROP, GCEV_DROPCALL,STATE_RELEASE);
add(STATE_DROP, GCEV_DISCONNECTED,STATE_RELEASE);
add(STATE_RELEASE, GCEV_RELEASECALL,STATE_WAIT_CALL);
add(STATE_RELEASE, GCEV_DROPCALL,STATE_RELEASE);
}

  结果如图23, "状态转移图".
  对所有SimpleStateMachines 的驱动是一个且只是一个SimpleEventWaiter 对象的实例。这个类完成对程序内部SRL事件管理和分发相关的所有功能。它同样也是一个可见的对象,允许程序上下文中其它对象通过它进行注册并获得系统中发生的事件通报。这个主循环实现该功能,代码说明如下:

// Event listening loop until requested to stop
while (!m_bStop)
{
// Wait for all events from SRL
m_ret = sr_waitevt(m_tmout);
if (SR_TMOUT == m_ret) {}
// Platform-specific event properties retrieval
#ifdef _WIN32
lEventType = sr_getevttype(0);
lEventDev = sr_getevtdev(0);
lEventLen = sr_getevtlen(0);
pData = sr_getevtdatap(0);
#else
lEventType = sr_getevttype();
lEventDev = sr_getevtdev();
lEventLen = sr_getevtlen();
pData = sr_getevtdatap();
#endif
waitevt = m_ret;
// Create a SimpleEvent object based on event properties
SimpleEvent event(waitevt, lEventType, lEventDev, lEventLen, pData);
// Set object status to changed and notify it observers
setChanged();
notifyObservers(&event);
}



图 23. 状态转移图

  6.4创建对象

  SimpleEventWaiter产生的事件主要提供给SimpleIvrEngine对象,在初始化阶段,SimpleIvrEngine对象创建并保持所有的SimpleIvrStateMachine对象,同时分配事件给相应的状态机。SimpleIvrEngine可能被视为一个应用程序的主类。它是最早被创建的的对象之一,它轮流配合所有包括SimpleEventWaiter在内的其它支持实体的创建。SimpleIvrEngine将控制传递给SimpleEventWaiter 并作为收听者进入被动模式。以下的代码说明实现过程:

// Create an engine object
SimpleIvrEngine engine;
engine.create();

void SimpleIvrEngine::create()
{
// Create all state machines
for (int i = 0; i < NUM_CHANNELS; ++i) {
SimpleIvrStateMachine* ivr = new SimpleIvrStateMachine;
ivr.addDevices();
addStateMachine(ivr);
}
// Create event waiter
SimpleEventWaiter ew;
setEventWaiter(&ew);
// Kick the engine
kick();
}
void SimpleIvrEngine::kick()
{
m_ew->addObserver(this);
// initial kick of event processor
m_ew->run();
m_ew->deleteObserver(this);
}

  6.5 简单设备概念

  SimpleIvr的另一个重要的原理是简单设备的概念,SimpleIvr是所有设备实体的基础,设备实体是由应用程序的对象空间组成。这些实体既可在初始化阶段静态地创建,也可根据需要动态地创建。大多数实体代表了Dialogic? Dialogic?域的物理设备,但有一些是虚设备,它们被设计用于提供一些外部服务(如数据库,邮箱等)。

  一个最初的SimpleDevice类完成一个抽象类Gdevice中定义的接口。一个特殊的设备类型NullDevice被作为一个不做任何事件的设备而引入。但是在应用程序开发中返回NullDevice比返回一个空指针更有用。因为对返回的空指针进行检验有时会很不方便。如图24"简单设备类图"是一个来自SimpleDevice的所有类的类图。

图 24. 简单设备类图

  通过以SimpleDevice的形式有一个最小的共同点,实体能很容易地被统一的进行管理,而且能够被组合起来形式所谓的"联盟",提供单个设备不能独自完成的某些功能。换句话说,设备联盟(在应用程序中表示为SimpleDeviceAlliance类)是一个容器,它包括一些简单设备并把它们桥接起来。

  例如,可以创建一个简单设备联盟,该简单设备联盟可以把一个Global Call设备,一个数据库设备(句柄)和一个缓存提示设备组成一组,表示一个状态机实例的智能对象。应用程序的开发人员可以使用简单设备和简单设备联盟的概念做为框架,并将其扩展,来满足特定应用场合的需要。以下代码段说明了创建设备和联盟的过程:

// Create all devices
GlobalCallDevice* gcd = new GlobalCallDevice;
VoiceDevice* vd = new VoiceDevice;
CachedPrompts* prompts = new CachedPrompts;
SimpleIvrDatabaseDevice db = new SimpleIvrDatabaseDevice;
SimpleIvrMailboxDevice* mailbox = new SimpleIvrMailboxDevice;
// Create device alliance
SimpleDeviceAlliance* alliance = new SimpleDeviceAlliance;
// Add all devices to the alliance, making GlobalCallDevice an anchor
alliance->addDevice(gcd, true);
alliance->addDevice(vd);
alliance->addDevice(prompts);
alliance->addDevice(db);
alliance->addDevice(mailbox);


  有必要提及来自Dialogic® Dialogic®域中的设备和虚设备之间的一个基本的区别。来自Dialogic®Dialogic®域中的设备有内在的SRL事件产生机制,而虚设备不能自己产生SRL事件。这在当虚设备必须通知状态机一些情况以引起状态机的注意时会引起一些问题。有可能是一个正常的完成事件的状态,如异步数据库取得请求完毕或发生了错误。在带有来自Dialogic® Dialogic® 设备的事件的统一格式中处理这些类型的事件是非常重要的。

  在SRL事件队列中有可能直接被放入一个任意的事件。唯一的限制是放入的事件必须是一个Dialogic® Dialogic® 设备。其次,由上述方法设计的SimpleDeviceAlliance类允许联盟中的设备发现彼此因此,一个虚设备能代表Dialogic® Dialogic® 设备联盟中的另一设备代表自己将事件放置到SRL事件队列中。为使这个过程更加容易,在每个联盟中的Dialogic® Dialogic®设备被声明为一个"anchor" 设备,它队了本身的功能外还具有事件放置有效载荷。图25, "简单设备联盟概念" 举例说明了SimpleDeviceAlliance 概念。

  为了有效地运转,每个状态机应该对他们处理的事件有所反应;否则,将阻碍其它状态机对事件的处理,系统将变得失去反应。状态机依赖于实际执行相应功能的设备。因此以下原则被视为状态机实现的基础:在简单设备上的状态机执行一个动作时,不能阻碍在另一个简单设备上执行动作的状态机。

  R4 和 Global Call APIs 的设计理念是,提供两种通用的执行函数的方式: 同步和异步。应用程序异步地调用这些函数时必须遵守第一条规则。然而,有些应用程序使用的API并不遵循这个规则。为了客服这个障碍,应用程序开发人员必须使用一些技术手段,将过长的操作分为一系列小一些的步骤。在某些情况下,因为代码的本性或干脆就是一个第三方的API,使用这种技术也是不可行的。这种情况下,可使用一个代理程序模式,开发人员将过长的函数用一段代码封装起来,它在一个单独的进程或线程中发起函数的执行并立即返回。完成操作后,它向SRL队列发一个事件来通知状态机它已完成。一些操作系统在它们的SDK中有特殊的工具和函数来实现以上操作。它们被称为"线程池"。

  下面的代码段提供了在Microsoft Windows操作系统上的示例,它在SimpleIvr应用程序中使用了线程池:

bool ASYNC_db_open(int devh, int* handlep, const char* name, int flags)
{
bool bRet;
// Aggregate parameters in a context structure
DB_OPEN vContext = {
devh,
handlep,
name,
flags,
0
};
// Create a new context and copy parameters
PDB_OPEN pvContext = new DB_OPEN(vContext);
// Keep track of outstanding worker thread requests
InterlockedIncrement(&dwQueuedWorkItems);
// Call Windows SDK to queue a worker item in the thread pool
bRet = QueueUserWorkItem(
THREAD_ASYNC_db_open, // worker item
pvContext, // function data
WT_EXECUTEINLONGTHREAD // long wait
);
return bRet;
}
DWORD WINAPI THREAD_ASYNC_db_open(PVOID pvContext)
{
// Get the function parameters
PDB_OPEN pContext = (PDB_OPEN)pvContext;
long rc;
int handle;
// Call potentially lengthy function
rc = db_open(pContext->name, pContext->flags);
handle = rc;
// Return parameters
if (pContext->handlep != NULL) {
*pContext->handlep = handle;
}
// Post DB_EVENT_OPEN event to SRL queue
DX_PUT_EVENT(pContext->devh, DB_EVENT_OPEN, 0, NULL, rc);
// Get rid of context
delete pContext;
// Keep track of outstanding worker thread requests
InterlockedDecrement(&dwQueuedWorkItems);
return 0;
}


  在上面的程序代码中,调用了一个潜在的长时间操作db_open。它用一个代理函数ASYNC_db_open来表示,它唯一的任务就是把参数集中到呼叫内容的结构DB_OPEN中,然后请求操作系统将THREAD_ASYNC_db_open排队到线程池的工作线程中,接下来就是立即返回。操作系统将THREAD_ASYNC_db_open函数调度为最有效的方式执行。完成了db_open后,事件DB_EVENT_OPEN被公布到SRL队列中,告诉适当的状态机操作已完成。

  6.6 Simple Device Properties

  SimpleIvr 参考设计应用程序的目标之一,是使创建对于各种设备配置和运行的场景变得可配置和可适应。为了达到这个目的,使用了属性的概念和相应的抽象类SimpleDeviceProperties来做为应用程序的一部分。SimpleDeviceProperties类能够从流或文件中读出属性数据,或者向流或文件中写属性数据。, satisfy this所有的应用程序实体都能够进行配置,只要指派一个继承类SimpleDeviceProperties的特殊属性类即可。我们将以下面的C++代码段举例说明:

// Global Call device properties
GlobalCallDeviceProperties gcdp;
// Open file with properties
ifstream is;
is.open("gc.props");
// Read properties
is >> gcdp;
// Create Global Call device
GlobalCallDevice gcd;
// Set device properties
gcd.setDeviceProperties(gcdp);

  设备不是能够通过属性来进行配置的唯一实体,其它的组件,如状态机,引擎等,都能够使用属性的概念来实现所期望的灵活性。

解决方案配置的测试与性能

  本章讲述如下内容:

  • 解决方案配置测试
  • 测试方法
  • 测试场景和性能数据
  • 通过Dialogic® NetStructure™ PBX-IP 媒体网关配置HMP

  7.1 解决方案配置测试

  Dialogic® NetStructure™ 主机媒体处理(HMP)软件IVR解决方案服从现实世界测试场景。为举例说明IVR参考(SimpleIVR)系统的性能,我们提供了关于CPU占用、重DTMF检测以及忙时呼叫请求次数等方面的性能数据。本节将集中表述第2章"主机媒体处理配置描述"中说述的系统。

  7.2 测试方法

  系统已经过测试,并收集了许多系统级的关键性能参数。虽然在这个特定的测试系统中运用了许多最优化方法,但是单个的应用程序和它们的系统配置可能仍需要进一步的精确调整来保证可用,本节的内容只起一般的指导作用。你也可以使用以下数据来帮助你选择正确的平台以提供所需的系统性能。

  7.2.1 性能参数


  以下性能参数通常被认为是IVR系统的关键性能标准:

  • 忙时呼叫请求次数(BHCA)
  • 忙时呼叫请求完成次数(BHCC)
  • 呼损率
  • 话音质量
  • 信号检测错误
  • 信号检测响应时间
  • CPU占用
  • 内存占用

  收集的性能数据数据如下:

  • 忙时呼叫请求次数(BHCA)
  • 忙时呼叫请求完成次数(BHCC)
  • 呼损率
  • 信号检测错误
  • CPU占用

  7.3 测试场景和性能数据

  不同的测试脚本被用于显示IVR系统的全部潜能,这些脚本能够对系统从密度、性能和响应设计方面进行观察。

  7.3.1 CPU 占用

  CPU占用的性能信息包括如下几点:

  • CPU占用的硬件平台
  • CPU占用的测试脚本
  • CPU占用的性能数据

  7.3.1.1 CPU占用的硬件平台

  CPU占用性能结果基于从下面表格中定义的硬件平台中取出的数据。

  计算机1

  计算机2

  计算机3

  7.3.1.2 CPU占用的测试场景

  以下测试场景被用于收集CPU占用的性能数据:

  • 播放: 两个线程同时播放内存中的;每个线程负责半个通道。
  • 录音: 两个线程同时记录话音数据到内存中;每个线程负责半个通道。

  配置文件

  评测CPU占用主要使用以下HMP 配置文件:
  um_64-0-0.pcd
  This file provides 64 voice channels.

  测试参数

  测试参数包括:

  • 播放格式: 每抽样8 KHz/8bits μ律 PCM 从内存中的话音播放
  • 录音格式: 每抽样8 KHz/8bits μ律 PCM 话音记录到内存中
  • RTP 音频性能: G.711, μLaw, 64k, {20, 30ms} 帧大小
  • AGC: 开/关

  7.3.1.3 CPU占用的性能数据

  关于CPU占用的性能数据被分组如下:

  • 计算机 1 播放/录音 计算机 2
  • 计算机 2 播放/录音 计算机 1
  • 计算机 3 播放/录音 计算机 2

  计算机 1 播放/录音 计算机 2

  下面的图显示CPU占用测试结果:

  • 计算机 1 播放 计算机 2 (Figure 26)
  • 计算机 2 录音 计算机 1 (AGC on) (Figure 27)
  • 计算机 2 录音 计算机 1 (AGC off) (Figure 28)

  计算机 2 播放/录音 计算机 1

  下面的图形显示CPU占用的测试结果:

  • 计算机 2 播放 计算机 1 (Figure 29)
  • 计算机 1 录音 计算机 2 (AGC on) (Figure 30)
  • 计算机 1 录音 计算机 2 (AGC off) (Figure 31)

图29 CPU占用(播放)

图30 CPU占用(录音 AGC:开)

图31 CPU占用(录音 AGC:关)

  计算机 3 播放/录音 计算机 2

  下面的图显示CPU占用测试的结果:

  • 计算机 3 播放 计算机 2 (图 32)
  • 计算机 3 录音 计算机 1 (AGC on) (图 33)

 

图32 CPU占用(播放)

 

图33 CPU占用(录音 AGC:开)

  7.3.2 DTMF 检测测试

  DTMF 检测性能是IVR系统中最重要的参数。即时检测和低错误率是IVR的关键。在测试中,计算机在全异的网段上通过局域网相连,这是典型的企业环境。DTMF检测的性能信息包括如下内容:

  • DTMF检测测试的硬件平台
  • DTMF检测测试的测试场景
  • DTMF检测测试的性能数据

  7.3.2.1 DTMF 检测测试的硬件平台

  使用以下硬件平台:


  7.3.2.2 DTMF检测测试的测试场景


  计算机4和计算机5使用IPML库建立64个全双工G.711 μ律, 30ms RTP 的对话。 计算机4产生一系列的随机长度的DTMF随机信号串并使用呼入模式拨打这些信号。计算机5发送回信号给计算机4。计算机4检测信号并与它发出的信号作比较。

  7.3.2.3 DTMF 检测测试的性能数据

  经过12小时的测试,64个通道都被使用,在274,240个数字串中只有43个发生了错误,错误率小于0.02% 。错误要么是丢失了几个数字,要么是重复进行检测到了2次。

  7.3.3 忙时呼叫请求次数(BHCA)


  测试的主要目的是确定IVR系统能处理多少呼叫,如果:

  • 所有的呼叫同时到达
  • 所有的呼叫都很短(3秒钟的持续时间和1秒钟的呼叫间隔)
    极端的情况有现实的应用,比如投票呼叫和瞬间信息核查

  忙时呼叫请求次数的性能信息包括如下内容:

  • BHCA硬件平台
  • BHCA测试场景
  • BHCA性能数据

  7.3.3.1 BHCA硬件平台

  7.3.1节"CPU占用"中描述的计算机1 和 计算机2 用来收集关于BHCA的性能数据。

  7.3.3.2 BHCA测试场景

  系统(计算机 1 做为呼出系统,计算机 2做为呼入系统) 运行BHCA性能测试程序,能够执行每小时48750个H.323呼叫,它使用64个端口连续的进行Global Call循环,保持3秒钟的连接时间,每两次呼叫间隔1秒。这相当于每小时每端口成功进行762次呼叫。

  7.3.3.3 BHCA性能数据

  外呼系统使用的是,所有64个端口在63000秒内执行了853000次呼叫,错误率只有0.18%(1560个呼叫失败)。呼入系统也是使用的HMP的BHCA性能测试程序,成功的接收了除1560个失败呼叫以外的所有外呼系统发出的呼叫。

  7.4 用Dialogic® NetStructure™ PBX-IP媒体网关配置HMP

  HMP软件可被配置用来和Dialogic® NetStructure™ PBX-IP媒体网关(PIMG)共同使用。如图34所示,一条模拟线通过PBX连接到PIMG。PIMG是电路交换网络和IP网络之间的网关。连接在IP网络上的一台计算机提供了IVR功能,在这里就是SimpleIVR程序,它使用了H.323做为呼叫控制协议。

  7.4.1 配置事项

  在配置时,某些PIMG参数需要被设置为特定的值。这些参数和值包括:

  • 操作模式 = H.323仿真
  • 电话交换类型=none
  • PCM 编码方式=μ律
  • 呼叫路由方式=点对点
  • PBX 端口/IP端点分配=为每一个连接到PBX或PBX仿真器上的端口分配一个合适的IP终端地址
  • 信号传输方式 = 带内音频

图 34. 用于和PIMG互操作使用的HMP 配置

你采用的解决方案的可选设计模式

  Dialogic® 电信服务提供了专业的资源,来指导服务提供商完成解决方案的生命周期-从计划、设计到开发和实现。Dialogic在通信领域的顾问和专家,将提供一系列服务,包括网络设计、呼叫和媒体流分析、程序开发、实验室测试已经现场实现。

  Dialogic的顾问能够帮助服务提供商从现有的电信基础设施向高级的模块化网络平台升级,包括开发媒体服务器和媒体网关。Dialogic能够使用Dialogic积木技术来帮助设计和实现网络基础,包括特殊的和预留的网络与外部设备和程序之间的接口。拥有SS7、H.323、 SIP、 MGCP、 Megacom、 ISDN 和 TCP/IP等技术方面的专家,Dialogic的顾问能够帮助服务提供商向模块化的网络转移。

  特别顾问服务包括:

  • 项目发现工作室--为项目早期规划阶段的开发人员设计,这些工作室能够为项目提供全面的估计。2-3天的会议将帮助开发人员分析技术的需求并提供设计规范方面的指导、可能的架构、运作方面需要考虑的问题、实现步骤和估计需要的资源。

  • 设计服务――在项目的设计阶段,Dialogic顾问能为系统和应用程序开发出设计和功能规范,以及测试计划。

  • 提升服务――Dialogic提供快步的、手把手的技术指导,安装配置指导,个性化的咨询来帮助解决方案提供商将范围广大的Dialogic硬件和软件积木集成进他们的产品或系统设计中。

  • 开发服务――Dialogic顾问将同服务提供商的开发团队一起工作,将新的特性和程序合并到解决方案中。可交付使用的包括代码、功能规范书、用户手册以及相关的咨询。

  • 实验室服务――Dialogic实验室提供了完美的电话环境,用以开发原型机、测试和精确调整程序。实验室提供各种第三方的交换机和Dialogic的设备。实验室的专家开发和实施一系列的测试计划,包括可用性、性能、集成、负荷和压力以及特点的一致性。

  • 现场实施服务――现场实施服务包括各种远程和现场的安装和开发任务,这些任务需要专业的网络、语音和计算机电话集成方面的专家。例如Dialogic提供现场安装服务,帮助服务提供商在短时间内将他们的SS7平台安装到网络提供商的设备上。Dialogic顾问与服务和网络提供商一起工作,在网络环境中进行正确的配置和安装。

  如需了解更多,请发送邮件到ctcmarketing@Dialogic.com或参考顾问服务网址:http://developer.Dialogic.com/network/csp/products/4383web.htm.

索 引

A

activating a license 激活许可证 52
add components to HMP software installation 为主机媒体处理软件增加部件 45
administration 管理 22
administrative privileges 管理特权 55
algorithms 算法
voice media processing 语音媒体处理 18
applications
host media processing 主机媒体处理 14
IVR 交互式语音应答 35
IVR reference 交互式语音应答参考 61
Simple IVR 简化的交互式语音应答 61
VoIP IP语音 30
Architecture 体系结构 17
software reference system 软件参考系统 40

B

basic state machine 基本状态机 62
business and market segments 商业和市场
summary 总结 32
business drivers 商业驱动力 23
busy hour call attempts 忙时呼叫请求 83

C

call control 呼叫控制 20
call signaling 呼叫信令 20
circuit interface 电路接口 19
code 编码 61
concept 概念 66
configuration considerations 配置注意事项 84
configuration file 配置文件
CPU utilization CPU利用率 75
configuration overview 配置概述 55
configuring HMP 配置主机媒体处理 55
configuring HMP with PIMG 为PIMG配置HMP 84
connection control 连接控制 21
control 控制
connection 21 连接
media 21 媒体
cost 23 成本
cost reduction 成本降低29
CPU utilization 74 CPU利用率
creating objects 65 创建对象

D

DCM Dialogic配置管理
administrative privileges 55 管理特权
configuring HMP 55 配置主机媒体处理
remote 56 远程
DCOM object 56 分布式组件对象模型
density requirements 31 密度需求
deployment environments 15 布署环境
DTMF detection test 82 双音多频信号检测测试

E

economics of VoIP 24 VoIP的经济效果
equipment tested with HMP 39 主机媒体处理设备的测试
Ethernet 19 以太
Ethernet interface 19 以太接口
evaluation run-time license 评估运行时许可
obtaining 47 获取

H

hardware platforms 硬件平台
busy hour call attempts 84 忙时呼叫请求次数
CPU utilization CPU 利用率74
heavy DTMF detection test 重DTMF检测 83
high capacity trunk interfaces 大容量中继接口 16

HMP

architecture 结构17
business drivers 商业驱动力23
configuring 配置 55
configuring with PIMG 为PIMG配置 84
cost 成本23
deployment environments 开发环境15
equipment tested with 设备测试39
features 特性36
market segment opportunities 市场机会23
Moore's Law 摩尔定律24
reference architecture 参考构架17
software 软件18
software programming interfaces 软件编程接口20
support for management or administration 支持管理22

HMP software 主机媒体处理软件


configuration overview 55 配置概述
installing 43 安装
programming interfaces 编程接口20 
reinstalling 45 重新安装
uninstalling 45 卸载

Host Media Processing 主机媒体处理

product description 13 产品描述

Host Media Processing (HMP) software 主机媒体处理软件

configuration 55 配置
licensing 47 许可证
host media processing applications 14 主机媒体处理应用程序

I

Interface 接口
circuit 19 电路
Ethernet 19 以太网
HMP software programming 20 主机媒体处理软件编程
voice and data storage 20 语音和数据存贮
interfaces 接口
network 19 网络
IP media server 43 IP媒体服务器
IP penetration IP穿透
enterprise 25 企业
service providers 26 服务提供商
IP penetration for enterprise 25 企业IP穿透
IP penetration for service providers 26 服务提供商IP穿透
IP-based IVR system 36 基于IP的交互式语音应答系统
IVR 交互式语音应答
performance testing 73 性能测试
solution testing 73 解决方案测试
IVR application 35 交互式语音应答应用软件
IVR application scenarios 交互式语音应答应用场合
HMP based 39 基于主机媒体处理的
PSTN network 38 公共交换电话网
IVR reference application 61交互式语音应答参考应用
IVR system 交互式语音应答系统
HMP based 39基于主机媒体处理的
IP-based 36 基于IP的
key features 35 关键特性
speech enabled 36 语音激活的

K

key features of IVR system 35 交互性语音应答系统的关键特性

L

License 许可证
activating 52 激活
licensing 47 许可证
activating a license 52 激活一个许可证
obtaining evaluation run-time license 47 获得评估运行许可证
purchasing a permanent license 47 购买一个永久许可证

M

management 22 管理
market segment opportunities 23 市场机会
media control 21 媒体控制
media switching 18 媒体交换
modify HMP software installation 45 修改主机媒体软件安装配置
Moore's Law 24 摩尔定律

N

network interfaces 19 网络接口

O

Objects 对象
creating 65 创建
obtaining evaluation run-time license 47获得评估运行许可证
obtaining IVR reverence code 61 获得交互性语音应答参考代码

P

PBX-IP Media Gateway 84 交换机-IP媒体网关
performance 73 性能
91 Host Media Processing - Reference Design Guide 主机媒体处理-参考设计指南
performance data 74 性能数据
busy hour call attempts 84 忙时呼叫请求次数
CPU utilization 76 中央处理器占用
heavy DTMF detection test 83 重DTMF检测测试
performance parameters 73 性能参数
permanent license 永久许可证
purchasing 47 购买
PIMG
configuration considerations 84 配置考虑事项
configuring with HMP 84 配置HMP
product description 13 产品描述
properties of simple devices 70 简单设备的属性
purchasing a permanent license 47 购买一个永久许可证

R

reference architecture 17 参考体系机构
reinstall HMP software 45 重装主机媒体处理软件
remote DCM 56 远程DCM
remove an HMP software installation 45 删除主机媒体处理软件的安装
remove components from HMP installation 45 从主机媒体处理软件的安装中删除组件
repair an HMP software installation 45 修复主机媒体处理软件的安装
requirements 需求
density 31 密度
running terminal services 43 运行终端服务

S

setting startup mode to automatic 59 设置自动启动模式
simple device 66 简单设备
concept 66 概念
simple device properties 70 简单设备属性
SimpleIVR application 61 简单交互式语音应答应用程序
software 18 软件
software programming interfaces 20 软件编程接口
software reference system 软件参考系统
architecture 40 体系结构
software voice switching 18 软件语音交换
speech enabled IVR system 36 具有语音功能的IVR系统
starting and stopping system 57 启停系统
starting the system 57 启动系统
startup mode 启动模式
setting to automatic 59 设置为自动
state machine 62 状态机
basic 62 基本的
summary of business and market segments 32 商业和市场总结
system 系统
starting and stopping 57 启动和停止

T

terminal services 终端服务
running 43 运行
test methodology 73 测试方法
test parameters 测试参数
CPU utilization 75 中央处理器占用
test scenario 测试场合
CPU utilization 75 中央处理器占用
CPU utilzation 74 中央处理器占用
heavy DTMF detection test 83 重DTMF检测测试
test scenarios 74 测试场合
busy hour call attempts 84 忙时呼叫请求次数
testing the IVR solution 73 测试交互式语音应答解决方案

U

uninstalling the HMP software 45 卸载主机媒体处理软件

V

voice and data storage interface 20 话音和数据存贮接口
voice media processing algorithms 18 话音媒体处理算法
voice over IP 24 IP话音
voice over IP applications 30 IP话音应用
voice switching 18 话音交换
VoIP IP话音
applications 30 应用
economics 24 经济学


进一步了解信息,访问我们网站http://www.Dialogic.com

[ 全文英文版 ]

 


[ page1 ] [ page2 ]

主机媒体处理(Windows版)参考设计指南
Dialogic®NetStructure™ 主机媒体处理软件(HMP)1.0产品手册
Dialogic® NetStructure™ 主机媒体处理软件(HMP)常见问题



融合通信专栏>>技术开发>>