I currently have a multi-site setup running, each location is connected via Metro-E, and has a local FreePBX installation running. Each site has an IAX trunk along with associated dial plans to connect it to the other locations which works flawlessly. I also have a central mailbox server that handles all voicemail for all three locations with the same config.
The one thing I’ve been chasing trying to find info on for the last week or so is a way send out device state notifications to the remote locations. Most of the options I’ve come across are based on HA and operate using multicast traffic which won’ work in a routed environment where the servers are on different networks, I’ve also read a few posts with people running scripts that “poll” remote locations which seems extremely inefficient.
I was wondering if there was a single and simple way to have a sip extension publish device state to a remote asterisk instance. I will add that i’m a bit new to all of this so i’m not really familiar with the code level functions that are available and how to fully integrate them, so I apologize if this is something overly simple. As a band-aide for now, I have created a single PJSIP extension on each PBX and have all required phones registering one account at each location using this single extension simply for local presence which does work, but this is obviously very inefficient and not scaleable.
I’ve already looked into the DDS using AIS document, but that is dependent on Corosync which requires the servers to be in the same broadcast domain and inst an option for me.
I’m a little confused on the who and where here, but reading your second link it looks like I can add the following into my pjsip.conf file:
[pub_site1_devicestate]
type=outbound-publish
server_uri=sip:192.168.2.5 <— REMOTE Server
from_uri=sip:192.0.1.5 <— LOCAL SERVER
event=dialog
multi_user=yes
@body=application/dialog-info+xml
@context=^users
and this into my extensions.conf file:
[users]
autohints=yes
Will this all still work even though my extensions connect to the local pbx using chan_sip or will they have to be converted to pjsip? also will this notification traverse my IAX trunks to the other systems or will I need to create a PJSip trunk between each PBX for this code to talk?
So by doing exactly as I said, I added the exact code above to the pjsip.conf file and to my extensions.conf file. After doing so I updated my test phones to subscribe to BLF for the remote extensions using their local account instead of their remote registered account to start testing and the BLF went dark on the phone. Im assuming there has to be a link somewhere that triggers this stuff to happen that i’m missing, i’m just not savy enough to really know what that would be.
Being that the BLF is dark, it tells me that the phone couldn’t find a device or whatever for that extension, there must not be any data.
What is it that actually links and triggers this code, how does it activate?
I find sngrep to be an invaluable tool when tracking down sip issues. Unfortunately anecdotal evidence and thus assuming not so much. Place calls, Trace calls, start with chan-pjsip, log calls, when it works, add other ingredients.
Well before doing that are you able to point me in the direction of how those code blocks are triggered? it seems to me that being in the pjsip config this code is only relevant using pjsip extensions which i’m not. doesn’t there need to be some sort of context or call tag that makes this run?
and I don’ t have an immediate need for such a thing, I can but imagine that ultimately sip connections are involved, for that I would use sngrep, on both ends, to confirm or deny such a theory, and if confirmed, then use them to diagnose the problem.
But I can’t find a single resource anywhere detailing how Asterisk might receive the published states and what’s involved in associating them to a local hint, which is the goal here. I’m not even sure the Asterisk can receive a published hint, as every page I look at suggests that Kamailio be used for this purpose.