定义和实现座席特性集合
 


执行摘要

  Dialogic的交换产品提供坐席接口和其它类型的资源,是当今通信系统中的重要构建块。这个文档用来帮助开发者使用这些Dialogic构建块定义和实现座席的功能。

介绍

  用一个通信系统中的Dialogic的交换产品提供座席接口和其它类型的资源来创建一个应用,需要了解坐席设置属性,也需要分析不同的产品特性和属性怎样影响这些功能的应用。

  这个文件描述了普通座席功能,然后描述了该功能的应用,首先是在组合式座席卡上的应用,然后是在Dialogic的Dialogic座席卡和Dialogic的?座席卡上的应用。

  本文档中全部的函数调用列表参见附录B。

  Dialogic座席卡
  本文档中的信息应用于三种类型的板卡:
  Dialogic Dialogic座席卡:
  DISI16R2
  DISI24R2
  DISI32R2
  DI0408LSAR2
  Dialogic 座席卡:
  HDSI/480
  HDSI/720
  HDSI/960
  HDSI/1200
  组合式座席卡
  MSI/80SC-GBL
  MSI/80PCI-GBL
  MSI/160SC-GBL
  MSI/160PCI-GBL
  MIS/240SC-GBL

  上面所列的组合式座席卡已于2003年2月11日宣布停产。本文档中的信息能够指导开发者从Dialogic停产的接口板转移到Dialogic的其它座席卡上。附录A是产品密度阵列,帮助确定基于资源要求的最好的替换板和一系列建议替换板。

  缩略语:
  为了文档的清晰,表1中的缩略语可以用于板卡的索引。

参考板卡 缩略语
Dialogic Dialogic座席卡 DI
Dialogic 座席卡 HDSI
组合式座席卡 MSI

表1 板卡索引的缩略语


通用坐席集合特性

  设备管理:

  所有座席的设置都是通过调用ms_open()和ms_close() API 函数来管理的。开、关操作在所有座席产品中都是一样的。

  一般通过ms_open()API调用来打开一个座席接口设备,并要求以ASCIIZ字符串形式传递这个设备的名字,格式是misB<b>C<c>,这里的<b>代表板号,<c>代表座席号,此数范围从1到板上的座席接口的最大数目。

  ms_open()函数在座席设备成功打开之后返回设备的句柄。

  设备名可以在注册表中查到,在HKEY_LOCAL_MACHINE\SOFTWARE\Dialogic\Configuration\Protocol Drivers下。具有Spring Ware结构的设备设置放在DlcSram目录里,DM3结构的设备设置放在DLGCDM目录里。

  关掉一个设备要求将设备的句柄传递到ms_close API调用。

  CT总线路由(routing)

  创建、切断电话资源之间的音频连接都需要CT总线路由。CT总线与SC总线同义,但CT总线比较快,支持2048时隙(PCI版本),SC总线支持1024时隙1。

  如果一个系统同时包含CT总线和SC总线,系统使用SC总线的性能。

  MSI板不包括板内语音资源。由于这个原因,MSI座席的设置不提供相关的语音资源。需要语音资源的应用必须在系统配置中添加可路由语音资源的板卡,并且使用这些板卡上的可路由语音资源。使用MSI站设置的应用只要需要语音操作就必须向坐席集合提供一个语音资源。

  使用大部分DI和HDSI板卡的座席带有永久的语音资源。由于这样的语音资源不能从座席路由至需要它的地方,分配给一个座席的语音资源当系统服务开始时就不能再改变了。

  要判定哪个语音资源永久地路由到了一个特定的座席,参见注册表\\HKEY_LOCAL_MACHINE\SOFTWARE\
Dialogic\Configuration\ProtocolDrivers\DLGCDM3\Devices。
所有的使用DM3结构的设备列在这个目录下。每一座席集合都保存在一个唯一目录中,该目录包括一套座席使用的关键值。VoiceDevice 关键词包括座席的语音资源的名字。

  所有座席都可以通过调用ms_getxmitslot()函数得到传送它们的CT总线的时隙。在一个使用DM3结构的静态配置下, 必须通过ms_getxmitslot()获得传输声音资源的CT总线时隙,而不是通过调用语音API函数dx_getxmitslot()。静态配置时在一个语音资源上调用dx_getxmitslot()将产生"EDX_SH_MISSING"错误信息,指示CT总线交换矩阵丢失。

  座席的音频连接是通过调用ms_listen()和ms_unlisten()来创建和断开的。要在DM3结构的座席和固定设置中的语音资源之间创建一个全双工的音频连接,传给ms_listen()的SC总线/CT总线时隙应该是座席传输音频的SC总线/CT总线时隙。换句话说,站的设置应该"监听它自己"。在一个座席和另一个语音资源之间创建一个全双工的音频连接,传递给ms_listen()的SC总线/CT总线时隙是xx_getmitslot()API调用的返回值.

1.使用简洁PCI的CT总线支持4096时隙。
2.HDSI/1200不提供相关的声音资源。D40408LSAR2为专用语音资源或路由声音资源提供资源配置。


表2 支持的和不支持的API调用

  信令

  所有座席通过把设备的句柄传递给ATMS_TSSGBIT() MSI API来检测当前的摘挂机状态。这个函数会返回以下两种值之一。
  MS_ONHOOK - 座席挂机
  MS_OFFHOOK - 座席摘机

  振铃产生和主叫ID(FSK)信令
  应用程序可以通过下面的MSI API函数在一个座席中初始化振铃周期:ms_genring()、s_genringEx()和 ms_genring
-CallerID()。MSI振铃产生能力受限于ms_genring()和扩展的ms_genringEx()API调用。

  为主叫ID提供频移键控(FSK)能力,HDSI和DI座席支持ms_genringCallerID() API调用,也支持基础的和扩展的MSI振铃产生函数调用。表2列出了每一座席产品支持的产生振铃的API函数,支持的API调用以"S"表示,不支持的调用用"U"表示。

  基本的振铃产生API调用是ms_genring(),它需要得到这个座席设备的句柄,产生振铃周期的的最大值,和API阻塞模式(同步或异步)。

  通过扩展的MSI API函数ms_genringex()和ms_genringCallerID(),可以产生特殊的振铃。特殊的振铃要求应用程序通过ms_setbrdparm() MSI API 函数激活MSG_DISTINCTRNG板层的参数。

  调用ms_setbrdparm()要求一个空指针指向MS_CADENCE结构,MS_CADENCE结构要求cadid字段有一个1到8之间的值来唯一的标识这个频率。

  这个节奏的长度在cadlength字段内规定,应该通过MS_RNGA_CADLENGTH设置为6秒的默认长度。

  MS_CADENCE的最后的字段是一个指向节奏(cadence)模式的指针。表3列出了不同的板卡支持的节奏模式。

  注意HDSI和DI板不支持MS_RNGA_SPLASH3和MS_RNGA_SPLASH4节奏模式。 在ms_genringex() 或者

  ms_genringCallerID()中使用这些模式不会产生错误,但是在座席上不会产生振铃。

  一个特殊的振铃会被分配到某个座席,并且成为这个座席默认的振铃节奏。将来使用参数MS_RNG_DEFAULT调用ms_genringex() 或者调用ms_genring()产生的振铃就会使用新的默认振铃节奏。

  当通过呼叫在配置为DM3的站上产生振铃时,主叫鉴权可以被传递给ms_genringCallerID(),这个函数允许应用开发者详细定义一个FSK调制格式的主叫鉴权字符串。增加的ms_genringCallerID()函数使用ms_genringCallerID()API函数调用完成FSK格式的主叫鉴权传递,让应用开发人员不必在主机层设置主叫鉴权功能。

  需要注意的是同时使用MS_RNGA_SHORTLONG特殊振铃和ms_genringCallerID()调用会引起主叫鉴权传输失败。表4列出了现在支持的FSK组鉴权标记。

  HDSI和DI板在<INSTALL DIRECTORY>\Dialogic\Data目录下有这个config文件可以用于改变默认的站动作.默认的振铃节奏模板可以通过编辑Net_RingOn和Net_RingOff参数来改变,参数放在<country>_hdsi.config或者di<product>.config文件中的CAS段.Net_RingOn和Net_RingOff参数包括下面的属性:Pulse=<Signal ID>, <Off PulseCode>, <On Pulse Code>, <PrePulse
Interval>, <Min Pulse Interval>,<Nominal Pulse Interval>, <MaxPulse Interval>, <Post Pulse
Interval>

  下面的属性可以改变,但是这三个参数的值必须相同:<Min Pulse Interval>, <Nominal Pulse Interval>和<Max Pulse Interval>.图1绘出了这些参数怎样影响振铃模式。

  图1中的振铃模式在Net_RingOn和Net_RingOff参数如下配置时可以使用:pulse=0xC15CA036,0xA4,0xAA,0,2000,2000,2000,50 !Net_RingOn
pulse=0xC15CA037,0xA4,0xA4,50,3900,3900,3900,0 ! Net_RingOff
当一个config文件被修改时,<INSTALL DIRECTORY>\Dialogic\Bin\fcdgen 工具必须用修改过的或者新的config文件的位置和名字执行。这个工具会创建一个新的FCD文件,该文件必须在配置管理列表中相应板卡的FCD文件Name域上详细说明.例见图2.


表3支持和不支持的音频模式


表4 FSK组标识记号的意义


图1 振铃音频模板示例

  消息等待指示器

  MSI API可以通过调用ms_SetMsgWaitInd()接入消息等待指示器(MWI),该函数可以产生一个FSK信号来点亮消息等待LED。这个API函数的调用要求应用开发者提供设备的句柄和两个MWI的状态变量之一来实现MWI LED的操作:

  • MS_MSGINDON :打开MWI LED
  • MS_MSGINDOFF:关上MWI LED

  只有HDSI和DI板支持ms_SetMsgWaitInd()。这个API函数调用让应用开发者不必在主机层通过FSK消息完成消息等待功能。

  压缩音

  只有MSI站的设备支持压缩音,配置为DM3结构座席可以使用自身的语音资源(通过dx_playtone() 或者dx_playtoneEx())产生一个类似于压缩音的音调,而不是用MSI API产生一个压缩音。

  会议

  DISI16R2, DISI24R2, 和 DISI32R2 板有16个可以取消回声的会议资源,DI0408LSAR2有9个可以取消回声的会议资源,MSI板有32个不能取消回声的会议资源。HDSI产品目前还没有会议资源。

  音调的产生和检测

  由于MSI API没有提供产生和检测音调的函数,声音API函数就用于产生和检测音调。针对各种声音资源和坐席集合的组合,应用开发人员必须遵循可路由的方针。
  在Windows操作系统下的声音资源,参见:
http://www.dialogic.com
在Linux操作系统下的声音资源,参见:
http://www.dialogic.com
  动态的判定一个语音资源的音调产生能力和检测能力,可以调用dx_getfeaturelist() 语音API函数。在语音API的头文件dxxxlib.h中定义了用FEATURE_TABLE数据结构中的某个参数代表的特性。FEATURE_TABLE结构中的ft_tone字段包括一个位掩码,它指出了一个特定的语音设备支持的音调特性。

  播放和录音

  由于MSI API没有提供播放或者纪录媒体的调用函数,采用语音API函数进行播放和录音。针对各种声音资源和坐席集合的组合,应用开发人员必须遵循可路由的方针。

  Windows操作系统下的语音资源,参见:
http://www.dialogic.com

Linux操作系统下的语音资源,参见:
http://www.dialogic.com

  想要动态的判定所有的语音资源的播放和录制功能,可以使用dx_getfeaturelist()语音API函数。在语音API的头文件dxxxlib.h中定义了用FEATURE_TABLE数据结构中的某个字段代表的特性。ft_play字段包含的一个位掩码指定了一个特定的语音设备支持的播放特性。ft_record字段包含的一个位掩码指定了一个特定的语音设备支持的录音特性。

 


图2.配置管理举例

  播放语速和音量控制

  HDSI板不支持语速和音量的控制。DISI16R2, DISI24R2, 和DISI32R2支持语速和音量控制3。
播放语速和音量可以通过语音API函数来控制。

  • 直接改变语速和声音,使用dx_adjsv().
    dx_adjsv()语音API函数可以直接在已说明的信道调节语速或者音量。语速或者音量可设置成一个值,再逐渐的调节或者是设置为锁定。语速和音量调节表有21个条目,代表21个不同级别的语速和音量,分别在默认语速和音量上下各有10个。dx_setsvmt()函数通过可设置的值来调用这个表。
  • 在指定的条件下修改语速或者音量(例如:如果DTMF是"1",语速就增加一个级别),使用dx_setsvcond():dx_setsvcond()语音API函数为稍后在指定语音设备上的播放文件设置语速和音量调节以及调节条件。可以在一个播放文件开始时设置调节条件,或者在播放中间为一个即将到来的数字设置播放条件。任何时候,调节条件都可以改变或者取消, dx_setsvcond()的函数调用可以重复。调用函数dx_clrsvcond()可以清除当前的速度和声音条件。

  API数据结构
  MSI数据结构:
  MS_CADENCE
  MS_CADENCE数据结构用于说明详细的节奏ID的振铃模式和长度。
  typedef ms_cadence {
  BYTE cadid; // Cadence ID, <1-8>
  BYTE cadlength; // Cadence length
  BYTE* cadpattern; // Pointer to cadence pattern
  } MS_CADENCE;

  语音数据结构
  FEATURE_TABLE
  FEATURE_TABLE数据结构用于说明一个特定的设备支持的特性。
  typedef struct feature_table {
  unsigned short ft_play;
  unsigned short ft_record;
  unsigned short ft_tone;
  unsigned short ft_e2p_brd_cfg;
  unsigned short ft_fax;
  unsigned short ft_front_end;
  unsigned short ft_misc;
  unsigned short ft_rfu[8];
  } FEATURE_TABLE;

  表5列出了在FEATURE_TABLE中的掩码域指定说明的语音设备的特性:


表5:FEATURE_TABLE中域的特性说明

  DX_SVCB

  速度/音量条件块(DX_SVCB)数据结构用于详细说明一个播放文件的调节条件,根据这个条件,可以在重放前或者重放过程中按照用户输入的数字调节速度或者音量。

  

  DX_SVMT

  速度/音量调节表(DX_SVMT)数据结构有21个代表不同级别的速度和音量的条目,用于指定信道的速度或者音量调节的变化率。这些值可以设置或者用dx_setsvmt()和dx_getsvmt()从表中取值。

  

  其它Dialogic产品中的MSI API支持

  HDSI
  由于HDSI板卡现在没有会议资源或者能力,下面的调用不支持:

  

  当座席用户使用耳机而不是电话时,可以使用压缩音。耳机不能振铃,因此要产生一个压缩音。由于HDSI板卡具有板上语音资源,而语音资源可以产生一个音调,因此不一定需要压缩音同时也不支持ms_genziptone。

  DI
  由于在DI板卡中不具备会议连接扩展功能,下面的调用不支持:

  

  当座席用户使用耳机而不是电话时,可以使用压缩音。耳机不能振铃,因此要产生一个压缩音。由于HDSI板卡具有板上语音资源,而语音资源可以产生一个音调,因此不一定需要压缩音同时也不支持ms_genziptone。

  MSI
  不支持下面的调用。在每一个函数调用后面提供了附加的信息

  ms_genringCallerID
  加入ms_genringCallerID()调用可以让应用开发人员不必在应用层完成FSK主叫鉴权。DI和HDSI板卡的板上语音资源具有FSK能力,能够在内部控制FSK的产生。

  ms_ResultMsg和ms_Result值
  加入ms_ResultMsg和ms_Result调用可以加强站设置中的处理错误消息的能力。

  ms_SendData
  加入ms_SendData()调用可以把FSK数据送到一个摘机座席。DI和HDSI板卡的板上语音资源具有FSK能力,能够在内部控制FSK的产生。

  ms_SetMsgWaitlnd
  ms_SetMsgWaitlnd函数用FSK数据去控制消息等待灯的亮或者灭。DI和HDSI板卡在他们的板上语音资源上具有FSK能力,能够在内部控制FSK的产生。

  附录A 产品密度矩阵表示

  表6的产品密度矩阵是为了帮助确定基于基本资源要求的最优硬件解决方案。在资源配置一列,xx代表特定的资源配置的国家代码。
  结合产品数据表的产品特性的另外一个对比,请参见:http://www.dialogic.com


表6 产品密度矩阵

  下面的表列出了本文档中讨论过的停产了的板卡和建议作为替换的板卡


表7 停产板卡的替换建议

4.持续的语音处理
5.可路由语音
6.可路由语音
7.任何有PCI插槽的HDSI板卡


  附录B 函数调用列表:

  下面的函数调用包括在本文档的信息范围之内:


  附录C 注意事项:

  下面的问题追踪记录(PTRs)描述了与本文档中讨论的板子相关的事项:

  • PTR 22914 -如果当前座席处在摘机状态,则调用ms_open()时ATMS_TSSGBIT()将返回MS_ONHOOK
  • PTR 22919 - dx_playtone()在DI板子上只能播放35个单音
  • PTR 26866 -当座席处在摘机状态时,如果调用ms_close(),必须重启系统服务以便正确的操作站的设置。
  • PTR 28203 -Dialogic Dialogic DI/0408-LS-A不检测一个在边缘条件下正在摘机的远端电话。即使呼叫已经连接了,板卡也不发送已连接结果消息。
  • PTR 29235 - DX_MAXNOSIL终端条件不按照预计精确地终止。(例如:设置的两秒钟的最大化非静音终止条件,而实际可能是在大于两秒钟之后完成终止的。)

 

[全文英文版]

 

 

融合通信专栏>>媒体处理板卡>>