General Category > Yate users hangout place

How to Remove a Caller from a Conference without Hanging Up

(1/2) > >>

jamie:
Hi,

Please could you help me ?

I need to be able to remove a caller from a conference and not hang-up.

I've been using the following to create a conference (PHP):


--- Code: --- $m = new Yate("chan.masquerade");
 $m->id = "";
 $m->params["message"] = "call.execute";
 $m->params["id"] = $partycallid;
 $m->params["callto"] = "conf/cs-$conference_id";
 $m->params["notify"] = "conf-monitor/cs-$conference_id";
 $m->params["billing"] = "true";
 $m->params["lonely"] = "true";
 $m->params["maxusers"] = $maxusers;
 $m->params["smart"] = "t";

 //$m->params["record"] = "external/nodata/conference.php";
 // set this so that script can play warnings in conference
 //$m->params["recordwarn"] = "-";
 $m->params["speakers"] = $speakers;
 $m->params["interval"] = $interval_notifications;
 $m->params["waitlock"] = -200;  // ( ** Not sure what this does ** )

 $m->Dispatch();
--- End code ---


This work fine.

However, after a period of time, I need to be able to remove the caller from the conference (or destroy it) but without dropping the call.

I've checked for capability in the source ( conference.cpp ) and see that it seems to have class methods that might do it, but I can't see how I would do it.

Your help would be very much appreciated.

Thank you, Regards
Jamie

 




marian:
You may:
- Drop the channel (use call.drop message with 'id' parameter)
- Re-execute it to another destination (masquerade a call.execute message): the channel will be removed from conference and connected to new destination

You need to remember its channel id for both actions.

jamie:
Hi Marian,

Thanks very much for your help, much apprecited.

I think I've managed to implement this !

One quick questions .... is it best to issue the masquerade call.execute immediately after the call.drop channel, or
to listen for the disconnected message and do it then?

marian:
Hi,
There no need to drop the channel: when it is re-executed it will be connected to a new channel (call leg) and disconnected from the old one.
You only need to make sure the call execute target module is loaded.

jamie:

Hi Marian

Thank you, For others to view, I'll update the post shortly with what I've done.

Occasionally I get the following message:

"Overflow reading in buffer of length 8192"

Is this because I'm passing too much 'data' into the listening external module ?

Thanks

 



Navigation

[0] Message Index

[#] Next page

Go to full version