I’m trying to get FreePBX to communicate with intercoms integrated with Singlewire. It’s a very long story but to make it short I have all features working except initiating a two-way call from an IP phone (I can initiate a 2-way call from the intercoms themselves).
My Phone provider (goto) cannot send extensions over a SIP trunk the way Singlewire wants so I’m using FreePBX as a middleman to rewrite the extensions and send them to Singlewire but I’m just getting them returned and then they are being forwarded back to Goto.
6364[2026-01-03 03:23:47] VERBOSE[1235][C-00000058] pbx.c: Executing [5198@singlewire-send:1] NoOp(“PJSIP/Goto_Trunk-00000094”, “Send to Singlewire: 5198”) in new stack
6365[2026-01-03 03:23:47] VERBOSE[1235][C-00000058] pbx.c: Executing [5198@singlewire-send:2] Dial(“PJSIP/Goto_Trunk-00000094”, “PJSIP/5198@Singlewire,30”) in new stack
6366[2026-01-03 03:23:47] VERBOSE[1235][C-00000058] app_dial.c: Called PJSIP/5198@Singlewire
6367[2026-01-03 03:23:47] VERBOSE[1235][C-00000058] app_dial.c: Now forwarding PJSIP/Goto_Trunk-00000094 to ‘Local/5198@from-pstn’ (thanks to PJSIP/Singlewire-00000095)
6368[2026-01-03 03:23:47] VERBOSE[1235][C-00000058] app_dial.c: Not accepting call completion offers from call-forward recipient Local/5198@from-pstn-0000002f;1
6369[2026-01-03 03:23:47] VERBOSE[1254][C-00000058] pbx.c: Executing [5198@from-pstn:1] Set(“Local/5198@from-pstn-0000002f;2”, “__DIRECTION=INBOUND”) in new stack
From what I understand this is the expected behavior on Singlewire’s end and it is expecting FreePBX to then call the intercom to complete the call but it’s sending it back to Goto instead.
I’ve tried creating extensions in FreePBX but just can’t figure it out. How can I take the redirect from Singlewire and forward it to an intercom?
Thanks, and sorry if this is a bit jumbled, It’s quite late where I am and I’ve been at this for a while now.
I don’t understand how you conclude this; nothing shows the call being directed towards Goto. The log says that singlewire redirected the call to 5198@??? and that you have the default chan_pjsip option of treating that as a call to the directory number (extension in Asterisk, but not FreePBX, terms) 5198.
If you want to use the domain part of the redirected address, you need to set one of the uri_… redirect methods. I don’t know if this is something that is controllable through the GUI; you may need to apply a custom override to the chan_pjsip endpoint definition.
I am in a similar but different situation with Singlewire+Informacast.
To confirm does your outbound route compensate for the expected intercom extension(s)? Also FreePBX is solely a middleman in the situations do you build an inbound route for “5198” and direct it to the singlewire trunk as the destination?
I assumed it was redirecting because the call terminates with the a goto cannot be reached message but I suppose goto could be playing me that when the call is dropped. I will read up on redirects and see if I can find a solution there. Thank you
“To confirm does your outbound route compensate for the expected intercom extension(s)?”
So, not yet. That’ll be step 2. For now I’m just trying to make the connection with one extension (5198). If I can get it working I have a few ideas for how to scale it out.
“Also FreePBX is solely a middleman in the situations do you build an inbound route for “5198” and direct it to the singlewire trunk as the destination”
So I have two trunks, one to Goto which gets “AUTHID+ext” I then built an extensions_custom.conf to take that number strip the “AUTHID+” off and send the extension to Singlewire through a separate trunk (configured under SIP speaker params in IC).
Right now if the extension is not configured to an IP speaker the call lands with Informacast and I get the internal informacast message about an unknown number. But if it is, it redirects the call back to FreePBX. From what I understand it’s doing so with the expectation that the PBX will route the call to the IP speaker.
I’m talking with Singlewire support and they see no reason why this shouldn’t work but haven’t seen it tried before. lol, I guess that’s something.
I can’t think why singlewire would redirect if correctly configured and sent the correct URI. I think you are either sending it the wrong URI, or it is not configured correctlly.
It’s also possible that, for some weird reason, it always redirects directly to the intercom unit, in which case see my comment about redirect methods, above.
I don’t know why they have it designed that way, I should also make sure I was being clear enough in stating, informacast essentially has its own instance of asterisk from what I gathered. I don’t mean to hijack the post, just as mentioned I have some issues with this as well, and am hoping to share what I know as well as learn from others.
That’s my understanding of the process as well. I made some adjustments to my configuration, mainly moving from port 5060 to 5160 and have eliminated the redirect but it’s still dropping the call with “app_dial.c: Everyone is busy/congested at this time (1:0/0/1)”
UDP or TCP? In advanced SIP settings I set UDP to be 5060 and TCP to be 5160. Then I built a trunk for dialcast and a 2nd trunk to route to for single intercom communications.
I could also perhaps share a trunk config I have of a working trunk directly to Informacast. I have this somewhat working but. For both Dialcast and Direct to Speaker the problem I experience is the Asterisk on my end seemingly doesn’t send a “bye” properly upon the call being diverted, so calling back is met with congestion.
I’ve been sticking with UDP but not wedded to it for any particular reason. I have a trunk pointed at Informacast and it works, like I mentioned if the number isn’t in informacast anywhere I get the Informacast unknown message error, it’s only when it’s a known number that it bounces back. I also have a second SIP trunk direct from GoTo that handles all the multicast/dialaware and it works fine with the exception of the two way call initiated from the phones.
Here’s my last emal from Singlewire support that confirms you’re idea of the setup:
“Greetings,
We’re doing things others haven’t tested so we’re in the weeds having some fun. I have one more thought we can try:
There are two SIP Stacks on the server:
Java for “InformaCast”
Asterisk for “Speakers”
You have a SIP trunk setup to “Java InformaCast” that works. That runs on port 5060.
You could try to setup a separate SIP Trunk to the “Asterisk Speaker” service? That runs on port 5160.
What we see is that when the call comes to port 5060 InformaCast sends back. 302 for the service on 5160. This breaks GoTo. If you’re able to do the digit routing so calls to speakers crosses the second SIP Trunk on port 5160 it may by pass the issue.
Just throwing out ideas. I’m not sure what there FreePBX is capable of? Let me know your thoughts?”
My thinking in my setting was because Informacast uses 5060 for SIP Signaling to PBX at 5060 and uses 5160 for SIP Signaling to Speakers via its environment. was to try and have asterisk actually utilize both ports all the way through.
You have a SIP trunk setup to “Java InformaCast” that works. That runs on port 5060.
You could try to setup a separate SIP Trunk to the “Asterisk Speaker” service? That runs on port 5160.
What we see is that when the call comes to port 5060 InformaCast sends back. 302 for the service on 5160. This breaks GoTo. If you’re able to do the digit routing so calls to speakers crosses the second SIP Trunk on port 5160 it may by pass the issue.
What they are proposing here is essentially what I believe I have built. Then you build an outbound route or routes depending on what works for you and your environment. Separate is probably better. If you do set it both trunks under 1 outbound route I be sure to set the trunks to:YES for the “continue on busy” option would still allow for it to work for both a Dialcast call or a Direct to speaker call
If you keep them both as UDP its fine just make sure the trunk with with single speaker is using 5160 dor the SIP Server port.
I think I may have been confused between Asterisk and Asterisk here (OP’s and the implementation detail of singlewire.
However, in that case, what we are seeing here is not the Java INVITING the implementation detail, but rather its redirecting its upstream (the OP’s Asterisk), to issue the INVITE. However the OP’s defaulting to the User redirect method, so is ignoring the domain pointing to the implementation detail, and trying to issue a virtual INVITE to itself. In which case one wants a uri_* redirect method.
The final 1 being the first non-zero means that this is busy or congested, bur rather unavailable, which is often associated with destinations which should register, but don’t have a current registration, or ones which have failed qualify. The numbers are total number of parallel outgoing calls, number busy, number congested, and number unavailable.
Switching to 5160 and toggling YES to continue on busy did the trick! It’s working as intended now. Thank you so much for the pointers. If you want I can share my config and maybe help solve your issue.
Next step is to figure out how to scale it to more than one speaker, but having a working model should make that relatively simple. I’m going to start on the Goto end and see if we can send alternate digits over the SIP trunk. If not I’m thinking of an auto-attendant that will let the caller dial an extension which will then be sent to singlewire/IC.
EDIT: Scaling worked. I made basically an IVR in extensions_custom.conf that takes the call from Goto, asks for digits and then passes them directly to @singlewire. Everything is now working as expected.
1169[2026-01-06 17:18:11] VERBOSE[11226][C-00000065] app_dial.c: Called PJSIP/5198@Singlewire
1170[2026-01-06 17:18:16] VERBOSE[11226][C-00000065] app_dial.c: PJSIP/Singlewire-000000af is ringing