IVR application demo

Call in using WebRTC or from your phone, and watch the application code unfold as it handles your call:


    • Python REST API

      Create telephony applications quickly and easily using Aculab Cloud's REST API. Using our simple JSON language wrapper, you'll be able to call Cloud Actions such as Play() and Record(), helping you to write your interactive telephony application.

      IVR applications can be created using the RunMenu() Action, allowing you to ask questions (using wav files or TTS), get answers from the telephone keypad and drive your application flow depending on those answers.

      Each of the links above above is a web page that our application uses when required. To see how it works, call in using WebRTC or from your phone, and watch the application code unfold as it handles your call.

    • my_actions = Actions()
      my_actions.add(Play (text_to_say = "Hello and welcome to the Aculab Cloud Logistics IVR system. "))
      my_actions.add(Redirect (WebPage(url='after_intro')))
      return my_actions.get_json()
    • my_actions = Actions()
      my_actions.add(Play (text_to_say = "Main menu. "))
      
      main_menu = RunMenu ()
      menu_text = ("Press 1 to hear our store location and opening times, press 2 to find the location "
                   "of your package, or press 3 to talk to one of our highly experienced and friendly "
                   "agents. At any time, just hit star to hear the options again. ")
      main_menu.on_prompt_play (Play(text_to_say = menu_text))
      main_menu.append_menu_option('1', WebPage(url='opening_times'))
      main_menu.append_menu_option('2', WebPage(url='location_package'))
      main_menu.append_menu_option('3', WebPage(url='connect_agent'))
      my_actions.add (main_menu)
      return my_actions.get_json()
    • my_actions = Actions()
      my_actions.add (Play (text_to_say = "Aculab Cloud Logistics are located at 2 Bramley Road, "
                            "Milton Keynes, MK1 1PT, United Kingdom. Our working hours are Monday "
                            "to Friday, 9 a.m to 5 p.m. "))
      my_actions.add (Redirect (next_page = WebPage(url="after_intro")))
    • my_actions = Actions()
      my_number = GetNumber()
      my_number.on_prompt_play(Play(text_to_say = "Please enter your four digit package number to "
                               "locate. For demonstration purposes, you can enter any number you "
                               "like. "))
      my_number.set_digit_count (4)
      my_number.set_next_page (WebPage (url='location_package_process'))
      my_actions.add (my_number)
    • if entered_number:
          msg = "Package " + ','.join (entered_number) + " was signed for by Allan yesterday at 3.30 pm. "
      
          my_actions = Actions()
          my_actions.add (Play (text_to_say = msg))
          my_actions.add (Redirect (next_page = WebPage (url="after_intro")))
          return my_actions.get_json()
    • my_actions = Actions()
      my_connect = Connect()
      my_connect.append_call_destination ('agent_ivr@sip-0-0-0.aculab.com')
      my_connect.set_hold_media(Play(text_to_say = "All of our operators are currently busy. Your "
                                "call is important to us. Please hold the line, and an agent will "
                                "answer shortly. "))
      my_actions.add (my_connect)
      my_actions.add (Redirect (next_page = WebPage (url="after_intro")))
    • my_actions = Actions()
      my_actions.add (Play (text_to_say = "Hello, my name is Joey from Aculab Cloud Logistics. "
                      "It's quite possible to connect your inbound application to another person "
                      "using conferencing or using an outbound telephone call. "))
      my_actions.add (Play (text_to_say = "I hope I've been able to help you with your inquiry. "
                      "Thank you for using Aculab Cloud Logistics"))
      return my_actions.get_json()
    • C# REST API

      Create telephony applications quickly and easily using Aculab Cloud's REST API. Using our simple JSON language wrapper, you'll be able to call Cloud Actions such as Play() and Record(), helping you to write your interactive telephony application.

      IVR applications can be created using the RunMenu() Action, allowing you to ask questions (using wav files or TTS), get answers from the telephone keypad and drive your application flow depending on those answers.

      Each of the links above above is a web page that our application uses when required. To see how it works, call in using WebRTC or from your phone, and watch the application code unfold as it handles your call.

    • List<TelephonyAction> actions = new List<TelephonyAction>();
      actions.Add(Play.SayText("Hello and welcome to the Aculab Cloud Logistics IVR system."));
      actions.Add(new Redirect(new WebPageRequest ('after_intro')));
    • List<TelephonyAction> actions = new List<TelephonyAction>();
      actions.Add(Play.SayText("Main menu."));
      
      Play prompt = Play.SayText(
               "Press 1 to hear our store location and opening times, press 2 to find the location " +
               "of your package, or press 3 to talk to one of our highly experienced and friendly " +
               "agents. At any time, just hit star to hear the options again.");
      List<MenuOption> options = new List<MenuOption>();
      options.Add(new MenuOption('1', new WebPageRequest ("opening_times")));
      options.Add(new MenuOption('2', new WebPageRequest ("location_package")));
      options.Add(new MenuOption('3', new WebPageRequest ("connect_agent")));
      actions.Add(new RunMenu(prompt, options));
    • List<TelephonyAction> actions = new List<TelephonyAction>();
      actions.Add(Play.SayText("Aculab Cloud Logistics are located at 2 Bramley Road, " +
                        "Milton Keynes, MK1 1PT, United Kingdom. Our working hours are Monday " +
                        "to Friday, 9 a.m to 5 p.m. "));
      actions.Add(new Redirect(new WebPageRequest ("after_intro")));
    • List<TelephonyAction> actions = new List<TelephonyAction>();
      Play prompt = Play.SayText(
               "Please enter your four digit package number to locate. For " +
               "demonstration purposes, you can enter any number you like.");
      actions.Add(new GetNumber(prompt, new WebPageRequest ("location_package_process"), 4));
    • if (String.IsNullOrEmpty(EnteredNumber))
      return;
      
      List<TelephonyAction> actions = new List<TelephonyAction>();
      actions.Add(Play.SayText(
            "Package " + String.Join(",", EnteredNumber.ToCharArray()) +
            " was signed for by Allan yesterday at 3.30 pm.");
      actions.Add(new Redirect(new WebPageRequest ("after_intro")));
    • List<TelephonyAction> actions = new List<TelephonyAction>();
      Connect connect = new Connect("agent_ivr@sip-0-0-0.aculab.com");
      connect.HoldMedia = Play.SayText("All of our operators are currently busy. Your "
                     "call is important to us. Please hold the line, and an agent will "
                     "answer shortly.");
      actions.Add(connect);
      actions.Add(new Redirect(new WebPageRequest ("after_intro")));
    • List<TelephonyAction> actions = new List<TelephonyAction>();
      actions.Add(Play.SayText("Hello, my name is Joey from Aculab Cloud Logistics. " +
               "It's quite possible to connect your inbound application to another person " +
               "using conferencing or using an outbound telephone call. "));
      actions.Add(Play.SayText("I hope I've been able to help you with your inquiry. " +
                "Thank you for using Aculab Cloud Logistics"));
    • Java REST API

      Create telephony applications quickly and easily using Aculab Cloud's REST API. Using our simple JSON language wrapper, you'll be able to call Cloud Actions such as Play() and Record(), helping you to write your interactive telephony application.

      IVR applications can be created using the RunMenu() Action, allowing you to ask questions (using wav files or TTS), get answers from the telephone keypad and drive your application flow depending on those answers.

      Each of the links above above is a web page that our application uses when required. To see how it works, call in using WebRTC or from your phone, and watch the application code unfold as it handles your call.

    • Actions actions = new Actions();
      actions.add(Play.sayText("Hello and welcome to the Aculab Cloud Logistics IVR system."));
      actions.add(new Redirect('after_intro'));
    • Actions actions = new Actions();
      actions.add(Play.sayText("Main menu."));
      
      Play prompt = Play.sayText(
               "Press 1 to hear our store location and opening times, press 2 to find the location " +
               "of your package, or press 3 to talk to one of our highly experienced and friendly " +
               "agents. At any time, just hit star to hear the options again.");
      MenuOptions options = new MenuOptions();
      options.add('1', new WebPageRequest ("opening_times"));
      options.add('2', new WebPageRequest ("location_package"));
      options.add('3', new WebPageRequest ("connect_agent"));
      actions.add(new RunMenu(prompt, options));
    • Actions actions = new Actions();
      actions.add(Play.sayText("Aculab Cloud Logistics are located at 2 Bramley Road, " +
                        "Milton Keynes, MK1 1PT, United Kingdom. Our working hours are Monday " +
                        "to Friday, 9 a.m to 5 p.m. "));
      actions.add(new Redirect(new WebPageRequest ("after_intro")));
    • Actions actions = new Actions();
      Play prompt = Play.sayText(
               "Please enter your four digit package number to locate. For " +
               "demonstration purposes, you can enter any number you like.");
      actions.add(new GetNumber(prompt, new WebPageRequest ("location_package_process"), 4));
    • if (EnteredNumber == null)
      return;
      
      Actions actions = new Actions();
      actions.add(Play.sayText(
            "Package " + StringUtils.join(EnteredNumber.toCharArray(), ',') +
            " was signed for by Allan yesterday at 3.30 pm."));
      actions.add(new Redirect(new WebPageRequest ("after_intro")));
    • Actions actions = new Actions();
      Connect connect = new Connect("agent_ivr@sip-0-0-0.aculab.com");
      connect.setHoldMedia(Play.sayText("All of our operators are currently busy. Your "
                     "call is important to us. Please hold the line, and an agent will "
                     "answer shortly."));
      actions.add(connect);
      actions.add(new Redirect(new WebPageRequest ("after_intro")));
    • Actions actions = new Actions();
      actions.add(Play.sayText("Hello, my name is Joey from Aculab Cloud Logistics. " +
               "It's quite possible to connect your inbound application to another person " +
               "using conferencing or using an outbound telephone call. "));
      actions.add(Play.sayText("I hope I've been able to help you with your inquiry. " +
                  "Thank you for using Aculab Cloud Logistics"));
    • PHP REST API

      Create telephony applications quickly and easily using Aculab Cloud's REST API. Using our simple JSON language wrapper, you'll be able to call Cloud Actions such as Play() and Record(), helping you to write your interactive telephony application.

      IVR applications can be created using the RunMenu() Action, allowing you to ask questions (using wav files or TTS), get answers from the telephone keypad and drive your application flow depending on those answers.

      Each of the links above above is a web page that our application uses when required. To see how it works, call in using WebRTC or from your phone, and watch the application code unfold as it handles your call.

    • $my_actions = new Actions();
      $my_actions->add(Play::sayText('Hello and welcome to the Aculab Cloud Logistics '.
      'IVR system '));
      $my_actions->add(new Redirect('after_intro'));
      
      print $my_actions;
    • $my_actions = new Actions();
      $my_actions->add(Play::sayText('Main menu. '));
      $menu_text = Play::sayText("Please 1 to hear our store location and opening ".
      "times, press 2 to find the location of your package, or press 3 to talk ".
      "to one of our highly experienced and friendly agents. At any time, just ".
      "hit star to hear the options again. ");
      $main_menu = new RunMenu ($menu_text);
      $main_menu->addMenuOption ('1', 'opening_times');
      $main_menu->addMenuOption ('2', 'location_package');
      $main_menu->addMenuOption ('3', 'connect_agent');
      $my_actions->add($main_menu);
      
      print $my_actions;
    • $my_actions = new Actions();
      $my_actions->add(Play::sayText('Aculab Cloud Logistics are located at 2 Bramley '.
      ' Road, Milton Keynes, MK1 1PT, United Kingdom. Our working hours are Monday '.
      'to Friday, 9 a.m. to 5 p.m. '));
      $my_actions->add(new Redirect('after_intro'));
      
      print $my_actions;
    • $my_actions = new Actions();
      $get_number = new GetNumber(Play::sayText('Please enter your four digit package '.
      'number to locate. For demonstration purposes, you can enter any number you '.
      'like. '));
      $get_number->setDigitCount (4);
      $get_number->setNextPage ('location_package_process');
      $my_actions->add ($get_number);
      
      print $my_actions;
    • if ($entered_number)
      {{
      $msg = 'Package '.implode(',', str_split ($entered_number)).' was signed for by '.
      'Allan yesterday at 3:30 pm. ';
      $my_actions = new Actions();
      $my_actions->add(Play::sayText ($msg));
      $my_actions->add(new Redirect('after_intro'));
      
      print $my_actions;
      }}
    • $my_actions = new Actions();
      $connect = new Connect();
      $connect->addDestination ('agent_ivr@sip-0-0-0.aculab.com');
      $connect->setHoldMedia (Play::sayText ('All of our operators are currently busy. '.
      'Your call is important to us. Please hold the line, and an agent will answer '.
      'shortly. '));
      $my_actions->add ($connect);
      $my_actions->add (new Redirect ('after_intro'));
      
      print $my_actions;
    • $my_actions = new Actions();
      $my_actions->add (Play::sayText ("Hello, my name is Joey from Aculab Cloud Logistics.  ".
      "It's quite possible to connect your inbound application to another person using ".
      "conferencing or using an outbound telephone call. "));
      $my_actions->add (Play::sayText ("I hope I've been able to help you with your inquiry. ".
      "Thank you for using Aculab Cloud Logistics. "));
      
      print $my_actions;
    • Python UAS application

      Create telephony applications quickly and easily using Aculab Cloud's UAS system. Write your programs in Python and import them into our User Application Server (UAS) to enable telephony functionality. We offer a high level wrapper to help write your interactive telephone application.

      IVR applications can be created using the invoke_menu() functions, allowing you to set the prompt message (in either text or recorded wave file) and valid key presses. The function returns with the validated keypad character pressed, allowing you to then call another menu function.

      Each of the links above above are sub-routines that our application uses when required. To see how it works, call in using WebRTC or from your phone, and watch the application code unfold as it handles your call.

    • def main(channel, application_instance_id, file_man, my_log, application_parameters):
          tts = set_ivona_voice ("Hello and welcome to the Aculab Cloud Logistics IVR system. ")
          channel.FilePlayer.say (tts, barge_in = True)
          after_intro(channel)
          return 0;
    • def after_intro(channel):
          tts = set_ivona_voice ("Main menu")
          channel.FilePlayer.say (tts)
      
          tts = set_ivona_voice ("Press 1 to hear our store location and opening times, press 2 "
                                 "to find the location of your package, or press 3 to talk to one of our "
                                 "highly experienced and friendly agents. At any time, just hit star to "
                                 "hear the options again.")
          channel_helper = HighLevelCallChannel (channel, my_log)
          digit = channel_helper.invoke_menu (PlayableMedia (text_to_say = tts), "123")
          if digit == '1': opening_times(channel)
          elif digit == '2': location_package(channel)
          elif digit == '3': connect_agent(channel)
    • def opening_times(channel):
          tts = set_ivona_voice ("Aculab Cloud Logistics are located at 2 Bramley Road, "
                                 "Milton Keynes, MK1 1PT, United Kingdom. Our working hours are Monday "
                                 "to Friday, 9 a.m to 5 p.m. ")
          channel.FilePlayer.say (tts)
    • def location_package(channel):
          channel_helper = HighLevelCallChannel (channel, my_log);
          tts = set_ivona_voice ("Please enter your four digit package number to locate. For "
                                 "demonstration purposes, you can enter any number you like. ")
          digits = channel_helper.capture_validated_number (PlayableMedia(text_to_say = tts),
                                 dtmf_count = 4)
          ivr_demo_location_package_process (channel, digits);
    • def ivr_demo_location_package_process(channel, digits):
          if digits:
          tts = set_ivona_voice ("Package " + ','.join (digits) + " was signed for by Allan "
                                 "yesterday at 3:30 pm. ")
          channel.FilePlayer.say (tts);
    • def connect_agent(channel):
          tts = set_ivona_voice ("All of our operators are currently busy. Your call is "
                                 important to us. Please hold the line and an agent will answer shortly.");
          channel.FilePlayer.say(tts);
          channel_helper = HighLevelCallChannel (channel, my_log)
          channel_helper.call_inbound_service_and_connect (channel.ExtraChannel[0], call_to = 'agent_ivr')
    • def main(channel, application_instance_id, file_man, my_log, application_parameters):
          tts = set_ivona_voice ( "Hello, my name is Joey from Aculab Cloud Logistics. "
                                  "It's quite possible to connect your inbound application to "
                                  "another person using conferencing or using an outbound telephone "
                                  "call. I hope I've been able to help you with your inquiry. "
                                  "Thank you for using Aculab Cloud Logistics")
          channel.FilePlayer.say (tts)
    • C# UAS application

      Create telephony applications quickly and easily using Aculab Cloud's UAS system. Write your programs in C# and import them into our User Application Server (UAS) to enable telephony functionality. We offer a high level wrapper to help write your interactive telephone application.

      IVR applications can be created using the InvokeMenu() functions, allowing you to set the prompt message (in either text or recorded wave file) and valid key presses. The function returns with the validated keypad character pressed, allowing you to then call another menu function.

      Each of the links above above are sub-routines that our application uses when required. To see how it works, call in using WebRTC or from your phone, and watch the application code unfold as it handles your call.

    • public override int Run(UASCallChannel channel, string applicationParameters)
      {
          String tts = SetIvonaVoice("Hello and welcome to the the Aculab Cloud Logistics IVR.");
          channel.FilePlayer.Say(tts);
          after_intro(channel);
          return 0;
      }
    • public void after_intro(UASCallChannel channel)
      {
          CallChannelHelper channelHelper = new CallChannelHelper(this, channel);
          String tts = SetIvonaVoice ("Press 1 to hear our store location and opening times, " +
                      "press 2 to find the location of your package, or press 3 to talk to one " +
                      "of our highly experienced and friendly agents. At any time, just hit star " +
                      "to hear the options again.");
          PlayableMedia menu = PlayableMedia.TextToSay(tts);
          char selection = channelHelper.InvokeMenu(menu, "123");
          if      (selection == '1') opening_times(channel);
          else if (selection == '2') location_package(channel);
          else if (selection == '3') connect_agent(channel);
      }
    • public void after_intro(UASCallChannel channel)
      {
          String tts = SetIvonaVoice("Aculab Cloud Logistics are located at 2 Bramley Road, " +
                                     "Milton Keynes, MK1 1PT, United Kingdom. Our working hours are Monday " +
                                     "to Friday, 9 a.m to 5 p.m."));
          channel.FilePlayer.Say(tts);
      }
    • public void location_package(UASCallChannel channel)
      {
          CallChannelHelper channelHelper = new CallChannelHelper(this, channel);
          String tts = SetIvonaVoice("Please enter your four digit package number to locate. " +
                                      "For demonstration purposes, you can enter any number you like.");
          PlayableMedia prompt = PlayableMedia.TextToSay(tts);
          String number = channelHelper.CaptureNumber(prompt, 4);
          if (number.Length == 4) location_package_process(number);
      }
    • public void location_package_process(UASCallChannel channel)
      {
          if (String.IsNullOrEmpty(number)) return;
          String package = String.Join(",", number.ToCharArray());
          String tts = SetIvonaVoice(package + " was signed for by Allan yesterday at 3:30 p.m.");
          channel.FilePlayer.Say(tts);
      }
    • public void connect_agent(UASCallChannel channel)
      {
          CallChannelHelper channelHelper = new CallChannelHelper(this, channel);
          String tts = SetIvonaVoice("All of our operators are currently busy. Your call is " +
                                     "important to us. Please hold the line and an agent will answer shortly.");
          channel.FilePlayer.Say(tts);
          CallTarget callTarget = CallTarget.SipAddressToCall("sip:agent_ivr@sip-1-2-0.aculab.com", null);
          channelHelper.CallAndConnect(callTarget, channel.ExtraChannels[0], 120);
          WaitForAnyCallIdle(new UASCallChannel[] {{ channel, channel.ExtraChannels[0] }}, 600);
      }
    • public override int Run(UASCallChannel channel, string applicationParameters)
      {
          String tts = SetIvonaVoice("Hello, my name is Joey from Aculab Cloud Logistics. " +
                                     "It's quite possible to connect your inbound application to another person " +
                                     "using conferencing or using an outbound telephone call. I hope I've been able " +
                                     "to help you with your inquiry. Thank you for using Aculab Cloud Logistics.",
                                     "Joey");
          channel.FilePlayer.Say(tts);
          return 0;
      }

WebRTC

WebRTC

1
2
3
a
4
5
6
b
7
8
9
c
*
0
#
d

Phone numbers

Phone numbers

Phone one of the numbers below and, when prompted, enter the token number.


Token:


 

United Kingdom
+44 (0)845 5281354


 

USA, DC, Washingdon
+1 202 888 0184


 

USA, CA, Los Angeles
+1 323 790 6820


 

Germany
+49 (0)89 21093352