发明内容
鉴于此,有必要提供一种建立PTT集群呼叫的方法、服务器及***,用以针对原有POC的会话建立机制的问题,对PTT会话创建流程进行优化,以缩短会话创建的时间。
具体而言,本发明一方面提供一种建立PTT集群呼叫的方法:
应用服务器接收第一终端的会话创建请求,所述会话创建请求包括该第一终端选择的群组标识,其中,所述群组标识用于标识参加群组会话的终端的群组;
应用服务器根据所述群组标识,从数据库查询所述群组标识对应的群组所包括终端的信息,所述终端的信息包括终端的RTP端口信息和终端的RTCP端口信息;
应用服务器创建群组会场,并根据查询到的群组所包括终端的信息将所查询到的终端添加到群组会场;
会场创建成功后,应用服务器根据查询到的所述第一终端的RTCP端口信息,将所述话权准许信息通过所述第一终端的RTCP端口发送给所述第一终端,所述应用服务器根据查询到的所述其他终端的RTCP端口信息,将所述话权占用信息通过所述其他终端的RTCP端口发送给所述其他终端;
所述应用服务器接收所述第一终端发送的RTP语音信息,并根据查询到的所述其他终端的RTP端口信息将RTP语音信息转发给所述其他终端。
本发明另一方面提供一种应用于建立PTT集群呼叫的应用服务器,该应用服务器包括:
请求接收单元,用于接收第一终端的会话创建请求,所述会话创建请求包括所述第一终端选择的群组标识,其中,所述群组标识用于标识参加群组会话的终端的群组;
查询单元,用于根据所述会话创建请求中的群组标识,从数据库查询所述群组标识对应的群组所包括终端的信息,所述终端的信息包括终端的RTP端口信息和终端的RTCP端口信息;
会场创建单元,用于创建群组会场,并根据查询到的群组所包括终端的信息将所述查询到的终端添加到群组会场;
话权信息发送单元,用于根据查询到的所述第一终端的RTCP端口信息,将所述话权准许信息通过所述第一终端的RTCP端口发送给所述第一终端;根据查询到的所述其他终端的RTCP端口信息,将所述话权占用信息通过所述其他终端的RTCP端口发送给所述其他终端;
转发单元,用于接收所述第一终端发送的RTP语音信息,并根据查询到的所述其他终端的RTP端口信息将RTP语音信息转发给所述其他终端。
本发明另一方面还提供一种建立PTT集群呼叫的***,其中,该***包括:
鉴权服务器,应用服务器,以及至少两个终端,所述至少两个终端中包括第一终端以及除所述第一终端的其他终端;
所述应用服务器,用于接收所述第一终端的会话创建请求,所述会话创建请求包括所述第一终端选择的群组标识,其中,所述群组标识用于标识参加群组会话的终端的群组;还用于根据所述会话创建请求中的群组标识,向数据库查询所述群组标识对应的群组所包括终端的信息,所述终端的信息包括终端的RTP端口信息和终端的RTCP端口信息;还用于创建群组会场,根据查询到的群组所包括终端的信息将所述查询到的终端添加到群组会场;查询到所述第一终端的RTCP端口信息,并将所述话权准许信息通过所述第一终端的RTCP端口发送给所述第一终端,所述应用服务器根据查询到的所述其他终端的RTCP端口信息,将所述话权占用信息通过所述其他终端的RTCP端口发送给所述其他终端;以及接收所述第一终端发送的RTP语音信息,并根据查询到的所述其他终端的RTP端口信息将RTP语音信息转发给所述其他终端;
所述鉴权服务器,用于接收终端的注册请求,并根据所述注册请求中的鉴权信息对所述终端进行鉴权。
本发明实施例提供的一种建立PTT集群呼叫的方法,***以及应用服务器可以使应用服务器不必等待其他终端反馈终端RTP端口信息和终端RTCP端口信息,而是直接通过数据库查询到上述信息,从而直接通过RTP端口和RTCP端口直接向终端发送RTP信息和RTCP信息,优化了集群呼叫的建立流程,缩短了会话创建的时间。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下结合附图及实施例,对本发明所阐述的建立PTT集群呼叫的方法、服务器及***做进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
首先,提供一种建立PTT集群呼叫的方法,请参考图1,该方法包括:
S101:应用服务器接收第一终端的会话创建请求,所述会话创建请求包括所述第一终端选择的群组标识,其中,所述群组标识用于标识参加群组会话的终端的群组;
S103:应用服务器根据所述会话创建请求中的群组标识,向数据库查询所述群组标识对应的群组所包括终端的信息,所述终端的信息包括终端的RTP端口信息和终端的RTCP端口信息;
S105:应用服务器创建群组会场,并根据查询到的群组所包括终端的信息将所述查询到的终端添加到群组会场;
S107:会场创建成功后,应用服务器根据查询到的所述第一终端的RTCP端口信息,并将所述话权准许信息通过所述第一终端的RTCP端口发送给所述第一终端,所述应用服务器根据查询到的所述其他终端的RTCP端口信息,将所述话权占用信息通过所述其他终端的RTCP端口发送给所述其他终端;
S109:所述应用服务器接收所述第一终端发送的RTP语音信息。
S111:应用服务器根据查询到的所述其他终端的RTP端口信息将RTP语音信息转发给所述其他终端。
其中,在应用服务器接收第一终端的会话创建请求之前,上述方法还包括:鉴权服务器将每一个终端注册时携带的终端的RTP端口信息和终端的RTCP端口信息储存于数据库中。
上述鉴权服务器将每一个终端注册时携带的终端的RTP端口信息和终端的RTCP端口信息储存于数据库中具体包括:
A、鉴权服务器接收终端的注册请求消息,所述注册请求消息包括鉴权信息,以及终端的RTP端口信息和终端的RTCP端口信息;
B、鉴权服务器根据所述鉴权信息对所述终端进行鉴权,在鉴权成功后,所述鉴权服务器将所述终端的RTP端口信息和终端的RTCP端口信息储存到数据库中。
下面通过具体交互过程来说明本发明方法实施例的实现方式:
整个PTT集群呼叫从建立到结束共分为三个阶段,分别为终端的注册过程、集群呼叫的创建、集群呼叫的结束。本发明实施例中所提到的信息除通过RTP和RTCP协议传输的外,均通过SIP协议传输。以下对该过程具体说明:
第一阶段,终端的注册过程,请参考附图2:
S201,鉴权服务器接收各终端(包含第一终端与其他终端)的注册请求。注册请求消息中除鉴权信息外,还包括如下配置信息,包括:终端的RTCP端口信息、RTP端口信息、SIP消息端口信息、终端IP地址信息。其中RTCP端口用于收发RTCP控制信息,该RTCP包用于控制语音数据RTP语音信息的传输;RTP端口用于收发语音数据RTP语音信息;SIP消息端口用于SIP协议下收发会场相关的SIP消息,终端IP地址用于标识终端位置。
S203,若鉴权服务器对终端进行鉴权,若终端鉴权成功后,则鉴权服务器在注册返回消息中向终端返回应用服务器IP地址。
S205,鉴权服务器把注册请求消息中的如上配置信息存储到数据库中,以便应用服务器在会话操作时可以从数据库获取所述配置信息。
需要说明的是,在具体实现的过程中,对S203中的鉴权服务器在注册返回消息中返回应用服务器的IP地址、与S205中鉴权服务器把注册请求消息中的配置信息存储到数据库中的过程在执行顺序上并不限制,可以先执行S203,再执行S205;也可以先执行S205,再执行S203,此外,两步骤也可以同时执行。
S207,鉴权服务器向应用服务器发送用户上线通知消息,以便应用服务器可以确定已经注册成功的终端。
第二阶段,集群呼叫的创建,请参考附图3:
S301,应用服务器接收第一终端发送的INVITE消息。
其中,第一终端作为主叫终端。所述INVITE消息是主叫终端发起创建群组会话的请求消息。其中第一终端通过注册成功后鉴权服务器返回的应用服务器IP地址向应用服务器发送该消息,该所述INVITE消息中携带第一终端的账号,第一终端所选择的群组标识,其中第一终端的账号用于应用服务器识别第一终端;通过群组标识,可以查询到包含在该群组的终端的账号;
S303,应用服务器通过数据库查询该会话群组中的全部终端信息。
在具体实现中,应用服务器利用第一终端发送的INVITE消息中的群组标识查询参与群组呼叫的终端的信息。所述终端的信息在终端向鉴权服务器注册时便已经存储于数据库中,具体可包括终端账号、终端名称、终端IP地址信息、终端的RTP端口信息、终端的RTCP端口信息。
S305,应用服务器接收数据库返回的查询结果。
需要说明的是,S303与S305中提到的应用服务器与数据库在物理上可以是分离的设备,也可以是集成在同一物理实体上的。
S307,应用服务器根据第一终端账号创建群组会场,并根据数据库查询得到的其他终端的在线情况将查询到的被叫终端添加到群组会场中。
在具体实现中,应用服务器创建群组会场的方式有多种,除了上述根据第一终端的账号来创建,还可以根据第一终端的名称创建,或者可以用随机数来命名被创建的群组会场。
需要说明的是,在创建群组会场后,可以由应用服务器将从数据库查询到的终端添加到群组会场中。
S309,会场创建成功后,应用服务器向主叫终端反馈200OK消息表示会话创建成功。该200OK消息包含应用服务器的RTP端口信息。
S311,第一终端收到应用服务器200OK的消息后,向应用服务器反馈ACK消息,表示确认收到。
S313,应用服务器收到ACK消息后,根据查询数据库得到的终端RTCP端口信息,通过RTCP端口向第一终端发送GRANT消息,该GRANT消息,为应用服务器向主叫终端发送的话权准许信息。
S315,应用服务器收到ACK消息后,根据查询数据库得到的其他终端的RTCP端口信息,通过RTCP端口向其他终端发送TAKEN消息,该TAKEN消息为应用服务器向被叫终端发送的话权占用的通知信息。
需要说明的是,S313和S315在具体的实现过程中,并没有明确的顺序要求,可以先执行S313再执行S315,也可以先执行S315再执行S313,还可以S313和S315同时执行。对此,本发明的实施例并不加任何限定。
S317,第一终端收到GRANT消息后,可发起语音呼叫,通过S309中200OK中携带的应用服务器的RTP端口向应用服务器发送RTP语音信息。
S319,应用服务器根据查询数据库得到的终端的RTP端口信息将第一终端发送过来的RTP语音信息转发给其他终端。
需要说明的是,在本阶段,应用服务器可以直接在第一终端发起会话期间查询到其他终端的RTP端口信息和终端的RTCP端口信息,而不必从被叫终端的响应信息中获得。这就使得第一终端在其他终端登录后可以直接了解其在线情况并向其发送语音信息,而不必等待其他终端的响应,进而大大缩短了会话创建的时间。
第三阶段:集群呼叫的结束,请参考附图4:
S401,第一终端向应用服务器发送BYE消息用以结束会话。
S403,应用服务器接收到会话结束消息后,释放全部终端。
S405,应用服务器向第一终端回复200OK,表明会场可以结束。
S407,应用服务器向其他终端通过RTCP协议发送呼叫结束消息通知各其他终端会话结束。
S409,应用服务器释放会场资源,结束集群呼叫。
以上为本实施例PTT集群呼叫从建立到结束的全过程。另外,本发明的实施例还提供一种在集群呼叫开始后有终端加入集群呼叫的情况,请参考附图5:
S501,集群会话已经创建,第一终端开始向应用服务器发送RTP语音信息。
S503,应用服务器向其他终端转发RTP语音信息。
S505,有迟后加入终端注册鉴权服务器成功,鉴权服务器将通知应用服务器,具体步骤如上文第一阶段终端登录注册所述的S101到S107。
S507,迟后加入终端在鉴权服务器注册成功。
S509,鉴权服务器通知应用服务器迟后加入终端上线。
S511,应用服务器根据数据库中预设属于该群组的全部终端信息判断该迟后终端是否属于已经发起会话的终端范围内。若是,则应用服务器将该迟后加入终端添加到会场,并从数据库查询得到该终端的RTCP端口信息与终端的RTP端口信息。
S513,若当前第一终端讲话,应用服务器向该迟后加入终端发送RTCP(TAKEN)消息,同时应用服务器将接收到的第一终端的RTP语音信息转发给该用户。这样该迟后加入终端即使在第一终端最初发起呼叫时不在线,迟后登录后也能接收到会议主叫当前发出的语音消息。
其次,本发明还提供一种建立PTT集群呼叫的***实施例,请参考图6。
该***包括:鉴权服务器610,应用服务器630,以及至少两个终端,所述至少两个终端中包括第一终端650以及除所述第一终端的其他终端670;
应用服务器630,用于接收第一终端650的会话创建请求,该会话创建请求包括第一终端650选择的群组标识,其中,该群组标识用于标识参加群组会话的终端的群组;根据会话创建请求中的群组标识,向数据库690查询所述群组标识对应的群组所包括终端的信息,该终端的信息包括终端的RTP端口信息和终端的RTCP端口信息;创建群组会场,根据查询到的群组所包括终端的信息将查询到的终端添加到群组会场;根据查询到的第一终端650的RTCP端口信息,将话权准许信息通过第一终端的RTCP端口发送给第一终端650,应用服务器630根据查询到的其他终端的RTCP端口信息,将话权占用信息通过其他终端的RTCP端口发送给其他终端670;以及接收第一终端650发送的RTP语音信息,并根据查询到的其他终端的RTP端口信息将RTP语音信息转发给所述其他终端670;
鉴权服务器610,用于接收终端的注册请求信息,并根据所述注册请求信息中的鉴权信息对所述终端进行鉴权。
所述终端的注册请求信息还包括终端的RTP端口信息和终端的RTCP端口信息,所述鉴权服务器610,还用于将终端在注册请求时携带的终端的RTP端口信息和终端的RTCP端口信息存储于数据库中。
最后,提供一种应用于PTT集群呼叫建立的应用服务器630实施例,请参考图7。该应用服务器630包括以下单元:
请求接收单元631,用于接收第一终端的会话创建请求,该会话创建请求包括第一终端选择的群组标识,其中,该群组标识用于标识参加群组会话的终端的群组;
查询单元633,用于根据该会话创建请求中的群组标识,向数据库查询该群组标识对应的群组所包括终端的信息,该终端的信息包括终端的RTP端口信息和终端的RTCP端口信息;
会场创建单元635,用于创建群组会场,并根据查询到的群组所包括终端的信息将所述查询到的终端添加到群组会场;
话权信息发送单元637,用于根据查询到的所述第一终端的RTCP端口信息,将所述话权准许信息通过所述第一终端的RTCP端口发送给所述第一终端;根据查询到的所述其他终端的RTCP端口信息,将所述话权占用信息通过所述其他终端的RTCP端口发送给所述其他终端;
转发单元639,用于接收所述第一终端发送的RTP语音信息,并根据查询到的所述其他终端的RTP端口信息将RTP语音信息转发给所述其他终端。
应用服务器可以直接在第一终端发起会话期间查询到其他终端的RTP端口信息和终端的RTCP端口信息,而不必从被叫终端的响应信息中获得上述信息。这就使得第一终端在其他终端登录后可以直接了解其在线情况并向其发送语音信息,而不必等待其他终端的响应,进而大大缩短了会话创建的时间。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。