public void Execute() { var VONAGE_APPLICATION_ID = Environment.GetEnvironmentVariable("VONAGE_APPLICATION_ID") ?? "VONAGE_APPLICATION_ID"; var VONAGE_PRIVATE_KEY_PATH = Environment.GetEnvironmentVariable("VONAGE_PRIVATE_KEY_PATH") ?? "VONAGE_PRIVATE_KEY_PATH"; var credentials = Credentials.FromAppIdAndPrivateKeyPath(VONAGE_APPLICATION_ID, VONAGE_PRIVATE_KEY_PATH); var client = new VonageClient(credentials); var DATE_END = DateTime.UtcNow; var DATE_START = DATE_END.AddDays(-1); var request = new CallSearchFilter() { DateStart = DATE_START, DateEnd = DATE_END }; var response = client.VoiceClient.GetCalls(request); Console.WriteLine(response.Count); }
public void TestListCalls(bool passCreds, bool kitchenSink) { var expectedResponse = @"{ ""count"": 100, ""page_size"": 10, ""record_index"": 0, ""_links"": { ""self"": { ""href"": ""/calls?page_size=10&record_index=20&order=asc"" } }, ""_embedded"": { ""calls"": [ { ""_links"": { ""self"": { ""href"": ""/calls/63f61863-4a51-4f6b-86e1-46edebcf9356"" } }, ""uuid"": ""63f61863-4a51-4f6b-86e1-46edebcf9356"", ""conversation_uuid"": ""CON-f972836a-550f-45fa-956c-12a2ab5b7d22"", ""to"": { ""type"": ""phone"", ""number"": ""447700900000"" } , ""from"": { ""type"": ""phone"", ""number"": ""447700900001"" } , ""status"": ""started"", ""direction"": ""outbound"", ""rate"": ""0.39"", ""price"": ""23.40"", ""duration"": ""60"", ""start_time"": ""2020-01-01 12:00:00"", ""end_time"": ""2020-01-01 12:00:00"", ""network"": ""65512"" } ] } }"; CallSearchFilter filter; string expectedUri; if (kitchenSink) { expectedUri = $"{ApiUrl}/v1/calls?status=started&date_start={HttpUtility.UrlEncode("2016-11-14T07:45:14Z").ToUpper()}&date_end={HttpUtility.UrlEncode("2016-11-14T07:45:14Z").ToUpper()}&page_size=10&record_index=0&order=asc&conversation_uuid=CON-f972836a-550f-45fa-956c-12a2ab5b7d22&"; filter = new CallSearchFilter { ConversationUuid = "CON-f972836a-550f-45fa-956c-12a2ab5b7d22", DateStart = DateTime.Parse("2016-11-14T07:45:14"), DateEnd = DateTime.Parse("2016-11-14T07:45:14"), PageSize = 10, RecordIndex = 0, Order = "asc", Status = "started" }; } else { expectedUri = $"{ApiUrl}/v1/calls"; filter = new CallSearchFilter(); } Setup(expectedUri, expectedResponse); var creds = Request.Credentials.FromAppIdAndPrivateKey(AppId, PrivateKey); var client = new NexmoClient(creds); Common.PageResponse <CallList> callList; if (passCreds) { callList = client.VoiceClient.GetCalls(filter, creds); } else { callList = client.VoiceClient.GetCalls(filter); } var callRecord = callList.Embedded.Calls[0]; Assert.True(100 == callList.Count); Assert.True(10 == callList.PageSize); Assert.True(0 == callList.PageIndex); Assert.Equal("/calls?page_size=10&record_index=20&order=asc", callList.Links.Self.Href); Assert.Equal("/calls/63f61863-4a51-4f6b-86e1-46edebcf9356", callRecord.Links.Self.Href); Assert.Equal("63f61863-4a51-4f6b-86e1-46edebcf9356", callRecord.Uuid); Assert.Equal("CON-f972836a-550f-45fa-956c-12a2ab5b7d22", callRecord.ConversationUuid); Assert.Equal("447700900000", callRecord.To.Number); Assert.Equal("phone", callRecord.To.Type); Assert.Equal("phone", callRecord.From.Type); Assert.Equal("447700900001", callRecord.From.Number); Assert.Equal("started", callRecord.Status); Assert.Equal("outbound", callRecord.Direction); Assert.Equal("0.39", callRecord.Rate); Assert.Equal("23.40", callRecord.Price); Assert.Equal("60", callRecord.Duration); Assert.Equal(DateTime.ParseExact("2020-01-01T12:00:00.000Z", "yyyy-MM-dd'T'HH:mm:ss.fff'Z'", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal), (callRecord.StartTime)); Assert.Equal(DateTime.ParseExact("2020-01-01T12:00:00.000Z", "yyyy-MM-dd'T'HH:mm:ss.fff'Z'", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal), (callRecord.EndTime)); }