<div dir="auto">In freeswitch you have the uuid_hold, etc api: <div><a href="https://www.freeswitch.org/confluence/plugins/servlet/mobile?contentId=1966741#content/view/1966741">https://www.freeswitch.org/confluence/plugins/servlet/mobile?contentId=1966741#content/view/1966741</a></div><div dir="auto"><br></div><div dir="auto">You call the API uuid_hold [uuid] or uuid_hold off  [uuid] to take the channel out of hold.</div><div dir="auto"><br></div><div dir="auto">UUID in freeswitch is what uniquely identifies a given channel.</div><div dir="auto"><br></div><div dir="auto">When you say: </div><div dir="auto"><br></div><div dir="auto">“ However, my understanding of a B2BUA is that *it* would then start handling </div>the state of the calls itself - whether they're on hold, routing the <br>transfers, etc.” </div><div dir="auto"><br></div><div dir="auto">This is correct, that’s how B2BUA works, but you can send an API to fs via ESL (tcp connection on port 8021 <div><a href="https://freeswitch.org/confluence/plugins/servlet/mobile?contentId=15696286#content/view/1048916">https://freeswitch.org/confluence/plugins/servlet/mobile?contentId=15696286#content/view/1048916</a></div> ) to put on hold not just your channel, since that would simply send a reconly to your app, but also the B-leg of the call.</div><div dir="auto"><br></div><div dir="auto"><br></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 18 Aug 2021 at 09:45, Antony Stone <<a href="mailto:Antony.Stone@kamailio.open.source.it">Antony.Stone@kamailio.open.source.it</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">On Wednesday 18 August 2021 at 00:20:20, Raúl Alexis Betancor Santana wrote:<br>
<br>
> On Tuesday 17 August 2021 at 21:22:37, Antony Stone wrote:<br>
> > On Tuesday 17 August 2021 at 21:55:15, Fred Posner wrote:<br>
> > > On 8/17/21 2:20 PM, Antony Stone wrote:<br>
> > > > If not, can anyone suggest something else which could sit in between<br>
> > > > a very basic SIP client and a PBX server, in order to inject these<br>
> > > > sorts of commands into the path and thereby give me these sorts of<br>
> > > > extra call capabilities?<br>
> > > <br>
> > > This really sounds like a better use case for Asterisk, FreeSWITCH,<br>
> > > SEMS, or PJSIP.<br>
> > <br>
> > I know Asterisk pretty well.<br>
> > <br>
> > When you use it as a SIP client to register to another PBX, it is<br>
> > extremely basic - it can place a call and it can receive a call, but it<br>
> > has no concept of presence, it cannot send a REINVITE to put a call on<br>
> > hold, it cannot send a REFER to transfer a call...<br>
> > <br>
> > I don't understand how placing this in between my simple client and the<br>
> > PBX which is handling the call can possibly inject the commands I need.<br>
> <br>
> Sorry for telling you this, but if you think that, you don't know Asterisk<br>
> at all.<br>
<br>
No problem - I'm very prepared to learn from experts.<br>
<br>
> You don't need to send a REINVITE to put a call on hold, just change how<br>
> you handle the RTP of the call if you SIP endpoint doesn't support<br>
> REINVITES/UPDATES.<br>
<br>
So, for such a simple thing, how could I get Asterisk to change the handling <br>
of the RTP of the call, so that the remote PBX server starts playing its music <br>
on hold to the other party?<br>
<br>
If you can just show me the basics of what dialplan commands I should be <br>
looking at, I can work out the rest (or ask the Asterisk people).<br>
<br>
> Asterisk knows about presence, it doesn't have full implementation,<br>
<br>
Asterisk certainly knows about presence *when it is the server* telling <br>
clients *about* the presence of other clients / extensions.<br>
<br>
It knows zero about presence when *it* is a client *asking* for the state of <br>
other extensions on another PBX (at least, that's according to Joshua Colp, <br>
Asterisk developer, when I asked on the Asterisk mailing list).<br>
<br>
> The thing you need it's a B2BUA, and Asterisk, FreeSwitch, YATE, SEMS,<br>
> either a simple python script using pjsua2 or any of the dozens SIP<br>
> frameworks out there, will allow you to acomplish your goals<br>
> <br>
> If you go the Asterisk road, any of the AMI/ARI documentation will explain<br>
> to you how to handle ongoing calls.<br>
<br>
There is no AMI command to put a call on hold.  There are AMI notifications to <br>
tell you that a call has been put on hold (or resumed) but there is no command <br>
to cause this to happen.  To quote from Joshua Colp: "I know of no way from <br>
AMI to control putting a call on and off hold."<br>
<br>
> You could take any road you like, but not Kamailio, as it's not a B2BUA.<br>
<br>
Okay, thank you for confirming that I'm looking in the wrong place here, and <br>
that Kamailio is not the solution to my needs.<br>
<br>
However, my understanding of a B2BUA is that *it* would then start handling <br>
the state of the calls itself - whether they're on hold, routing the <br>
transfers, etc.<br>
<br>
I need something which can *tell the existing PBX* to do these things, in the <br>
same way that a competent hardware SIP telephone would tell it.<br>
<br>
<br>
If there are multiple ways of achieving what I'm trying to do (even if <br>
Kamailio isn't one of them), please just point me at something specific which <br>
shows me *how* - telling me "it's simple" or "there are lots of ways of doing <br>
it" doesn't help me to find out *how* I can do it, and the suggestions <br>
regarding Asterisk are simply in conflict with the advice I've had from people <br>
on the Asterisk list, who say it can't be done.<br>
<br>
<br>
I hope someone can point me at just one example of how this requirement can be <br>
achieved - I've tried to keep it as simple as possible, by focusing on call <br>
hold - once I've got that, I can build up the more complex stuff.<br>
<br>
To reiterate, a SIP client places a call to a SIP server; I then need a way to <br>
tell that SIP server to put the call on hold, given that the client itself <br>
cannot do it.<br>
<br>
<br>
Thanks,<br>
<br>
<br>
Antony.<br>
<br>
-- <br>
3 logicians walk into a bar. The bartender asks "Do you all want a drink?"<br>
The first logician says "I don't know."<br>
The second logician says "I don't know."<br>
The third logician says "Yes!"<br>
<br>
                                                   Please reply to the list;<br>
                                                         please *don't* CC me.<br>
<br>
__________________________________________________________<br>
Kamailio - Users Mailing List - Non Commercial Discussions<br>
  * <a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br>
Important: keep the mailing list in the recipients, do not reply only to the sender!<br>
Edit mailing list options or unsubscribe:<br>
  * <a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer" target="_blank">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><br>
</blockquote></div></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>Regards,</div><div><br></div>David Villasmil<div>email: <a href="mailto:david.villasmil.work@gmail.com" target="_blank">david.villasmil.work@gmail.com</a></div><div>phone: +34669448337</div></div></div>