发明内容
有鉴于此,本发明的主要目的在于提供一种SIP电话终端的用户注册和通话方法,使得一个SIP电话终端支持多用户同时注册和使用,从而合理利用终端资源和网络资源,降低用户和系统提供商的成本。
本发明的上述目的是通过如下技术方案予以实现的:
一种会话初始协议SIP电话终端的用户注册和通话方法,至少包括:
a.在SIP电话终端的嵌入式系统中设置一个主控进程;
b.当一个用户利用该SIP电话终端注册时,主控进程在接收到至少包括用户标识的用户信息之后为该用户分配一个独立的用户代理进程,并分配对应于该用户代理进程的系统资源;
c.当一个注册用户操作SIP电话终端发起呼叫,主控进程确定该注册用户的用户标识,根据用户标识调度对应于该注册用户的用户代理进程并记录该电话终端为占用状态,该用户代理进程进行信令交互以尝试建立会话通道;
当SIP电话终端接收到对于一个注册用户的呼叫时,主控进程判断该电话终端是否为占用状态,并在电话终端不是占用状态时,确定该注册用户的用户标识,根据用户标识调度对应于该注册用户的用户代理进程并记录该电话终端为占用状态,该用户代理进程进行信令交互并建立会话通道。
在上述方法中,步骤b中主控进程接收用户信息之前进一步包括:主控进程提示用户输入用户信息,其中接收用户信息是接收用户通过SIP电话终端输入的信息。或者,可以在SIP电话终端中集成一个智能卡读写器,步骤b中主控进程接收用户信息之前进一步包括:主控进程提示用户插入包含用户信息的智能卡,其中接收用户信息是由智能卡读写器提取所述智能卡中的用户信息。
在上述方法中,步骤b中的用户信息包括振铃信息,主控进程为该用户分配一个独立的用户代理进程之后进一步包括:用户代理进程保存用户设置的振铃信息;
步骤c中当SIP电话终端接收到对于一个注册用户的呼叫时,在主控进程调度对应于该注册用户的用户代理进程之后进一步包括:用户代理进程根据该注册用户预先设置的振铃信息进行振铃。
在上述方法中,SIP电话终端包括一个显示屏,步骤c中当SIP电话终端接收到对于一个注册用户的呼叫时,在主控进程调度对应于该注册用户的用户代理进程之后进一步包括:用户代理进程在SIP电话终端的显示屏上显示该注册用户的标识信息。
在上述方法中,步骤b用户信息中包括用户设置的入呼叫密码,步骤c中当SIP电话终端接收到对于一个注册用户的呼叫时,在主控进程调度对应于该注册用户的用户代理进程之后进一步包括:该用户代理进程向用户振铃,并提示用户输入入呼叫密码,在接收到用户输入的入呼叫密码之后判断用户输入是否正确,如果是,进行信令交互并建立会话通道;否则结束本流程。
在上述方法中,步骤c中当SIP电话终端接收到对于一个注册用户的呼叫时,在主控进程判断电话终端处于占用状态时,主控进程调度该注册用户的用户代理进程,用户代理进程向主叫用户发送标识被叫SIP电话终端忙的响应消息。
在上述方法中,步骤c中当SIP电话终端接收到对于一个第二注册用户的呼叫时,在主控进程判断电话终端处于占用状态之后进一步包括:主控进程向该SIP电话终端的当前第一注册用户提示新呼叫的进入并提示第一注册用户选择如下三项中的一项:拒绝新呼叫、保持当前通话和结束当前通话,
当第一注册用户选择拒绝新呼叫,主控进程调度第二注册用户的用户代理进程,该用户代理进程向主叫用户发送标识被叫SIP电话终端忙的响应消息;
当第一注册用户选择保持当前通话,主控进程调度第二注册用户的用户代理进程,该用户代理进程向第二注册用户振铃,在第二注册用户应答后建立会话通道,并在第二注册用户停止通话后拆除所述会话通道,然后调度第一注册用户的用户代理进程,由第一注册用户的用户代理进程继续第一注册用户的通话处理;
当第一注册用户选择结束当前通话,主控进程调度第二注册用户的用户代理进程,该用户代理进程向第二注册用户振铃,在第二注册用户应答后建立会话通道,并在第二注册用户停止通话后拆除会话通道。
在上述方法中,步骤b用户信息中包括用户设置的操作界面密码,并且SIP电话终端包括一个显示屏,该显示屏在SIP终端处于等待状态下显示公共主界面,并在用户摘机时在显示屏上提示用户输入操作界面密码,在判断用户输入密码正确后显示对应于该用户的用户操作界面,在用户挂机后重新显示公共主界面。
上述方法可以进一步包括:当SIP电话终端的注册用户进行注销时,主控进程撤销为该注册用户分配的用户代理进程,并释放为该注册用户代理进程分配的系统资源。
从本发明的技术方案可以看出,本发明在SIP电话终端的嵌入式系统中设置了一个主控进程和多个用户代理进程,其中每个用户代理进程相互独立,并对应于一个独立的用户,主控进程通过和用户代理进程之间的通信控制每个用户代理进程。当用户利用SIP电话终端注册时,主控进程为该用户分配一个独立的用户代理进程,并在注册用户注销时,主控进程撤销该用户代理进程。在注册用户发起通话时,主控进程确定该注册用户的用户标识,根据用户标识调度对应于该注册用户的用户代理进程并记录该电话终端为占用状态,然后该用户代理进程进行信令交互以尝试建立会话通道。在注册用户作为被叫时,会首先检查SIP电话终端的状态是否为占用状态,如果不是占用状态,主控进程调度对应于该用户的用户代理进程并记录该电话终端为占用状态,然后由该用户代理进程进行信令交互并建立会话通道。
通过设置主控进程和用户代理进程,并通过对SIP电话终端的状态的记录和判断,本发明实现了在同一个SIP电话终端上注册多个用户并且所注册的多个用户都可以利用该SIP电话终端进行通话,这样多个用户使用同一个SIP电话终端可以有效地节约电话终端资源和网络资源,并因此降低了用户和系统提供商的成本。因此,本发明具有广阔的市场前景。
具体实施方式
下面通过附图和具体实施例对本发明进行详细说明。
为了实现在同一个SIP电话终端上注册多个用户,并且所注册的多个用户都可以使用该SIP电话终端进行通话的目的,本发明在SIP电话终端的嵌入式系统中采用多进程技术,也就是设置一个主控进程和多个用户代理进程。其中用户代理进程对每一个注册用户执行主叫/被叫操作和注册/注销操作,主控进程控制用户代理进程之间的协同工作。在实际情况中,主控进程和用户代理进程都是相互通信但是相对独立的软件状态机。
在本发明中,每个用户代理进程负责代理对应的用户实现各种操作和维护用户的各种状态,例如代理用户向网络的SIP注册服务器进行注册,并按照指定周期重复更新。当用户操作SIP电话终端发起呼叫或者SIP电话终端接收到呼叫时,每一个用户代理进程代表对应的用户根据用户信息生成请求、发送请求、处理响应,并对接收的消息进行方法解析、头解析、内容处理、应用扩展、生成响应等操作,并且在信令交互成功后调用相应的软硬件资源建立双向会话通道。因此,每一个用户代理进程能够实现SIP协议中定义的用户代理(UA)功能。
下面参考图1说明本发明的总体流程。如图1所示,首先在步骤101,在SIP电话终端的嵌入式系统中设置一个主控进程。这里的嵌入式系统也就是SIP电话终端所采用的软硬件系统。
在步骤102,当一个用户利用该SIP电话终端注册时,主控进程提示用户输入用户信息,并在接收到该用户输入的用户信息之后为该用户分配一个独立的用户代理进程,并分配对应于该用户代理进程的系统资源。这里的用户信息至少包括用户标识,也就是用户的E164号码或者URL地址。
在步骤103,当一个用户操作SIP电话终端发起呼叫时,主控进程根据呼叫请求中的主叫用户信息确定该用户的用户标识,根据用户标识调度对应于该用户的用户代理进程并记录该电话终端为占用状态,然后该用户代理进程进行信令交互,以试图建立到被叫用户的通话连接。
当SIP电话终端接收到对于一个用户的呼叫时,主控进程判断该电话终端是否为占用状态,并在电话终端不是占用状态时,确定该用户的用户标识,根据用户标识调度对应于该用户的用户代理进程并记录该电话终端为占用状态,该用户代理进程进行信令交互并建立会话通道。
上面说明了本发明的总体流程,下面再结合图2、图3和图4分别说明用户的注册过程、SIP电话终端作为主叫方的处理过程以及SIP电话终端作为被叫方的处理过程。
在本发明的实施例中,SIP电话终端上具有一个显示屏,例如一个液晶(LCD)显示屏等等,该显示屏可以显示和用户注册及通话相关的信息。
图2示出了用户的注册过程。如图2所示,在用户注册之前,显示屏上首先显示的是公共用户界面,该公共用户界面上包括增加用户的按钮。在步骤201,用户选择了增加用户按钮,要求在该SIP电话终端上新注册一个用户。然后在步骤202,显示屏上显示新用户设置界面,要求用户输入用户信息和SIP服务器信息。这里的用户信息至少包括用户标识,也就是E164号码或者URL地址,当然用户可以同时设置这两项。除此之外,用户信息还可以包括用户设置的特色铃声,以和同一个SIP电话终端上注册的其他用户的铃声相区别。用户信息还可以包括用户密码、入呼叫密码和操作界面密码等等,其中用户密码是对用户能否使用该SIP电话终端所设置的密码,入呼叫密码是要求用户在接听电话时输入的密码,操作界面密码是要求用户在摘机情况下进入用户操作界面时输入的密码。当然可以理解,这三个密码可以相同,也可以不同。为了防止用户因为疏忽设置了错误的密码,所有的密码都需要两次确认。
另外,这里也可以在SIP电话终端中集成一个智能卡读写器,这样用户不需要临时输入,而是将包含用户信息的智能卡插入SIP电话终端的智能卡读写器,然后智能卡读写器提取智能卡中的用户信息并发送给主控进程。
在步骤203,在用户确认输入后,SIP电话终端的主控进程检查用户的输入信息是否完整和合法,如果是,执行步骤204,否则返回到步骤202,也就是重新进入新用户设置界面,此时用户可以重新输入用户信息。
在步骤204,主控进程为新增加的用户新建并分配一个独立的用户代理进程,然后为该用户代理进程分配相应的资源,例如存储该用户信息和状态的内存空间等等。在此之后,主控进程通知用户代理进程开始运行。
在步骤205,用户代理进程代理该用户向网络中的SIP注册服务器注册终端。
在步骤206,网络中的SIP注册服务器判断用户的注册是否成功,如果是,执行步骤207,否则执行步骤208及其后续步骤。
在步骤207,显示屏显示该用户所属的专用界面,该用户可以通过专用界面拨打电话和进行用户设置。当然,如果在步骤202中设置了操作界面密码,在显示用户的专用界面之前用户代理进程提示用户输入操作界面密码,并在用户输入之后判断用户输入是否正确。并只有在用户输入正确的情况下,才显示该用户所属的专用界面。
在步骤208,SIP电话终端的用户代理进程在接收到网络发回来的用户注册失败的消息后,向用户发出相应的提示信息,例如在显示屏上向用户显示注册失败的通知。
在步骤209,SIP电话终端的用户代理进程判断用户是否放弃注册,如果是,执行步骤210,否则执行步骤211。这里判断用户是否放弃注册例如是判断用户是否选择了显示屏上的放弃按钮。
在步骤210,如果用户在预定时间内没有放弃注册,SIP电话终端的用户代理进程进一步判断用户是否需要重新输入信息,例如用户选择了重新输入信息的按钮。如果是,回到步骤202,也就是重新进入新用户设置界面,然后用户重新输入例如SIP服务器的地址,然后再次执行步骤203及其后续步骤。如果用户没有选择重新输入,则同样执行步骤211。
在步骤211,主控进程撤销该用户的用户代理进程,然后显示屏进入公共主界面。
至此完成了用户的注册过程,对于每一个新用户,主控进程为其新建并分配一个独立的用户代理进程,并分配相应资源。注册用户在进行注销时,主控进程撤销该用户的用户代理进程,并释放相应资源。
图3示出了SIP电话终端作为主叫方的处理过程。在步骤301,当用户摘机,SIP电话终端的主控进程通过显示屏提示用户输入用户名和用户密码,然后在步骤302判断用户输入的用户密码是否正确。如果是,执行步骤303及其后续步骤,否则返回到步骤301,要求用户重新输入用户名和用户密码。
在步骤303,主控进程设置当前SIP电话终端为占用状态。
在步骤304,主控进程确定用户标识,并调度该用户对应的用户代理进程。这里确定用户标识是通过分析主叫用户发起的INVITE请求中的主叫地址信息来确定的。
在步骤305,用户代理进程等待用户拨号,在用户拨号之后进入呼叫处理流程。这里的呼叫处理流程和现有的SIP电话终端的呼叫处理流程相同,这里不再赘述。
上面说明了SIP电话终端作为主叫方的情况,如果SIP电话终端作为被叫方,其处理流程如图4所示。
首先在步骤401,SIP电话终端的主控进程检测到有呼叫进入之后,检查电话终端的占用状态。
前面说明了如果SIP电话终端作为主叫方发起呼叫时,例如在该SIP电话终端上注册的用户A作为主叫发起呼叫,主控进程会记录该终端为占用状态,此时当另一个用户C通过另一个SIP电话终端呼叫在用户A正在通话的SIP电话终端上注册的另一个用户B时,SIP电话终端会检测到电话终端为占用状态。另外,如果用户A作为被叫正在使用该SIP电话终端进行通话,主控进程也会记录该终端为占用状态,同样,当另一个用户C通过另一个SIP电话终端呼叫在用户A正在通话的SIP电话终端上注册的另一个用户B时,SIP电话终端也会检测到电话终端为占用状态。与此相对应,无论是作为主叫还是被叫,当用户结束通话后,主控进程会将终端设置为空闲状态。
在步骤402,主控进程根据检测结果判断电话终端是否被占用。如果没有被占用,执行步骤403及其后续步骤,否则执行步骤406及其后续步骤。
在步骤403,主控进程根据接收的INVITE请求中的被叫地址信息确定被叫标识,将电话终端设置为占用状态,然后调用对应于该被叫的用户代理进程。
在步骤404,用户代理进程用该用户设置的特色铃声振铃,并在显示屏上显示主叫信息和被叫信息,等待被叫用户接听。
在步骤405,当被叫用户摘机应答,用户代理进程进行信令交互并建立和主叫用户的会话通道。在此之后,当被叫用户挂机结束通话,主控进程会将电话终端设置为空闲状态。
在步骤406,如果主控进程判断出电话终端正被占用,例如用户A正在通话,那么主控进程向用户A提示有一个对于用户B的新呼叫进入,然后在终端显示屏上显示相应的操作界面供用户A选择。在本实施例中,用户A可以有三种选择:拒绝新呼叫、保持当前通话和结束当前通话。
在步骤407,主控进程在用户A进行了选择之后判断用户A选择的内容,如果是拒绝新呼叫,执行步骤408;如果是保持当前通话,执行步骤409及其后续步骤;如果是结束当前通话,执行步骤412及其后续步骤。
在步骤408,如果用户A选择拒绝新呼叫,主控进程调度用户B的用户代理进程,该用户代理进程向主叫用户发送标识被叫SIP电话终端忙的响应消息。在这个过程中用户A继续通话,并在通话结束后将SIP终端设置为空闲状态。
在步骤409,如果用户A选择保持当前通话,主控进程调度用户B的用户代理进程,该用户代理进程向用户B振铃,并在显示屏上显示主叫信息和被叫信息,等待用户B应答。在步骤410,用户B输入入呼叫密码接听电话,并输入操作界面密码后显示屏显示用户B的操作界面,然后用户B摘机应答,用户B的用户代理进程建立会话通道。在步骤411,用户B结束通话后拆除为用户B的通话建立的会话通道,然后调度用户A的用户代理进程,由用户A的用户代理进程继续用户A的通话处理。
在步骤412,如果当前用户选择结束当前通话,主控进程调度用户B的用户代理进程,用户B的用户代理进程向用户B振铃,并在显示屏上显示主叫信息和被叫信息,等待用户B应答。在步骤413,用户B输入入呼叫密码接听电话,并输入操作界面密码后显示屏显示用户B的操作界面,然后用户B摘机应答,用户B的用户代理进程建立会话通道。在步骤414,在用户B停止通话后拆除会话通道,将SIP终端设置为空闲状态。
这样,本发明在SIP电话终端作为被叫时为用户提供了灵活的处理方式,解决了多个用户在同一个SIP电话终端上注册容易引起的不同用户通话的协调问题。
当然,这里的用户B也可以是用户A自己,也就是说,当用户A正在通话时,有可能另一个用户C也希望和用户A通话,这是用户A可以发现有一个新的入呼叫,而且该入呼叫的被叫是自己。与上述实施例类似,用户A同样可以有三种选择,只不过主控进程不会调度一个新的用户代理进程,而是由原有的用户代理进程继续执行新的处理。
另外,为了简便流程,也可以在步骤406中不向用户A提供选择,而是在SIP电话终端为占用状态下,直接由主控进程调度该用户B的用户代理进程,用户B的用户代理进程向主叫用户发送标识被叫SIP电话终端忙的响应消息,例如是“486响应”。
在前面提到用户信息中可以包含一个操作界面密码,设置该操作界面密码的目的是防止用户间的误操作或者盗打,例如用户A使用用户B的身份进行操作或通信。在设置了操作界面密码的情况下,SIP电话终端在静止等待状态时,显示屏显示的是对于所有用户共用的公共主界面。当用户不通过摘机操作,而通过终端键盘直接进行操作时,主控进程只允许该用户在公共主界面操作,例如“添加新用户”操作即属于公共主界面。无论用户是作为主叫还是被叫,当用户摘机时,显示屏上立即显示提示用户输入或选择用户名以及输入操作界面密码的提示界面,然后主控进程验证用户输入是否正确,在用户输入正确的情况下显示用户操作界面,用户这时才能进行拨号通话或者进行用户属性设置等操作。当用户挂机或完成设置操作后,显示屏上的显示界面立即返回到公共主界面,此后若该用户摘机需再次输入用户名和操作界面密码。
因此可以理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。