Hi.
I'm looking for a solution to the following problem, and wondering whether Kamailio (with which I have very little experience so far) may be it, or whether I'm thinking in totally the wrong direction.
The problem:
I have a SIP client application which runs on a standard Linux system, and is extremely basic - it can REGISTER in order to receive inbound calls, and it can send INVITEs in order to place outbound calls, and that's about it. It handles media as well - in essence, it's a simple softphone. I can't change it for a more capable one, before anyone suggests that :)
Specifically, this thing cannot send REINVITEs in order to put calls on hold, nor can it handle anything to do with transfers (blind or attended).
I'm looking for something which does have these SIP capabilities which I could put in between this application and the SIP server through which it is placing and receiving calls, so that I can (through some sort of API) cause calls in progress to be put on hold, resumed, blind transferred, or hold-and-attended- transferred.
Does that sound like something Kamailio can do?
If so, can anyone point me in a helpful direction re how to go about it?
If not, can anyone suggest something else which could sit in between a very basic SIP client and a PBX server, in order to inject these sorts of commands into the path and thereby give me these sorts of extra call capabilities?
Thanks,
Antony.
On Tuesday 17 August 2021 at 21:39:50, M S wrote:
Not really, these are PABX features and Kamailio is not such. You would need something like Asterisk or FreeSWITCH which have several options to do such stuff.
No, I am not asking Kamailio to perform the PBX function of putting the call on hold - the PBX can do that, if only it gets the correct instruction from the "phone".
Maybe I didn't explain well. Suppose I have a standard SIP phone (Yealink, Polycom, Grandstream etc) and it's placing and receiving calls through a PBX. Whilst a call is in progress, I can press a "hold" button on the phone and the PBX will put the call on hold (and generally play music to the other party).
I've got the equivalent of a phone without a "hold" button, so I'm looking for something I can place in the network path between the phone and the PBX which can be told to inject the appropriate SIP REINVITE as though it had come from the phone (if only it were capable of sending that). The PBX then puts the call on hold as normal.
I hope that makes things clearer?
Question is how would this media server know when to hold, transfer etc. If the endpoint is a dumb sip softphone as you described?
Because I can send commands in to some API telling kamailio to "send a REINVITE for call reference XXX"?
-------- Original message -------- From: Antony Stone Antony.Stone@kamailio.open.source.it Date: Tue, 17 Aug 2021, 20:20 To: Kamailio Users' Mailing List sr-users@lists.kamailio.org Subject: [SR-Users] Is this idea even feasible? Hi.
I'm looking for a solution to the following problem, and wondering whether Kamailio (with which I have very little experience so far) may be it, or whether I'm thinking in totally the wrong direction.
The problem:
I have a SIP client application which runs on a standard Linux system, and is extremely basic - it can REGISTER in order to receive inbound calls, and it can send INVITEs in order to place outbound calls, and that's about it. It handles media as well - in essence, it's a simple softphone. I can't change it for a more capable one, before anyone suggests that :)
Specifically, this thing cannot send REINVITEs in order to put calls on hold, nor can it handle anything to do with transfers (blind or attended).
I'm looking for something which does have these SIP capabilities which I could put in between this application and the SIP server through which it is placing and receiving calls, so that I can (through some sort of API) cause calls in progress to be put on hold, resumed, blind transferred, or hold-and-attended- transferred.
Does that sound like something Kamailio can do?
If so, can anyone point me in a helpful direction re how to go about it?
If not, can anyone suggest something else which could sit in between a very basic SIP client and a PBX server, in order to inject these sorts of commands into the path and thereby give me these sorts of extra call capabilities?
Thanks,
Antony.
On 8/17/21 2:20 PM, Antony Stone wrote:
If not, can anyone suggest something else which could sit in between a very basic SIP client and a PBX server, in order to inject these sorts of commands into the path and thereby give me these sorts of extra call capabilities?
This really sounds like a better use case for Asterisk, FreeSWITCH, SEMS, or PJSIP.
On Tuesday 17 August 2021 at 21:55:15, Fred Posner wrote:
On 8/17/21 2:20 PM, Antony Stone wrote:
If not, can anyone suggest something else which could sit in between a very basic SIP client and a PBX server, in order to inject these sorts of commands into the path and thereby give me these sorts of extra call capabilities?
This really sounds like a better use case for Asterisk, FreeSWITCH, SEMS, or PJSIP.
I know Asterisk pretty well.
When you use it as a SIP client to register to another PBX, it is extremely basic - it can place a call and it can receive a call, but it has no concept of presence, it cannot send a REINVITE to put a call on hold, it cannot send a REFER to transfer a call...
I don't understand how placing this in between my simple client and the PBX which is handling the call can possibly inject the commands I need.
Can you point me at anything which documents how this could be possible?
Thanks,
Antony.
On 8/17/21 4:22 PM, Antony Stone wrote:
I know Asterisk pretty well.
When you use it as a SIP client to register to another PBX, it is extremely basic - it can place a call and it can receive a call, but it has no concept of presence, it cannot send a REINVITE to put a call on hold, it cannot send a REFER to transfer a call...
I don't understand how placing this in between my simple client and the PBX which is handling the call can possibly inject the commands I need.
Can you point me at anything which documents how this could be possible?
Asterisk was just one possibility of course. I don't know your case in detail and probably best to direct that question to an Asterisk group of course...
This said, Asterisk if as a b2bua you may want to look at moh_passthrough and ARI.
On Tuesday 17 August 2021 at 22:39:49, Fred Posner wrote:
On 8/17/21 4:22 PM, Antony Stone wrote:
Can you point me at anything which documents how this could be possible?
Asterisk was just one possibility of course. I don't know your case in detail and probably best to direct that question to an Asterisk group of course...
I have. The answer is "Asterisk as a SIP client is extremely basic and it cannot do what you want".
This said, Asterisk if as a b2bua you may want to look at moh_passthrough and ARI.
I *really* cannot help feeling I still have not explained my question well.
I have a very basic SIP client application, which can make and receive phone calls, and that's it.
It is registering to a PBX system which can do all the usual fancy things like putting calls on hold, playing music, transferring calls, conferencing... *provided* it gets the SIP commands from a phone/client telling it to do these things.
What I am looking for is something which can sit in the network connection between this very basic SIP client, and the very capable SIP server, and can send commands to the server which the client is incapable of generating, such as "place this call on hold", "resume this held call", "transfer this call", etc.
It obviously needs to sit in the network connection between client and server, so that it sees the INVITEs and the OKs, and can keep track of the Call-IDs, sequence numbers, To and From headers, etc, and then re-use those when it needs to send a request to the server which the client doesn't know how to do.
Because of this, I tend to think of what I'm looking for as a SIP proxy, because it's in between the client and the server, relaying messages between the two.
Maybe that's the wrong name for it, if so I apologise.
I am definitely *not* looking for a SIP server which can act as a PBX, routing calls and putting them on hold. I already have that.
What I need is something which can *tell* such a PBX that a call needs to be put on hold, when the client which originally initiated the call cannot do that for itself.
This thing (proxy) which can send the instruction to put a call on hold could be told to do so by a simple web interface, for example, where I place a web page side-by-side on screen with the rather dumb SIP client, showing buttons labelled "Hold", "Resume", "Transfer", "Conference", etc., and these send the instructions to my "proxy" between the dumb client and the capable server, so that the server can be told to do the appropriate thing.
I hope that helps.
Antony.
On Tuesday 17 August 2021 at 21:22:37, Antony Stone wrote:
On Tuesday 17 August 2021 at 21:55:15, Fred Posner wrote:
On 8/17/21 2:20 PM, Antony Stone wrote:
If not, can anyone suggest something else which could sit in between a very basic SIP client and a PBX server, in order to inject these sorts of commands into the path and thereby give me these sorts of extra call capabilities?
This really sounds like a better use case for Asterisk, FreeSWITCH, SEMS, or PJSIP.
I know Asterisk pretty well.
When you use it as a SIP client to register to another PBX, it is extremely basic - it can place a call and it can receive a call, but it has no concept of presence, it cannot send a REINVITE to put a call on hold, it cannot send a REFER to transfer a call...
I don't understand how placing this in between my simple client and the PBX which is handling the call can possibly inject the commands I need.
Sorry for telling you this, but if you think that, you don't know Asterisk at all.
You don't need to send a REINVITE to put a call on hold, just change how you handle the RTP of the call if you SIP endpoint doesn't support REINVITES/UPDATES. Asterisk knows about presence, it doesn't have full implementation, but you either need it. Also transfers doesn't force you to do them throught REFERS
Can you point me at anything which documents how this could be possible?
The thing you need it's a B2BUA, and Asterisk, FreeSwitch, YATE, SEMS, either a simple python script using pjsua2 or any of the dozens SIP frameworks out there, will allow you to acomplish your goals
If you go the Asterisk road, any of the AMI/ARI documentation will explain to you how to handle ongoing calls.
If you prefer FreeSwitch, you will have to surf the ESL seas.
I you take the SEMS aproach, SBC + DSM/Python/xmlrpc
You could take any road you like, but not Kamailio, as it's not a B2BUA.
I suggest you, first undestand the concepts you need to manage, then you will be able to pick up a tool for solving the problem.
Saludos
On Wednesday 18 August 2021 at 00:20:20, Raúl Alexis Betancor Santana wrote:
On Tuesday 17 August 2021 at 21:22:37, Antony Stone wrote:
On Tuesday 17 August 2021 at 21:55:15, Fred Posner wrote:
On 8/17/21 2:20 PM, Antony Stone wrote:
If not, can anyone suggest something else which could sit in between a very basic SIP client and a PBX server, in order to inject these sorts of commands into the path and thereby give me these sorts of extra call capabilities?
This really sounds like a better use case for Asterisk, FreeSWITCH, SEMS, or PJSIP.
I know Asterisk pretty well.
When you use it as a SIP client to register to another PBX, it is extremely basic - it can place a call and it can receive a call, but it has no concept of presence, it cannot send a REINVITE to put a call on hold, it cannot send a REFER to transfer a call...
I don't understand how placing this in between my simple client and the PBX which is handling the call can possibly inject the commands I need.
Sorry for telling you this, but if you think that, you don't know Asterisk at all.
No problem - I'm very prepared to learn from experts.
You don't need to send a REINVITE to put a call on hold, just change how you handle the RTP of the call if you SIP endpoint doesn't support REINVITES/UPDATES.
So, for such a simple thing, how could I get Asterisk to change the handling of the RTP of the call, so that the remote PBX server starts playing its music on hold to the other party?
If you can just show me the basics of what dialplan commands I should be looking at, I can work out the rest (or ask the Asterisk people).
Asterisk knows about presence, it doesn't have full implementation,
Asterisk certainly knows about presence *when it is the server* telling clients *about* the presence of other clients / extensions.
It knows zero about presence when *it* is a client *asking* for the state of other extensions on another PBX (at least, that's according to Joshua Colp, Asterisk developer, when I asked on the Asterisk mailing list).
The thing you need it's a B2BUA, and Asterisk, FreeSwitch, YATE, SEMS, either a simple python script using pjsua2 or any of the dozens SIP frameworks out there, will allow you to acomplish your goals
If you go the Asterisk road, any of the AMI/ARI documentation will explain to you how to handle ongoing calls.
There is no AMI command to put a call on hold. There are AMI notifications to tell you that a call has been put on hold (or resumed) but there is no command to cause this to happen. To quote from Joshua Colp: "I know of no way from AMI to control putting a call on and off hold."
You could take any road you like, but not Kamailio, as it's not a B2BUA.
Okay, thank you for confirming that I'm looking in the wrong place here, and that Kamailio is not the solution to my needs.
However, my understanding of a B2BUA is that *it* would then start handling the state of the calls itself - whether they're on hold, routing the transfers, etc.
I need something which can *tell the existing PBX* to do these things, in the same way that a competent hardware SIP telephone would tell it.
If there are multiple ways of achieving what I'm trying to do (even if Kamailio isn't one of them), please just point me at something specific which shows me *how* - telling me "it's simple" or "there are lots of ways of doing it" doesn't help me to find out *how* I can do it, and the suggestions regarding Asterisk are simply in conflict with the advice I've had from people on the Asterisk list, who say it can't be done.
I hope someone can point me at just one example of how this requirement can be achieved - I've tried to keep it as simple as possible, by focusing on call hold - once I've got that, I can build up the more complex stuff.
To reiterate, a SIP client places a call to a SIP server; I then need a way to tell that SIP server to put the call on hold, given that the client itself cannot do it.
Thanks,
Antony.
On Wednesday 18 August 2021 at 09:36:02, Antory Stone wrote:
On Wednesday 18 August 2021 at 00:20:20, Raúl Alexis Betancor Santana wrote:
On Tuesday 17 August 2021 at 21:22:37, Antony Stone wrote:
On Tuesday 17 August 2021 at 21:55:15, Fred Posner wrote:
On 8/17/21 2:20 PM, Antony Stone wrote:
If not, can anyone suggest something else which could sit in between a very basic SIP client and a PBX server, in order to inject these sorts of commands into the path and thereby give me these sorts of extra call capabilities?
This really sounds like a better use case for Asterisk, FreeSWITCH, SEMS, or PJSIP.
I know Asterisk pretty well.
When you use it as a SIP client to register to another PBX, it is extremely basic - it can place a call and it can receive a call, but it has no concept of presence, it cannot send a REINVITE to put a call on hold, it cannot send a REFER to transfer a call...
I don't understand how placing this in between my simple client and the
PBX which is handling the call can possibly inject the commands I need.
Sorry for telling you this, but if you think that, you don't know Asterisk at all.
No problem - I'm very prepared to learn from experts.
You don't need to send a REINVITE to put a call on hold, just change how you handle the RTP of the call if you SIP endpoint doesn't support REINVITES/UPDATES.
So, for such a simple thing, how could I get Asterisk to change the handling of the RTP of the call, so that the remote PBX server starts playing its music on hold to the other party?
Just tells Asterisk to put the call on hold.
If you can just show me the basics of what dialplan commands I should be looking at, I can work out the rest (or ask the Asterisk people).
On your scenario of controlling the call from outside the SIP channel, Custom Dynamic Features (https://wiki.asterisk.org/wiki/display/AST/Custom+Dynamic+Features) and AMI PlayDTMF (https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+ManagerAction_PlayDTM...) could do the trick
Asterisk knows about presence, it doesn't have full implementation,
Asterisk certainly knows about presence *when it is the server* telling clients *about* the presence of other clients / extensions.
It knows zero about presence when *it* is a client *asking* for the state of other extensions on another PBX (at least, that's according to Joshua Colp, Asterisk developer, when I asked on the Asterisk mailing list).
That's not true, you could use res_pjsip and RLS, It will need some dialplan and script coding but could be done. Either way I don't undestand why you whant Presence handling if your are using a soo dumb SIP Client.
The thing you need it's a B2BUA, and Asterisk, FreeSwitch, YATE, SEMS, either a simple python script using pjsua2 or any of the dozens SIP frameworks out there, will allow you to acomplish your goals
If you go the Asterisk road, any of the AMI/ARI documentation will explain to you how to handle ongoing calls.
There is no AMI command to put a call on hold. There are AMI notifications to tell you that a call has been put on hold (or resumed) but there is no command to cause this to happen. To quote from Joshua Colp: "I know of no way from AMI to control putting a call on and off hold."
I've told you how to doit: CDF + AMI PlayDTMF
However, my understanding of a B2BUA is that *it* would then start handling the state of the calls itself - whether they're on hold, routing the transfers, etc.
Partially true.
I need something which can *tell the existing PBX* to do these things, in the same way that a competent hardware SIP telephone would tell it.
NO, what you first need is to undestand how SIP protocol works, then which role could play any of the available tools, next design how your are going to get you problem solved and which tools with which roles you need to use to acomplish your goals, and finaly build and test your solution. There is no pre-build tool to solve your problem and no magic wand to move and get it solved.
If there are multiple ways of achieving what I'm trying to do (even if Kamailio isn't one of them), please just point me at something specific which shows me *how* - telling me "it's simple" or "there are lots of ways of doing it" doesn't help me to find out *how* I can do it, and the suggestions regarding Asterisk are simply in conflict with the advice I've had from people on the Asterisk list, who say it can't be done.
I have pointed you to how to solve it, it's up to you to read the docs and undestand how to get to the final solution. I'm not going to argue agains what people from the Asterisk lists says, there are too many things done wrong inside Asterisk since it was first launched, and lot of things that it's supposed it could not do, it does, if you know how to deal with it.
I hope someone can point me at just one example of how this requirement can be achieved - I've tried to keep it as simple as possible, by focusing on call hold - once I've got that, I can build up the more complex stuff.
To reiterate, a SIP client places a call to a SIP server; I then need a way to tell that SIP server to put the call on hold, given that the client itself cannot do it.
So read the docs of that SIP Server and how it allows you to put a call on hold, Asterisk, for example, allows your to do so, playing DTMF codes on the on-going call, no matter that the SIP endpoint does not have a "hold button". If your SIP endpoint it's soo dumb that it could not play DTMF, your could simulate the "hold" button throught CDF+AMI PlayDMTF, I've told you so.
Just rethink what you need and what are you doing. Seems to me, like your are trying to build the Piramids and neither you know how a hammer works.
Saludos
In freeswitch you have the uuid_hold, etc api: https://www.freeswitch.org/confluence/plugins/servlet/mobile?contentId=19667...
You call the API uuid_hold [uuid] or uuid_hold off [uuid] to take the channel out of hold.
UUID in freeswitch is what uniquely identifies a given channel.
When you say:
“ However, my understanding of a B2BUA is that *it* would then start handling the state of the calls itself - whether they're on hold, routing the transfers, etc.”
This is correct, that’s how B2BUA works, but you can send an API to fs via ESL (tcp connection on port 8021 https://freeswitch.org/confluence/plugins/servlet/mobile?contentId=15696286#... ) 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.
On Wed, 18 Aug 2021 at 09:45, Antony Stone < Antony.Stone@kamailio.open.source.it> wrote:
On Wednesday 18 August 2021 at 00:20:20, Raúl Alexis Betancor Santana wrote:
On Tuesday 17 August 2021 at 21:22:37, Antony Stone wrote:
On Tuesday 17 August 2021 at 21:55:15, Fred Posner wrote:
On 8/17/21 2:20 PM, Antony Stone wrote:
If not, can anyone suggest something else which could sit in
between
a very basic SIP client and a PBX server, in order to inject these sorts of commands into the path and thereby give me these sorts of extra call capabilities?
This really sounds like a better use case for Asterisk, FreeSWITCH, SEMS, or PJSIP.
I know Asterisk pretty well.
When you use it as a SIP client to register to another PBX, it is extremely basic - it can place a call and it can receive a call, but it has no concept of presence, it cannot send a REINVITE to put a call on hold, it cannot send a REFER to transfer a call...
I don't understand how placing this in between my simple client and the PBX which is handling the call can possibly inject the commands I need.
Sorry for telling you this, but if you think that, you don't know
Asterisk
at all.
No problem - I'm very prepared to learn from experts.
You don't need to send a REINVITE to put a call on hold, just change how you handle the RTP of the call if you SIP endpoint doesn't support REINVITES/UPDATES.
So, for such a simple thing, how could I get Asterisk to change the handling of the RTP of the call, so that the remote PBX server starts playing its music on hold to the other party?
If you can just show me the basics of what dialplan commands I should be looking at, I can work out the rest (or ask the Asterisk people).
Asterisk knows about presence, it doesn't have full implementation,
Asterisk certainly knows about presence *when it is the server* telling clients *about* the presence of other clients / extensions.
It knows zero about presence when *it* is a client *asking* for the state of other extensions on another PBX (at least, that's according to Joshua Colp, Asterisk developer, when I asked on the Asterisk mailing list).
The thing you need it's a B2BUA, and Asterisk, FreeSwitch, YATE, SEMS, either a simple python script using pjsua2 or any of the dozens SIP frameworks out there, will allow you to acomplish your goals
If you go the Asterisk road, any of the AMI/ARI documentation will
explain
to you how to handle ongoing calls.
There is no AMI command to put a call on hold. There are AMI notifications to tell you that a call has been put on hold (or resumed) but there is no command to cause this to happen. To quote from Joshua Colp: "I know of no way from AMI to control putting a call on and off hold."
You could take any road you like, but not Kamailio, as it's not a B2BUA.
Okay, thank you for confirming that I'm looking in the wrong place here, and that Kamailio is not the solution to my needs.
However, my understanding of a B2BUA is that *it* would then start handling the state of the calls itself - whether they're on hold, routing the transfers, etc.
I need something which can *tell the existing PBX* to do these things, in the same way that a competent hardware SIP telephone would tell it.
If there are multiple ways of achieving what I'm trying to do (even if Kamailio isn't one of them), please just point me at something specific which shows me *how* - telling me "it's simple" or "there are lots of ways of doing it" doesn't help me to find out *how* I can do it, and the suggestions regarding Asterisk are simply in conflict with the advice I've had from people on the Asterisk list, who say it can't be done.
I hope someone can point me at just one example of how this requirement can be achieved - I've tried to keep it as simple as possible, by focusing on call hold - once I've got that, I can build up the more complex stuff.
To reiterate, a SIP client places a call to a SIP server; I then need a way to tell that SIP server to put the call on hold, given that the client itself cannot do it.
Thanks,
Antony.
-- 3 logicians walk into a bar. The bartender asks "Do you all want a drink?" The first logician says "I don't know." The second logician says "I don't know." The third logician says "Yes!"
Please reply to the
list; please *don't* CC me.
Kamailio - Users Mailing List - Non Commercial Discussions
- sr-users@lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
On Wednesday 18 August 2021 at 13:40:25, David Villasmil wrote:
In freeswitch you have the uuid_hold, etc api: https://www.freeswitch.org/confluence/plugins/servlet/mobile?contentId=1966 741#content/view/1966741
You call the API uuid_hold [uuid] or uuid_hold off [uuid] to take the channel out of hold.
UUID in freeswitch is what uniquely identifies a given channel.
But, would that not perform the hold function on the FreeSwitch server?
And, if after putting it on hold, I need to transfer a call to another number / channel, that transfer would also take place on the FreeSwitch server?
Or am I misunderstanding, and FreeSwitch can pass the instruction to "place the call (channel if you prefer) on hold" on to the PBX system which my existing client application is placing its calls through?
When you say:
“However, my understanding of a B2BUA is that *it* would then start handling the state of the calls itself - whether they're on hold, routing the transfers, etc.”
This is correct, that’s how B2BUA works, but you can send an API to fs via ESL (tcp connection on port 8021) 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.
This all sounds as though I am getting FreeSwitch to "do the work" and manage the hold/transfer/resume/conference/whatever itself. I could do that with Asterisk (which I already know, whereas I haven't used FreeSwitch), but it isn't a solution to my needs.
I need something which will *tell the existing PBX* to do these things (and it's probably not running FreeSwitch), in just the same way as pressing the buttons on a competent SIP phone such as Yealink or Polycom would tell the PBX to do it.
Antony.
On Wednesday, August 18, 2021 1:22:47, Antony Stone wrote:
You call the API uuid_hold [uuid] or uuid_hold off [uuid] to take the channel out of hold.
UUID in freeswitch is what uniquely identifies a given channel.
But, would that not perform the hold function on the FreeSwitch server?
Off course, because your DUMB SIP client doesn't do it. If you do it on the B-Leg of the call, that will be the Leg facing from your FS B2BUA to your PBX
And, if after putting it on hold, I need to transfer a call to another number / channel, that transfer would also take place on the FreeSwitch server?
As I told you in the other message (I think it's pending aproval, because I send it from an account that it's not directly subscribed to the list), you are in urgent NEED to undestad how SIP works and the roles that the different tools takes on a comunication between A and B. You looks like trying to build the Piramids but neither know how a hammer works.
Or am I misunderstanding, and FreeSwitch can pass the instruction to "place the call (channel if you prefer) on hold" on to the PBX system which my existing client application is placing its calls through?
That only depends on how you manage the call, from your DUMB SIP endpoint, point of view, or from the B2BUA point of view.
When you say:
“However, my understanding of a B2BUA is that *it* would then start handling the state of the calls itself - whether they're on hold, routing the transfers, etc.”
This is correct, that’s how B2BUA works, but you can send an API to fs via ESL (tcp connection on port 8021) 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.
This all sounds as though I am getting FreeSwitch to "do the work" and manage the hold/transfer/resume/conference/whatever itself. I could do that with Asterisk (which I already know, whereas I haven't used FreeSwitch), but it isn't a solution to my needs.
Man ... it's like talking to a wall. Your lack any knowleadge of how SIP works and still saying that a B2BUA it's not the solution to your needs.
I need something which will *tell the existing PBX* to do these things (and it's probably not running FreeSwitch), in just the same way as pressing the buttons on a competent SIP phone such as Yealink or Polycom would tell the PBX to do it.
Forget about how you think that things works, because your are fully wrong on that.
If you have a DUMB SIP endpoint, as you have, that lacks the features to put a call on hold, transfer a call, etc. YOU ONLY HAVE 2 WAYS of solving that.
1) Throw that SIP Endpoint to the nearest trash bin you could find
2) Put a B2BUA in front of that SIP Endpoint, and throught API, DTMF, RPC or witchever method that B2BUA gives you, you will have to emulate what your SIP Endpoint doesn't support
Getting to this point, this is fully out of scope of this list, as Kamailio it's not a B2BUA and will not (without TONS of work and hours) cover that special scenario you have.
You have been given with the hints about how to solve your problem, take them or leave them but do not argue that It doesn't solve you issue, when you don't know how things works on first hand.
Best regards.
On Wednesday 18 August 2021 at 15:11:54, Raúl Alexis Betancor Santana wrote:
If you have a DUMB SIP endpoint, as you have, that lacks the features to put a call on hold, transfer a call, etc. YOU ONLY HAVE 2 WAYS of solving that.
- Throw that SIP Endpoint to the nearest trash bin you could find
Not an option, as already stated.
- Put a B2BUA in front of that SIP Endpoint, and throught API, DTMF, RPC
or witchever method that B2BUA gives you, you will have to emulate what your SIP Endpoint doesn't support
Precisely what I am asking how to do, thank you.
Getting to this point, this is fully out of scope of this list, as Kamailio it's not a B2BUA and will not (without TONS of work and hours) cover that special scenario you have.
Agreed, I realise now that Kamailio is not the solution to my requirements, however people here seem to believe they know what *would* be a solution to my requirements, but so far nobody has pointed me at anything specific which I can use.
You have been given with the hints about how to solve your problem,
Hints are all very well, but telling me "put a B2BUA in front of that SIP Endpoint, and use API, DTMF, RPC or witchever method that B2BUA gives you" doesn't exactly help when I've made it perfectly clear that I don't know how to solve the problem.
If it really is that simple, please just point me at one example of how to actually do it.
Antony.
On Wednesday 18 August 2021 at 2021 2:33:42, Antony Stone wrote:
If you have a DUMB SIP endpoint, as you have, that lacks the features to put a call on hold, transfer a call, etc. YOU ONLY HAVE 2 WAYS of solving that.
- Throw that SIP Endpoint to the nearest trash bin you could find
Not an option, as already stated.
So you must go route 2, easy peasy
- Put a B2BUA in front of that SIP Endpoint, and throught API, DTMF, RPC
or witchever method that B2BUA gives you, you will have to emulate what your SIP Endpoint doesn't support
Precisely what I am asking how to do, thank you.
David told you how to do it with FS, I told you, how to do it with Asterisk, (if you wait a couple of hours, message will be approved and posted on the list)
We give you hints about your options to solve your issue. And there is much more ways of solving the issue.
Getting to this point, this is fully out of scope of this list, as Kamailio it's not a B2BUA and will not (without TONS of work and hours) cover that special scenario you have.
Agreed, I realise now that Kamailio is not the solution to my requirements, however people here seem to believe they know what *would* be a solution to my requirements, but so far nobody has pointed me at anything specific which I can use.
As I told you before, could also be done with Kamailio, but with TONS of hours of work, that no one will do it for you. Just because there are other tools out there (B2BUAs), that better fit the needs.
You have been given with the hints about how to solve your problem,
Hints are all very well, but telling me "put a B2BUA in front of that SIP Endpoint, and use API, DTMF, RPC or witchever method that B2BUA gives you" doesn't exactly help when I've made it perfectly clear that I don't know how to solve the problem.
So, if your are unable to follow a hint, read the docs, try the things on your own and ask the right questions on the right place, better you hire someone that could solve it for you.
If it really is that simple, please just point me at one example of how to actually do it.
Good try.
It's really simple, for someone that knows how things works. With a minimal of dialplan programing knowleade of Asterisk, FreeSwitch, YATE, SEMS, etc. and how to interact with that B2BUA from outside the SIP channel. On the other email I pointed you how you could solve it with Asterisk, using CDF+AMI PlayDTMF command
Giving you a hint, doesn't mean solving you the problem. Means, you must do you homework.
Best regards
On Wednesday 18 August 2021 at 16:16:29, Raúl Alexis Betancor Santana wrote:
On Wednesday 18 August 2021 at 2021 2:33:42, Antony Stone wrote:
- Put a B2BUA in front of that SIP Endpoint, and throught API, DTMF,
RPC or witchever method that B2BUA gives you, you will have to emulate what your SIP Endpoint doesn't support
Precisely what I am asking how to do, thank you.
David told you how to do it with FS,
No, he told me how to get FS to put a call *which it is processing* on hold *inside FreeSwitch* - that is *not* what I need to do - I need to send a command to the *existing PBX* which is handling the call so that *it* puts it on hold, just the same as it would if I had standard SIP phone and could press the "hold" button.
I told you, how to do it with Asterisk, (if you wait a couple of hours, message will be approved and posted on the list)
If you are referring to:
"The thing you need it's a B2BUA, and Asterisk, FreeSwitch, YATE, SEMS, either a simple python script using pjsua2 or any of the dozens SIP frameworks out there, will allow you to acomplish your goals
"If you go the Asterisk road, any of the AMI/ARI documentation will explain to you how to handle ongoing calls."
then this neither tells me how to do it, nor is it even what I need to do (see above about FreeSwitch).
We give you hints about your options to solve your issue. And there is much more ways of solving the issue.
Please show me just one of them.
You have been given with the hints about how to solve your problem,
Hints are all very well, but telling me "put a B2BUA in front of that SIP Endpoint, and use API, DTMF, RPC or witchever method that B2BUA gives you" doesn't exactly help when I've made it perfectly clear that I don't know how to solve the problem.
So, if your are unable to follow a hint, read the docs,
Which ones, please? You seem to know, why not just tell me?
try the things on your own and ask the right questions on the right place, better you hire someone that could solve it for you.
If I find someone who says they can do it, that's definitely an option.
If it really is that simple, please just point me at one example of how to actually do it.
Good try.
Try what? I'm just saying that if you know how it can be done, please show me an example.
It's really simple, for someone that knows how things works. With a minimal of dialplan programing knowleade of Asterisk, FreeSwitch, YATE, SEMS, etc. and how to interact with that B2BUA from outside the SIP channel.
You really don't get what it is I need to do.
I do NOT need to build myself a B2BUA using any of the above tools and get *that machine* to put calls on hold, transfer them, conference, etc. I can, and have, done that perfectly well using Asterisk. Despite your opinion, I do in fact know both SIP and Asterisk pretty well.
What I need is something which can tell *the existing server* to put the call on hold, resume it, or transfer it, in just the same way that a competent SIP telephone can tell the server to do that.
On the other email I pointed you how you could solve it with Asterisk, using CDF+AMI PlayDTMF command
How does playing a DTMF tone down a channel tell some other server to put a call on hold? That makes no sense at all.
Giving you a hint, doesn't mean solving you the problem. Means, you must do you homework.
I'm looking for the textbook. (Oh, and if your response is "buy the Kamailio book", I have.)
I have tried to be polite in my responses to you; I would appreciate if you did the same.
Regards,
Antony.
On 8/18/21 11:01 AM, Antony Stone wrote:
I'm looking for the textbook. (Oh, and if your response is "buy the Kamailio book", I have.)
I have tried to be polite in my responses to you; I would appreciate if you did the same.
Antony,
I think the overwhelming response from the group at large is that what you are looking to do is best handled through a variety of b2bua programs.
I would highly recommend that for assistance with the next step, you reach out to the communities for those systems, such as Asterisk, FreeSWITCH, PJProject, etc.
Respectfully,
On Wednesday 18 August 2021 at 17:18:20, Fred Posner wrote:
I think the overwhelming response from the group at large is that what you are looking to do is best handled through a variety of b2bua programs.
Yes, I understand that. My responses to these suggestions have largely been based on people who are experts with these B2BUAs telling me specifically that they can NOT do what I want.
A B2BUA can definitely do all the call processing I want, but internally.
I need something which can *instruct the existing PBX* to do it. That's the bit which Raúl in particular did not seem to grasp.
I would highly recommend that for assistance with the next step, you reach out to the communities for those systems, such as Asterisk, FreeSWITCH, PJProject, etc.
I have not yet asked FreeSwitch, but the responses from the Asterisk and PJSIP projects indicate that their software cannot achieve what I am looking for.
I shall continue my search, and I definitely accept that Kamailio is not the right tool.
Respectfully,
Thank you - that is appreciated.
Regards,
Antony.
On Wednesday August 18, 2021 5:19:01, Antony Stone wrote:
I think the overwhelming response from the group at large is that what you are looking to do is best handled through a variety of b2bua programs.
Yes, I understand that. My responses to these suggestions have largely been based on people who are experts with these B2BUAs telling me specifically that they can NOT do what I want.
So it's obvious that you asked the wrong people o you did the worng questions.
A B2BUA can definitely do all the call processing I want, but internally.
I doesn't matter, moreother you don't undestand how it works, that why you think if do it 'internally'
What happens if you tell a B2BUA to put a B-Leg of and outgoing call "on hold"?, what it will negotiate with the B side of the call, and put that call on hold, if that B-Leg is your remote PBX, it will tell it to put the call on hold.
Did you ever know how SIP-CallFlows works?
I need something which can *instruct the existing PBX* to do it. That's the bit which Raúl in particular did not seem to grasp.
You are the one that don't seem to get how that works man, ;-)
By putting a customized B2BUA in front of you DUMB SIP client, It'll work, from you remote PBX point of view as a full-feature SIP Endpoint.
I would highly recommend that for assistance with the next step, you reach out to the communities for those systems, such as Asterisk, FreeSWITCH, PJProject, etc.
I have not yet asked FreeSwitch, but the responses from the Asterisk and PJSIP projects indicate that their software cannot achieve what I am looking for.
For sure you didn't do the right questions, as on the PJSIP doc, there are plenty of information about how to build a B2BUA, either, on their examples folder, you could find one build on python that cloud do, what you are asking for, with very little modifications.
Best regards
Hello Anthony,
As discussed earlier, Kamailio is not the right tool for your specific requirements. Here on this list are people naturally most experienced with this software. We can also not provide a detailed solution to any problem.
Regarding about telling the PBX to put the call on hold, one way how to do it is by sending a Re-INVITE with a changed SDP from one of the called parties.
Maybe you can get more detailed and useful answers for you at the Asterisk or Freeswitch user lists.
If hiring somebody is an option for you, we've is a business list available where you can just ask for people to contact you regarding your particular requirements. You will find similar lists also for other projects.
Best regards,
Henning
On Wednesday 18 August 2021 at 17:26:45, Henning Westerholt wrote:
Hello Antony,
As discussed earlier, Kamailio is not the right tool for your specific requirements.
I accept that.
Here on this list are people naturally most experienced with this software.
Yes, obviously.
We can also not provide a detailed solution to any problem.
I'm not asking for a detailed solution, however I find what Raúl has referred to as "hints" to be so vague as not to be helpful, because they just say "it can be done with something like X". If I knew how to do it with X then I would just get on with it. Nobody has pointed at any documentation suggesting how to do it (David did refer me to FreeSwitch docs, but again, not for something which actually does what I'm asking for).
Regarding about telling the PBX to put the call on hold, one way how to do it is by sending a Re-INVITE with a changed SDP from one of the called parties.
I believe that is precisely what I asked about in my original request:
"Specifically, this thing cannot send REINVITEs in order to put calls on hold, nor can it handle anything to do with transfers (blind or attended).
"I'm looking for something which does have these SIP capabilities which I could put in between this application and the SIP server"
So, yes, I know that is one way to do it. What I do not know is how to inject this into an existing dialogue between client and server. That is why I thought a SIP proxy would be a suitable solution, because it would naturally be placed between client and server to start with.
Maybe you can get more detailed and useful answers for you at the Asterisk or Freeswitch user lists.
The detailed answer from the Asterisk list is that Asterisk as a server is perfectly capable of this, but Asterisk as a client cannot do it, and given that I need to interface to a remote PBX as a SIP client, that basically means that Asterisk is no solution to my problem.
If hiring somebody is an option for you, we've is a business list available where you can just ask for people to contact you regarding your particular requirements. You will find similar lists also for other projects.
Indeed; I shall follow that up once I find someone who claims to know how to provide a solution.
Thank you,
Antony.
On Wednesday 18 August 2021 2021 5:18:51, Antony Stone wrote:
We can also not provide a detailed solution to any problem.
I'm not asking for a detailed solution, however I find what Raúl has referred to as "hints" to be so vague as not to be helpful, because they just say "it can be done with something like X". If I knew how to do it with X then I would just get on with it. Nobody has pointed at any documentation suggesting how to do it (David did refer me to FreeSwitch docs, but again, not for something which actually does what I'm asking for).
And again arguing ... your are asking for the FULL solution, and we refuse to give it to you. David have pointed you to a way of how to solve it, you just DON'T undestand how to do it, but that's your fault, not our.
Regarding about telling the PBX to put the call on hold, one way how to do it is by sending a Re-INVITE with a changed SDP from one of the called parties.
I believe that is precisely what I asked about in my original request:
"Specifically, this thing cannot send REINVITEs in order to put calls on hold, nor can it handle anything to do with transfers (blind or attended).
"I'm looking for something which does have these SIP capabilities which I could put in between this application and the SIP server"
A B2BUA MAN! ... how many times you need to hear that?
So, yes, I know that is one way to do it. What I do not know is how to inject this into an existing dialogue between client and server. That is why I thought a SIP proxy would be a suitable solution, because it would naturally be placed between client and server to start with.
A sip proxy, could not inject things in the dialog whitout braking it, that why we told you, you need a B2BUA, but it's clear, that you don't get the point.
Maybe you can get more detailed and useful answers for you at the Asterisk or Freeswitch user lists.
The detailed answer from the Asterisk list is that Asterisk as a server is perfectly capable of this, but Asterisk as a client cannot do it, and given that I need to interface to a remote PBX as a SIP client, that basically means that Asterisk is no solution to my problem.
And I have told you, that and Asterisk its perfectly capable as a client to do so, the problem is that you NEED TO KOWN how to control Asterisk for that, and I have told you how. CDF+AMI, there is no prebuild solution for that, so get your hand on if you are willing to have a solution. With FreeSwitch it's lot easier to do manipulations on A-Leg or B-Leg of the call from the ESL than with Asterisk, but both could do it.
Best regards
I would greatly appreciate it if we took any further discussion to a different forum and remember the first rule of Kamailio:
"Be respectful
Inevitably there will be people in the Kamailio project with whom you may disagree, or find it difficult to cooperate. Accept that, but even so, remain respectful. Disagreement is no excuse for poor behaviour or personal attacks, and a community in which people feel threatened is not a healthy community."
Thank you all.
https://github.com/kamailio/kamailio/blob/master/CODE_OF_CONDUCT.md
On Wednesday 18 August 2021 at 19:11:02, Fred Posner wrote:
I would greatly appreciate it if we took any further discussion to a different forum and remember the first rule of Kamailio:
"Be respectful
Thank you all.
Thank you Fred, sincerely.
I also see no further purpose in continuing this conversation here.
Antony.
Antony, your best bet.. REALLY.. is to replace whatever client you’re using with a modern, dynamic client. Otherwise you’ll be chasing ghosts, since it seems one of two things are happening here:
1- you’re not explaining well enough what you’re trying to do. Or 2- you don’t understand how SIP works and are chasing ghosts none of us can answer because we’re talking 2 very different languages.
In either case, you getting your hands dirty and read documentation, write some scripts, failing a million times, coming to the forum and ask specific questions, trying again, failing again, coming back, and loop back again. Can only benefit YOU. Think about this.
I hope you find what you’re looking for!
David
On Wed, 18 Aug 2021 at 19:45, Antony Stone < Antony.Stone@kamailio.open.source.it> wrote:
On Wednesday 18 August 2021 at 19:11:02, Fred Posner wrote:
I would greatly appreciate it if we took any further discussion to a different forum and remember the first rule of Kamailio:
"Be respectful
Thank you all.
Thank you Fred, sincerely.
I also see no further purpose in continuing this conversation here.
Antony.
-- #define SIX 1+5 #define NINE 8+1
int main() { printf("%d\n", SIX * NINE); } - thanks to ECB for bringing this to my attention
Kamailio - Users Mailing List - Non Commercial Discussions
- sr-users@lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
18 aug. 2021 kl. 18:18 skrev Antony Stone Antony.Stone@kamailio.open.source.it:
So, yes, I know that is one way to do it. What I do not know is how to inject this into an existing dialogue between client and server. That is why I thought a SIP proxy would be a suitable solution, because it would naturally be placed between client and server to start with.
The SIP protocol does not allow you to inject messages in the middle of a SIP dialog. The CSEQs will be out of order on one end and other messages will be ignored. That’s why everyone points you to the b2bua solutions where you have different dialogs on both ends.
Start with accepting that, then look for a small b2bua that fits your needs, that isn’t configured to be a full featured PBX, which you clearly stated that you don’t want.
/O
On Wednesday August 18, 2021 4:01:10, Antony Stone
David told you how to do it with FS,
No, he told me how to get FS to put a call *which it is processing* on hold *inside FreeSwitch* - that is *not* what I need to do - I need to send a command to the *existing PBX* which is handling the call so that *it* puts it on hold, just the same as it would if I had standard SIP phone and could press the "hold" button.
Man, really, you don't know how things works so STOP saying that something is not what you need, only because you don't have the knowleage.
David, told you EXACTLY, what you need, send the API call to hold the B-Leg on the FreeSwitch.
YDSC ---- > FS ---- > PBX
If you send the HOLD api commando to FS, and told it to doit on the B-Leg of and outgoing call, FS will put the leg PBX on hold, EXACTLY as if you have a "hold" button on your YDSC (Your Dumb SIP Client). But as is more than clear, that you don't have a f**k idea how things works on the SIP world, you keep saying "that's not what I was asking for".
I told you, how to do it with Asterisk, (if you wait a couple of hours, message will be approved and posted on the list)
If you are referring to:
No, I was refering to the reply that still is not on the list, where I pointed you to and way to solve your issue using Asterisk, pointing you to the DOCS where it's explaixed how that AMI commands works and what you need to take into account on the dialplan to get it working.
then this neither tells me how to do it, nor is it even what I need to do (see above about FreeSwitch).
That's point you to the docs WHERE it explained how it works. But you whant me to give you the full solution, that will not happen.
We give you hints about your options to solve your issue. And there is much more ways of solving the issue.
Please show me just one of them.
Again ... RTFM, I've told you more than tree times, that the solution is on the docs.
Which ones, please? You seem to know, why not just tell me?
Because I do not work for free, and your attitude on the thread, not ever reading the docs we point you, don't give me any incentive to do it so.
try the things on your own and ask the right questions on the right place, better you hire someone that could solve it for you.
If I find someone who says they can do it, that's definitely an option.
I could count at least 5 people on this list, that have told you, that could be done, but will be easier do it using a B2BUA.
If it really is that simple, please just point me at one example of how to actually do it.
Good try.
Try what? I'm just saying that if you know how it can be done, please show me an example.
Try to make me doing your job, and that will not happen, I've told you why. I've point you to the docs where it's explained how to put a call on hold, in Asterisk throught the AMI and enabling some features on the dialplan manager. I'm not going to give you a full step-by-step guide on how to do it.
It's really simple, for someone that knows how things works. With a minimal of dialplan programing knowleade of Asterisk, FreeSwitch, YATE, SEMS, etc. and how to interact with that B2BUA from outside the SIP channel.
You really don't get what it is I need to do.
I got it perfectly, It's just I don't want to give it to you, as simple as that.
I do NOT need to build myself a B2BUA using any of the above tools and get *that machine* to put calls on hold, transfer them, conference, etc. I can, and have, done that perfectly well using Asterisk. Despite your opinion, I do in fact know both SIP and Asterisk pretty well.
Your answers show to me, and the rest of the list, that what you call "knowing Asterisk" it's probably nothing deeper than runing an Issabel or FreePBX, if you would REALLY know Asterisk and the SIP protocol, you will not insist that what we have told you is not what you need.
What I need is something which can tell *the existing server* to put the call on hold, resume it, or transfer it, in just the same way that a competent SIP telephone can tell the server to do that.
Again an again ... YOU COULD DO THAT WITH A CUSTOMIZED B2BUA. Get it or leave it
On the other email I pointed you how you could solve it with Asterisk, using CDF+AMI PlayDTMF command
How does playing a DTMF tone down a channel tell some other server to put a call on hold? That makes no sense at all.
So you say you know Asterisk and you don't know that on Asterisk and on any other SIP pbx, you could control the call flow using DTMF? ... Really?
http://www.asteriskdocs.org/en/3rd_Edition/asterisk-book-html-chunk/Addition...
Please read the [featuremap] section. You could do that control on the A-Leg or on the B-Leg, if your upstream PBX doesn't support DTMF call-control, THATS where your customized B2BUA take into place. If your still doesn't unsdestand that. Just give up on this.
I'm looking for the textbook. (Oh, and if your response is "buy the Kamailio book", I have.)
And if you have it, why are you asking if Kamailio could do a B2BUA Role feature, like putting a call on hold? ... just because you don't undestand a word of what you have read from that book.
I have tried to be polite in my responses to you; I would appreciate if you did the same.
I'm been very polite on my replies, better you don't get see my BOFH side ;-)
There is thousands ways of skinning a cat, and you insist on the only one that don't work ... ;-)
Best Regards,
Guys,
I just ACKed the stuck post from Raul in the list manager, should be end up on the list in some minutes.
Cheers,
Henning
On Wed, Aug 18, 2021 at 1:30 PM Antony Stone < Antony.Stone@kamailio.open.source.it> wrote:
On Wednesday 18 August 2021 at 13:40:25, David Villasmil wrote:
In freeswitch you have the uuid_hold, etc api:
https://www.freeswitch.org/confluence/plugins/servlet/mobile?contentId=1966
741#content/view/1966741
You call the API uuid_hold [uuid] or uuid_hold off [uuid] to take the channel out of hold.
UUID in freeswitch is what uniquely identifies a given channel.
But, would that not perform the hold function on the FreeSwitch server?
Yes, if your app doesn't support it, you can't expect it to do it, right? You would call the API uuid_kill on the B-leg of your call, meaning the leg connected to the PBX.
And, if after putting it on hold, I need to transfer a call to another number / channel, that transfer would also take place on the FreeSwitch server?
Correct
Or am I misunderstanding, and FreeSwitch can pass the instruction to "place the call (channel if you prefer) on hold" on to the PBX system which my existing client application is placing its calls through?
Correct.
In effect, your app would call into freeswitch and then in freeswitch you would do anything your app can't do. Everything from FS' point of view.
When you say:
“However, my understanding of a B2BUA is that *it* would then start handling the state of the calls itself - whether they're on hold, routing the transfers, etc.”
This is correct, that’s how B2BUA works, but you can send an API to fs
via
ESL (tcp connection on port 8021) 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.
This all sounds as though I am getting FreeSwitch to "do the work" and manage the hold/transfer/resume/conference/whatever itself. I could do that with Asterisk (which I already know, whereas I haven't used FreeSwitch), but it isn't a solution to my needs.
I need something which will *tell the existing PBX* to do these things (and it's probably not running FreeSwitch), in just the same way as pressing the buttons on a competent SIP phone such as Yealink or Polycom would tell the PBX to do it.
Antony.
-- The Magic Words are Squeamish Ossifrage.
Please reply to the
list; please *don't* CC me.
Kamailio - Users Mailing List - Non Commercial Discussions
- sr-users@lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
On Wednesday 18 August 2021 at 13:40:25, David Villasmil wrote:
In freeswitch you have the uuid_hold, etc api: https://www.freeswitch.org/confluence/plugins/servlet/mobile?contentId=1966 741#content/view/1966741
You call the API uuid_hold [uuid] or uuid_hold off [uuid] to take the channel out of hold.
Thank you for your assistance, and pointing in a helpful direction.
I now have a working solution based on FreeSwitch.
UUID in freeswitch is what uniquely identifies a given channel.
When you say:
“ However, my understanding of a B2BUA is that *it* would then start handling the state of the calls itself - whether they're on hold, routing the transfers, etc.”
This is correct, that’s how B2BUA works, but you can send an API to fs via ESL (tcp connection on port 8021 https://freeswitch.org/confluence/plugins/servlet/mobile?contentId=15696286 #content/view/1048916 ) 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.
This is indeed what happens - FreeSwitch sends a re-invite containing sendonly to the upstream PBX, which then puts the other party on hold and plays its own hold music at them. Exactly what I needed.
Thanks,
Antony.
happy to help Regards,
David Villasmil email: david.villasmil.work@gmail.com phone: +34669448337
On Thu, Nov 4, 2021 at 1:52 PM Antony Stone < Antony.Stone@kamailio.open.source.it> wrote:
On Wednesday 18 August 2021 at 13:40:25, David Villasmil wrote:
In freeswitch you have the uuid_hold, etc api:
https://www.freeswitch.org/confluence/plugins/servlet/mobile?contentId=1966
741#content/view/1966741
You call the API uuid_hold [uuid] or uuid_hold off [uuid] to take the channel out of hold.
Thank you for your assistance, and pointing in a helpful direction.
I now have a working solution based on FreeSwitch.
UUID in freeswitch is what uniquely identifies a given channel.
When you say:
“ However, my understanding of a B2BUA is that *it* would then start handling the state of the calls itself - whether they're on hold, routing the transfers, etc.”
This is correct, that’s how B2BUA works, but you can send an API to fs
via
ESL (tcp connection on port 8021
https://freeswitch.org/confluence/plugins/servlet/mobile?contentId=15696286
#content/view/1048916 ) 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.
This is indeed what happens - FreeSwitch sends a re-invite containing sendonly to the upstream PBX, which then puts the other party on hold and plays its own hold music at them. Exactly what I needed.
Thanks,
Antony.
-- I want to build a machine that will be proud of me.
Danny Hillis, creator of The Connection Machine
Please reply to the
list; please *don't* CC me.
Kamailio - Users Mailing List - Non Commercial Discussions
- sr-users@lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: