sip订阅功能

SIP SUBSCRIBE 

订阅协议参考标准

https://tools.ietf.org/html/rfc6665

订阅注册事件包参考标准

https://tools.ietf.org/html/rfc3680  


订阅消息流程如下



SUBSCRIBE 关键点

Event Package: 定义了通知者向订阅者报告一组状态信息,rfc3680中定义了需要的事件包

Event Template-Package: 定义一组事件包状态

Notification:通知者发送NOTIFY到订阅者


SUBSCRIBE必须具有expires字段,并且相应200ok必须有expires字段,当expires 值为0时,为取消订阅

注册与订阅的expire字段需要分割开来,注册默认超时时间3600s订阅默认超时时间3761s,防止联合刷新造成的潜在问题

subscribe 能够订阅一组联系人的注册状态,当expires 为0时,标准中定义需要发送所有注册联系人的注册状态,而其它时候通知注册状态同事变化状态的联系人

收到 404,405,410,416,480-485,489,501或604响应,则订阅者必须考虑终止订阅

如果是订阅者希望重新订阅,他通过使用新生成的Call-ID及新的唯一的fromtag

收到notify时需要检查是否是自己需要的订阅,否则返回481订阅不存在、不支持event中的event-packet,返回489,bad event,为了防止事件欺骗,notify中必须包含Subscription-State来指示订阅状态。Subscription-State field is active,已被接受或已获授权,如果包含expires则订阅者需要修改订阅持续时间,如果Subscription-State" value is "pending" ,"Subscription-State" value is "terminated",

SUBSCRIBE请求的身份验证也将始终通过401(未授权)响应执行

订阅者需要解析application/reginfo+xml 携带的xml信息

通知者应该使用403(禁止)或603(拒绝)回复请求回应

RFC3325规范增加了P-Asserted/Preferred-Identity两个头域,也是用来携带主叫号码信息。其中,P-Asserted-Identity主要在信任域的server之间、proxy之间、server与Proxy之间进行传递,而P-Preferred-Identity主要在UA与server/proxy之间传递

必须具有Accept: application/reginfo+xml告知UAS通过xml格式通知订阅者

订阅状态机如下


SUBSCRIBE格式

SUBSCRIBE sip:joe@example.com SIP/2.0

  Via: SIP/2.0/UDP app.example.com;branch=z9hG4bKnashds7

  From: sip:app.example.com;tag=123aa9

  To: sip:joe@example.com

  Call-ID: 9987@app.example.com

  CSeq: 9887 SUBSCRIBE

  Contact: sip:app.example.com

  Event: reg

  Max-Forwards: 70

  Accept: application/reginfo+xml

NOTIFY格式

NOTIFY sip:app.example.com SIP/2.0

  Via: SIP/2.0/UDP server19.example.com;branch=z9hG4bKnasaii

  From: sip:joe@example.com;tag=xyzygg

  To: sip:app.example.com;tag=123aa9

  Call-ID: 9987@app.example.com

  CSeq: 1288 NOTIFY

  Contact: sip:server19.example.com

  Event: reg

  Max-Forwards: 70

  Content-Type: application/reginfo+xml

  Content-Length: 98

  <?xml version="1.0"?>

  <reginfo xmlns="urn:ietf:params:xml:ns:reginfo" version="0" state="full">

    <registration aor="sip:joe@example.com" id="a7" state="init" />

  </reginfo>


一般来说,我们会在注册成功后进行订阅。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容