The functionality I am essentially looking for is for an IVR to call a certain set of extensions while the IVR message is playing and allow those extensions to “rescue” the caller from the IVR menu at any time. But if nobody is available the caller can chose from a variety of options (such as press # to leave a voicemail) or they can wait in the queue to be answered.
I have been able to implement nearly all of this by using a queue instead of an IVR (by linking the queue to the IVR through “IVR breakout” within “Caller announcements”). Then, in order to provide the message and list of options to people in the queue I have made some custom Music on Hold (MoH) which is set to play in this queue.
Everything works perfectly… except…
Once a call has been answered by an agent of the queue if the agent needs to place the caller on hold the caller hears the same “MoH” from the queue, rather than the default, the MoH specified for a RingGroup or the mohsuggest listed for the agents extension in:
How can I achieve what I am trying to achieve here?
But I wonder if anyone else has any thoughts on how this could be achieved - For example if I could force a new MoH on to the caller then this would solve the problem. It’s strange though, it’s like the MoH from the queue is incredibly “sticky”. I have tried a combo of quick fallovers from RingGroups to Queues and back to RingGroups but when the call is finally picked up, it seems to be the Queue MoH that is honored. For example…
RingGroup 310 (MoH = music)
↓ After 3 seconds
Queue 400 (MoH = myAnnouncement)
↓ After 6 seconds (the queue was set to have a maximum queue time of 6 seconds, before rolling in to the next RingGroup)
RingGroup 311 (MoH = music)
↓ After 3 seconds
Call answered by extension 201 (from within the ring group)
Call placed on hold (myAnnounement is heard)
It seems really weird that the hold music ends up being not the first, or the last type of hold music to be specified, but instead the MoH from the queue seems to take priority above everything else…
If a call in answered from queue it will always use the queues MOH if set since that is truly the last channel variable that gets set before the call is answered. This is all in the logic of asterisk and it’s channel variables.
I dont understand why you are using the MoH in the queue to play options since it wont let you dial anything while the MoH is being played. You can only dial options when you breakout of the queue into the IVR breakout and it would play the message of the IVR when in breakout.
But you’d think it kind of has to work though, because if your IVR breakout was “Sorry this is taking so long to answer your call, press 2 for faqs, press 3 to leave a message” then you’d want the caller to be able to choose those options any time once back in the queue, no? Otherwise you have to keep the caller away from the agents ringing phones while the caller is in the ivr section with only a few seconds to make a selection.
The way it is currently working has many advantages.
Do you think there could be any other way to play an announcement while agents phones are ringing (aka ringgroups) but also allow the caller to make a dialpad selection (aka IVR, and to some extent Queues)… It seems tantalisingly close with the functionality almost working from several angles, but each potential way of doing it having a small niggling issue.