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.
Use 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" }
-
{ "actions" : [ { "play" : { "play_list" : [ { "text_to_say" : "The number you entered was <say-as interpret-as='characters'>12345</say-as>." } ] } } ] }
-
{ [ ], "token" : "Error for Action: xxxx ActionIndex: xxxx Result: xxxx" }
-
{ }
-
-
Implemented as ASP.Net Web Forms:
-
using System; using System.Collections.Generic; using 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); if (!ourRequest.IsValid) { return; } // 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(prompt); getNumberAction.DigitCount = 5; getNumberAction.HelpDigit = '7'; getNumberAction.ValidDigits = "123456"; getNumberAction.NextPage = new WebPageRequest("ReadEnteredDigits.aspx"); actions.Add(getNumberAction); // Respond TelephonyResponse ourResponse = new TelephonyResponse(actions, "my get number instance id"); ourResponse.ToHttpResponse(Response); } }
-
using System; using System.Collections.Generic; using 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); if (!ourRequest.IsValid) { return; } String token = ourRequest.InstanceInfo.Token; // Get the result of the get_number action GetNumberResult result = ourRequest.InstanceInfo.GetNumberResult; 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='characters'>{0}</say-as>.", enteredNumber)); actions.Add(playNumber); // Respond TelephonyResponse ourResponse = new TelephonyResponse(actions, token); ourResponse.ToHttpResponse(Response); } }
-
using System; using System.Collections.Generic; using 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); if (!ourRequest.IsValid) { return; } 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 System.Collections.Generic; using 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); if (!ourRequest.IsValid) { return; } } }
-
-
Implemented as ASP.Net Web Forms:
-
Imports System Imports System.Collections.Generic Imports 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) If Not ourRequest.IsValid Then Return End If ' 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(prompt) getNumberAction.DigitCount = 5 getNumberAction.HelpDigit = "7" getNumberAction.ValidDigits = "123456" getNumberAction.NextPage = New WebPageRequest("ReadEnteredDigits.aspx") actions.Add(getNumberAction) ' Respond Dim ourResponse As TelephonyResponse = New TelephonyResponse(actions, "my get number instance id") ourResponse.ToHttpResponse(Response) End Sub End Class
-
Imports System Imports System.Collections.Generic Imports 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) If Not ourRequest.IsValid Then Return End If 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
{0} .", enteredNumber)) actions.Add(playNumber) ' Respond Dim ourResponse As TelephonyResponse = New TelephonyResponse(actions, token) ourResponse.ToHttpResponse(Response) End Sub End Class -
Imports System Imports System.Collections.Generic Imports 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) If Not ourRequest.IsValid Then Return End If 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
-
Imports System Imports System.Collections.Generic Imports 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) If Not ourRequest.IsValid Then Return End If End Sub End Class
-
-
Implemented as Java Servlets:
-
package com.aculab.telephonyrestapi.samples; import javax.servlet.http.*; import javax.servlet.ServletException; import java.io.IOException; import com.aculab.telephonyrestapi.*; public class SimpleGetNumber extends HttpServlet { @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { handleRequest(request, response); } @Override public void doGet(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); if (!ourRequest.isValid()) { return; } // 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."); GetNumber getNumberAction = new GetNumber(prompt); getNumberAction.setDigitCount(5); getNumberAction.setHelpDigit('7'); getNumberAction.setValidDigits("123456"); getNumberAction.setNextPage(new WebPageRequest("ReadEnteredDigits")); 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 com.aculab.telephonyrestapi.*; public class ReadEnteredDigits extends HttpServlet { @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { handleRequest(request, response); } @Override public void doGet(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); if (!ourRequest.isValid()) { return; } 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='characters'>%s</say-as>.", enteredNumber)); actions.add(playNumber); // Respond TelephonyResponse ourResponse = new TelephonyResponse(actions, token); 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 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); if (!ourRequest.isValid()) { return; } 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); } }
-
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); if (!ourRequest.isValid()) { return; } } }
-
-
Implemented using a wrapper for Python's wsgiref.simple_server.
For the purposes of this sample, the first page is first_page, the final page is final_page and the error page is error_page.
-
The application base class.
from aculab.telephony_rest_api import Play class ApplicationBase: def __init__(self, exit=None): self.exit = exit or [self.exit] def exit(self): pass def error_page(self, my_actions, query_info): try: error_result = query_info.ErrorResult action = error_result.get('action', 'none') print("\nError {0} : {1}\n".format(action, error_result['result'])) my_actions.add(Play(text_to_say='I encountered an error.')) except Exception as exc: print("Error page exception: {0}".format(exc)) return True def final_page(self, my_actions, query_info): try: tcall = query_info.ThisCall if tcall: print("This call ID : {0}".format(tcall.get('call_id'))) print("This call duration : {0}".format(tcall.get('seconds_call_duration'))) self.exit[0]() except Exception as exc: print("Final page exception: {0}".format(exc)) return True def unknown_page(self, my_actions, query_info): try: my_actions.add(Play(text_to_say='I find myself on an unknown page.')) except Exception as exc: print("Unknown page exception: {0}".format(exc)) return True
-
The application code.
import sys, os sys.path.append(os.path.abspath('../..')) # import the wrappers for the REST API, these are used to create and send tasks from aculab.telephony_rest_api import * from aculab.simple_server import * from aculab.base_application import ApplicationBase class Application(ApplicationBase): def __init__(self): ApplicationBase.__init__(self) def responder(self, query, start_response): query_info = RESTQuery(query) page = query_info.Page my_actions = Actions(token='get number sample') # on your inbound service, set the first page entry to point to this page # e.g., http://<ip address>:<port>/first_page if 'first_page' == page: # configure tasks my_number = GetNumber() my_number.set_digit_count(5) my_number.set_help_digit('7') my_number.set_valid_digits('123456') play_action = Play(text_to_say=('Please enter your five digit number, ' 'using the digits one to six. ' 'Press 7 to listen to this message again.'), tts_voice='English US Male Polly Joey') my_number.on_prompt_play(play_action) my_number.set_next_page(next_page=WebPage(url='read_entered_digits')) my_actions.add(my_number) elif 'read_entered_digits' == page: action_result = query_info.ActionResult digits = action_result['result']['entered_number'] print("Digits entered: {0}".format(digits)) my_actions.add(Play(text_to_say="You entered, <say-as interpret-as='characters'>{0}</say-as>".format(digits))) elif 'final_page' == page: if self.final_page(my_actions, query_info) is False: return None elif 'error_page' == page: if self.error_page(my_actions, query_info) is False: return None else: if self.unknown_page(my_actions, query_info) is False: return None response_body = my_actions.get_json() response_headers = [('Content-Type', 'application/json; charset=utf-8'), ('Content-Length', str(len(response_body)))] start_response('200 OK', response_headers) return [response_body] if __name__ == "__main__": application = Application() # Set the host and port you want to use in the rest_simple_server.py file. # To use SSL also set the key and certificate file. ss = SimpleServer(application, simple_server_host, simple_server_port, simple_server_keyfile, simple_server_certfile) ss.start() print("Hit ctl-break to quit.")
-
-
-
declare(encoding='UTF-8'); spl_autoload_register(); header("Content-Type: application/json; charset=UTF-8"); use \Aculab\TelephonyRestAPI\Actions; use \Aculab\TelephonyRestAPI\Play; use \Aculab\TelephonyRestAPI\GetNumber; $response = new Actions(); $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($prompt); $getNumberAction->setDigitCount(5); $getNumberAction->setHelpDigit('7'); $getNumberAction->setValidDigits("123456"); $getNumberAction->setNextPage("ReadEnteredDigits.php"); $response->add($getNumberAction); print $response;
-
declare(encoding='UTF-8'); spl_autoload_register(); header("Content-Type: application/json; charset=UTF-8"); use \Aculab\TelephonyRestAPI\InstanceInfo; use \Aculab\TelephonyRestAPI\Actions; use \Aculab\TelephonyRestAPI\Play; $info = InstanceInfo::getInstanceInfo(); $response = new Actions(); $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='characters'>" . $enteredNumber . "</say-as>"); $response->add($playNumber); print $response;
-
declare(encoding='UTF-8'); spl_autoload_register(); header("Content-Type: application/json; charset=UTF-8"); $info = \Aculab\TelephonyRestAPI\InstanceInfo::getInstanceInfo(); $error = $info->getErrorResult(); $action = $error->getAction(); $desc = $error->getResult(); if (!is_null($action)) { error_log("Error from action \"$action\" with result:\n$desc\n"); } else { error_log("Error result:\n$desc\n"); } $response = new \Aculab\TelephonyRestAPI\Actions(); $response->setToken('Error'); $play = new \Aculab\TelephonyRestAPI\Play(); $play->addText('An error has occurred.'); $response->add($play); print $response;
-
declare(encoding='UTF-8'); spl_autoload_register(); header("Content-Type: application/json; charset=UTF-8"); $info = \Aculab\TelephonyRestAPI\InstanceInfo::getInstanceInfo(); $call = $info->getThisCallInfo(); $callid = $call->getCallId(); $duration = $call->getSecondsCallDuration(); error_log("This all id: $callid\nThis call duration: $duration\n"); print '';
-