Asterisk has a mechanism to sharing device states across the servers using just PJSIP.
But what is interesting, this mechanism is not really applies to Custom: device states. Means if you have 2 servers and want to share BLF state via hint and have something like
extensions.conf
...
exten => MY_STATE,hint,Custom:MY_DEVICE
and changing it via asterisk CLI
> devstate change Custom:MY_DEVICE BUSY
on the local server, it will change the hint on the remote server, but not the actual devstate that you're connecting this hint with
> devstate list
---------------------------------------------------------------------
--- Custom Device States --------------------------------------------
---------------------------------------------------------------------
---
--- Name: 'Custom:MY_DEVICE' State: 'NOT_INUSE'
> core show hints
-= Registered Asterisk Dial Plan Hints =-
MY_STATE@hints: Custom:MY_DEVICE State:Busy Presence:not_set Watchers 0
This situation gives me a lot of hard times, when you have visual inconsistency on the same server, but totally forgetting that you have second spare server.
For me, the resolution was to sync the actual Custom: device states via external service using AMI that monitors DeviceStateChange events and using Setvar just changing the state explicitly.
Just a note, that if someone will fall into the same pit.
No comments:
Post a Comment