SIP-如何使用资源列表xml订阅buddylist

SIP-如何使用资源列表xml订阅buddylist,xml,sip,subscribe,jain-sip,opensips,Xml,Sip,Subscribe,Jain Sip,Opensips,我需要实现对资源列表的SIP订阅,在该标记下我应该放置包含所需SIP ID的xml好友列表(以监视它们的状态)。请注意,我使用的是Jain SIP API,我实现了单一订阅,工作正常,但在使用多个资源进行监视时遇到了困难。 应添加的XML,如中所示 要使用好友列表xml构建sip请求,请执行以下操作: SUBSCRIBE sip:rls@example.com SIP/2.0 Via: SIP/2.0/TCP terminal.example.com;branch=z9hG4bKwYb6Q

我需要实现对资源列表的SIP订阅,在该标记下我应该放置包含所需SIP ID的xml好友列表(以监视它们的状态)。请注意,我使用的是Jain SIP API,我实现了单一订阅,工作正常,但在使用多个资源进行监视时遇到了困难。 应添加的XML,如中所示


要使用好友列表xml构建sip请求,请执行以下操作:

SUBSCRIBE  sip:rls@example.com SIP/2.0
Via: SIP/2.0/TCP terminal.example.com;branch=z9hG4bKwYb6QREiCL
Max-Forwards: 70
To: RLS <sip:rls@example.com>
From: <sip:adam@example.com>;tag=ie4hbb8t
Call-ID: cdB34qLToC@terminal.example.com
CSeq: 1 SUBSCRIBE
Contact: <sip:terminal.example.com>
Event: presence
Expires: 7200
Require: recipient-list-subscribe
Supported: eventlist
Accept: application/cpim-pidf+xml
Accept: application/rlmi+xml
Content-Type: application/resource-lists+xml
Content-Disposition: recipient-list
Content-Length: 337

<?xml version="1.0" encoding="UTF-8"?>
<resource-lists xmlns="urn:ietf:params:xml:ns:resource-lists"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<list>
<entry uri="sip:bill@example.com" />
<entry uri="sip:joe@example.org" />
<entry uri="sip:ted@example.net" />
</list>
</resource-lists>
订阅sip:rls@example.comSIP/2.0
Via:SIP/2.0/TCP terminal.example.com;分支=z9hG4bKwYb6QREiCL
最大前锋:70
收件人:RLS
发件人:;标签=IE4HB8T
呼叫ID:cdB34qLToC@terminal.example.com
CSeq:1订阅
联系人:
活动:出席
有效期:7200
要求:收件人列表订阅
支持:事件列表
接受:应用程序/cpim pidf+xml
接受:应用程序/rlmi+xml
内容类型:应用程序/资源列表+xml
内容处置:收件人列表
内容长度:337

最好,

我假设您正在使用
javax.sip.message.message接口或对象实例来创建传出订阅请求。在这种情况下,可以使用方法指定请求的正文内容

另一方面,正确检测服务器是否支持多个收件人订阅的方法是发送一个选项请求,并在相应的200 OK响应中,检查Supported:header是否包含
收件人列表订阅
选项标记。SIP消息流应该类似于:

Client UA                        Server
 |                              |
 |----------------------------->|
 |            OPTIONS           |
 |<-----------------------------|
 |             200 OK           |
 |      (Contains Supported:    |
 |    recipient-list-subscribe  |
 |                              |
 |----------------------------->|
 |           SUBSCRIBE          |
 |<-----------------------------|
 |             200 OK           |
客户端UA服务器
|                              |
|----------------------------->|
|选择权|
||
|订阅|

|你说的“标签”是什么意思?我的意思是,你的XML身体对我来说似乎很好。嗨@jcm,我指的是标记哪个头。我正在使用Jain Sip Java API来构建Sip请求。我创建标题(到、从、通过、内容类型、联系人等),然后将它们添加到请求中。我的问题是我应该把XML放在哪个头上?因为我没有Body header.HI@jcm,至于我最初的问题,你知道如何识别我的SIP服务器是否可以处理对资源列表的订阅吗。示例:我应该将什么放入头中,以寻址到RLS(资源列表服务器)。pbx型号:用户代理:FortiVoice/7.31b00。谢谢你@jcm,谢谢你它工作了,我使用了setcontent并成功地将xml添加到SIP请求中:request.setcontent(sipClientBO.getResourceXMLasString(),contentTypeHd);您好@jcm,关于我最初的问题,您知道如何识别我的SIP服务器是否可以处理对资源列表的订阅吗。示例:我应该将什么放入头中,以寻址到RLS(资源列表服务器)。pbx型号:用户代理:FortiVoice/7.31b00。感谢you@Gladiator请检查我的上次更新,了解服务器是否支持订阅请求容器资源列表。您好@jcm,您说过要在200 Ok响应中发送选项请求,您的意思是在对话框中保留相同的callerId和其他参数(通过:branch)并重新发送吗?。在我创建了一个选项请求(使用新的callerId,branch)的情况下,服务器没有响应“SUpported”头。我用SIP消息更新了您的答案,希望他们能在这里发布。@Gladiator否否,我说发送SIP选项请求,并在其200 OK响应上检查支持的标题。SIP选项是一个独立的事务,用于了解另一端的功能。检查我的答案更新。
Client UA                        Server
 |                              |
 |----------------------------->|
 |            OPTIONS           |
 |<-----------------------------|
 |             200 OK           |
 |      (Contains Supported:    |
 |    recipient-list-subscribe  |
 |                              |
 |----------------------------->|
 |           SUBSCRIBE          |
 |<-----------------------------|
 |             200 OK           |