protected void Page_Load(object sender, EventArgs e) { // Create a new instance of the Tropo object. Tropo tropo = new Tropo(); // Create a transcription object to use with recording. Transcription trancription = new Transcription(); trancription.Uri = "mailto:[email protected]"; trancription.EmailFormat = "omit"; // Set up grammar for recording. Choices choices = new Choices(); choices.Value = "[10 DIGITS]"; choices.Terminator = "#"; // Construct a prompt to use with the recording. Say say = new Say(); say.Value = "Please say your account number"; // Use the record() method to set up a recording. tropo.Record(3, false, true, choices, AudioFormat.Wav, 10, 60, Method.Post, null, true, say, 5, trancription, null, "http://somehost.com/record.aspx"); // Hangup when finished. tropo.Hangup(); // Render the JSON for Tropo to consume. Response.Write(tropo.RenderJSON()); }
protected void Page_Load(object sender, EventArgs e) { // Create a new instance of the Tropo object. Tropo tropo = new Tropo(); // Set the voice to use when saying a prompt. tropo.Voice = Voice.UsEnglishMale; // A prompt to give the say to the recipient. Say say = new Say("Remember you have a meeting at 2 PM"); // An ArrayList to hold the numbers to call (first call answered hears the prompt). List<String> to = new List<String>(); to.Add("3055195825"); to.Add("3054445567"); // Create an endpoint object to denote who the call is from. string from = "7777777777"; // Call the message method of the Tropo object and pass in values. tropo.Message(say, to, false, Channel.Voice, from, "reminder", Network.Pstn, true, 60); // Render the JSON for Tropo to consume. Response.Write(tropo.RenderJSON()); }
/// <summary> /// Must be used from an endpoint URL. /// This will parse the active session and send the specified messages. /// As of now, it only supports sending through the MSN Network IM /// </summary> /// <param name="reader"></param> /// <param name="messages"></param> /// <returns></returns> public static string ExecuteSession(StreamReader reader, Dictionary<string, List<string>> messages) { string sessionJSON = reader.ReadToEnd(); Tropo tropo = new Tropo(); try { Session tropoSession = new Session(sessionJSON); foreach (var kvp in messages) { string to = kvp.Key; string from = "*****@*****.**"; foreach (string msg in kvp.Value) { tropo.Message(new Say(msg), new List<string>() { to }, false, Channel.Text, from, from, Network.Msn, false, 30); } } } catch { } return tropo.RenderJSON(); }
protected void Page_Load(object sender, EventArgs e) { // Create a new instance of the Tropo object. Tropo tropo = new Tropo(); // Set the voice property. tropo.Voice = Voice.UsEnglishMale; Say say = new Say("Please record your 45 second message after the beep, press pound when complete."); tropo.Say(say); Record record = new Record() { Bargein = true, Beep = true, Say = new Say(""), Format = "audio/mp3", MaxTime = 45, Choices = new Choices("", "dtmf", "#"), Url = "../UploadRecording" }; tropo.Record(record); // Render JSON for Tropo to consume. Response.Write(tropo.RenderJSON()); }
public void testAsk() { Say say = new Say("Please enter your 5 digit zip code."); Choices choices = new Choices("[5 DIGITS]"); Tropo tropo = new Tropo(); tropo.Ask(null, null, choices, null, "foo", null, say, null); Assert.AreEqual(this.askJson, tropo.RenderJSON()); }
protected void Page_Load(object sender, EventArgs e) { using (StreamReader reader = new StreamReader(Request.InputStream)) { // Get the JSON submitted from Tropo. string sessionJSON = TropoUtilities.parseJSON(reader); // Create a new instance of the Tropo object. Tropo tropo = new Tropo(); try { // Create a new Session object and pass in the JSON submitted from Tropo. Session tropoSession = new Session(sessionJSON); // Get parameters submitted with Session API call. string sendToNumber = tropoSession.Parameters.Get("sendToNumber"); string sendFromNumber = tropoSession.Parameters.Get("sendFromNumber"); string channel = tropoSession.Parameters.Get("channel"); string network = tropoSession.Parameters.Get("network"); string msg = tropoSession.Parameters.Get("msg"); // Send an outbound message. tropo.Call(sendToNumber, sendFromNumber, network, channel, true, 60, null, null); tropo.Say(msg); // Render the JSON for Tropo to consume. Response.Write(tropo.RenderJSON()); } catch (JsonReaderException ex) { EventLog log = new EventLog(); log.Source = "TROPOWEBAPI"; log.WriteEntry("Tropo WebAPI Exception " + ex.Message, EventLogEntryType.Error); Response.StatusCode = 500; tropo.Say("An error occured in the application. Bad JSON"); } catch (Exception ex) { EventLog log = new EventLog(); log.Source = "TROPOWEBAPI"; log.WriteEntry("Tropo WebAPI Exception " + ex.Message, EventLogEntryType.Error); Response.StatusCode = 500; tropo.Say("An error occured in the application."); } finally { Response.Write(tropo.RenderJSON()); } } }
public void testAskWithEvents() { Tropo tropo = new Tropo(); string[] signals = new string[] { "endCall", "tooLong" }; Say say = new Say("This is an Ask test with events. Please enter 1, 2 or 3."); Choices choices = new Choices("1,2,3"); tropo.Ask(5, signals, false, choices, null, "test", true, say, 30); tropo.Hangup(); Assert.AreEqual(this.askJsonWithEvents, tropo.RenderJSON()); }
public void testAskFromObject() { Say say = new Say("Please enter your 5 digit zip code."); Choices choices = new Choices("[5 DIGITS]"); Ask ask = new Ask(choices, "foo", say); Tropo tropo = new Tropo(); tropo.Ask(ask); Assert.AreEqual(this.askJson, tropo.RenderJSON()); }
public static string RenderJSON(this Tropo tropo) { tropo.Language = null; tropo.Voice = null; JsonSerializerSettings settings = new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore }; return(JsonConvert.SerializeObject(tropo, Formatting.None, settings).Replace("\\", "").Replace("\"{", "{").Replace("}\"", "}")); }
static void Main(string[] args) { string token = "your-voice-token-goes-here"; string conferenceID = "my-test-conference"; // An array of numbers to call and join to the conference. string[] numbersToCall = new string[] { "13034567890", "13034567891" }; // SIP endpoint for a simple Tropo JavaScript app to play a message to the conference. See README file string conferenceTimer = "sip:[email protected]"; // the length of time to wait before playing the conference message. int timer = 60000; // A collection to hold the parameters we want to send to the Tropo Session API. IDictionary<string, string> parameters = new Dictionary<String, String>(); // Instantiate a new instance of the Tropo object. Tropo tropo = new Tropo(); // Create an XML doc to hold the response from the Tropo Session API. XmlDocument doc = new XmlDocument(); // Add the conferencce ID to the paramters collection. parameters.Add("conferenceID", conferenceID); foreach (string number in numbersToCall) { // Add the number to call to the parameters collection. parameters.Add("callToNumber", number); // Make API call. Console.WriteLine("Sending API request for: " + number); doc.Load(tropo.CreateSession(token, parameters)); Console.WriteLine("Result: " + doc.SelectSingleNode("session/success").InnerText.ToUpper()); Console.WriteLine("Token: " + doc.SelectSingleNode("session/token").InnerText); Console.WriteLine("============================="); // Remove the callToNumber key so we can reset in next loop. parameters.Remove("callToNumber"); } // Sleep for x seconds. Thread.Sleep(timer); // Send reminder message to the conference. Console.WriteLine("Sending conference time reminder."); parameters.Add("callToNumber", conferenceTimer); doc.Load(tropo.CreateSession(token, parameters)); Console.WriteLine("Result: " + doc.SelectSingleNode("session/success").InnerText.ToUpper()); Console.WriteLine("Token: " + doc.SelectSingleNode("session/token").InnerText); Console.WriteLine("============================="); Console.Read(); }
public static void RenderJSON(this Tropo tropo, HttpResponse response) { tropo.Language = null; tropo.Voice = null; JsonSerializerSettings settings = new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore }; response.AddHeader("WebAPI-Lang-Ver", "CSharp V15.9.0 SNAPSHOT"); response.Write(JsonConvert.SerializeObject(tropo, Formatting.None, settings).Replace("\\", "").Replace("\"{", "{").Replace("}\"", "}")); }
public void Page_Load(object sender, EventArgs args) { // Create a new instance of the Tropo object. Tropo tropo = new Tropo(); // Call the say method of the Tropo object and give it a prompt to say. tropo.say("Hello World!"); // Render the JSON for Tropo to consume. Response.Write(TropoJSON.render(tropo)); }
protected void Page_Load(object sender, EventArgs e) { // Create a new instance of the Tropo object. Tropo tropo = new Tropo(); // Play an error message to the caller. tropo.Say("I'm sorry, there was an error. Please try you call again later."); // End the current session. tropo.Hangup(); // Render JSON for Tropo to consume. Response.Write(tropo.RenderJSON()); }
public static Stream CreateSession(this Tropo tropo, String token) { // Format the session initiation URL. string enpoint = String.Format(CREATE_SESSION_URL, CREATE_SESSION_ACTION, token); // Set up HTTP request. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(enpoint); request.Method = "GET"; // Get the response. HttpWebResponse response = (HttpWebResponse)request.GetResponse(); return(response.GetResponseStream()); }
protected void Page_Load(object sender, EventArgs e) { using (StreamReader reader = new StreamReader(Request.InputStream)) { // Get the JSON submitted from Tropo. string resultJSON = TropoUtilities.parseJSON(reader); // Create a new instance of the Tropo object. Tropo tropo = new Tropo(); try { // Create a new Result object and pass in the JSON submitted from Tropo. Result tropoResult = new Result(resultJSON); // Parse the Actions object and get the value property. JContainer Actions = TropoUtilities.parseActions(tropoResult.Actions); // Get the input submited by the user. // This value can be used to query a database, hit a web service, etc. // In the example, we'll simply read the number back to the caller. string answer = TropoUtilities.removeQuotes(Actions["value"].ToString()); tropo.Say("You entered, " + TropoUtilities.addSpaces(answer) + ". Goodbye"); } // In the event of an error in rendering the page, play an error message to the caller. catch (JsonReaderException ex) { tropo.Say("An error occured. " + ex.Message); } catch (Exception ex) { tropo.Say("An error occured. " + ex.Message); } finally { // Render JSON for Tropo to consume. tropo.Hangup(); Response.Write(tropo.RenderJSON()); } } }
protected void Page_Load(object sender, EventArgs e) { using (StreamReader reader = new StreamReader(Request.InputStream)) { // Create a new instance of the Tropo object. Tropo tropo = new Tropo(); if (!String.IsNullOrEmpty(Request.QueryString["signal"])) { if (Request.QueryString["signal"] == "interruptConference") { tropo.Say(". Now, rejoin the conference. Press the pound key to exit without hanging up."); tropo.Conference(Request.QueryString["confid"], false, "testConference", false, true, "#"); tropo.Say("You have now left the conference."); tropo.Hangup(); } else { tropo.Say("The call is now over. Gooddbye."); tropo.Hangup(); } } else { // Get the JSON submitted from Tropo. string sessionJSON = TropoUtilities.parseJSON(reader); // Create a new Session object and pass in the JSON submitted from Tropo. Session tropoSession = new Session(sessionJSON); // Create a signal to end the conference. string[] signals = new string[] { "interruptConference", "endCall" }; // Call an outbound number and create a conference. tropo.Call(tropoSession.Parameters["callToNumber"]); tropo.Say("Welcome to the conference."); tropo.Conference(tropoSession.Parameters["conferenceID"], signals, false, "testConference", false, true, "#"); tropo.On("interruptConference", "Conference.aspx?signal=interruptConference&confid=" + tropoSession.Parameters["conferenceID"], new Say("You have left the conference.")); tropo.On("endCall", "Conference.aspx?signal=endCall", new Say("You have left the conference.")); } // Render the JSON for Tropo to consume. Response.Write(tropo.RenderJSON()); } }
public void testAskWithOptions() { Say say = new Say("Please enter your 5 digit zip code."); Choices choices = new Choices("[5 DIGITS]"); Ask ask = new Ask(); ask.Choices = choices; ask.Name = "foo"; ask.Say = say; ask.Timeout = 30; ask.Required = true; ask.MinConfidence = 30; ask.Attempts = 1; ask.Bargein = false; Tropo tropo = new Tropo(); tropo.Ask(ask); Assert.AreEqual(this.askJsonWithOptions, tropo.RenderJSON()); }
protected void Page_Load(object sender, EventArgs e) { // Create a new instance of the Tropo object Tropo tropo = new Tropo(); // Set the grammar to use when collecting input. Choices choices = new Choices("[5 DIGITS]"); // Create an event handler for when the input collection is finished. Tropo will POST Result object JSON. On on = new On(Event.Continue, "http://my-web-application-url/post", new Say("Please hold.")); // Call the ask method of the Tropo object and pass in values. tropo.Ask(3, false, choices, null, "zip", true, new Say("Please enter your 5 digit zip code"), 5); tropo.On(on); // Render the JSON for Tropo to consume. Response.Write(tropo.RenderJSON()); }
static void Main(string[] args) { // The voice and messaging tokens provisioned when your Tropo application is set up. string voiceToken = "your-voice-token-here"; string messagingToken = "your-messaging-token-here"; // A collection to hold the parameters we want to send to the Tropo Session API. IDictionary<string, string> parameters = new Dictionary<String, String>(); // Enter a phone number to send a call or SMS message to here. parameters.Add("sendToNumber", "15551112222"); // Enter a phone number to use as the caller ID. parameters.Add("sendFromNumber", "15551113333"); // Select the channel you want to use via the Channel struct. string channel = Channel.Text; parameters.Add("channel", channel); string network = Network.SMS; parameters.Add("network", network); // Message is sent as a query string parameter, make sure it is properly encoded. parameters.Add("msg", HttpUtility.UrlEncode("This is a test message from C#.")); // Instantiate a new instance of the Tropo object. Tropo tropo = new Tropo(); // Create an XML doc to hold the response from the Tropo Session API. XmlDocument doc = new XmlDocument(); // Set the token to use. string token = channel == Channel.Text ? messagingToken : voiceToken; // Load the XML document with the return value of the CreateSession() method call. doc.Load(tropo.CreateSession(token, parameters)); // Display the results in the console. Console.WriteLine("Result: " + doc.SelectSingleNode("session/success").InnerText.ToUpper()); Console.WriteLine("Token: " + doc.SelectSingleNode("session/token").InnerText); Console.Read(); }
protected void Page_Load(object sender, EventArgs e) { using (StreamReader reader = new StreamReader(Request.InputStream)) { // Get the JSON submitted from Tropo. string resultJSON = TropoUtilities.parseJSON(reader); // Create a new instance of the Tropo class. Tropo tropo = new Tropo(); try { // Create a new Result object and pass in the JSON submitted from Tropo. Result tropoResult = new Result(resultJSON); // Get Actions container and parse. JContainer Actions = TropoUtilities.parseActions(tropoResult.Actions); // A simple example showing how to access properties of the Result object. tropo.Say("The State of the current session is " + tropoResult.State); tropo.Say("The Sequence of this Result payload is " + tropoResult.Sequence); tropo.Say("The session ID for the current session is is " + TropoUtilities.addSpaces(tropoResult.SessionId)); tropo.Say("The value selected by the caller is " + TropoUtilities.removeQuotes(Actions["value"].ToString())); } catch (JsonReaderException) { tropo.Say("Sorry, an error occured. I choked on some JSON"); } catch (Exception ex) { tropo.Say("Sorry, an error occured. " + ex.Message); } finally { Response.Write(tropo.RenderJSON()); } } }
protected void Page_Load(object sender, EventArgs e) { // Create a new instance of the Tropo object. Tropo tropo = new Tropo(); // Create an array of signals - used to interupt the Ask. string[] signals = new string[] {"endCall", "tooLong"}; // A prompt to use with the Ask. Say say = new Say("This is an Ask test with events. Please enter 1, 2 or 3."); // Choices for the Ask. Choices choices = new Choices("1,2,3"); // Set up the dialog. tropo.Ask(5, signals, false, choices, null, "test", true, say, 30); tropo.Hangup(); // Render the dialog JSON for Tropo to consume. Response.Write(tropo.RenderJSON()); }
public static Stream CreateSession(this Tropo tropo, String token, IDictionary <string, string> parameters) { // Format the session initiation URL. string endpoint = String.Format(CREATE_SESSION_URL, CREATE_SESSION_ACTION, token); // Interate over parameters and append to endpoint URL. foreach (KeyValuePair <string, string> param in parameters) { endpoint += param.Key + "=" + param.Value + "&"; } // Set up HTTP request. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endpoint); request.Method = "GET"; // Get the response. HttpWebResponse response = (HttpWebResponse)request.GetResponse(); return(response.GetResponseStream()); }
protected void Page_Load(object sender, EventArgs e) { // Create a new instance of the Tropo object. Tropo tropo = new Tropo(); // Say an introductory message to the caller. tropo.Say("Welcome to the claim test application."); // Create new choices to use with Ask. Choices choices = new Choices("[5 DIGITS]"); // Create new ask with desired prompt that will be sent to user. tropo.Ask(3, false, choices, null, "claim_id", true, new Say("Please enter your 5 digits claim ID."), 5); // Create On handlers for Tropo event. tropo.On(Event.Continue, "Answer.aspx", null); // Fires when the user provides valid input. tropo.On(Event.Error, "Error.aspx", null); // Fires when an error occurs. tropo.On(Event.Incomplete, "Error.aspx", null); // Fires when the user does not enter correct input. // Render JSON for Tropo to consume. Response.Write(tropo.RenderJSON()); }
protected void Page_Load(object sender, EventArgs e) { using (StreamReader reader = new StreamReader(Request.InputStream)) { // Get the JSON submitted from Tropo. string sessionJSON = TropoUtilities.parseJSON(reader); // Create a new instance of the Tropo class. Tropo tropo = new Tropo(); try { // Create a new Session object and pass in the JSON submitted from Tropo. Session tropoSession = new Session(sessionJSON); tropo.Say("The Tropo Session ID is " + tropoSession.Id); tropo.Say("The channnel of the called party is " + tropoSession.To.Channel); tropo.Say("The channel of the calling party is " + tropoSession.From.Channel); tropo.Say("This initial text sent with the call is " + tropoSession.InitialText); tropo.Say("The From SIP header on the call is " + TropoUtilities.removeQuotes(tropoSession.Headers["From"])); } catch (JsonReaderException) { tropo.Say("Sorry, an error occured. I choked on some JSON"); } catch (Exception ex) { tropo.Say("Sorry, an error occured. " + ex.Message); } finally { Response.Write(tropo.RenderJSON()); } } }
protected void Page_Load(object sender, EventArgs e) { using (StreamReader sr = new StreamReader(Request.InputStream)) { // Get the JSON submitted from Tropo. string sessionJSON = GetJSON(sr); // Create a new Session object and pass in the JSON submitted from Tropo. Session tropoSession = new Session(sessionJSON); // Create a new instance of the Tropo object. Tropo tropo = new Tropo(); // Call an outbound number and create a conference. tropo.Call(tropoSession.Parameters["callToNumber"]); tropo.Say("Welcome to the conference."); tropo.Conference(tropoSession.Parameters["conferenceID"], false, "testConference", false, true, "#"); tropo.Say("Thanks for joining our conference. Goodbye."); tropo.Hangup(); // Render the JSON for Tropo to consume. Response.Write(tropo.RenderJSON()); } }
public void testToOnly() { List<String> numbersToCall = new List<String>(); numbersToCall.Add("3055195825"); numbersToCall.Add("3054445567"); Tropo tropo = new Tropo(); tropo.Call(numbersToCall); Assert.AreEqual(this.callJson, tropo.RenderJSON()); }
public void testRecordTranscription() { Say say = new Say("Please say your account number"); Choices choices = new Choices("[5 DIGITS]", null, "#"); Transcription transcription = new Transcription(); transcription.Uri = "http://example.com/"; transcription.Id = "foo"; transcription.EmailFormat = "encoded"; Tropo tropo = new Tropo(); tropo.Record(1, false, true, choices, AudioFormat.Wav, 5, 30, Method.Post, "foo", true, say, 5, transcription, "bar", "http://example.com/"); Assert.AreEqual(this.recordJsonWithTranscription, tropo.RenderJSON()); }
public void testNewStartRecordingObject() { StartRecording startRecording = new StartRecording(); startRecording.Format = AudioFormat.Mp3; startRecording.Method = Method.Post; startRecording.Url = "http://blah.com/recordings/1234.wav"; startRecording.Username = "******"; startRecording.Password = "******"; Tropo tropo = new Tropo(); tropo.StartRecording(startRecording); Assert.AreEqual(this.startRecordingJson, tropo.RenderJSON()); }
public void testNewStartRecording() { Tropo tropo = new Tropo(); tropo.StartRecording(AudioFormat.Mp3, Method.Post, "http://blah.com/recordings/1234.wav", "jose", "password"); Assert.AreEqual(this.startRecordingJson, tropo.RenderJSON()); }
public void testNewRecordObjectWithOptionsInDifferentOrder() { Say say = new Say("Please say your account number"); Choices choices = new Choices("[5 DIGITS]", null, "#"); Record record = new Record(); record.Say = say; record.Method = Method.Post; record.Choices = choices; record.Format = AudioFormat.Wav; record.Required = true; Tropo tropo = new Tropo(); tropo.Record(record); Assert.AreEqual(this.recordJson, tropo.RenderJSON()); }
public void testNewRecord() { Say say = new Say("Please say your account number"); Choices choices = new Choices("[5 DIGITS]", null, "#"); Tropo tropo = new Tropo(); tropo.Record(null, null, null, choices, AudioFormat.Wav, null, null, Method.Post, null, null, say, null, null, null); }
public void testAskMethodWithAllArguements() { Tropo tropo = new Tropo(); tropo.Ask(1, false, new Choices("[5 DIGITS]"), 30, "foo", true, new Say("Please enter your 5 digit zip code."), 30); Assert.AreEqual(this.askJsonWithOptions, tropo.RenderJSON()); }
static void SMSTest() { // The voice and messaging tokens provisioned when your Tropo application is set up. string voiceToken = "24cfa15afd01ab4489c7b18a0480219c850af8c4d484deb1978682945803be78c8238c963a7541d19c6745fe"; string messagingToken = "24cfab7873517444b6458ab707aed2a778989481fc39c5100008b7b3a193b0aa05d0ce9e8aa3422862ced55c"; // A collection to hold the parameters we want to send to the Tropo Session API. IDictionary<string, string> parameters = new Dictionary<String, String>(); // Enter a phone number to send a call or SMS message to here. parameters.Add("sendToNumber", "14046416658"); // Enter a phone number to use as the caller ID. parameters.Add("sendFromNumber", "17708290383"); // Select the channel you want to use via the Channel struct. string channel = Channel.Text; parameters.Add("channel", channel); string network = Network.SMS; parameters.Add("network", network); // Message is sent as a query string parameter, make sure it is properly encoded. parameters.Add("msg", System.Web.HttpUtility.UrlEncode("This is a test message from C#.")); // Instantiate a new instance of the Tropo object. Tropo tropo = new Tropo(); // Create an XML doc to hold the response from the Tropo Session API. XmlDocument doc = new XmlDocument(); // Set the token to use. string token = channel == Channel.Text ? messagingToken : voiceToken; // Load the XML document with the return value of the CreateSession() method call. doc.Load(tropo.CreateSession(token, parameters)); // Display the results in the console. Console.WriteLine("Result: " + doc.SelectSingleNode("session/success").InnerText.ToUpper()); Console.WriteLine("Token: " + doc.SelectSingleNode("session/token").InnerText); Console.Read(); }
public void testMessageUseAllOptions() { Say say = new Say("This is an announcement"); Tropo tropo = new Tropo(); tropo.Voice = Voice.BritishEnglishFemale; string from = "3055551212"; List<String> to = new List<String>(); to.Add("3055195825"); tropo.Message(say, to, false, Channel.Text, from, "foo", Network.SMS, true, 10); Assert.AreEqual(this.messageJsonAllOptions, tropo.RenderJSON()); }