simple get number Sample
A simple application to use the get number
action to obtain a number from an answered inbound or outbound call.
A 5 digit number containing only digits 1-6 should be entered. The help digit is set to 7. Once a valid number has been entered it is sent to a page that then reads the entered number back to the caller.
A 5 digit number containing only digits 1-6 should be entered. The help digit is set to 7. Once a valid number has been entered it is sent to a page that then reads the entered number back to the caller.
Uses actions: Get Number, Play
-
-
{ "actions" : [ { "get_number": { "prompt" : { "play" : { "play_list" : [ { "text_to_say" : "Enter your 5 digit number using digits 1 to 6. Press 7 to listen to this message again." } ] } }, "digit_count" : 5, "help_digit" : "7", "valid_digits" : "123456", "next_page" : { "url" : "ReadEnteredDigits" } } } ], "token" : "my get number instance id", "api_version": "2.0" }
-
{ "actions" : [ { "play" : { "play_list" : [ { "text_to_say" : "The number you entered was <say-as interpret-as='digits'>12345</say-as>." } ] } } ], "token" : "my get number instance id", "api_version": "2.0" }
-
{ [ ], "token" : "Error for Action: xxxx ActionIndex: xxxx Result: xxxx" }
-
{ }
-
-
-
Implementing this sample as an ASP.Net Web application:
-
// CSharp Wrapper sample for the Aculab Telephony REST API. // // Simple Get Number: // A simple application to use the get_number action to obtain a number from an answered inbound call. // A 5 digit number is required containing only digits 1-6. The help digit is set to 7. A valid entry // is sent to the next page that reads the entered number back to the caller. using System; using System.Collections.Generic; using Aculab.Cloud.RestAPIWrapper; public partial class SimpleGetNumber : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // Unpack the request TelephonyRequest ourRequest = new TelephonyRequest(Request); // Setup the actions List<TelephonyAction> actions = new List<TelephonyAction>(); // Create the get number action Play prompt = Play.SayText("Enter your 5 digit number using digits 1 to 6. " + "Press 7 to listen to this message again."); GetNumber getNumberAction = new GetNumber(new WebPageRequest("ReadEnteredDigits.aspx"), prompt) { DigitCount = 5, HelpDigit = '7', ValidDigits = "123456" }; actions.Add(getNumberAction); // Respond TelephonyResponse ourResponse = new TelephonyResponse(actions, "my get number instance id"); ourResponse.ToHttpResponse(Response); } }
-
// CSharp Wrapper sample for the Aculab Telephony REST API. // // Simple Get Number: // ReadEnteredDigits page using System; using System.Collections.Generic; using Aculab.Cloud.RestAPIWrapper; public partial class ReadEnteredDigits : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // Unpack the request TelephonyRequest ourRequest = new TelephonyRequest(Request); String token = ourRequest.InstanceInfo.Token; // Get the result of the get_number action GetNumberResult result = (GetNumberResult)ourRequest.InstanceInfo.ActionResult; String enteredNumber = result.EnteredNumber; // Setup the actions List<TelephonyAction> actions = new List<TelephonyAction>(); // Create the play action Play playNumber = Play.SayText(String.Format( "The number you entered was <say-as interpret-as='digits'>{0}</say-as>.", enteredNumber)); actions.Add(playNumber); // Respond TelephonyResponse ourResponse = new TelephonyResponse(actions, token); ourResponse.ToHttpResponse(Response); } }
-
using System; using Aculab.Cloud.RestAPIWrapper; public partial class ErrorPage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // Unpack the request TelephonyRequest ourRequest = new TelephonyRequest(Request); ErrorResult result = ourRequest.InstanceInfo.ErrorResult; String token = String.Format("Action: {0}\nActionIndex: {1}\nResult: {2}", result.Action, result.ActionIndex, result.Result); // Respond TelephonyResponse ourResponse = new TelephonyResponse(null, token); ourResponse.ToHttpResponse(Response); } }
-
using System; using Aculab.Cloud.RestAPIWrapper; public partial class FinalPage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // Unpack the request TelephonyRequest ourRequest = new TelephonyRequest(Request); } }
-
-
Implementing this sample as an ASP.Net Core Web application:
-
// ASP.NET Core CSharp Wrapper sample for the Aculab Telephony REST API. // // Simple Get Number: // A simple application to use the get_number action to obtain a number from an answered inbound call. // A 5 digit number is required containing only digits 1-6. The help digit is set to 7. A valid entry // is sent to the next page that reads the entered number back to the caller. using System; using System.Net; using System.Collections.Generic; using Microsoft.AspNetCore.Mvc; using Aculab.Cloud.RestAPIWrapper; using System.Threading.Tasks; namespace Aculab.Cloud.RESTAPI.NETCoreCSharpSamples.Controllers { [Route("SimpleGetNumber")] public class SimpleGetNumberController : ControllerBase { // Process the GET or POST request, set up the actions and construct the json response. [Route("FirstPage")] [HttpGet] [HttpPost] [ProducesResponseType(200)] [ProducesResponseType(400)] [ProducesResponseType(500)] public async Task<IActionResult> SimpleGetNumber() { try { // Unpack the request var telephonyRequest = await TelephonyRequest.UnpackRequestAsync(Request); // Setup the actions required List<TelephonyAction> actions = new List<TelephonyAction>(); // Create the get number action Play prompt = Play.SayText("Enter your 5 digit number using digits 1 to 6. " + "Press 7 to listen to this message again."); var nextPage = new WebPageRequest("SimpleGetNumber/ReadEnteredDigits"); GetNumber getNumberAction = new GetNumber(nextPage, prompt) { DigitCount = 5, HelpDigit = '7', ValidDigits = "123456" }; actions.Add(getNumberAction); // Create response TelephonyResponse ourResponse = new TelephonyResponse(actions, "my get number instance id"); return new OkObjectResult(ourResponse.ToJson(this)); } catch (ArgumentException) { return BadRequest(); } catch (Exception e) { return StatusCode((int)HttpStatusCode.InternalServerError, e.Message); } } } }
-
// ASP.NET Core CSharp Wrapper sample for the Aculab Telephony REST API. // // Simple Get Number: // A simple application to use the get_number action to obtain a number from an answered inbound call. // A 5 digit number is required containing only digits 1-6. The help digit is set to 7. A valid entry // is sent to the next page that reads the entered number back to the caller. using System; using System.Net; using System.Collections.Generic; using Microsoft.AspNetCore.Mvc; using Aculab.Cloud.RestAPIWrapper; using System.Threading.Tasks; namespace Aculab.Cloud.RESTAPI.NETCoreCSharpSamples.Controllers { [Route("SimpleGetNumber")] public class SimpleGetNumberController : ControllerBase { // Process the GET or POST request, set up the actions and construct the json response. [Route("ReadEnteredDigits")] [HttpGet] [HttpPost] [ProducesResponseType(200)] [ProducesResponseType(400)] [ProducesResponseType(500)] public async Task<IActionResult> ReadEnteredDigits() { try { // Unpack the request var telephonyRequest = await TelephonyRequest.UnpackRequestAsync(Request); String token = telephonyRequest.InstanceInfo.Token; // Get the result of the get_number action GetNumberResult result = (GetNumberResult)telephonyRequest.InstanceInfo.ActionResult; String enteredNumber = result.EnteredNumber; // Setup the actions required List<TelephonyAction> actions = new List<TelephonyAction>(); // Create the play action Play playNumber = Play.SayText(String.Format( "The number you entered was <say-as interpret-as='digits'>{0}</say-as>.", enteredNumber)); actions.Add(playNumber); // Create response TelephonyResponse ourResponse = new TelephonyResponse(actions, token); return new OkObjectResult(ourResponse.ToJson(this)); } catch (ArgumentException) { return BadRequest(); } catch (Exception e) { return StatusCode((int)HttpStatusCode.InternalServerError, e.Message); } } } }
-
// ASP.NET Core CSharp Wrapper sample for the Aculab Telephony REST API. using System; using Microsoft.AspNetCore.Mvc; using Aculab.Cloud.RestAPIWrapper; using System.Net; using System.Threading.Tasks; namespace Aculab.Cloud.RESTAPI.NETCoreCSharpSamples.Controllers { public class RESTSampleController : ControllerBase { // Process the GET or POST request for the Error condition [Route("ErrorPage")] [HttpGet] [HttpPost] [ProducesResponseType(200)] [ProducesResponseType(400)] [ProducesResponseType(500)] public async Task<IActionResult> ErrorPage() { try { // Unpack the request var telephonyRequest = await TelephonyRequest.UnpackRequestAsync(Request); ErrorResult result = telephonyRequest.InstanceInfo.ErrorResult; String token = String.Format("Action: {0}\nActionIndex: {1}\nResult: {2}", result.Action, result.ActionIndex, result.Result); // Create response TelephonyResponse ourResponse = new TelephonyResponse(null, token); return new OkObjectResult(ourResponse.ToJson(this)); } catch (ArgumentException) { return BadRequest(); } catch (Exception e) { return StatusCode((int)HttpStatusCode.InternalServerError, e.Message); } } } }
-
// ASP.NET Core CSharp Wrapper sample for the Aculab Telephony REST API. using System; using Microsoft.AspNetCore.Mvc; using Aculab.Cloud.RestAPIWrapper; using System.Net; using System.Threading.Tasks; namespace Aculab.Cloud.RESTAPI.NETCoreCSharpSamples.Controllers { public class RESTSampleController : ControllerBase { // Process the GET or POST request for the Final Page [Route("FinalPage")] [HttpGet] [HttpPost] [ProducesResponseType(200)] [ProducesResponseType(400)] [ProducesResponseType(500)] public async Task<IActionResult> FinalPage() { try { // Unpack the request var telephonyRequest = await TelephonyRequest.UnpackRequestAsync(Request); String token = telephonyRequest.InstanceInfo.Token; // Create response // Only very limited actions can be returned here TelephonyResponse ourResponse = new TelephonyResponse(null, token); return new OkObjectResult(ourResponse.ToJson(this)); } catch (ArgumentException) { return BadRequest(); } catch (Exception e) { return StatusCode((int)HttpStatusCode.InternalServerError, e.Message); } } } }
-
-
-
Implemented as ASP.Net Web App:
-
' Visual Basic Wrapper sample for the Aculab Telephony REST API. ' ' The first page for the Simple Get Number sample: ' A simple application to use the get_number action to obtain a number from an answered inbound call. ' A 5 digit number is required containing only digits 1-6. The help digit is set to 7. A valid entry ' is sent to the final page that reads the entered number back to the caller. Imports System.Collections.Generic Imports Aculab.Cloud.RestAPIWrapper Partial Class SimpleGetNumber Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) ' Unpack the request Dim ourRequest As TelephonyRequest = New TelephonyRequest(Request) ' Setup the actions Dim actions As List(Of TelephonyAction) = New List(Of TelephonyAction) ' Create the get number action Dim prompt As Play = Play.SayText("Enter your 5 digit number using digits 1 to 6. " + _ "Press 7 to listen to this message again.") Dim getNumberAction As GetNumber = New GetNumber(New WebPageRequest("ReadEnteredDigits.aspx"), prompt) getNumberAction.DigitCount = 5 getNumberAction.HelpDigit = "7" getNumberAction.ValidDigits = "123456" actions.Add(getNumberAction) ' Respond Dim ourResponse As TelephonyResponse = New TelephonyResponse(actions, "my get number instance id") ourResponse.ToHttpResponse(Response) End Sub End Class
-
' Visual Basic Wrapper sample for the Aculab Telephony REST API. ' ' A page from the Get Number sample: ' This reads the digits entered back to the caller. Imports System.Collections.Generic Imports Aculab.Cloud.RestAPIWrapper Partial Class ReadEnteredDigits Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) ' Unpack the request Dim ourRequest As TelephonyRequest = New TelephonyRequest(Request) Dim token As String = ourRequest.InstanceInfo.Token ' Get the result of the get_number action Dim result As GetNumberResult = ourRequest.InstanceInfo.ActionResult Dim enteredNumber As String = result.EnteredNumber ' Setup the actions Dim actions As List(Of TelephonyAction) = New List(Of TelephonyAction) ' Create the play action Dim playNumber As Play = Play.SayText(String.Format( "The number you entered was <say-as interpret-as='digits'>{0}</say-as>.", enteredNumber)) actions.Add(playNumber) ' Respond Dim ourResponse As TelephonyResponse = New TelephonyResponse(actions, token) ourResponse.ToHttpResponse(Response) End Sub End Class
-
' Visual Basic Wrapper sample for the Aculab Telephony REST API. ' ' A generic error page for all the samples. Imports Aculab.Cloud.RestAPIWrapper Partial Class ErrorPage Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) ' Unpack the request Dim ourRequest As TelephonyRequest = New TelephonyRequest(Request) Dim result As ErrorResult = ourRequest.InstanceInfo.ErrorResult Dim token As String = String.Format("Action: {0}\nActionIndex: {1}\nResult: {2}", _ result.Action, result.ActionIndex, result.Result) ' Respond Dim ourResponse As TelephonyResponse = New TelephonyResponse(token) ourResponse.ToHttpResponse(Response) End Sub End Class
-
' Visual Basic Wrapper sample for the Aculab Telephony REST API. ' ' A generic final page for all the samples: Imports Aculab.Cloud.RestAPIWrapper Partial Class FinalPage Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) ' Unpack the request Dim ourRequest As TelephonyRequest = New TelephonyRequest(Request) ' Do application tidying up ' ... End Sub End Class
-
-
Implemented as Java Servlets:
-
// Java Servlet sample for the Aculab Telephony REST API. // // Simple Get Number: // A simple application to use the get_number action to obtain a number from an answered inbound call. // A 5 digit number is required containing only digits 1-6. The help digit is set to 7. A valid entry // is sent to the final page that reads the entered number back to the caller. package com.aculab.telephonyrestapi.samples; import javax.servlet.http.*; import javax.servlet.ServletException; import java.io.IOException; import java.util.ArrayList; import java.util.List; import com.aculab.telephonyrestapi.*; public class SimpleGetNumber extends HttpServlet { private static final long serialVersionUID = 5751271876875094439L; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { handleRequest(request, response); } @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { handleRequest(request, response); } private void handleRequest(HttpServletRequest request, HttpServletResponse response) throws IOException { // Unpack the request TelephonyRequest ourRequest = new TelephonyRequest(request); // Set up the actions List<TelephonyAction> actions = new ArrayList<TelephonyAction>(); // Create the get number action Play prompt = Play.sayText("Enter your 5 digit number using digits 1 to 6. " + "Press 7 to listen to this message again.", "Paul"); GetNumber getNumberAction = new GetNumber(new WebPageRequest("ReadEnteredDigits")); getNumberAction.setPrompt(prompt); getNumberAction.setDigitCount(5); getNumberAction.setHelpDigit('7'); getNumberAction.setValidDigits("123456"); actions.add(getNumberAction); // Respond TelephonyResponse ourResponse = new TelephonyResponse(actions, "my get number instance id"); ourResponse.setHttpServletResponse(response); } }
-
package com.aculab.telephonyrestapi.samples; import javax.servlet.http.*; import javax.servlet.ServletException; import java.io.IOException; import java.util.ArrayList; import java.util.List; import com.aculab.telephonyrestapi.*; public class ReadEnteredDigits extends HttpServlet { private static final long serialVersionUID = -2082495780603609611L; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { handleRequest(request, response); } @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { handleRequest(request, response); } private void handleRequest(HttpServletRequest request, HttpServletResponse response) throws IOException { // Unpack the request TelephonyRequest ourRequest = new TelephonyRequest(request); String token = ourRequest.getInstanceInfo().getToken(); // Get the result of the get_number action GetNumberResult result = (GetNumberResult)ourRequest.getInstanceInfo().getActionResult(); String enteredNumber = result.getEnteredNumber(); // Set up the actions List<TelephonyAction> actions = new ArrayList<TelephonyAction>(); // Create the play action Play playNumber = Play.sayText(String.format( "The number you entered was <say-as interpret-as='digits'>%s</say-as>.", enteredNumber), "Paul"); actions.add(playNumber); // Respond TelephonyResponse ourResponse = new TelephonyResponse(actions, token); ourResponse.setHttpServletResponse(response); } }
-
// Java Servlet sample for the Aculab Telephony REST API. // package com.aculab.telephonyrestapi.samples; import javax.servlet.http.*; import javax.servlet.ServletException; import java.io.IOException; import java.util.ArrayList; import java.util.List; import com.aculab.telephonyrestapi.*; public class ErrorPage extends HttpServlet { private static final long serialVersionUID = -4842873371047361437L; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { handleRequest(request, response); } @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { handleRequest(request, response); } private void handleRequest(HttpServletRequest request, HttpServletResponse response) throws IOException { // Unpack the request TelephonyRequest ourRequest = new TelephonyRequest(request); ErrorResult result = ourRequest.getInstanceInfo().getErrorResult(); String token = String.format("Action: %s\nActionIndex: %d\nResult: %s", result.getAction(), result.getActionIndex(), result.getResult()); // Respond List<TelephonyAction> actions = new ArrayList<TelephonyAction>(); TelephonyResponse ourResponse = new TelephonyResponse(actions, token); ourResponse.setHttpServletResponse(response); } }
-
// Java Servlet sample for the Aculab Telephony REST API. // package com.aculab.telephonyrestapi.samples; import javax.servlet.http.*; import javax.servlet.ServletException; import java.io.IOException; import com.aculab.telephonyrestapi.*; public class FinalPage extends HttpServlet { private static final long serialVersionUID = 5940620014313056844L; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { handleRequest(request, response); } @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { handleRequest(request, response); } private void handleRequest(HttpServletRequest request, HttpServletResponse response) throws IOException { // Unpack the request TelephonyRequest ourRequest = new TelephonyRequest(request); } }
-
-
Implemented as a Flask web application:
-
@app.route('/SimpleGetNumber', methods=['GET','POST']) def handle_SimpleGetNumber(): my_request = TelephonyRequest(request) app_inst_id = my_request.get_application_instance_id() print("SimpleGetNumber: app_inst_id='{}'".format(app_inst_id)) my_number = GetNumber(WebPage(url='ReadEnteredDigits')) my_number.set_digit_count(5) my_number.set_help_digit('7') my_number.set_valid_digits('123456') play_action = Play(text_to_say=("Enter your 5 digit number using digits 1 to 6. Press 7 to listen to this message again.")) my_number.set_prompt(play_action) list_of_actions = [] list_of_actions.append(my_number) my_response = TelephonyResponse(list_of_actions, token='my get number instance id') return my_response.get_json()
-
@app.route('/ReadEnteredDigits', methods=['GET','POST']) def handle_ReadEnteredDigits(): my_request = TelephonyRequest(request) my_token = my_request.get_token() action_result = my_request.get_action_result() digits = action_result.get('result').get('entered_number') print("Digits entered: {0}".format(digits)) list_of_actions = [] list_of_actions.append(Play(text_to_say="The number you entered was <say-as interpret-as='digits'>{0}</say-as>.".format(digits))) my_response = TelephonyResponse(list_of_actions, my_token) return my_response.get_json()
-
@app.route('/ErrorPage', methods=['GET','POST']) def handle_ErrorPage(): my_request = TelephonyRequest(request) token = my_request.get_token() app_inst_id = my_request.get_application_instance_id() error_result_dict = my_request.get_error_result() action_string = error_result_dict.get('action', "?") result_string = error_result_dict.get('result', "?") print("ErrorPage: app_inst_id='{}' token='{}' action='{}' result='{}'".format(app_inst_id, token, action_string, result_string)) my_response = TelephonyResponse([Play(text_to_say='An error has occurred')]) return my_response.get_json()
-
@app.route('/FinalPage', methods=['GET','POST']) def handle_FinalPage(): # The FinalPage handler follows the guidelines on: # https://www.aculab.com/cloud/voice-and-fax-apis/rest-api/rest-api-version-2/rest-api-version-2/writing-a-rest-application # The guidelines are: # "Your final page should return an empty response, a 204 is preferable, but empty JSON is acceptable." my_request = TelephonyRequest(request) token = my_request.get_token() app_inst_id = my_request.get_application_instance_id() print("FinalPage: app_inst_id='{}' token='{}'".format(app_inst_id, token)) empty_json = '{}'.encode('utf-8') return empty_json
-
-
-
<?php header("Content-Type: application/json; charset=UTF-8"); require __DIR__ . "/../../autoload.php"; use \Aculab\TelephonyRestAPI\Response; use \Aculab\TelephonyRestAPI\Play; use \Aculab\TelephonyRestAPI\GetNumber; $response = new Response(); $response->setToken('my get number instance id'); // Create the get number action $prompt = Play::sayText("Enter your 5 digit number using digits 1 to 6. " . "Press 7 to listen to this message again." ); $getNumberAction = new GetNumber("ReadEnteredDigits.php"); $getNumberAction->setPrompt($prompt) ->setDigitCount(5) ->setHelpDigit('7') ->setValidDigits("123456"); $response->addAction($getNumberAction); print $response;
-
<?php header("Content-Type: application/json; charset=UTF-8"); require __DIR__ . "/../../autoload.php"; use \Aculab\TelephonyRestAPI\InstanceInfo; use \Aculab\TelephonyRestAPI\Response; use \Aculab\TelephonyRestAPI\Play; $info = InstanceInfo::getInstanceInfo(); $response = new Response(); $response->setToken($info->getToken()); // Get the result of the get_number action $result = $info->getActionResult(); $enteredNumber = $result->getEnteredNumber(); // Create the play action $playNumber = Play::sayText("The number you entered was <say-as interpret-as='digits'>" . $enteredNumber . "</say-as>."); $response->addAction($playNumber); print $response;
-
<?php header("Content-Type: application/json; charset=UTF-8"); require __DIR__ . "/../../autoload.php"; use Aculab\TelephonyRestAPI\Play; use Aculab\TelephonyRestAPI\Response; use Aculab\TelephonyRestAPI\InstanceInfo; $info = InstanceInfo::getInstanceInfo(); $error = $info->getErrorResult(); $action = $error->getAction(); $desc = $error->getResult(); if (!is_null($action)) { error_log("Error from action \"$action\" with result:" . PHP_EOL . "$desc" . PHP_EOL); } else { error_log("Error result:" . PHP_EOL . "$desc" . PHP_EOL); } $response = new Response(); $response->setToken('Error'); $play = new Play(); $play->addText('An error has occurred.'); $response->addAction($play); print $response;
-
<?php require __DIR__ . "/../../autoload.php"; http_response_code(204); header("Content-Type: application/json; charset=UTF-8"); use Aculab\TelephonyRestAPI\InstanceInfo; $info = InstanceInfo::getInstanceInfo(); $call = $info->getThisCallInfo(); $callid = $call->getCallId(); $duration = $call->getSecondsCallDuration(); error_log("This call id: $callid" . PHP_EOL . "This call duration: $duration" . PHP_EOL);
-