We've Moved! Please visit our new and improved forum over at our new portal: https://portal.plumvoice.com/hc/en-us/community/topics

Continuous Hold Music

Questions and answers about IVR programming for Plum DEV

Moderators: admin, support

Post Reply
PSN
Posts: 6
Joined: Thu Jun 11, 2009 9:47 am
Location: Madison, WI
Contact:

Continuous Hold Music

Post by PSN »

Okay, let me start by apologizing if there is another post about this or an otherwise "easy" answer but as I have yet to find it, I am just going to ask.

We want our hold music (whatever it may be) to continue to play while the customer is waiting for an available rep. We don't want to have to have a new piece of music to play after each time the system checks if there is an available operator. Right now we have a set of 4 ten-second files that we loop through after each check (the file plays, we check for an operator; if none, the next one plays for 10 seconds and then we check again). This is kind of annoying to our customers (as we have been told) so we want to see if there is another alternative. Note that this setup was done almost 6 years ago so I am guessing there is something new to do...

So, basically, can we do this:
-- Have a continue feed of a single file or stream that plays for all callers
-- Have this keep playing and check for available operator without restarting the stream or file
-- Have a "please keep waiting" message come in also without restarting the stream or file

Thank you in advance for any assistance you can offer.

Bryan W.
PSN Developer
Payment Service Network

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Continuous IVR Hold Music

Post by support »

Hi Bryan,

It would be possible to have a single file that is played for all callers as well as checking for an available operator without restarting the file. Unfortunately you would not be able to have a "please keep waiting" message without restarting the file.

You would be able to mimic this ability using <subdialog> and <audio> tags. We use a 30s wav file for the hold music in this IVR example.

Code: Select all

<?xml version="1.0"?>
<vxml version="2.0">
<form id="check_for_transfer">
  <subdialog name="transferReady" src="transfer_ready.php" fetchaudio="hold_music.wav" fetchtimeout="30s">
    <filled>
      <if cond="transferReady == 'xfer'">
	     <goto next="#transfer"/>
      <elseif cond="transferReady == 'hold'"/>
	     <audio src="please_hold.wav"> Please continue to hold. </audio>
	     <goto next="#check_for_transfer"/>
      </if>
    </filled>
  </subdialog>
</form>
This IVR code requires that transfer_ready.php have some business logic behind it dictating whether or not a rep would be available to take an IVR call. This could be done by doing a query against a database looking for an available operator number.

Regards,
Plum Support
Last edited by support on Wed Feb 24, 2010 11:08 am, edited 1 time in total.

PSN
Posts: 6
Joined: Thu Jun 11, 2009 9:47 am
Location: Madison, WI
Contact:

Post by PSN »

Hey thanks. I haven't tried it out yet but it seems pretty straightforward!

One other thing - when the hold music is playing would the "transfer_ready.php" file (or whatever we would call it) interrupt as necessary or would it have to wait until the full 30s has passed? Right now we do have to wait regardless of how soon someone is available!
PSN Developer
Payment Service Network

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Continuous IVR Hold Music

Post by support »

Hi Bryan,

One way you could implement the transfer_ready.php file would be to run a while loop based on time.

transfer_ready.php

Code: Select all

<?php
function getRep () {
  $time = time();
  $end_time = $time + 30;

  while ($time < $end_time) {
    sleep(5);
    //Business logic to determine if rep is available
    if (rep_available() == true) {
      return "xfer";
    }
    $time = time();
  }
  return "hold";
}

$returnValue = getRep();
echo "<?xml version=\"1.0\"?>"
?>
<vxml version="2.0">
  <form>
    <block>
      <return namelist="<?= $returnValue ?>"/>
    </block>
  </form>
</vxml>
This will search for a representative every five seconds. If one is found, it immediately returns that the IVR application should be able to transfer.

Hope this help!

Regards,
Plum Support

Post Reply