在SIP协议的应用中,可以通过NOTIFY消息控制终端接听来电或保持通话。
一、原理
终端收到带内的NOTIFY消息后,按NOTIFY消息中event头域指定的事件对关联的通话做出相应的动作。“带内”NOTIFY消息指的是NOTIFY与要控制的通话有相同的对话信息(callID、from-tag、to-tag)。
Event: talk表示接听, hold表示保持
NOTIFY消息示例:
NOTIFY sip:443008@10.232.236.224:5062 SIP/2.0
From: <sip:0018673733130@10.4.32.212:5060>;tag=007473EA-BEFE-1375-B81D-D220040AAA77-31556972
To: <sip:443008@10.4.32.212>;tag=1558945400
Call-ID: 007473B8-BEFE-1375-B81D-D220040AAA77-28047489@10.4.32.212
CSeq: 2 NOTIFY
Content-Length: 0
Via: SIP/2.0/UDP 10.4.32.212:5060;branch=z9hG4bK007473FE-BEFE-1375-B81D-D220040AAA77-91751959
Contact: <sip:430018673733130@10.4.32.212:5060>
Event: talk
Subscription-State: active
Max-Forwards: 70
二、实例分析
2.1 NOTIFY接听
终端收到来电后,进入到振铃状态,此时,收到notify消息(event:talk),终端完成接听
2.2 NOTIFY 保持
终端收到来电后,进入到振铃状态,此时,收到notify消息(event:hold),终端发起保持