Phones rigning during announcement with IVR options

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:

/etc/asterisk/sip_custom_post.conf

How can I achieve what I am trying to achieve here?

Incidentally, one way to achieve it would be for the agent phone to ring during the the “join announcement” for a queue. This was suggested a while back in this feature request…
https://issues.freepbx.org/browse/FREEPBX-11401

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…

Inbound rule
↓
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.

1 Like

The strange thing is that on one of my tests I let the call fall out of the queue and then answered it from a ring group instead…But it still kept the MoH I don’t want…

Is there any way to update the MoH that is assigned to a channel (potentially once the call is answered).

Or is there any other creative way of achieving what I’m hoping to achieve?

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.

I know it looks weird, but try it. If you set an breakout IVR but leave it to come in at 0 seconds (disabled) then the queue actually ‘adopts’ the IVR dial options for the entire queue length.

One thing I read here suggests that it should be possible for the MoH to be overridden after the queue…
http://forums.asterisk.org/viewtopic.php?f=1&t=89529&p=197315#

That sounds like a bug and not what it should be doing. Be careful as a fix in the future may break that. I am amazed that even works.

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.

While not perfect, @abcym15 was able to point out a viable solution over on this thread which consists of one queue feeding in to another queue. The second queue updates the MoH to set it back to standard music.

Overall this is a great option because it allows the following features:

  • Caller is greeted by an announcement while agents phones ring immediately
  • Agents can ‘rescue’ the caller from the IVR (which is likely to lead to a happy customer)
  • During the entire greeting and the wait time in the queue the caller can use a series of IVR options

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.