基于CSTA模型的呼叫实现方法
概述:
根据CSTA模型,对呼叫的过程可分两层进行管理,对呼叫的处理主要在Call层(如连接,保持等),Device层和通道的状态紧密结合。Call层和Device层间通讯可以通过互发消息来实现。Device层可以接受外界发来的消息,Module报上来的消息、CTServer发来的消息、IVR_Service发来的消息等,并对它们进行处理。Call层也可以接受外界的消息如IRoutServer 发来的消息,但主要是接受Device层发来的消息实现对呼叫的处理控制。根据CSTA模型,SC暂不支持同层内(即Device层内部、Call层内部)的消息通讯。
类把外部的发来的消息分发到Device层的相应Device,或Call层相应的Call流程。类来转发的。
Service流程实现
注:在流程图中用到的消息其具体定义详见“接口定义的章节”。
Answer Call
D2是主叫,D1是被叫。被叫通道D1的控制者向D1发CmdAnswerCall,D1再向C1发AnswerCall。此时存在两种情况:
D1、D2还未连接,C1收到AnswerCall后使D1、D2连接,连接成功后分别向D1、D2发Established,并向 D2发AnswerRequest。(如图2所视)
D1、D2已经连接,C1收到AnswerCall后分别向D2发AnswerRequest。(如图3所视)
ClearCall Service
当D1的控制者向D1发出ClearCall,或D1因为本身的原因要使呼叫清除时,D1向C1发ClearCall。C1向它所连的Device都报告一个CallCleared事件(BroadcastCallClearedEvent)。使各Device对应的通道释放,如果通道是ClearChannel则将通道状态置为空闲,而不用释放通道。
在会议等多方连接的情况下,D1为主控设备。若D1的控制者要清除跟D3的连接,它要向D1发ClearConnection消息,其中包含着要被清除的Connection:C1D3的信息。D1再向C1发ClearConnection。C1将D3和它的连接清除,并分别向D1和 D3发ConnectionCleared事件,D1收到ConnectionCleared后也向其控制者发ConnectionCleared事件,表示呼叫清除成功。
D1的控制设备向D1发MakeCallRequest,D1向C1发MakeCallRequest, C1在选择通道后向D2发Delivered消息。D1根据实际情况呼出或通知其控制设备。pleteRequest。plete后根据需要作相应的处理(如SS7通道要向交换机发PPLEventRequest,使交换机向对端发ACM),pleteTransfered以通知C1。余下的过程跟AnswerCall的过程一样。
HoldCall
D1—C1—D2原来处于连接状态,D1的控制者D1发HoldCall消息。D1马上回响应RespHoldCall,并向C1发HoldCall。C1收到HoldCall后向交换机发ParkChannel消息,使D1、D2处于Parked状态。C1在收到ParkChannelAck后分别向D1、D2发Held事件。D1在再把Held事件转发给控制者,表示HoldCall成功。
RetrieveCall
HoldCall后D1、C1、D2的状态如图(1)的左图所视。D1的控制者向D1发RetrieveCall消息。D1将RetrieveCall转发到C1。C1向交换机发Connect命令。使
D1、D2重新连接。C1收到ConnectAck后分别向D1、D2发Established事件。D1收到Established后向控制者发Retrieved事件,表示RetrieveCall成功。
ConsultationCall
D1—C1—D2原来已经处于连接状态,App向D1发出ConsultationCall消息。D1收到ConsultationCall消息后,向C1发HoldCall使D1、D2处于Parked状态。D1再进行MakeCall产生一个新的Call:C2。D1收到MakeCall 的响应
RespMakeCall后,向App发RespConsultationCall消息和Held事件(若RespMakeCall为失败的响应时,则D1只向App发表示失败的RespConsultationCall)。C2使D1、D2
基于CSTA模型的呼叫实现方法 来自淘豆网m.daumloan.com转载请标明出处.