public void TestPosttwimlResponse() { var twilioRestClient = Substitute.For <ITwilioRestClient>(); twilioRestClient.AccountSid.Returns("ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); twilioRestClient.Request(Arg.Any <Request>()) .Returns(new Response( System.Net.HttpStatusCode.OK, "{\"account_sid\": \"ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"annotation\": null,\"answered_by\": null,\"api_version\": \"2010-04-01\",\"caller_name\": null,\"date_created\": \"Tue, 31 Aug 2010 20:36:28 +0000\",\"date_updated\": \"Tue, 31 Aug 2010 20:36:44 +0000\",\"direction\": \"inbound\",\"duration\": \"15\",\"end_time\": \"Tue, 31 Aug 2010 20:36:44 +0000\",\"forwarded_from\": \"+141586753093\",\"from\": \"+14158675308\",\"from_formatted\": \"(415) 867-5308\",\"group_sid\": null,\"parent_call_sid\": null,\"phone_number_sid\": \"PNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"price\": \"-0.03000\",\"price_unit\": \"USD\",\"sid\": \"CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"start_time\": \"Tue, 31 Aug 2010 20:36:29 +0000\",\"status\": \"canceled\",\"subresource_uris\": {\"notifications\": \"/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Notifications.json\",\"recordings\": \"/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings.json\",\"feedback\": \"/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Feedback.json\",\"feedback_summaries\": \"/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/FeedbackSummary.json\",\"payments\": \"/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json\"},\"to\": \"+14158675309\",\"to_formatted\": \"(415) 867-5309\",\"trunk_sid\": null,\"uri\": \"/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json\",\"queue_time\": \"1000\"}" )); var response = CallResource.Update("CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", client: twilioRestClient); Assert.NotNull(response); }
static void Main(string[] args) { // Find your Account Sid and Token at twilio.com/console const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; const string authToken = "your_auth_token"; TwilioClient.Init(accountSid, authToken); var call = CallResource.Update( status: CallResource.UpdateStatusEnum.Completed, pathSid: "CAe1644a7eed5088b159577c5802d8be38" ); Console.WriteLine(call.To); }
static void Main(string[] args) { // Find your Account Sid and Token at twilio.com/console const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; const string authToken = "your_auth_token"; TwilioClient.Init(accountSid, authToken); var call = CallResource.Update( url: new Uri("https://example.com"), pathSid: "CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" ); Console.WriteLine(call.To); }
static void Main(string[] args) { // Find your Account Sid and Token at twilio.com/console const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; const string authToken = "your_auth_token"; TwilioClient.Init(accountSid, authToken); var call = CallResource.Update( method: Twilio.Http.HttpMethod.Post, url: new Uri("http://demo.twilio.com/docs/voice.xml"), pathSid: "CAe1644a7eed5088b159577c5802d8be38" ); Console.WriteLine(call.To); }
public async Task <IResponse> CallAsync(string from, string to, string msg) { var fromPhoneNumber = new PhoneNumber(from); var toPhoneNumber = new PhoneNumber(to); var body = WebUtility.UrlEncode(msg); var call = await CallResource.CreateAsync( to : toPhoneNumber, from : fromPhoneNumber, url : new Uri($"https://handler.twilio.com/twiml/EH551ae48b51b996d131ebe9a19372ad6f?body={body}"), timeout : 30); Thread.Sleep(1000 * 10); call = CallResource.Update(status: CallResource.UpdateStatusEnum.Completed, pathSid: call.Sid); return(new CallResponse(call)); }
public void TestUpdateRequest() { var twilioRestClient = Substitute.For <ITwilioRestClient>(); var request = new Request( HttpMethod.Post, Twilio.Rest.Domain.Api, "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Calls/CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.json", "" ); twilioRestClient.AccountSid.Returns("ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); twilioRestClient.Request(request).Throws(new ApiException("Server Error, no content")); try { CallResource.Update("CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", client: twilioRestClient); Assert.Fail("Expected TwilioException to be thrown for 500"); } catch (ApiException) {} twilioRestClient.Received().Request(request); }
private async System.Threading.Tasks.Task HandleIncomingBotMessagesAsync(IList <Activity> botReplies, string callSid) { var voiceResponse = new VoiceResponse(); var says = new StringBuilder(); var forwardingNumber = string.Empty; var forward = false; var error = false; var errorMessage = string.Empty; foreach (var activity in botReplies) { var languagesManager = new LanguagesManager(); var localeCulture = languagesManager.CheckAndReturnAppropriateCulture(activity.Locale); CultureInfo.CurrentCulture = new CultureInfo(localeCulture); //Using TTS to repond to the caller var ttsResponse = await System.Threading.Tasks.Task.Run(() => _textToSpeech.TransformTextToSpeechAsync(activity.Text, CultureInfo.CurrentCulture.Name)); var wavGuid = Guid.NewGuid(); var pathToAudioDirectory = _hostingEnvironment.WebRootPath + "/audio"; var pathCombined = Path.Combine(pathToAudioDirectory, $"{ wavGuid }.wav"); var formatConverter = new FormatConvertor(); await formatConverter.TurnAudioStreamToFile(ttsResponse, pathCombined); voiceResponse.Play(new Uri($"{_directlineConfig.Host}audio/{wavGuid}.wav")); if (activity.Entities != null) { foreach (var entity in activity.Entities) { forward = entity.Properties.TryGetValue("forward", out var numberJToken); forwardingNumber = forward ? numberJToken.ToString() : string.Empty; error = entity.Properties.TryGetValue("error", out var errorMessageJToken); if (error) { break; } } } } if (error) { voiceResponse.Hangup(); } else if (forward) { voiceResponse.Dial(number: forwardingNumber); } else { voiceResponse.Gather( input: new List <Gather.InputEnum> { Gather.InputEnum.Speech }, language: CultureInfo.CurrentCulture.Name, action: new Uri($"{_directlineConfig.Host}api/voice/send"), method: HttpMethod.Get, speechTimeout: "auto", hints: _hints ); } var xmlFileName = Guid.NewGuid(); var pathToXMLDirectory = _hostingEnvironment.WebRootPath + "/xml"; System.IO.File.WriteAllText($"{pathToXMLDirectory}/{xmlFileName}.xml", voiceResponse.ToString()); CallResource.Update( method: HttpMethod.Get, url: new Uri($"{_directlineConfig.Host}xml/{xmlFileName}.xml"), pathSid: callSid ); }