发明内容
本发明主要提供一种可代替现有指令式通信的通信方式,解决多线程通信时的状态同步问题,并实现与具有多个分机的通信终端进行通信。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种与具有多个分机的通信终端通信的方法,包括步骤:
呼叫所述通信终端的号码;
根据通信终端的号码获取该通信终端中所有分机的IP地址列表;
向IP地址列表中的所有IP地址发送自身的通信状态,其中,通信状态封装于UDP包中;
接收通信终端中各分机回复的该分机的通信状态,其中,通信状态封装于UDP包中;
分析处理并响应各分机回复的该分机的通信状态。
其中,所述分析处理并响应各分机回复的该分机的通信状态具体为:
若一台或多台分机回复的通信状态为正在与第三方设备通话,则呼叫结束;
若分机回复的通信状态为正在响铃,则等待分机接听,若预定时间内分机无人接听或其中一分机拒接,则呼叫结束,若其中一台分机接听,则与该分机建立一对一通话。
其中,所述当有分机接听则与该分机建立一对一通话的步骤具体为:
将自身的通信状态设置为正在通话,并在通信状态中加入接通分机的IP地址;
将自身通信状态以UDP包的形式向各分机发送;
接收各分机以UDP包形式回复的通信状态,判断各分机是否挂断,若挂断则不再向该分机发送通信状态;若未挂断,则继续向该分机发送自身通信状态直至除接听分机外其他分机均挂断,则只向接听分机发送通信状态从而与该分机建立一对一通话。
其中,所述与分机建立一对一通话后,以预定间隔向该分机发送通信状态直至通话结束。
其中,所述在获取IP地址列表时,还判断是否获取成功,若获取失败则呼叫结束,若获取成功则进行下一步骤。
其中,所述接收通信终端中各分机回复的该分机的通信状态的步骤中,若在预定时间内未接收到任何分机的回复则呼叫结束。
本发明还提供一种通信设备,其可与具有多个分机的通信终端进行通信,包括:呼叫单元,用于呼叫所述通信终端的号码;IP地址获取单元,用于根据通信终端的号码获取该通信终端中所有分机的IP地址列表;通信状态发送单元,用于向IP地址列表中的所有IP地址发送自身的通信状态,其中,通信状态封装于UDP包中;通信状态接收单元,用于接收通信终端中各分机回复的该分机的通信状态,其中,通信状态封装于UDP包中;通信状态处理单元,用于分析处理并响应各分机回复的该分机的通信状态。
其中,所述通信状态处理单元还用于在有分机接听后将自身的通信状态设置为正在通话,并在通信状态中加入接听分机的IP地址,并将该通信状态交由所述通信状态发送单元发送。
其中,所述通信设备进一步包括:判断单元,用于在获取IP地址列表时判断是否获取成功,若获取失败则提示呼叫结束,若获取成功则触发所述通信状态发送单元工作。
其中,所述通信设备进一步包括:计时单元,用于在所述通信状态发送单元发送通信状态之后计时,若在预定时间内所述通信状态接收单元未收到任何分机的回复则提示呼叫结束。
本发明的有益效果是:区别于以往基于命令的通信方式,本发明中与具有多个分机的通信终端通信的方法为基于状态的通信,并以UDP包的形式进行传输,在通信过程中,通过发送含有通信状态的UDP包及接收对方回复的含有通信状态的UDP包来判断是否建立起通信连接及通信连接状态是否变化。通信过程简单,报告通信状态只需一条信息,而现有的基于命令的通信中控制指令一般都需要多条;通信状态发送后,不需要等待确认,根据对方回复的通信状态即可判定如何处理。并且向通信终端发送的通信状态是先获取各分机的IP地址后直接向各分机发送,可以保证所有分机均能接收到呼叫请求,解决通信终端内各分机状态不同步的问题。该方法需要占用的资源小,特别适合于嵌入式设备。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
为便于理解,首先介绍应用本发明的方法的***架构,在一通信***中,具有多个通信终端,各通信终端均连入IP网络,IP网络可以是互联网,城域网,局域网等等。其中,存在有某个或某些通信终端中具有多个分机,各分机通过连接在交换机上而与其他通信终端位于同一网络中且能互相通信,各分机具有独立的IP地址,但共享同一呼叫号码。例如,若通信***为一楼宇对讲***,而具有多个分机的通信终端为安装于住户家中的住户机,以住户的房间号作为呼叫号码,则各分机具有不同的IP地址,但对其他通信终端(梯口机和管理中心)表现为同一呼叫号码,即当通过梯口机或管理中心对住户机进行呼叫时,只是对房间号进行呼叫。
参阅图1和图2,本发明中与具有多个分机的通信终端通信的方法包括步骤:
S10:呼叫所述通信终端的号码;其中,该呼叫是由主叫方(下文中提及的主叫设备亦是指主叫方)发起,通信终端的号码为***预先设置的,例如对于上一段提及的楼宇对讲***而言,号码可以是房间号或管理中心。
S20:根据通信终端的号码获取该通信终端中所有分机的IP地址列表;优选地,本步骤中还判断获取IP地址列表是否成功,若获取失败则呼叫结束,若获取成功则进行下一步骤;其中,各分机的IP地址由管理软件事先分配,且管理方会存储呼叫号码与IP地址的对应关系,该步骤中获取IP地址列表可以是主叫设备实时向管理方查询而得到结果,也可以是主叫设备之前先将所有的通信终端号码和对应的IP地址下载到本地磁盘上,呼叫时从本地数据查找获得结果;
S30:向IP地址列表中的所有IP地址发送自身的通信状态,其中,通信状态封装于UDP包中;
S40:接收通信终端中各分机回复的该分机的通信状态,其中,通信状态封装于UDP包中;其中,本步骤中,若在一预定时间内未接收到任何分机的回复,表示设备掉线或其他网络故障,呼叫结束;
S50:分析处理并响应各分机回复的该分机的通信状态。具体地,参阅图2,若一台或多台分机回复的通信状态为正在与第三方设备通话,则主叫方会收到提示对方忙,呼叫结束;若分机回复的通信状态为正在响铃,则等待分机接听,若预定时间内分机无人接听则主叫方会收到无人接听的提示,呼叫结束;若其中一分机拒接,则主叫方会收到对方拒接的提示,呼叫结束;若其中一台分机接听,则与该分机建立一对一通话。
该方法采用基于状态的通信,并以UDP包的形式进行传输,在通信过程中,通过发送含有通信状态的UDP包及接收对方回复的含有通信状态的UDP包来判断是否建立起通信连接及通信连接状态是否变化。通信过程简单,报告通信状态只需一条信息,而现有的基于命令的通信中控制指令一般都需要多条;通信状态发送后,不需要等待确认,根据对方回复的通信状态即可判定如何处理。并且向通信终端发送的通信状态是先获取各分机的IP地址后直接向各分机发送,可以保证所有分机均能接收到呼叫请求,解决通信终端内各分机状态不同步的问题。该方法需要占用的资源小,特别适合于嵌入式设备。
其中,在步骤S50中,主叫设备通过分析接收到的通信状态来判断对方是否接听。例如,若分机回复的通信状态为“正在与某IP地址的设备通话中”,其中的某IP地址即为与其通话的第三方的IP地址,这样主叫设备即可知道该分机处于与第三方通话中无法再与自己建立连接,呼叫结束。当有分机接听后,分机与主叫设备即建立了通话连接,此时分机的通信状态变为与主叫设备通话状态,主叫设备接收到该通信状态后即进行相应处理,以建立与该分机的一对一通话。其他的情况亦是相应的处理。
结合图2并同时参阅图3,具体地,主叫设备建立与分机一对一的通话的过程包括步骤:
S51:将自身的通信状态设置为正在通话,并在通信状态中加入接通分机的IP地址;该IP地址主要是用于表示该接通分机的身份;
S52:将自身通信状态以UDP包的形式向各分机发送;此时的发送对象仍然为多个分机,即步骤S20中所获取的IP地址列表中的所有IP地址;
S53:接收各分机以UDP包形式回复的通信状态,判断各分机是否挂断,若挂断则不再向该分机发送通信状态;若未挂断,则继续向该分机发送自身通信状态直至除接通分机外其他分机均挂断,则只向接通分机发送通信状态从而与该分机建立一对一通话。该步骤中,未接通的分机挂断是分机自身的控制模块根据接收到的主叫设备的通信状态而采取的处理,可以通过软件程序预先设定。
在该建立一对一通话的过程中,仍然采用基于状态的通信使其他的分机自动退出通话,而最终建立一对一的通话,在通话过程中为点对点的通信,避免不同步问题。优选地,在与分机建立一对一通话后,以预定间隔向该分机发送自身通信状态直至通话结束。在这种方式下,通信是持续间隔运行,可以看成是心跳功能,省略通信心跳包,并且无需担心UDP丢包问题,下一次发送通信状态时可以自动恢复,保证通话双方的状态同步。
上述的方法是向具有多个分机的通信终端呼叫的处理方式,对于具有多个分机的通信终端,当其作为主叫设备向其他的通信终端呼叫时,每个分机都可作为独立的设备进行呼叫。该具有多个分机的通信终端作为被叫设备时,其分机之间是否并行通话可以根据实际需求设定。仍然以楼宇对讲***为例,住户机作为一个通信终端,其具有多个分机,实际需求为当一个分机处于通话状态时,其他分机不再能与其他通信终端通话;对于管理中心,同样具有多个分机,实际需求为当一个分机处于通话状态时,其他分机仍然能接收新的来电。对于该两种需求,通过对分机的不同设置来实现。
对于住户机,当其中一分机处于通话中时,若又接收到新的呼叫请求(新的主叫设备发送的通信状态UDP包),则正在通话的分机回复自己的通信状态为与某某设备通话中,此时主叫设备接收到通信状态,判断出该分机未接通则呼叫结束。
对于管理中心,同样地,当其中一分机处于通话中时,若又接收到新的呼叫请求(新的主叫设备发送的通信状态UDP包),则正在通话的分机不回复通信状态,相当于隐身状态;而其他空闲分机回复通信状态,则主叫设备收到通信状态后做出相应的判断及处理。
参阅图3,本发明还提出一种可与具有多个分机的通信终端通信的通信设备,包括:
呼叫单元1,用于呼叫所述通信终端的号码;
IP地址获取单元2,用于根据通信终端的号码获取该通信终端中所有分机的IP地址列表;
通信状态发送单元3,用于向IP地址列表中的所有IP地址发送自身的通信状态,其中,通信状态封装于UDP包中;
通信状态接收单元4,用于接收通信终端中各分机回复的该分机的通信状态,其中,通信状态封装于UDP包中;
通信状态处理单元5,用于分析处理并响应各分机回复的该分机的通信状态。
其中,所述通信状态处理单元5的具体的工作过程为:若一台或多台分机回复的通信状态为正在与第三方设备通话,则呼叫结束;若分机回复的通信状态为正在响铃,则等待分机接听,若预定时间内分机无人接听或其中一分机拒接,则呼叫结束,若其中一台分机接听,则与该分机建立一对一通话。
其中,所述通信状态处理单元5在有分机接听后将自身的通信状态设置为正在通话,并在通信状态中加入接通分机的IP地址,并将该通信状态交由所述通信状态发送单元3发送。
该设备还进一步包括:
判断单元6,用于在获取IP地址列表时判断是否获取成功,若获取失败则提示呼叫结束,若获取成功则触发所述通信状态发送单元3工作。
该设备还进一步包括:
计时单元7,用于在所述通信状态发送单元3发送通信状态之后计时,若在预定时间内所述通信状态接收单元4未收到任何分机的回复则提示呼叫结束。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。