Мы решили пойти другим путём
- через публикацию присутствия. Пулять все изменения статуса экстеншенов в сторону opensips (kamailio), а тот должен их ловить и складыватьв свою бд. Из которой мы и будем брать актуальное состояние.
На астере сконфгурирован внешний получатель :
pjsip.conf
Код: Выделить всё
[opensips-devicestate]
type=outbound-publish
server_uri=sip:10.10.10.10
event=asterisk-devicestate
вот что улетает в сообщении SIP PUBLISH:
Код: Выделить всё
Event: asterisk-devicestate
Expires: 3600
Max-Forwards: 70
User-Agent: Asterisk PBX certified/13.8-cert4
Content-Type: application/json
Content-Length: 105
{"state":"INVALID","type":"devicestate","device":"PJSIP/opensips","cachable":1,"eid":"00:11:22:33:44:55"}
Но весь затык как раз в opensips - он не понимает такого сообщения и в ответ отдаёт
Код: Выделить всё
SIP/2.0 489 Bad Event
Via: SIP/2.0/UDP 10.10.10.10:5060;received=10.10.10.10;rport=5060;branch=z9hG4bKPj0d0b5714-228a-4c1e-a052-fdf645c6b5
From: <sip:10.10.10.10>;tag=814fbe2d-64f6-4101-9c54-fbd152616cea
To: <sip:10.10.10.10>;tag=dcf6bbc9d72d34557cc678c8da66fe84.39b4
Call-ID: 7014e9fa-13d0-4303-827a-db0fd13b79d4
CSeq: 13093 PUBLISH
Allow-Events:
Server: OpenSIPS (2.2.1 (x86_64/linux))
Content-Length: 0
В лог самого opensips падает такое сообщение:
Код: Выделить всё
ERROR:presence:handle_publish: Missing or unsupported event header field value
ERROR:presence:handle_publish: #011event=[asterisk-devicestate]
Никто не сталкивался с таким извращением Asterisk + opensips + presence publish ?