[asterisk-users] Call Hold / Transfer via AMI
Antony.Stone at asterisk.open.source.it
Thu Jul 15 08:01:41 CDT 2021
I have the following situation:
An Asterisk 16 server on which I have complete control of the dialplan, and
which has (a) a SIP trunk to a PSTN gateway provider, and (b) several SIP
credentials for accounts (extensions) on another Asterisk server. For this
example I have SIP username and password for extension 234 on that server.
That "other Asterisk server" is also Asterisk 16, but is a proprietary PBX
which I cannot even see the dialplan of, let alone modify it. I do, however,
have full access to the AMI interface on that PBX, and I can write scripts
(eg: in Perl) on my own server and connect to the PBX's AMI.
I get an inbound call on my SIP trunk, and I need to dial it on to extension
456 on the PBX, from extension 234. So far, so good, I can do all this. The
incoming call arrives, I use the SIP credentials for extension 234 to dial
456, and the call gets answered by 456, who sees Caller ID 234.
Then I need to put 456 on hold, so that they get the hold music which is
configured on the (proprietary) PBX, and perhaps I then need to dial to a
different number from extension 234, and maybe ultimately transfer the call.
Alternatively, I might simply want to resume the call that was put on hold.
Putting a call on hold and then having the option to transfer it to another
number is easy with a SIP phone, but I need to do it for the call which my
Asterisk server (acting as a SIP client to the PBX) has initiated.
I can't do the hold function on my own Asterisk server because that would not
generate the correct hold music for the person on 456.
Also, if I transfer the call (so that 456 is now speaking to some other number
which I dialled whilst on hold) using my own Asterisk server, I would end up
with two calls in progress between my server and the PBX, whereas I want the
PBX to completely handle the transferred call, and mine (which took the
original incoming call on the SIP trunk) to have nothing further to do with
I can find AMI commands such as Atxfer, BlindTransfer, and Redirect. All of
these are fine if I want to actually transfer a call, but how do I simply tell
the proprietary PBX to put a call on hold and play the configured music?
I hope this is clear - feel free to ask any questions if not.
I have an excellent memory.
I can't think of a single thing I've forgotten.
Please reply to the list;
please *don't* CC me.
More information about the asterisk-users