Put call on hold via AMI

Hi all.

I am building a series of php-scripts which can handle calls. I am using AMI via my scripts.
I want to create a script to put a channel on hold - meaning that the user should be able to run a php-script putting the caller “somewhere” with music on hold and then be able to take the caller back from “hold”.

I have tried the park-action but I don’t know how to take the callers back from park and also, my extensions becomes available after putting callers on park. I don’t want that.

Have anyone got a solution for this?

Best regards

Soeren, VoIP Danmark.


Did you find a solution for this? The only solution I could find, a very tacky one, was to use Atxfer agent to an extension which is silence with a wait of 1 hour, which automatically puts the other caller on hold and to take off hold I send DTMF codes *0 to the agent channel.

There are a couple of problems with this solution.

1 - If the caller hangs up, the channel stays alive untill the agent disconnects their channel to the silent extension.

2 - The agent may hear a brief ring when putting caller on hold which may cause confusion.

I keep seeing that the core system executes commands like: MusicOnHold(“SIP/706-7309”, “”)

Is there anyway we can execute this? So we specify the channel, and then can turn off music on hold too by specifing the channel. The SIP phones have to send something to enable this, surely we can also do this via the console or manager.


James Morris

The standard hack is to use parking.

Yeah, problem with parking is you can’t forward the second channel onto another extension - thus, when you park the caller the agent becomes available so the agent deals with a new caller when they just wanted them on hold to deal with an issue.

I’ve managed to use call parking fascility to imitate holding calls by using the QueuePause and Originate to attatch back to an Agent/ channel.

Hope this helps,