专利名称:具有可编程网络协议及通信业务的电信交换机的制作方法
背景技术:
1.发明领域本发明主要是涉及电信领域,更为具体地讲,是关于可编程的电信交换机和支持各种电信应用的控制外部计算机。
2.对以往技术的论述可编程的电信交换机在各种应用中得到广泛应用,诸如语音信息,电子销售服务、以及类似的应用等。通常由一个主设备来控制一个可编程交换机,该主设备一般是一台运行相应电信应用程序的计算机。用户可以购买在商业市场上提供的与主机及交换机硬件相兼容的应用程序,或者也可以选择编写用户程序。
在大多数应用中,一个可编程交换机通过一个或多个终接于交换机的模拟干线或数字信道(span)(例如T1信道)连入公用电话网。该交换也可以以连至如电话机等的设备上的一条或多条“线路”为终端线。在任意给定的主干、信道(span)或线路上的通信都是通过遵守指定的信令协议来完成的。
在世界有许多“标准”的信令协议在使用。当前广泛使用的某些协议有E&M闪烁发起(wink start)、环路发起(loopstart)、地面发起(groundstart),及国际上强制使用的采用DTMF/MFR1或MFR2地址信令的R2协议等。
一般的可编程交换机,对于某个特定的干线、信道或线路选择哪一种信令协议通常是在将设备向用户交货之前来决定的。也就是说,由交换机的生产商来对交换机进行配置,包括硬件、固件或二者的各个方面,而这种配置通常是以某种不能轻易或快速改变(例如,通过存贮于PROM中的固件)的方法来做的。生产商的配置有效地为每一主干、信道或线路指定一个特定的信令协议。
但是,由于这种常用的配置产生了几个问题。首先,对于用户希望通过配置交换机以满足某一特殊应用的要求来讲缺乏灵活性。尤其在对交换机进行初始安装之后需要对某些特定的信令协议进行调整时,即使是非经常性的调整这个问题更为明显。
这种常规的可编程交换机的另一个问题在于,它们不具备对为某个特定主干、信道或线路指定的信令协议进行动态修改的能力。这个问题有可能发生在欧洲的一些频率,当不同的国家使用不同的强制R2信号协议,或在同一国家中通过一个tandem交换设备产生国际间的呼叫时。而所不希望的结果是该交换机很可能不能适当处理入呼叫。
这种常规可编程交换机还有一个主要的缺陷是,没有提供使客户为满足某些应用而较容易地开发和实现用户信令协议的应用的功能。在将交换机连接在公共电话网与其它设备之间(如一个语音信息系统)的应用的情况中,用户协议如果不是必须的,也是人们所希望的。因为这种设备能执行某些特定的功能并且不希望直接连入公共电话网,因此它们通常不遵循标准的信令协议。这就需要让用户可以以如下方式来控制该可编程交换机,即既要保持在交换机与公用电话网之间的正确通信,也要保持交换机与连至交换机的其它设备之间的正确通信。
然而上述常规可编程交换机还有另一个缺陷,就是为了处理呼叫需要由主机设备进行过频繁的干预。例如,在一个惯用的交换机中,通常是在发送或接收数字时需要主机干预(即在交换机与主机设备之间交换信息)。这是必要的,因为该主机设备必须指示交换机应用适当的,可用的资源以完成手头的任务。在这个例子中,该主机可能指示交换机将声调发生器连接到某个特定的信道以发送数字,或连接声调接收器以接收数字。在某个应用中如果每小时有几百个到或许上万个呼叫需要由交换机来处理时,必须在主机与交换机之间传递的信息的数量就变得相当巨大,这通常会导致主机和交换机性能的降低。
本发明简介简短地说,本发明提供这样一种可编程的电信交换机,它为用户提供一种在逐端口基础之上定义和指定自己所需要的用以处理入呼叫或出呼叫的、“标准”的或实际常规的信令协议。交换机中可以同时驻留多个信令协议,而对于某个给定的口来说,所提定的协议是可以实时动态改变的。
本发明还提供了一个协议开发环境,这使得用户可以对交换机提供的每一个口定义一个独立的有限状态机。每个有限状态机可通过下述方式独立地定义出来,即将一系列称为原子功能的基本处理步骤组合成原语,再将这些原语与状态和事件组合起来以定义出所希望的状态机。这种状态机可以包含等待状态,等待状态通常用来减少在处理呼叫过程中主机设备的介入。等待状态可以表示可编程的定时时间段,这为交换机在执行下一个操作之前所预期的某些动作或事件的发生提供一个机会。
另外,本发明还可以为某些通信应用作为一个开发工具,例如个人通信业务(PCS)、800/900业务、语音信箱、电信市场等等。同时,本发明还可用于对一个可编程交换机内部广泛的通信业务进行控制和管理,包括会议、录音话音的广播、音调生成、音调接收、呼叫进展分析、语音识别、语音压缩、及传真编码/解码,等。
附图的简要说明本发明在所附权利要求中有详细论述。参考以下的介绍并结合下述的附图将有助于更好地理解关于本发明的上述或今后的优点。附图包括
图1是一个可编程电信交换机的框图,根据本发明的优选实施例,该交换机可以由用户按自己的需要编程;图2所示为用于控制图1所示的交换机的软件的层的描述;图3A、图3B描述了图2中描述的软件层的第2-5层每个软件层的相应的具体特征和功能;图4为依据本发明的优选实施例构造出来的一个有限状态机开发环境的框图;图5为一个第三层(网络层)的应用的框图,其中有限状态机用来为某个可编程交换机的各个端口指定所需要的网络信令协议;图6A为一个用于在第二层(链路层)应用中提供音调控制的有限状态机的状态图;图6B为图6A所示有限状态机的框图,其中每一系列的原子功能都定义为一种原语;图6C为一组表示各原子功能、原语及图6B所示各状态之间的对应关系的表;图7A为一个在第三层(网络层)应用中使用国际强制R2信令来处理呼叫建立的初始阶段的有限状态机的状态图;图7B为图7A所示的有限状态机的框图,其中每一系列的原子功能都被定义为一个原语;
图7C为一组表示各原子功能、原语及图7B所示各种状态之间的对应关系的表;图8A为一个在第三层(网络层)应用中使用T1 E&M闪烁发起(wink start)信令来处理呼叫建立的初始阶段的有限状态机的状态图;图8B为图8A所示的有限状态机的框图,其中每一系列的原子功能都被定义为一种原语;图8C为一组表示各原子功能、原语、及图8B所示各种状态之间的对应关系的表;图9A为一个用于在第四层(呼叫管理层)应用中提供对一个入呼叫的交互语音响应的有限状态机的状态图;图9B为图9A所说的有限状态机的框图,其中每一系列的原子功能都被定义为一种原语;图9C为一组表示各原子功能,原语、及图9B所示的各种状态之间的对应关系的表;图10A为一个用于某个第五层入境(inbound)应用,例如800号免费(toll free)业务的有限状态机的状态图;图10B为一个图10A所示有限状态机的框图,其中每一系列的原子功能都被定义为一种原语;图10C为一组表示各原子功能、原语、及图10B所示的各种状态之间的对应关系表;一个说明性实施例的详细介绍如图1所示为一个商业可得的个人计算机(PC)2,它包括一个PC中央处理器(CPU)4和一个硬盘驱动器6,这二者又是通过一个PC输入/输出(I/O)总线8和一个PC电源总线9互相连接的。该PC2最好是由IBM卖的PC-AT,或是其兼容机。其它类型的PC如果比PC-AT具有更多的内存或更好的CPU的话,也可以采用。在PC2上最好运行的是面向应用的操作系统,例如DOS或UNIX。
该PC2包括一个机架或机箱,其中装配了一块母板,还有硬驱6,以及其它可选部件,如软驱、调制解调器等等。PC的CPU4装在母板上,母板还包括一系列边缘连接器,其它板子(或卡)可以插入这些连接器,以使它们连到PC I/O总线8和电源总线9。
一个可编程电信交换机10驻留在PC2中。一个CPU/矩阵卡12插入母板上的扩展槽之一以连接到总线8和9。同时该CPU/矩阵卡12还通过以下的4种总线与一个数字(T1)线路卡14、一个数字(E1)线路卡15、一个数字信号处理(DSP)卡16、一个打包工具卡17、一个模拟(通用)线路卡18和一个终端卡19互连在一起一个HDLC或内部处理器总线20;一个TDM总线22;一个线路卡(LC)状态/控制总线24;以及一个定时/控制总线26。一个电池/振铃电压总线28为模拟线路卡18提供电池电压(48VDC)和振铃电压(109VAC)。终端卡19用来从物理上终接总线20、22、24、26和28。
线路卡14、15和18,以及DSP卡16都被连至PC电源总线9且由此接收它们的基本操作电源。尽管在此只描述了一个数字(T1)线路卡14、一个数字(E1)线路卡15和一个模拟线路卡18,应该看到,在下述两个物理限制条件下其它任何类型的线路卡都可以增加(1)CPU/矩阵卡12的最大交换容量,和(2)PC2机架内的物理空间。
一个外部主机30,它可包括一个独立的个人计算机、工作站、或其它计算机,可选择性地通过通信信道32连至CPU/矩阵卡12。CPU/矩阵卡12最好包括一个常用的RS-232兼容接口用以连接信道32。该外部主机30最好在面向应用的操作系统下运行。
如果需要的话,交换机10可以放在一个无源底板(这里不包括PC CPU 4或硬盘6)上,并且通过该主底板获得电源且由外部主机30来控制。
一个外部电池/振铃电压源31通过信道33连至终端卡19。电压源31可包括例如商业市场可得的电源。
除了数字(E1)线路卡15、DSP卡16和打包工具卡17之外,图1中所示的其它各种卡的构成的详细情况在指定给本发明受让人的申请序列号第07/953,690,1992年9月29日提交,现发表为U.S.专利5,321,744中都有所阐述。数字(E1)线路卡15更倾向于采用类似用于T1线路卡14的硬件来构成,只是其差别在于,传统的电路使得线路卡15可相对于T1信道可端接E1信道。
有关DSP卡16和打包工具卡17的构造的详细情况在指定给本申请受让人的共同未决申请序列号第08/001,113,1993年1月5日提交的文件中有所阐述。
图2是用于控制图1所示可编程交换机10的软件分层模型。图2中左边的一列是开放系统互连(OSI)参考模型所定义的7层。图2中右边的一列是用于控制交换机10的5层以及这些分层与OSI模型层次的对应关系。
现在请同时参考图1和图2,应用层5,它大体上是对应于OSI模型的应用层,代表了通常运行在PC CPU4或者外部主机30上的应用软件。应用层5的软件可以用于实现任何数量的所需电信业务,例如免费(toll free)(800号)业务,语音信箱,自动呼叫分发(ACD),以及这里未列名的其它业务等等。
呼叫管理层4大体上是对应于OSI模型的表示层、会话层和传输层,它代表了运行在CPU/矩阵卡12上的软件。呼叫管理层4负责执行集中后的呼叫的处理功能,并且为应用层5提供一个与交换机10内部所使用的网络信令协议类型无关的通用接口。通常呼叫管理层4执行那些呼叫建立之后所需要的功能。
网络信令协议层3大体上对应了OSI模型的网络层。网络信令协议层3所表示的软件或者运行在CPU/矩阵卡12上,或者运行在带有自己的微处理器的线路卡上,例如线路卡14、15或打包工具卡17,并且负责是否在频带内或外的网络信令监测、以及对入呼叫和出呼叫的网络协议层控制。
链路层2大体上对应于OSI模型的数据链路层。链路层2的软件运行在CPU/矩阵卡12、及带有自己的微处理器的线路卡上,DSP卡16或打包工具卡17(它们都带有自己的微处理器),并且负责经过网络或线路接口的网络信令信息的检测以及它们的物理传输。
最后是物理层1,它对应于OSI模型的物理层。线路卡14、15和18为交换机10分别提供物理上的T1、E1和模拟电气接口。
图3A和3B是由图2所示软件层的第2-5层各层提供的代表性特征和功能的列表。本发明可用作一种开发工具来开发出实现图3A和3B所示的任何特征和功能的相应软件。下面结合图6A-10C将描述一个在第2-5层中每层的情况中应用本发明的直观例子。
图4是一个有限状态机开发环境的总体框图,它是依据本发明的优选实施例构造的,它允许客户或用户根据执行所需要的电信功能来创建和定义有限状态机。在详细讨论这个图之前,需要说明几个术语的定义。
如在此用到的,术语“状态”指的是表示一个特定信道或端口的当前“情形”的一个数字。在本发明的一个优选实施例中,定义了三种类型的状态正常的、内部的、和阻塞。“正常”(Normal)状态可以是“等待”状态(即一个SEIZE ACK)状态,在该状态下,下面的动作被挂起直到发生一个特定事件为止)或“稳定”状态(即一个会话正在进行)。“内部”(Internal)状态用于检测条件并且有效地进行分支判定的操作。正常状态和内部状态可以由客户或用户按照本发明的方法进行说明,并定义成一个用于执行自己所需要的功能的有限状态机。“阻塞”状态由本发明自动生成,且连同非板上资源的管理一起,是在逐信道的基础上使用的。
一个“事件”是一个标识由某个特定状态来接受的条件的数字号。一个事件可与数据相关联。
一个“原子功能”就是执行一个基本的任务,如设置一个定时器。用户自定义的数据可以同一个原子功能发生关联。一个“原语”是一个预定的原子功能序列,它是由某个特定的事件的发生来引发的。用户可以从一个可用的原子功能库中创建或定义原语。在一个优选的实施例中,每个原语最多可以包含20个原子功能。
一个“状态/事件表”定义了某个特定状态的有效事件,以及每个这样的事件的发生所引发的原语。在一个优选的实施例中,一个状态/事件表最多可以包含100个状态,且每个状态可最多包含400个事件。
一个“原语表”定义了某个状态/事件表中所用的原语。在一个优选的实施例中,一个原语表可以最多包含200个原语。
一个“协议”被定义为一个状态/事件表同一个原语表之间的联系,并且由一个协议标识号(一个数字号)来标识。
一个数据块,例如那些由参考号40a、40n表示的,被分配给交换机的每个信道(端口)0…n。每个数据块40a、40n包含着与它代表的信道有关的如下信息该信道的当前状态;一个指向某个激活的状态/事件表的指针;一个指向某个激活的原语表的指针;一个指向某个指定的状态/事件表的指针;一个指向指定的原语表的指针。
以信道0为例,激活的状态/事件表和激活的原语表指针是指向(如图中虚线所示的)用由参照号42a的与表示的驻留协议0相关的表。而为信道0指定的状态/事件表和指定的原语表指针是指向由参照号44a表示的与一个动态装入的、客户自定义的协议n+1相关的表。
其它可供使用的协议为驻留协议1…n(42b、42c)以及下载的、客户自定义的协议n+2…m(44b、44c)。驻留协议42a-42c代表预编程的或“标准”协议,这些通常是由制造商连同交换机一起提供的。相反,客户自定义的协议44a-44c则是由某个客户或用户创建的,并且可以是完全“定制”的或“专用”的。
一个依赖于层的原子功能库46被连接以给有限状态机工具提供信息。状态机工具48同时还被连接,以从40a-40n的每个数据块接收激活的状态/事件表指针和激活的原语表指针。
同时,如参考号50表示的,还提供了用于层依赖环境支持的实用工具。
状态机工具48的功能是按照分配给它的协议驱动每个信道,该协议是由指定的状态/事件表和指定的原语表所定义的。一个正常状态的有效事件一但发生,按照指定的状态/事件表中相应条目引发一个原语。状态机工具48使用原子功能库46来执行由被引发的原语所代表的那些原子功能。
状态机工具48将驱动经过任何需要的内部状态,自动生成适当的阻塞状态,直到该信道重新达到一个正常状态。到那时,由状态机工具48所做的处理将是完整的,直到另一个有效事件的发生。
每个信道被初始指定一个客户自定义的协议或一个预编程的协议。这个过程是这样完成的,从应用层5将一个消息传送给呼叫管理层4,同样呼叫管理层4向层3发一个相应的消息。指定的状态/事件表指针和指定的原语表指针指向最后一次指定的协议。这样,客户可以简单地指定某个协议ID(标识)来指定某个自己需要的可用协议之一。用这样的方法,本发明很好地允许客户在逐信道基础上,从驻留在同一交换机内的多个协议中指定一个自己需要的协议。
作为另一个选择,或者如果客户选择不为某些或全部信道指定协议,则最好提供缺省的值,这样每个信道总具有一个有效的协议(例如,驻留协议42a-42c之一)指定给它。
提供给状态机工具48的激活的状态/事件表和激活的原语表指针,指向当前控制该信道的协议(激活的)。
由某个信道使用的激活的协议不必是永久的,可以作为对某个指定事件的发生的响应而实时地动态改变,正如结合图5所详述的那样。进一步说,因为由库46提供的原子功能代表的是最基本的功能,因此客户或用户最好是可以很方便地实现对协议的所需的改变而无需对底层代码作任何本质的、或有可能某些改变。另外,提供环境支持实用工具可以为客户或用户简化协议开发。实用工具提供了随时可用的资源管理功能(例如定时器),这大大简化了实现所需协议所需要的状态机逻辑。为每个软件层提供了不同的实用工具,因为每一层所需要的资源可能是不同的。
图5是一个表示本发明在网络信令协议层3的一个代表性应用的软件框图。正如上述已提到的,第3层上的软件通常是运行在交换机2的CPU/矩阵卡12、线路卡14或15、或打包工具卡17上(图1)。
数据块52a、52n被分配给交换机的每一个信道。以信道0为例,激活的状态/事件表和激活的原语表指针都指向如图中虚线所示的,与驻留的服务故障协议58a相关的表。为信道0指定的状态/事件表和指定的原语表指针则指向与某个以参照号60a表示的、下载的客户自定义网络协议n+1相关的表。
其它可供使用的协议是驻留网络协议58b、58c以及下载的、客户自定义网络协议60b、60c。
连接了一个层3原子功能库54以给状态机工具48提供信息。
第3层环境支持实用工具56包括接收线路信号/扫描管理;数字信号处理(DSP)功能激活/管理;告警/服务故障(OOS)管理;定时器管理;及动态内存管理等。
提供给状态机工具48的激活的状态/事件表指针和激活的原语表指针都指向当前控制该信道的协议。在正常操作情况下,激活的协议应同所指定的协议是同样的。但是,在这张图中,激活的协议却是服务失调网络协议0。这可能发生在如下情况下,比如,因为在信道0上检测到一个告警条件,于是该信道自动地转换到服务故障网络协议0。
由某个特定信道所使用的被激活协议不必是永久性的,它可以作为对某个指定的事件发生的响应而实时地动态改变。例如,如图5所示,为信道0指定的状态/事件表和原语表原针指向客户自定义网络协议1(60a)。假定在信道0接收到一个入呼叫,但是入呼叫的网络信令协议与客户自定义网络协议1(60a)却是不同的。这时,可以由层3向层4发出一个消息,表示需要改变活动的协议以正确处理该入呼叫。作为响应,层4可以简单地向层3返回一个消息,来改变被激活的协议并且继续处理该入呼叫,或者向应用层5发出一个消息以请求指令。一旦该入呼叫结束,则可以为该信道重新指定原来的协议(或其它在交换机内任何可用的一种),这可以通过一组类似的消息或激活的协议中某个原子功能来完成。
在一个出呼叫的情况下可以执行类似的功能。就是说,如果为一个出呼叫的某个可用信道指定了一个协议,而为该信道指定的协议不适用于该出呼叫(例如,拨号数字表明该出呼叫的目的方是一个使用不同协议的外国),那么通过由层4发出一个相应的消息就可以动态地改变该信道的协议。同样,一旦该呼叫处理结束,又可以为该信道重新指定它原来的协议或所需要的其它协议。
在图6A及其后的各图中,以一个圆圈描述某个状态,以一个矩形框表示某个原子功能,以位于某状态引出的路径旁边的一个短语缩写表示一个事件。在某个原子功能中圆括号内的信息表示与该功能相关的参数或数据。
图6A到6C为本发明在链路层2的应用的一个实例。
协议由相关信道处于正常状态1(NS1)开始,该正常状态1为空闲(IDLE)状态62。但第3层事件到第2层建立用于转发R2信令(L3_L2n SETUP_FOR_FWD_R2)发生,执行了一系列原子功能(af2,af3,af4,af5及af1)。这些原子功能的执行分别为某个时间片创建一个R2接收节点,为R2解码加上一个DSP信道(例如,一个DSP芯片用作一个音调接收器),发送一个第2层到第3层接收器附带消息(L2_L3n RCVR_ATTACHED),设置一个定时器(timer1),然后设置下一个状态为正常状态2(NS2)64。请注意与原子功能af5相关的参数最好用来定义一个所需要的定时器ID和一个预确定定时器值数组中的下标。与原子功能函数af1相关的参数最好用来说明下一个状态的数字号及下个状态的类型。
如果下一个事件是定时器1到时(TIMER1_EXPIRATION),则执行原子功能函数af10和af11,并且该信道返回到IDLE空闲状态62。但是,如果下一个事件是由DSP接收到一个消息,表明接收安静(silenle)(DSP_L2nRCVED_SILENCE),那么执行原子功能函数af5(设置定时器1)和af1(设置下一个状态),之后协议进入到正常状态3(NS3)66,在该状态等待R2转发信号。
如果下一个事件是定时器1到时(TIMER1_EXPIRATION),则执行原子功能函数af10和af11,该信道返回到空闲(IDLE)状态62。若下一个事件是接收到一个发送回送R2信号的消息(L3_L2nXMIT_BWD_R2_SIG),则执行原子功能函数af12,该函数将回送R2信号排队以备随后发送,之后返回到状态NS3 66。如果下一个事件是表明接收转发R2信号(DSP_L2nRCVED_R2_FWD_SIG)的消息,则执行原子功能函数af7(向层3发送一个R2信号报告),及原子功能函数af8(检测回送的R2信号是否已排队以备发送)和af1(设置下一个状态),之后,协议进入到内部状态4(IS4)68。
如果下一个事件是表明回送R2信号已排队的内部事件真(L2_2NT_EVENT_1),则执行原子功能函数af9(回送排好队的R2信号),然后执行af5、af1,之后协议返回到状态64。如果下一个事件是表明回送R2信号还未排队的内部事件假(L2_1NT_EVENT_0),则执行原子功能函数af5(设置定时器1),接着执行af1(设置下一个状态),之后协议进入到正常状态5(NS5)70。当接收到回送R2信号(L3_L2nXMIT_BWD_R2_SIG)的消息时,就执行原子功能函数af9、af5和af1,协议返回到状态64。
现在请参考图6B,它可以看作是将图6A中每一个原子功能函数序列都定义为一种原语(原语1-7)。事实上,每一种原语都提供了一种简捷的方法来标识某个需要调用的原子功能函数序列。
图6C所示为一个原语表,它用列表的形式列出了图6B中每一种原语对应的原子功能函数序列,图6C同时还有一个状态/事件表,它定义了图6B中各状态、事件、及原语之间的关系。依据本发明的优选的实现方法,如果客户希望创建如图6A和6B所示的协议,那么他只需定义如图6C所示的各表即可。然后将这些表通过由主机发送一系列消息的方法下载到交换机2(如图1)。
图7A-7C是本发明应用于采用国际强制R2信令来处理呼叫建立的初始化阶段的网络协议层3的协议的实例。协议与相关信道处于正常状态1(NS1)72开始,该状态为空闲(IDLE)状态。一但接收线路信令比特组0011(发一个被捕获信号的比特值)这一事件发生,执行一系列原子功能函数(af17、af19、af21和af1)。这些原子函数的执行,分别将当前被捕获指令表设置为缺省的交换表,将当前指令指针设置为0,检测当前的被捕获指令,然后将下一个状态置为内部状态2(ZS2)74。
如果下一个事件是层3内部事件0(L3_INT_EVENT_0),这表明当前被捕获指令被检测到且值为空(null),那么执行原子函数af22,它将该信道清空。但是,如果下一个事件是层3内部事件7(L3_INT_EVENT_7),这表明当前被捕获指令是要产生一个被捕获确认,那么就执行原子函数af30,它检查一下看看下一个被捕获指令是否要接收步骤N数字,然后执行原子函数af1,将下一个状态设置为内部状态3(IS3)。
如果下个事件是L3_1NT_EVENT_0或说是假,表明下一个被捕获指令不是要接收步骤N数字,则协议继续执行原子函数af2(用比特组1101发送一个捕获确认)。如果下一个事件是L3_1NT_EVENT_1或说是真,则执行原子函数31,建立一个R2转发数字接收,然后执行原子函数af2(发送捕获确认)。建立数字接收通常会涉及DSP卡16(图1)上某个DSP资源的分配。
接下来执行af5,它设置一个定时器(timer1)以建立一个等待第一个预期数字的等待时间。然后执行原子函数af1,将下一个状态设置为正常状态4(NS4),该状态表明被捕获已被确认并且该信道正等待接收一个组1转发MFR2信号。
同样,如图7B所示,在图7A中的每个原子函数序列都可以被定义成一种原语(1-5)。图7C则显示了与图7B相对应的原语表和状态/事件表。
图8A是本发明应用于网络协议层3协议的另一个实例,它是采用T1 E&M闪烁发起(wink start)信令协议来处理呼叫建立初始阶段的。
该协议由正常状态(NS1)80开始。一但接收代表一个被捕获的比特值11这一事件的发生,执行原子功能函数af30,检测阶段1数字收集是否被指示。然后执行原子函数af1,将下一个状态置为内部状态(IS2)82。
如果下一个事件是L3_1NT_EVENT_0或者说为假,这意味着数字收集尚未被指示,那么协议就执行原子函数af5(为预闪烁延迟设置定时器1),然后执行af1将下一个状态置为正常状态(NS3)84。如果下一个事件是L3_1NT_EVENT_1或者说为真,这意味着数字收集已被指示,则执行原子函数af31,建立MFR1数字接收,然后执行af5和af1。
一但定时器1到时(TIMER1-EXPIRATION)这一事件发生,将执行原子功能af2(闪烁ON),然后执行原子功能af5(为闪烁(wink)期设置一个定时器),再执行af1,将下一个状态设置为正常状态(NS4)86。同样根据定时器1到时这一事件,将执行af2(闪烁OFF),然后执行af5(设置一定时器用于等待数字串),再执行af1将下一状态设置为正常状态(NS5)88。
图8B所示为图8A中原子功能与原语1-5之间的关系,图8C所示为相应的原语表和状态/事件表,用户或客户可以利用它来定自己所需的协议。
图9A为本发明应于呼叫处理层4的一个实例。在此例中,本发明用于实现一种为某一个入呼叫产生交互式语音响应(IVR)能力的协议。该协议由空闲(IDLE)状态(S1)90开始。一但接收到一个配置消息(L3_SETUP_2NDICATION)这一事件发生,将顺序执行原子功能af1、af2、af3、af4及af5。这些功能分别用作向网络协议层3发送一个告警消息,向层3发送一个连接消息(以响应该呼叫),发送一个消息用以为交互数字串收集分配一个DSP资源,设置一个定时器timer1用以等待该DSP资源的分配,以及将下一个状态设置为正常(等待)状态(NS2)92。
如果下个事件是定时器1到时(TIMER1-EXPIRATION),则执行原子功能af6将该信道复位。如果下个事件是接收到一个表明该DSP资源已分配好的消息,则执行原子功能函数af7,将主叫方连接到一个所希望的通知,然后执行af4为数字等待设置定时器1,再执行af5将下一个状态设置为正常状态(S3)94用以等待数字。
如果下一个事件是定时器1到时,协议将再次执行原子功能7(向主叫者重新播放通知)。如果下一个事件是由所分配的DSP资源接收到数字,则执行原子功能af8(通知层5数字已接收到),执行af4(设置定时器1以等待来自层5的指令),以及af5(设置下一个状态为正常状态(S4)96)。
同样,图9B和9C是状态、事件、原子功能以及原语之间的关系,它们可用于定义图9A的IVR协议。
最后,图10A是本发明应用于应用层5的一个实例。在此例中,描述了一个用于入境(inbound)应用,例免费(toll free)(800号)业务的协议。
该协议由正常状态(S1)IDLE98开始。一但从第4层接收到用数字消息请求服务这一事件发生(L4_REQ_FOR_SERV_WITH_DIGITS),将顺序执行原子功能af1(向层4发送一个确认消息),af2(用一个信道ID和数字向层5一路由控制(进程)发送一个消息),af4(设置一个定时器用以等待来自层5路由控制的响应,以及af5(设置下一个状态为正常状态(S2)100)。
在状态(S2)100,如果下一个事件是定时器到时,则产生一个信道失败并执行原子功能af8。如果下一个事件是一个来自层5路由控制的消息,要连接请求服务的信道,则执行原子功能af7向层4发送一个消息以连接这两个信道。然后执行af4,设置一个定时器timer1用以等待连接完成的确认,接着执行af5设置下一个状态为正常(等待)状态(S4)104。
在状态(S4)104,如果下一个事件是定时器1到时,已经产生一个信道失败并执行af8。如果下一个事件是一个来自层4的消息证实连接已完成(L4_L5nCONNECT_ACK),则执行原子功能af6使定时器1无效,然后执行af5设置下一个状态为正常状态(S5)106。当接收到来自层4的一个消息表明释放该信道,则执行原子功能af3,用于向层4发送一个确认,然后执行af5它将该信道返回空闲状态98。
再参见状态100,如果下一个事件是一个来自层5路由控制的消息,要将入呼叫排队成一个组,则执行原子功能af9,将该主叫连接至一个录音的通知。然后执行原子功能af4,设置定时器1用以等待来自层4的确认,再接着执行af5将下一个状态设置为正常状态(S3)102。
在状态(S3)102,如果下一个事件是定时器1到时,则产生一个信道失败并执行原子功能af8。如果下一个事件是一个来自层4的消息确认该连接已完成,则执行af6使定时器1无效,并执行af4设置定时器2用以重放被录的通知。这样,如果信道保持在状态(S3)102足够长的时间到定时器2到时,协议会重新执行af9并且重新播放该通知。
但是如果在状态(S3)102下一个事件是一个来自层5路由控制的消息,要求连接请求服务的信道,则执行原子功能函数af6使定时器2无效,然后执行af7,向层4发送一个消息以连接这两个信道。接着执行af4,设置一个定时器1用以等待连接完成的确认,然后再执行af5将下一状态设置为正常(等待)状态(S4)104。
图10B和10C所示为图10A中各状态、事件、原子功能、以及原语之间的关系,可用来定义图10A所示的免费业务协议。
以上的叙述是局限于本发明的一个具体实现方法。但是很明显,在取得本发明部分或全部优点的基础上,还可以对本发明进行改进。因此,后附的权利要求的目的就是以本发明的精神和范围来覆盖所有这类变化和改动。
权利要求
1.一种用于操作可编程电信交换机的方法,上述交换机包括用于动态连接或断开多个信道中不同信道之间的通信路径,以作为对主机设备产生的消息的响应的可控一交换装置,上述方法包括如下步骤定义一个或多个通信协议用来处理入呼叫或出呼叫,上述通信协议的每一种由一个有限状态机来表示;为每个上述信道初始分配至少一个上述协议,不同的协议可以指定给不同的信道;且当在上述信道之一检测到一个入呼叫或出呼叫发起时,确定当前指定给上述信道的协议是否具有处理上述入呼叫或出呼叫的能力,且当上述当前指定的协议不具备处理上述入呼叫或出呼叫的能力时,动态选择上述协议中具备处理上述入呼叫或出呼叫的能力的另一种协议,并且使用上述所选择的协议来处理上述入呼叫或出呼叫。
2.根据权利要求1中所述方法,其中每一个上述有限状态机都是由一个状态/事件表连同一个原语表来表示的,上述状态/事件表定义了多个预定义的逻辑状态以及与每一个这种状态相关的最少一个预定事件,上述原语表定义了一个或多个包括一系列预定义的功能函数的原语,由上述预定义的事件之一的发生,将调用与该发生事件相关的一个预定义的原语。
3.根据权利要求2中所述的方法,其中每一个上述信道都被指定一个相应的数据块,该数据块包含了代表该信道相应的当前逻辑状态以及状态类型的信息,一个指向激活的状态/事件表的指针,一个指向激活的原语表的指针,一个指向被指定的状态/事件表的指针,以及一个指向被指定的原语表的指针。
4.根据权利要求3所述的方法,其中上述有限状态机由一个状态机工具来解释,该状态机工具作为对上述指针和一个包含上述预定义函数的库的响应而操作。
5.根据权利要求1所述的方法,其中一个或多个上述协议可以为用户自定义并且下载存贮在上述电信交换机内部。
6.根据权利要求1所述的方法,其中一个或多个上述协议是驻留在上述电信交换机内部。
7.一个用于开发与一个可编程电信交换机一起使用的通信协议的方法,上述交换机包括用于动态连接或断开多个信道中不同信道之间的通信路径以作为对主机设备所产生的消息的响应的可控一交换装置,上述方法包括如下步骤创建一个或多个状态/事件表,其中每一个都定义了多个预定的逻辑状态,至少有一个预定事件与每个逻辑状态相关,并且有一种与每一个上述事件相关的原语在上述相关事件发生时被调用;创建一个或多个原语表,其中每个原语表都定义了一系列预定的功能函数;创建一个或多个通信协议,其中每一个协议都由一个上述状态/事件表之一和一个上述原语表之一组合起来表示;将上述一个或多个上述通信协议存贮在上述可编程电信交换机内部;以及为每一个上述信道都指定至少一个上述通信协议。
8.根据权利要求7中所述的方法,其中当在上述信道之一检测到一个入呼叫或出呼叫发起时,确定当前指定给上述信道的通信协议是否具备处理上述入呼叫或出呼叫的能力,且当上述当前指定的协议不具备处理上述入呼叫或出呼叫的能力时,动态选择上述协议中具备处理上述入呼叫或出呼叫的能力的另一种协议。
9.根据权利要求8所述的方法,其中每一个上述信道都被指定一个相应的数据块,该数据块包含了代表与该信道相关的当前逻辑状态以及状态类型的信息,一个指向激活的状态/事件表的指针,一个指向激活的原语表的指针,一个指向被指定的状态/事件表的指针,以及一个指向被指定的原语表的指针。
10.根据权利要求9所述的方法,其中上述有限状态机由一个状态机工具来解释,该状态机工具作为对上述指针和一个包含上述预定函数的库的响应而操作。
11.一个可编程电信交换机包括可控—交换装置,用于动态地连接或断开多个信道中不同信道之间的通信路径,以作为对主机所产生的各种消息的响应,包括一个时间片交换,用于交换与上述信道对应的多个时间片,以及用于处理上述消息的装置;与上述交换装置由通信关系连在一起的一个或多个装置,用于终接代表上述信道的模拟或数字线路或主干线;以及用于存贮一个或多个通信协议的装置,上述信道的每一个都被指定一个上述通信协议;一个装置,用于在上述任何一个信道检测入呼叫或出呼叫的发起,并确定在发生上述呼叫的信道上所指定的协议是否具备处理上述呼叫的能力;以及一个装置,响应于上述检测装置,用于在上述指定的协议不能处理这类呼叫时,动态地从上述驻留的和用户自定义的协议中选择另一种可以处理上述呼叫的协议。
12.根据权利要求11所述的交换机,其中上述协议的每一种都由一个有限状态机来表示。
13.根据权利要求12所述的交换机,其中上述有限状态机的每一个都是由一个状态/事件表连同一个原语表共同来定义的,上述状态/事件表定义了多个预定逻状态,以及与每个这种状态相关的至少一个预定事件,上述原语表定义了一个或多个包括一系列预定功能函数的原语,由上述预定事件之一的发生,将调用与该发生事件相关的一个预定原语。
全文摘要
一个电信协议开发环境,使用户可以为由一个可编程电信交换机提供的每个端口定义一个独立的有限状态机。用于各种电信应用的协议和软件分层都是可以开发的。
文档编号G06F13/00GK1142299SQ94194237
公开日1997年2月5日 申请日期1994年10月5日 优先权日1993年10月8日
发明者M·P·赫伯特 申请人:埃克斯塞尔公司