Conference calls with AMI

I haven’t much experience with AMI, and as now can only use it to hangup existing calls and transfer calls. It seems like for most stuff I need to start by getting channel information from AMI with something like “Action: CoreShowChannels”. Next I would like to implement conference calling. I imagine there is some specific “Action” I apply to the call channel I want to conference people in to, but I cannot find this in the documentation.

There has to be something similar to a transfer. So is there something like:
Action: conference
Priority: 1

I really don’t even know where to start. Thanks.

EDIT: I’ve pretty much given up on on being able to bring in another call so easily. What I have changed to instead is trying to use meetme. I loaded the module, added a non pin protected conference room in meetme.conf:
conf => 500

And also added a short blip to the dialplan:
exten => h, 1, Goto(handlers,hangup,1)
exten => s, 1, NoOp(=-=-=- ${EXTEN}@{CONTEXT} -=-=-=)
exten => 100, n, MeetMe(500, DMc)

I then place a call between two of my phones, get their channelid and try:
Action: redirect
Context: conference
Exten: 100
Priority: 1

But this just seems to hangup one of the phones, and prompts the other one for a pin. This room is set to not need a pin in meetme.conf . Any help is much appreciated.

Redirect to MeetMe. You can redirect both sides of an existing call. I presume the same principle applies to the, newer, ConfBridge application.

What is MeetMe? I have some code built up to do “Action: CoreShowChannels” which I can parse out channel IDs and do stuff like hangup a channel, or transfer a call. In looking at “Action: CoreShowChannels” I can see that their are two sides to each call. So I would redirect both sides (to MeetMe, or the extension I want to conference in?) to effectively create a conference call?

[quote]centosCLI> core show application meetme
-= Info about application ‘MeetMe’ =-

MeetMe conference bridge

MeetMe([confno][,[options][,pin]]): Enters the user into a specified MeetMe
conference. If the conference number is omitted, the user will be prompted
to enter one. User can exit the conference by hangup, or if the ‘p’ option
is specified, by pressing ‘#’.

There are newer alternatives, like ConfBridge, but they need Asterisk 1.8+, and we are locked into 1.6.

[quote]centos*CLI> manager show command redirect
Action: Redirect
Synopsis: Redirect (transfer) a call
Privilege: call,all
Description: Redirect (transfer) a call.
Variables: (Names marked with * are required)
*Channel: Channel to redirect
ExtraChannel: Second call leg to transfer (optional)
*Exten: Extension to transfer to
*Context: Context to transfer to
*Priority: Priority to transfer to
ActionID: Optional Action id for message matching.[/quote]

You would need a short dialplan which ended up running MeetMe.

The way my Asterisk environment is set out (largely out of my control) doesn’t include MeetMe or confbridge (although “CLI> manager show commands” says I have a “Bridge” command), even though it’s 1.8.

My specific application of “conference” is extremely limited. Specifically I have two people who are already on a call together hand have established a 2 legged channel that shows up in “Action: CoreShowChannels.” I just need to add a single party (who does not have an existing channel established) to this existing channel.

Without modifying dialplan or going to conference contexts or anything, is it possible to do something that has the net effect of having my existing channel/call ring a single other extension?

No. Not within Asterisk. Asterisk is modular and if you deny yourself the relevant module, you cannot have its function.

Some SIP phones can do the conference by implementing a conference bridge in the phone itself.

Bridge() was introduced in 1.6 and has nothing to do with conferences. It establishes the normal two party connection that would be done, indirectly, by Queue or Dial. Bridge is part of “features”, which is now part of the asterisk core.

Okay. I’ll work on getting that module available. Does placing a call on hold from AMI require any special module too (as it appears the setup I’m working on isn’t fully featured)? If I pick out the channel I want to put on hold do I park it? Or is there some way to just make it so both ends are recvonly so there is no sound?

The standard Asterisk doesn’t signal hold states to its peers. In any case the most common convention is to send sendonly, and accompany it by musichonhold (Asterisk remains in sendrecv, but sends musiconhold). Some peers may be confused by trying to hold with anything except sendonly.

The standard way of doing this is Park, although dumping the channel onto the musiconhold application will look the same from outside.

dumping the channel onto the musiconhold application will look the same from outside.

And this can be done through AMI or do I have to get into the dialplan? After testing AM interface a lot, even with extended permissions I don’t see where I’d be able to access musiconhold.

Also, I find I can park a call, then view it with “Action: ParkedCalls”, but I can’t seem to retrieve it (i.e. unhold). Both ends also seem to hangup after about a minute and the parked call goes away.

Thanks again.

You are imposing unreasonable design constraints. I’m begining to wonder if you are really just trying to exploit an AMI compromise.

No. I am not.