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 recordings = RecordingResource.Read( pathAccountSid: "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" ); foreach (var record in recordings) { Console.WriteLine(record.Sid); } }
static void Main(string[] args) { // Find your Account Sid and Token at twilio.com/console // DANGER! This is insecure. See http://twil.io/secure const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; const string authToken = "your_auth_token"; TwilioClient.Init(accountSid, authToken); var recording = RecordingResource.Update( status: RecordingResource.StatusEnum.Paused, pathConferenceSid: "CFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", pathSid: "Twilio.CURRENT" ); Console.WriteLine(recording.CallSid); }
static void Main(string[] args) { // Find your Account Sid and Auth Token at twilio.com/console // To set up environmental variables, see http://twil.io/secure const string accountSid = Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID"); const string authToken = Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN"); TwilioClient.Init(accountSid, authToken); const string callSid = "CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; var recordings = RecordingResource.Read(callSid: callSid); foreach (var recording in recordings) { Console.WriteLine(recording.Duration); } }
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 recordings = RecordingResource.Read( dateCreatedAfter: new DateTime(2009, 7, 6, 0, 0, 0) ); foreach (var record in recordings) { Console.WriteLine(record.Sid); } }
public void GivenAnIndexAction_WhenClientHasRecordings_ThenShowsTheRecordings() { var mockClient = new Mock <IClient>(); var recordingsFromApi = new List <RecordingResource> { RecordingResource.FromJson("{\"date_created\": \"Mon, 22 Aug 2011 20:58:45 +0000\", \"uri\": \"/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings/REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json\"}") }; mockClient.Setup(c => c.Recordings()).ReturnsAsync(recordingsFromApi); var stubPhoneNumbers = Mock.Of <IPhoneNumbers>(); var controller = new RecordingsController(mockClient.Object, stubPhoneNumbers); var result = controller.WithCallTo(c => c.Index()).ShouldReturnJson(); var recordings = (result.Data as IEnumerable <object>).ToList(); Assert.That(recordings.Count(), Is.EqualTo(1)); }
static void Main(string[] args) { // Find your Account Sid and Token at twilio.com/console // DANGER! This is insecure. See http://twil.io/secure const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; const string authToken = "your_auth_token"; TwilioClient.Init(accountSid, authToken); var recordings = RecordingResource.Read( dateCreated: new DateTime(2016, 10, 18, 0, 0, 0) ); foreach (var record in recordings) { Console.WriteLine(record.Sid); } }
static void Main(string[] args) { // Find your Account Sid and Token at twilio.com/console // DANGER! This is insecure. See http://twil.io/secure const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; const string authToken = "your_auth_token"; TwilioClient.Init(accountSid, authToken); var recordings = RecordingResource.Read( groupingSid: Promoter.ListOfOne("RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") ); foreach (var record in recordings) { Console.WriteLine(record.Sid); } }
static void Main(string[] args) { // Find your Account Sid and Token at twilio.com/console // DANGER! This is insecure. See http://twil.io/secure const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; const string authToken = "your_auth_token"; TwilioClient.Init(accountSid, authToken); var recordings = RecordingResource.Read( status: RecordingResource.StatusEnum.Deleted, limit: 20 ); foreach (var record in recordings) { Console.WriteLine(record.Sid); } }
static void Main(string[] args) { // Find your Account Sid and Auth Token at twilio.com/console // To set up environmental variables, see http://twil.io/secure const string accountSid = Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID"); const string authToken = Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN"); TwilioClient.Init(accountSid, authToken); var recordings = RecordingResource.Read( dateCreatedBefore: new DateTime(2016, 10, 15), dateCreatedAfter: new DateTime(2016, 10, 12) ); foreach (var recording in recordings) { Console.WriteLine(recording.Duration); } }
public void TestUpdateRequest() { var twilioRestClient = Substitute.For <ITwilioRestClient>(); var request = new Request( HttpMethod.Post, Twilio.Rest.Domain.Trunking, "/v1/Trunks/TKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Recording", "" ); twilioRestClient.Request(request).Throws(new ApiException("Server Error, no content")); try { RecordingResource.Update("TKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", client: twilioRestClient); Assert.Fail("Expected TwilioException to be thrown for 500"); } catch (ApiException) {} twilioRestClient.Received().Request(request); }
static void Main(string[] args) { // Find your Account SID and Auth Token at twilio.com/console const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; const string authToken = "your_auth_token"; const string roomSid = "RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; TwilioClient.Init(accountSid, authToken); var recordings = RecordingResource.Read( groupingSid: new List <string>() { roomSid }); foreach (var recording in recordings) { Console.WriteLine(recording.Sid); } }
static void Main(string[] args) { // Find your Account SID and Auth Token at twilio.com/console const string apiKeySid = "SKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; const string apiKeySecret = "your_api_key_secret"; const string roomSid = "RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; TwilioClient.Init(apiKeySid, apiKeySecret); var recordings = RecordingResource.Read( groupingSid: new List <string>() { roomSid }); foreach (var recording in recordings) { Console.WriteLine(recording.Sid); } }
public void TestReadRequest() { var twilioRestClient = Substitute.For <ITwilioRestClient>(); var request = new Request( HttpMethod.Get, Twilio.Rest.Domain.Video, "/v1/Recordings", "" ); twilioRestClient.Request(request).Throws(new ApiException("Server Error, no content")); try { RecordingResource.Read(client: twilioRestClient); Assert.Fail("Expected TwilioException to be thrown for 500"); } catch (ApiException) {} twilioRestClient.Received().Request(request); }
static void Main(string[] args) { // Find your Account SID and Auth Token at twilio.com/console // To set up environmental variables, see http://twil.io/secure const string apiKeySid = Environment.GetEnvironmentVariable("TWILIO_API_KEY_SID"); const string apiKeySecret = Environment.GetEnvironmentVariable("TWILIO_API_KEY_SECRET"); const string roomSid = "RMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; TwilioClient.Init(apiKeySid, apiKeySecret); var recordings = RecordingResource.Read( groupingSid: new List <string>() { roomSid }); foreach (var recording in recordings) { Console.WriteLine(recording.Sid); } }
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 recordingStatusCallbackEvent = new List <string> { "in-progress completed" }; var recording = RecordingResource.Create( recordingStatusCallback: new Uri("https://myapp.com/recording-events"), recordingStatusCallbackEvent: recordingStatusCallbackEvent, recordingChannels: "dual", pathCallSid: "CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" ); Console.WriteLine(recording.Sid); }
public void TestReadRequest() { var twilioRestClient = Substitute.For <ITwilioRestClient>(); var request = new Request( HttpMethod.Get, Twilio.Rest.Domain.Api, "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings.json", "" ); twilioRestClient.AccountSid.Returns("ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); twilioRestClient.Request(request).Throws(new ApiException("Server Error, no content")); try { RecordingResource.Read(client: twilioRestClient); Assert.Fail("Expected TwilioException to be thrown for 500"); } catch (ApiException) {} twilioRestClient.Received().Request(request); }
public void TestDeleteRequest() { var twilioRestClient = Substitute.For <ITwilioRestClient>(); var request = new Request( HttpMethod.Delete, Twilio.Rest.Domain.Api, "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Conferences/CFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Recordings/REXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.json", "" ); twilioRestClient.AccountSid.Returns("ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); twilioRestClient.Request(request).Throws(new ApiException("Server Error, no content")); try { RecordingResource.Delete("CFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "REXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", client: twilioRestClient); Assert.Fail("Expected TwilioException to be thrown for 500"); } catch (ApiException) {} twilioRestClient.Received().Request(request); }
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/Recordings/REXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.json", "" ); request.AddPostParam("Status", Serialize(RecordingResource.StatusEnum.InProgress)); twilioRestClient.AccountSid.Returns("ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); twilioRestClient.Request(request).Throws(new ApiException("Server Error, no content")); try { RecordingResource.Update("CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "REXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", RecordingResource.StatusEnum.InProgress, client: twilioRestClient); Assert.Fail("Expected TwilioException to be thrown for 500"); } catch (ApiException) {} twilioRestClient.Received().Request(request); }
/// <summary> /// Constructs the full recording URI of the Twilio recording resource. /// </summary> /// <param name="recording">The recording resource.</param> /// <param name="log">Trace logging instance.</param> /// <returns>The URI of the recording.</returns> public Uri GetFullRecordingUri(RecordingResource recording, ILogger log) { return(GetTwilioUri(recording.Uri)); }
/// <summary> /// Gets the full recording URI. /// </summary> /// <param name="recording">The recording resource.</param> /// <param name="log">Trace logger instance.</param> /// <returns>The full recording URI.</returns> public Uri GetFullRecordingUri(RecordingResource recording, ILogger log) { return(null); }
public async Task <string> CallMeetingAsync(string mNum) { Console.WriteLine(">\tDialing into webex meeting with access code " + mNum); TwilioClient.Init(_accountSid, _authToken); // call in number and call from number const string vancouverTollNum = "+14084189388"; const string twilioAccNum = "+15046366992"; // this is the webex call vancouver toll number var to = new PhoneNumber(vancouverTollNum); // This is the twilio number linked to our account var from = new PhoneNumber(twilioAccNum); Console.WriteLine(">\tCalling In..."); // makes the call resource to send var call = CallResource.Create(to, from, //method: Twilio.Http.HttpMethod.Get, sendDigits: FormatDigits(mNum) + "wwww#", // Records the outgoing call record: true, // default message that plays from the url url: new Uri("http://lonelycompany.ca/test.xml") ); var callSid = call.Sid; // set status to default value CallResource.StatusEnum status = CallResource.StatusEnum.Queued; // for checking what Sid was used in the loop CallResource finishedCall = null; // wait for meeting to finish while (status != CallResource.StatusEnum.Completed) { // return all the call resources for account user var calls = CallResource.ReadAsync().Result; // find element in list finishedCall = calls.First(record => record.Sid == callSid); var pendingStatus = finishedCall.Status; if (pendingStatus == CallResource.StatusEnum.Ringing) { Console.WriteLine(">\tRinging..."); status = pendingStatus; } else if (pendingStatus == CallResource.StatusEnum.InProgress && status == pendingStatus) { Console.WriteLine(">\tCalled in!"); status = pendingStatus; } // check if the record is if (pendingStatus == CallResource.StatusEnum.Completed) { Console.WriteLine(">\tCall Completed"); // if the call has been completed return the completed status status = pendingStatus; } else if (status == CallResource.StatusEnum.Canceled || status == CallResource.StatusEnum.Failed || status == CallResource.StatusEnum.NoAnswer) { Console.Error.WriteLine(">\tThe call was not completed."); break; } } //var subresourceUri = finishedCall.SubresourceUris; // retrieve 10 most recent recordings var recordings = RecordingResource.Read(limit: 10); var resultRecording = recordings.First(recording => recording.CallSid == callSid); //Console.WriteLine("The recording call sid is: " + resultRecording.CallSid); //Console.WriteLine("The recording sid is: " + resultRecording.Sid); return(resultRecording.Sid); }
/// <summary> /// This Functions goes to Twilio, make a call, Twilio save a record of this call then goes to Google Speech to text API and transcribe the call saving a txt local file /// </summary> public static void Call() { Console.WriteLine("Init Twilio API..."); ///Twilio SID and Token const string accountSid = "ACa62c3db32794048447xxxxxxxxxxxx"; const string authToken = "f420e52ee6774e0898fdxxxxxxxxxxxx"; TwilioClient.Init(accountSid, authToken); Console.WriteLine("Let's make a call, please provide me your phone number (format: +AreaNumner)"); var phoneNumber = Console.ReadLine(); var call = CallResource.Create( record: true, url: new Uri("https://corn-collie-1715.twil.io/assets/Voice.xml"), //is a best practice to upload the assets in twilio account to: new Twilio.Types.PhoneNumber(phoneNumber), from: new Twilio.Types.PhoneNumber("+000000000") //Twilio number created in you account ); RecordingResource recordings; RecordingResource.StatusEnum recordingStatus; do { recordings = RecordingResource.Read().Where(x => x.CallSid == call.Sid).FirstOrDefault(); } while (recordings == null); do { Console.WriteLine("Processing Recording...."); recordingStatus = RecordingResource.Read().Where(x => x.CallSid == call.Sid).Select(x => x.Status).FirstOrDefault(); } while (recordingStatus == RecordingResource.StatusEnum.Processing); WebClient wc = new WebClient(); wc.DownloadFile(@"https://api.twilio.com/" + recordings.Uri.Replace("json", "wav"), recordings.Sid + ".wav"); Console.WriteLine("Now we have the recording,Lets sync with Google Services, please wait... "); string audioDirectory = Path.Combine(Environment.CurrentDirectory, recordings.Sid + ".wav"); var memoryStream = new MemoryStream(); using (var file = new FileStream(audioDirectory, FileMode.Open, FileAccess.Read)) file.CopyTo(memoryStream); var speechClient = SpeechClient.Create(); var storageClient = StorageClient.Create(); //We have to upload the file to google storage before transcribe var uploadedWavFile = storageClient.UploadObject(GoogleBucketName, recordings.Sid + ".wav", "audio/wav", memoryStream); //Get the file var storageObject = storageClient.GetObject(GoogleBucketName, recordings.Sid + ".wav"); var storageUri = $@"gs://{GoogleBucketName}/{storageObject.Name}"; storageObject.Acl = storageObject.Acl ?? new List <ObjectAccessControl>(); storageClient.UpdateObject(storageObject, new UpdateObjectOptions { PredefinedAcl = PredefinedObjectAcl.PublicRead }); Console.WriteLine("We will start to transcribe your recording, this operation will take few moments..."); //Speech to Text operation var longOperation = speechClient.LongRunningRecognize(new RecognitionConfig() { //the properties below are not the required for MP3 files and that's why the opertion returns null, we can make this more //generic knowing what kind of properties we need for each file type or standarize the result just for one type. //Encoding = RecognitionConfig.Types.AudioEncoding.Linear16, //SampleRateHertz = 44100, EnableWordTimeOffsets = true, LanguageCode = "en-US" }, RecognitionAudio.FromStorageUri(storageUri)); longOperation = longOperation.PollUntilCompleted(); //TODO: fix this implementation. Sometimes there is a null being returned from longOperation.Result var response = longOperation.Result; if (response != null && response.Results != null && response.Results.Count > 0) { Console.WriteLine("Is done!, now we will create a file with the complete transcription for you..."); //var resultArray = (JsonConvert.DeserializeObject<RootObject>(response.Results.ToString())); foreach (var res in response.Results) { string transcription = res.Alternatives.Select(x => x.Transcript).FirstOrDefault(); File.AppendAllText(Path.Combine(Environment.CurrentDirectory, recordings.Sid + ".txt"), transcription); } } Console.WriteLine("File Created!, Now we will clean our directories and give you the path of the mentioned file..."); storageClient.DeleteObject(GoogleBucketName, storageObject.Name); if (File.Exists(Path.Combine(Environment.CurrentDirectory, recordings.Sid + ".wav"))) { File.Delete(Path.Combine(Environment.CurrentDirectory, recordings.Sid + ".wav")); } Console.WriteLine("You can find your txt file here: " + Path.Combine(Environment.CurrentDirectory, recordings.Sid + ".txt")); Console.ReadLine(); }
public async Task <List <RecordingResource> > Recordings() { var recordings = await RecordingResource.ReadAsync(client : _client); return(recordings.ToList()); }