Hi! I want to create custom Presence server. Main idea - phones subscribes to it (for ex, extension 100@domain). This subscription actually lit BLF button on a phone. But main idea - change status of BLF can arrive from different locations via PUBLISH, I assume. Problem - phones has different type of SUBSCRIBE, like dialog(application/dialog-info+xml) or presence(application/pidf+xml). Some of phones are not fully follow RFC (Like using in SUBSCRIBE R-URI not domain, but IP, but in From or To - domains are used) Phones are registered elsewhere, not on Kamailio. After reading RFC (especially event:dialog part) I’ve found about SIP-If-Match part, but problem about sync this data across multiple PUBLISH locations. Can be Kamailio be a presence server in this scenario?
For ex, SUBSCRIBE
SUBSCRIBE sip:212.232.26.232:5060;transport=udp SIP/2.0 Via: SIP/2.0/UDP 192.168.88.60:5060;branch=z9hG4bK1656003104;rport From: sip:608@master.rufan.at;tag=521811605 To: sip:*55@master.rufan.at;tag=05ea6038656678bd0198b8977f3c0221.4e93 Call-ID: 805970257-5060-2@BJC.BGI.II.GA CSeq: 20202 SUBSCRIBE Contact: sip:608@192.168.88.60:5060 X-Grandstream-PBX: true Max-Forwards: 70 User-Agent: Grandstream GXP2160 1.0.5.33 Expires: 180 Supported: replaces, path, timer, eventlist Event: dialog Accept: application/dialog-info+xml,multipart/related,application/rlmi+xml Allow: INVITE, ACK, OPTIONS, CANCEL, BYE, SUBSCRIBE, NOTIFY, INFO, REFER, UPDATE, MESSAGE Content-Length: 0
I’ve tried send to Kamailio this PUBLISH
PUBLISH sip:*55@master.rufan.at:5060 SIP/2.0 Via: SIP/2.0/UDP 10.0.20.71:5060;branch=z9hG4bK-6930-1-0 Max-Forwards: 70 To: sip:*55@master.rufan.at From: sip:*55@master.rufan.at:5060;tag=1 Call-ID: 1-6930@127.0.1.1 CSeq: 1 PUBLISH Contact: sip:mod_sofia@127.0.1.1:5060 Event: presence Expires: 3600 Content-Type: application/pidf+xml Content-Length: 486
<?xml version="1.0" encoding="ISO-8859-1"?> <presence xmlns='urn:ietf:params:xml:ns:pidf' xmlns:dm='urn:ietf:params:xml:ns:pidf:data-model' xmlns:rpid='urn:ietf:params:xml:ns:pidf:rpid' xmlns:c='urn:ietf:params:xml:ns:pidf:cipid' entity='sip:*55@master.rufan.at '> <tuple id='z9hG4bK-6930-1-0'> <status> <basic>open</basic> </status> </tuple> <dm:person id='1'> rpid:activities rpid:on-the-phone/ </rpid:activities> dm:noteNight</dm:note> </dm:person> </presence>
Kamailio answers with 200OK, but after this - no NOTIFY to subscribed clients.