public DonorService(BuddyDbContext db, VonageClient client, IConfiguration config, IHubContext <DonorHub> hub) { _db = db; _client = client; _config = config; _hub = hub; }
public void Execute() { var VONAGE_API_KEY = Environment.GetEnvironmentVariable("VONAGE_API_KEY") ?? "VONAGE_API_KEY"; var VONAGE_API_SECRET = Environment.GetEnvironmentVariable("VONAGE_API_SECRET") ?? "VONAGE_API_SECRET"; var COUNTRY_CODE = Environment.GetEnvironmentVariable("COUNTRY_CODE") ?? "COUNTRY_CODE"; var VONAGE_NUMBER = Environment.GetEnvironmentVariable("VONAGE_NUMBER") ?? "VONAGE_NUMBER"; var SMS_CALLBACK_URL = Environment.GetEnvironmentVariable("SMS_CALLBACK_URL") ?? "SMS_CALLBACK_URL"; var VONAGE_APPLICATION_ID = Environment.GetEnvironmentVariable("VONAGE_APPLICATION_ID") ?? "VONAGE_APPLICATION_ID"; var VOICE_CALLBACK_TYPE = Environment.GetEnvironmentVariable("VOICE_CALLBACK_TYPE") ?? "VOICE_CALLBACK_TYPE"; var VOICE_CALLBACK_VALUE = Environment.GetEnvironmentVariable("VOICE_CALLBACK_VALUE") ?? "VOICE_CALLBACK_VALUE"; var VOICE_STATUS_URL = Environment.GetEnvironmentVariable("VOICE_STATUS_URL") ?? "VOICE_STATUS_URL"; var credentials = Credentials.FromApiKeyAndSecret(VONAGE_API_KEY, VONAGE_API_SECRET); var client = new VonageClient(credentials); var request = new UpdateNumberRequest() { Country = COUNTRY_CODE, Msisdn = VONAGE_NUMBER, MoHttpUrl = SMS_CALLBACK_URL, AppId = VONAGE_APPLICATION_ID, VoiceCallbackType = VOICE_CALLBACK_TYPE, VoiceCallbackValue = VOICE_CALLBACK_VALUE, VoiceStatusCallback = VOICE_STATUS_URL }; var response = client.NumbersClient.UpdateANumber(request); Console.WriteLine($"Response Error Code: {response.ErrorCode} and Error Code Label: {response.ErrorCodeLabel}"); }
public void SendSmsTypicalUsage() { var expectedResponse = @"{ ""message-count"": ""1"", ""messages"": [ { ""to"": ""447700900000"", ""message-id"": ""0A0000000123ABCD1"", ""status"": ""0"", ""remaining-balance"": ""3.14159265"", ""message-price"": ""0.03330000"", ""network"": ""12345"", ""account-ref"": ""customer1234"" } ] }"; var expectedUri = $"{RestUrl}/sms/json?"; var expectedRequestContent = $"from=AcmeInc&to=447700900000&text={HttpUtility.UrlEncode("Hello World!")}&api_key={ApiKey}&api_secret={ApiSecret}&"; Setup(expectedUri, expectedResponse, expectedRequestContent); var client = new VonageClient(Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret)); var response = client.SmsClient.SendAnSms(new Messaging.SendSmsRequest { From = "AcmeInc", To = "447700900000", Text = "Hello World!" }); Assert.Equal("1", response.MessageCount); Assert.Equal("447700900000", response.Messages[0].To); Assert.Equal("0A0000000123ABCD1", response.Messages[0].MessageId); Assert.Equal("0", response.Messages[0].Status); Assert.Equal(SmsStatusCode.Success, response.Messages[0].StatusCode); Assert.Equal("3.14159265", response.Messages[0].RemainingBalance); Assert.Equal("12345", response.Messages[0].Network); Assert.Equal("customer1234", response.Messages[0].AccountRef); }
public void TestControlVerifyInvalidCredentials() { var expectedResponse = @"{ ""status"": ""4"", ""error_text"": ""invalid credentials"" }"; var expectedUri = $"{ApiUrl}/verify/control/json"; var requestContent = $"request_id=abcdef0123456789abcdef0123456789&cmd=cancel&api_key={ApiKey}&api_secret={ApiSecret}&"; Setup(expectedUri, expectedResponse, requestContent); var request = new VerifyControlRequest { Cmd = "cancel", RequestId = "abcdef0123456789abcdef0123456789" }; var creds = Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret); var client = new VonageClient(creds); try { var response = client.VerifyClient.VerifyControl(request, creds); Assert.True(false, "Automatically failing because exception wasn't thrown"); } catch (VonageVerifyResponseException ex) { Assert.Equal("4", ex.Response.Status); Assert.Equal("invalid credentials", ex.Response.ErrorText); } }
public void TestControlVerify(bool passCreds) { var expectedResponse = @"{ ""status"": ""0"", ""command"": ""cancel"" }"; var expectedUri = $"{ApiUrl}/verify/control/json"; var requestContent = $"request_id=abcdef0123456789abcdef0123456789&cmd=cancel&api_key={ApiKey}&api_secret={ApiSecret}&"; Setup(expectedUri, expectedResponse, requestContent); var request = new VerifyControlRequest { Cmd = "cancel", RequestId = "abcdef0123456789abcdef0123456789" }; var creds = Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret); var client = new VonageClient(creds); VerifyControlResponse response; if (passCreds) { response = client.VerifyClient.VerifyControl(request, creds); } else { response = client.VerifyClient.VerifyControl(request, creds); } Assert.Equal("0", response.Status); Assert.Equal("cancel", response.Command); }
public void TestFailedPurchase() { var expectedResponse = @"{ ""error-code"": ""401"", ""error-code-label"": ""authentifcation failed"" }"; var expectedUri = $"{RestUrl}/number/buy"; string expectdRequestContent = $"country=GB&msisdn=447700900000&api_key={ApiKey}&api_secret={ApiSecret}&"; Setup(expectedUri, expectedResponse, expectdRequestContent); var request = new NumberTransactionRequest { Country = "GB", Msisdn = "447700900000" }; var creds = Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret); var client = new VonageClient(creds); try { client.NumbersClient.BuyANumber(request); Assert.True(false, "Failin because exception was not thrown"); } catch (VonageNumberResponseException ex) { Assert.Equal("401", ex.Response.ErrorCode); Assert.Equal("authentifcation failed", ex.Response.ErrorCodeLabel); } }
public void Execute() { var APPLICATION_NAME = Environment.GetEnvironmentVariable("APPLICATION_NAME") ?? "APPLICATION_NAME"; var VONAGE_API_KEY = Environment.GetEnvironmentVariable("VONAGE_API_KEY") ?? "VONAGE_API_KEY"; var VONAGE_API_SECRET = Environment.GetEnvironmentVariable("VONAGE_API_SECRET") ?? "VONAGE_API_SECRET"; var credentials = Credentials.FromApiKeyAndSecret(VONAGE_API_KEY, VONAGE_API_SECRET); var client = new VonageClient(credentials); var messagesWebhooks = new Dictionary <Webhook.Type, Webhook>(); messagesWebhooks.Add( Webhook.Type.inbound_url, new Webhook { Address = "https://example.com/webhooks/inbound", Method = "POST" }); messagesWebhooks.Add( Webhook.Type.status_url, new Webhook { Address = "https://example.com/webhooks/status", Method = "POST" }); var messagesCapability = new Messages(messagesWebhooks); var request = new CreateApplicationRequest { Name = APPLICATION_NAME, Capabilities = new ApplicationCapabilities { Messages = messagesCapability } }; var response = client.ApplicationClient.CreateApplicaiton(request); Console.WriteLine(JsonConvert.SerializeObject(response)); }
public void RevokeSecret(bool passCreds) { //ARRANGE var secretId = "ad6dc56f-07b5-46e1-a527-85530e625800"; var expectedUri = $"https://api.nexmo.com/accounts/{ApiKey}/secrets/{secretId}"; var expectedResponse = @""; Setup(expectedUri, expectedResponse); //ACT var creds = Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret); var client = new VonageClient(creds); bool response; if (passCreds) { response = client.AccountClient.RevokeApiSecret(secretId, ApiKey, creds); } else { response = client.AccountClient.RevokeApiSecret(secretId, ApiKey); } //ASSERT Assert.True(response); }
public void TestFailedAsyncRequest() { //ARRANGE var expectedResponse = @"{ ""status"": 4 }"; var expectedUri = $"{ApiUrl}/ni/advanced/async/json?callback={HttpUtility.UrlEncode("https://example.com/callback")}&ip={HttpUtility.UrlEncode("123.0.0.255")}&cnam=true&number=15555551212&country=GB&api_key={ApiKey}&api_secret={ApiSecret}&"; var request = new AdvancedNumberInsightAsynchronousRequest { Cnam = true, Country = "GB", Number = "15555551212", Ip = "123.0.0.255", Callback = "https://example.com/callback" }; Setup(expectedUri, expectedResponse); //ACT var creds = Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret); var client = new VonageClient(creds); try { client.NumberInsightClient.GetNumberInsightAsync(request); //ASSERT Assert.True(false, "Auto fail because request returned without throwing exception"); } catch (NumberInsights.VonageNumberInsightResponseException ex) { //ASSERT Assert.Equal(4, ex.Response.Status); } }
public void Execute() { var VONAGE_API_KEY = Environment.GetEnvironmentVariable("VONAGE_API_KEY") ?? "VONAGE_API_KEY"; var VONAGE_API_SECRET = Environment.GetEnvironmentVariable("VONAGE_API_SECRET") ?? "VONAGE_API_SECRET"; var COUNTRY_CODE = Environment.GetEnvironmentVariable("COUNTRY_CODE") ?? "COUNTRY_CODE"; var VONAGE_NUMBER_TYPE = Environment.GetEnvironmentVariable("VONAGE_NUMBER_TYPE") ?? "VONAGE_NUMBER_TYPE"; var VONAGE_NUMBER_FEATURES = Environment.GetEnvironmentVariable("VONAGE_NUMBER_FEATURES") ?? "VONAGE_NUMBER_FEATURES"; var NUMBER_SEARCH_CRITERIA = Environment.GetEnvironmentVariable("NUMBER_SEARCH_CRITERIA") ?? "NUMBER_SEARCH_CRITERIA"; var NUMBER_SEARCH_PATTERN = (SearchPattern)(Environment.GetEnvironmentVariable("NUMBER_SEARCH_PATTERN") != null ? int.Parse(Environment.GetEnvironmentVariable("NUMBER_SEARCH_PATTERN")) : 0); var credentials = Credentials.FromApiKeyAndSecret(VONAGE_API_KEY, VONAGE_API_SECRET); var client = new VonageClient(credentials); var request = new NumberSearchRequest() { Country = COUNTRY_CODE, Type = VONAGE_NUMBER_TYPE, Features = VONAGE_NUMBER_FEATURES, Pattern = NUMBER_SEARCH_CRITERIA, SearchPattern = NUMBER_SEARCH_PATTERN }; var response = client.NumbersClient.GetAvailableNumbers(request); Console.WriteLine($"Response received first number: {response.Numbers[0].Msisdn}"); }
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 UUID = Environment.GetEnvironmentVariable("UUID") ?? "UUID"; var credentials = Credentials.FromAppIdAndPrivateKeyPath(VONAGE_APPLICATION_ID, VONAGE_PRIVATE_KEY_PATH); var client = new VonageClient(credentials); var command = new CallEditCommand() { Action = CallEditCommand.ActionType.mute }; var response = client.VoiceClient.UpdateCall(UUID, command); Console.WriteLine($"Mute Call Command succeeded: {response}"); Thread.Sleep(5000); command = new CallEditCommand() { Action = CallEditCommand.ActionType.unmute }; response = client.VoiceClient.UpdateCall(UUID, command); Console.WriteLine($"Mute Call Command succeeded: {response}"); }
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 UUID = Environment.GetEnvironmentVariable("UUID") ?? "UUID"; var credentials = Credentials.FromAppIdAndPrivateKeyPath(VONAGE_APPLICATION_ID, VONAGE_PRIVATE_KEY_PATH); var client = new VonageClient(credentials); var talkAction = new TalkAction() { Text = "This is a transfer action using an inline NCCO" }; var ncco = new Ncco(talkAction); var callEditCommand = new CallEditCommand() { Action = CallEditCommand.ActionType.transfer, Destination = new Destination() { Ncco = ncco } }; var response = client.VoiceClient.UpdateCall(UUID, callEditCommand); Console.WriteLine($"Call transfer success: {response}"); }
public void StopTalk(bool passCreds) { var uuid = "63f61863-4a51-4f6b-86e1-46edebcf9356"; var expectedUri = $"{ApiUrl}/v1/calls/{uuid}/talk"; var expectedResponse = @"{ ""message"": ""Talk stopped"", ""uuid"": ""63f61863-4a51-4f6b-86e1-46edebcf9356"" }"; Setup(expectedUri, expectedResponse, "{}"); var creds = Request.Credentials.FromAppIdAndPrivateKey(AppId, PrivateKey); var client = new VonageClient(creds); CallCommandResponse response; if (passCreds) { response = client.VoiceClient.StopStream(uuid, creds); } else { response = client.VoiceClient.StopStream(uuid); } Assert.Equal("Talk stopped", response.Message); Assert.Equal(uuid, response.Uuid); }
public void TestStartDtmf(bool passCreds) { var uuid = "63f61863-4a51-4f6b-86e1-46edebcf9356"; var expectedUri = $"{ApiUrl}/v1/calls/{uuid}/talk"; var expectedResponse = @"{ ""message"": ""DTMF sent"", ""uuid"": ""63f61863-4a51-4f6b-86e1-46edebcf9356"" }"; var expectedRequestContent = @"{""digits"":""1234""}"; var command = new DtmfCommand { Digits = "1234" }; Setup(expectedUri, expectedResponse, expectedRequestContent); var creds = Request.Credentials.FromAppIdAndPrivateKey(AppId, PrivateKey); var client = new VonageClient(creds); CallCommandResponse response; if (passCreds) { response = client.VoiceClient.StartDtmf(uuid, command, creds); } else { response = client.VoiceClient.StartDtmf(uuid, command); } Assert.Equal("DTMF sent", response.Message); Assert.Equal(uuid, response.Uuid); }
public void SendSmsBadResponse() { var expectedResponse = @"{ ""message-count"": ""1"", ""messages"": [ { ""status"": ""4"", ""error-text"":""invalid credentials"" } ] }"; var expectedUri = $"{RestUrl}/sms/json?"; var expectedRequestContent = $"from=AcmeInc&to=447700900000&text={HttpUtility.UrlEncode("Hello World!")}&api_key={ApiKey}&api_secret={ApiSecret}&"; Setup(expectedUri, expectedResponse, expectedRequestContent); var client = new VonageClient(Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret)); try { var response = client.SmsClient.SendAnSms(new Messaging.SendSmsRequest { From = "AcmeInc", To = "447700900000", Text = "Hello World!" }); Assert.True(false); } catch (Messaging.VonageSmsResponseException nex) { Assert.Equal($"SMS Request Failed with status: {nex.Response.Messages[0].Status} and error message: {nex.Response.Messages[0].ErrorText}", nex.Message); Assert.Equal(SmsStatusCode.InvalidCredentials, nex.Response.Messages[0].StatusCode); } }
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 TO_NUMBER = Environment.GetEnvironmentVariable("TO_NUMBER") ?? "TO_NUMBER"; var VONAGE_NUMBER = Environment.GetEnvironmentVariable("VONAGE_NUMBER") ?? "VONAGE_NUMBER"; var ANSWER_URL = Environment.GetEnvironmentVariable("ANSWER_URL") ?? "ANSWER_URL"; var toEndpoint = new PhoneEndpoint() { Number = TO_NUMBER }; var fromEndpoint = new PhoneEndpoint() { Number = VONAGE_NUMBER }; var creds = Credentials.FromAppIdAndPrivateKeyPath(VONAGE_APPLICATION_ID, VONAGE_PRIVATE_KEY_PATH); var client = new VonageClient(creds); var command = new CallCommand() { To = new Endpoint[] { toEndpoint }, From = fromEndpoint, AnswerUrl = new[] { ANSWER_URL } }; var response = client.VoiceClient.CreateCall(command); Console.WriteLine($"Call Created with call uuid: {response.Uuid}"); }
public void TopUp(bool passCreds) { //ARRANGE var expectedUri = $"{RestUrl}/account/top-up?trx=00X123456Y7890123Z&api_key={ApiKey}&api_secret={ApiSecret}&"; var expectedResponseContent = @"{""response"":""abc123""}"; Setup(uri: expectedUri, responseContent: expectedResponseContent); var creds = Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret); //Act var client = new VonageClient(creds); Accounts.TopUpResult response; if (passCreds) { response = client.AccountClient.TopUpAccountBalance(new Accounts.TopUpRequest { Trx = "00X123456Y7890123Z" }, creds); } else { response = client.AccountClient.TopUpAccountBalance(new Accounts.TopUpRequest { Trx = "00X123456Y7890123Z" }); } Assert.Equal("abc123", response.Response); }
public void CreateCallWithEndpointAndNcco() { var expectedUri = $"{ApiUrl}/v1/calls/"; var expectedResponse = @"{ ""uuid"": ""63f61863-4a51-4f6b-86e1-46edebcf9356"", ""status"": ""started"", ""direction"": ""outbound"", ""conversation_uuid"": ""CON-f972836a-550f-45fa-956c-12a2ab5b7d22"" }"; var expectedRequesetContent = @"{""to"":[{""number"":""14155550100"",""type"":""phone""}],""from"":{""number"":""14155550100"",""type"":""phone""},""ncco"":[{""text"":""Hello World"",""action"":""talk""}]}"; Setup(expectedUri, expectedResponse, expectedRequesetContent); var creds = Request.Credentials.FromAppIdAndPrivateKey(AppId, PrivateKey); var client = new VonageClient(creds); Task <CallResponse> response; var toEndpoint = new PhoneEndpoint() { Number = "14155550100" }; response = client.VoiceClient.CreateCallAsync( toEndpoint, "14155550100", new Voice.Nccos.Ncco(new Voice.Nccos.TalkAction { Text = "Hello World" })); Assert.Equal("63f61863-4a51-4f6b-86e1-46edebcf9356", response.GetAwaiter().GetResult().Uuid); Assert.Equal("CON-f972836a-550f-45fa-956c-12a2ab5b7d22", response.GetAwaiter().GetResult().ConversationUuid); Assert.Equal("outbound", response.GetAwaiter().GetResult().Direction); Assert.Equal("started", response.GetAwaiter().GetResult().Status); }
public void SetSettings(bool passCreds) { //ARRANGE var expectedUri = $"{RestUrl}/account/settings"; var expectedRequestContents = $"moCallBackUrl={HttpUtility.UrlEncode("https://example.com/webhooks/inbound-sms")}&drCallBackUrl={HttpUtility.UrlEncode("https://example.com/webhooks/delivery-receipt")}&api_key={ApiKey}&api_secret={ApiSecret}&"; var expectedResponseContent = @"{""mo-callback-url"": ""https://example.com/webhooks/inbound-sms"",""dr-callback-url"": ""https://example.com/webhooks/delivery-receipt"",""max-outbound-request"": 15,""max-inbound-request"": 30,""max-calls-per-second"": 4}"; Setup(uri: expectedUri, responseContent: expectedResponseContent, requestContent: expectedRequestContents); //ACT var creds = Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret); var client = new VonageClient(creds); Accounts.AccountSettingsResult result; if (passCreds) { result = client.AccountClient.ChangeAccountSettings(new Accounts.AccountSettingsRequest { MoCallBackUrl = "https://example.com/webhooks/inbound-sms", DrCallBackUrl = "https://example.com/webhooks/delivery-receipt" }, creds); } else { result = client.AccountClient.ChangeAccountSettings(new Accounts.AccountSettingsRequest { MoCallBackUrl = "https://example.com/webhooks/inbound-sms", DrCallBackUrl = "https://example.com/webhooks/delivery-receipt" }); } //ASSERT Assert.Equal("https://example.com/webhooks/delivery-receipt", result.DrCallbackurl); Assert.Equal("https://example.com/webhooks/inbound-sms", result.MoCallbackUrl); Assert.Equal(4, result.MaxCallsPerSecond); Assert.Equal(30, result.MaxInboundRequest); Assert.Equal(15, result.MaxOutboundRequest); }
public void TestFailedAdvancedRequest() { //ARRANGE var expectedResponse = @"{ ""status"": 4, ""status_message"":""invalid credentials"" }"; var expectedUri = $"{ApiUrl}/ni/advanced/json?number=15555551212&api_key={ApiKey}&api_secret={ApiSecret}&"; var request = new AdvancedNumberInsightRequest { Number = "15555551212" }; Setup(expectedUri, expectedResponse); //ACT var creds = Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret); var client = new VonageClient(creds); try { client.NumberInsightClient.GetNumberInsightAdvanced(request); //ASSERT Assert.True(false, "Auto fail because request returned without throwing exception"); } catch (NumberInsights.VonageNumberInsightResponseException ex) { //ASSERT Assert.Equal(4, ex.Response.Status); Assert.Equal("invalid credentials", ((AdvancedInsightsResponse)ex.Response).StatusMessage); } }
public void GetAccountBalance(bool passCreds) { //ARRANGE var expectedUri = $"{RestUrl}/account/get-balance?api_key={ApiKey}&api_secret={ApiSecret}&"; var expectedResponseContent = @"{""value"": 3.14159, ""autoReload"": false }"; Setup(uri: expectedUri, responseContent: expectedResponseContent); var creds = Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret); var client = new VonageClient(creds); Accounts.Balance balance; if (passCreds) { balance = client.AccountClient.GetAccountBalance(creds); } else { balance = client.AccountClient.GetAccountBalance(); } //ASSERT Assert.Equal(3.14159m, balance.Value); Assert.False(balance.AutoReload); }
public void GetNumbers(bool passCreds) { //ARRANGE var expectedUri = $"{RestUrl}/account/numbers?api_key={ApiKey}&api_secret={ApiSecret}&"; var expectedResponseContent = @"{""count"":1,""numbers"":[{""country"":""US"",""msisdn"":""17775551212"",""type"":""mobile-lvn"",""features"":[""VOICE"",""SMS""]}]}"; Setup(uri: expectedUri, responseContent: expectedResponseContent); //Act var creds = Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret); var client = new VonageClient(creds); Numbers.NumbersSearchResponse numbers; if (passCreds) { numbers = client.NumbersClient.GetOwnedNumbers(new Numbers.NumberSearchRequest(), creds); } else { numbers = client.NumbersClient.GetOwnedNumbers(new Numbers.NumberSearchRequest()); } //ASSERT Assert.Equal(1, numbers.Count); Assert.Equal("17775551212", numbers.Numbers[0].Msisdn); Assert.Equal("US", numbers.Numbers[0].Country); Assert.Equal("mobile-lvn", numbers.Numbers[0].Type); Assert.Equal("VOICE", numbers.Numbers[0].Features.First()); }
public void GetPricingAllCountries(bool passCreds) { //ARRANGE var expectedUri = $"{RestUrl}/account/get-pricing/outbound/sms?api_key={ApiKey}&api_secret={ApiSecret}&"; var expectedResponse = @"{ ""count"": ""243"", ""countries"": [ { ""countryName"": ""Canada"", ""countryDisplayName"": ""Canada"", ""currency"": ""EUR"", ""defaultPrice"": ""0.00620000"", ""dialingPrefix"": ""1"", ""networks"": [ { ""type"": ""mobile"", ""price"": ""0.00590000"", ""currency"": ""EUR"", ""mcc"": ""302"", ""mnc"": ""530"", ""networkCode"": ""302530"", ""networkName"": ""Keewaytinook Okimakanak"" } ] } ] }"; Setup(uri: expectedUri, responseContent: expectedResponse); //ACT var creds = Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret); var client = new VonageClient(creds); Pricing.PricingResult pricing; if (passCreds) { pricing = client.PricingClient.RetrievePricingAllCountries("sms", creds); } else { pricing = client.PricingClient.RetrievePricingAllCountries("sms"); } //ASSERT Assert.Equal("302530", pricing.Countries[0].Networks[0].NetworkCode); Assert.Equal("Keewaytinook Okimakanak", pricing.Countries[0].Networks[0].NetworkName); Assert.Equal("530", pricing.Countries[0].Networks[0].Mnc); Assert.Equal("302", pricing.Countries[0].Networks[0].Mcc); Assert.Equal("EUR", pricing.Countries[0].Networks[0].Currency); Assert.Equal("0.00590000", pricing.Countries[0].Networks[0].Price); Assert.Equal("mobile", pricing.Countries[0].Networks[0].Type); Assert.Equal("1", pricing.Countries[0].DialingPrefix); Assert.Equal("0.00620000", pricing.Countries[0].DefaultPrice); Assert.Equal("EUR", pricing.Countries[0].Currency); Assert.Equal("Canada", pricing.Countries[0].CountryDisplayName); Assert.Equal("Canada", pricing.Countries[0].CountryName); Assert.Equal("243", pricing.Count); }
public void TestSearchNumbers(bool passCreds, bool kitchenSink) { var expetedResponse = @"{ ""count"": 1234, ""numbers"": [ { ""country"": ""GB"", ""msisdn"": ""447700900000"", ""type"": ""mobile-lvn"", ""cost"": ""1.25"", ""features"": [ ""VOICE"", ""SMS"" ] } ] }"; var expectedUri = $"{RestUrl}/number/search"; NumberSearchRequest request; if (kitchenSink) { expectedUri += $"?country=GB&type=mobile-lvn&pattern=12345&search_pattern=1&features=SMS&size=10&index=1&api_key={ApiKey}&api_secret={ApiSecret}&"; request = new NumberSearchRequest { Country = "GB", Type = "mobile-lvn", Pattern = "12345", SearchPattern = SearchPattern.Contains, Features = "SMS", Size = 10, Index = 1 }; } else { expectedUri += $"?country=GB&api_key={ApiKey}&api_secret={ApiSecret}&"; request = new NumberSearchRequest { Country = "GB" }; } Setup(expectedUri, expetedResponse); var creds = Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret); var client = new VonageClient(creds); NumbersSearchResponse response; if (passCreds) { response = client.NumbersClient.GetAvailableNumbers(request, creds); } else { response = client.NumbersClient.GetAvailableNumbers(request); } var number = response.Numbers[0]; Assert.Equal(1234, response.Count); Assert.Equal("GB", number.Country); Assert.Equal("447700900000", number.Msisdn); Assert.Equal("mobile-lvn", number.Type); Assert.Equal("1.25", number.Cost); Assert.Equal("VOICE", number.Features[0]); Assert.Equal("SMS", number.Features[1]); }
public SmsService() { _credentials = Credentials.FromApiKeyAndSecret( Settings.ApiKeyVonage, Settings.SecretVonage ); _vonageClient = new VonageClient(_credentials); }
public void CreateCall(bool passCreds) { var expectedUri = "https://api.nexmo.com/v1/calls/"; var expectedResponse = @"{ ""uuid"": ""63f61863-4a51-4f6b-86e1-46edebcf9356"", ""status"": ""started"", ""direction"": ""outbound"", ""conversation_uuid"": ""CON-f972836a-550f-45fa-956c-12a2ab5b7d22"" }"; var expectedRequesetContent = @"{""to"":[{""number"":""14155550100"",""dtmfAnswer"":""p*123#"",""type"":""phone""}],""from"":{""number"":""14155550100"",""dtmfAnswer"":""p*123#"",""type"":""phone""},""ncco"":[{""text"":""Hello World"",""action"":""talk""}],""answer_url"":[""https://example.com/answer""],""answer_method"":""GET"",""event_url"":[""https://example.com/event""],""event_method"":""POST"",""machine_detection"":""continue"",""length_timer"":1,""ringing_timer"":1}"; Setup(expectedUri, expectedResponse, expectedRequesetContent); var request = new Voice.CallCommand { To = new[] { new Voice.Nccos.Endpoints.PhoneEndpoint { Number = "14155550100", DtmfAnswer = "p*123#" } }, From = new Voice.Nccos.Endpoints.PhoneEndpoint { Number = "14155550100", DtmfAnswer = "p*123#" }, Ncco = new Voice.Nccos.Ncco(new Voice.Nccos.TalkAction { Text = "Hello World" }), AnswerUrl = new [] { "https://example.com/answer" }, AnswerMethod = "GET", EventUrl = new[] { "https://example.com/event" }, EventMethod = "POST", MachineDetection = "continue", LengthTimer = 1, RingingTimer = 1, }; var creds = Request.Credentials.FromAppIdAndPrivateKey(AppId, PrivateKey); var client = new VonageClient(creds); CallResponse response; if (passCreds) { response = client.VoiceClient.CreateCall(request, creds); } else { response = client.VoiceClient.CreateCall(request); } Assert.Equal("63f61863-4a51-4f6b-86e1-46edebcf9356", response.Uuid); Assert.Equal("CON-f972836a-550f-45fa-956c-12a2ab5b7d22", response.ConversationUuid); Assert.Equal("outbound", response.Direction); Assert.Equal("started", response.Status); }
public void Execute() { var VONAGE_API_KEY = Environment.GetEnvironmentVariable("VONAGE_API_KEY") ?? "VONAGE_API_KEY"; var VONAGE_API_SECRET = Environment.GetEnvironmentVariable("VONAGE_API_SECRET") ?? "VONAGE_API_SECRET"; var credentials = Credentials.FromApiKeyAndSecret(VONAGE_API_KEY, VONAGE_API_SECRET); var client = new VonageClient(credentials); var response = client.AccountClient.GetAccountBalance(); Console.WriteLine($"Current Account Balance: {response.Value}"); }
public void TestUpdateNumber(bool passCreds, bool kitchenSink) { var expectedResponse = @"{ ""error-code"": ""200"", ""error-code-label"": ""success"" }"; var expectedUri = $"{RestUrl}/number/update"; string expectdRequestContent; UpdateNumberRequest request; if (kitchenSink) { expectdRequestContent = $"country=GB&msisdn=447700900000&app_id=aaaaaaaa-bbbb-cccc-dddd-0123456789abc&moHttpUrl={HttpUtility.UrlEncode("https://example.com/webhooks/inbound-sms")}&" + $"moSmppSysType=inbound&voiceCallbackType=tel&voiceCallbackValue=447700900000&voiceStatusCallback={HttpUtility.UrlEncode("https://example.com/webhooks/status")}&" + $"api_key={ApiKey}&api_secret={ApiSecret}&"; request = new UpdateNumberRequest { Country = "GB", Msisdn = "447700900000", AppId = "aaaaaaaa-bbbb-cccc-dddd-0123456789abc", MoHttpUrl = "https://example.com/webhooks/inbound-sms", MoSmppSysType = "inbound", VoiceCallbackType = "tel", VoiceCallbackValue = "447700900000", VoiceStatusCallback = "https://example.com/webhooks/status" }; } else { expectdRequestContent = $"country=GB&msisdn=447700900000&api_key={ApiKey}&api_secret={ApiSecret}&"; request = new UpdateNumberRequest { Country = "GB", Msisdn = "447700900000" }; } Setup(expectedUri, expectedResponse, expectdRequestContent); var creds = Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret); var client = new VonageClient(creds); NumberTransactionResponse response; if (passCreds) { response = client.NumbersClient.UpdateANumber(request, creds); } else { response = client.NumbersClient.UpdateANumber(request); } Assert.Equal("200", response.ErrorCode); Assert.Equal("success", response.ErrorCodeLabel); }
public void TestUpdateCall(bool passCreds, bool inlineNcco, bool testTransfer) { var uuid = "63f61863-4a51-4f6b-86e1-46edebcf9356"; var expectedUri = $"{ApiUrl}/v1/calls/{uuid}"; var expectedResponse = ""; string expectedRequestContent; Destination destination; CallEditCommand request; if (testTransfer) { if (inlineNcco) { expectedRequestContent = @"{""action"":""transfer"",""destination"":{""type"":""ncco"",""ncco"":[{""text"":""hello world"",""action"":""talk""}]}}"; destination = new Destination { Type = "ncco", Ncco = new Voice.Nccos.Ncco(new Voice.Nccos.TalkAction { Text = "hello world" }) }; } else { expectedRequestContent = @"{""action"":""transfer"",""destination"":{""type"":""ncco"",""url"":[""https://example.com/ncco.json""]}}"; destination = new Destination { Type = "ncco", Url = new[] { "https://example.com/ncco.json" } }; } request = new CallEditCommand { Destination = destination, Action = CallEditCommand.ActionType.transfer }; } else { expectedRequestContent = @"{""action"":""earmuff""}"; request = new CallEditCommand { Action = CallEditCommand.ActionType.earmuff }; } Setup(expectedUri, expectedResponse, expectedRequestContent); bool response; var creds = Request.Credentials.FromAppIdAndPrivateKey(AppId, PrivateKey); var client = new VonageClient(creds); if (passCreds) { response = client.VoiceClient.UpdateCall(uuid, request, creds); } else { response = client.VoiceClient.UpdateCall(uuid, request); } Assert.True(response); }
public void TestBasicNIRequest(bool passCreds, bool kitchenSink) { //ARRANGE var expectedUri = $"{ApiUrl}/ni/basic/json"; BasicNumberInsightRequest request; var expectedResponseContent = "{\"status\": 0,\"status_message\": \"Success\",\"request_id\": \"ca4f82b6-73aa-43fe-8c52-874fd9ffffff\",\"international_format_number\": \"15555551212\",\"national_format_number\": \"(555) 555-1212\"," + "\"country_code\": \"US\",\"country_code_iso3\": \"USA\",\"country_name\": \"United States of America\",\"country_prefix\": \"1\"}"; if (kitchenSink) { expectedUri += $"?number=15555551212&country=GB&api_key={ApiKey}&api_secret={ApiSecret}&"; request = new BasicNumberInsightRequest { Country = "GB", Number = "15555551212" }; } else { expectedUri += $"?number=15555551212&api_key={ApiKey}&api_secret={ApiSecret}&"; request = new BasicNumberInsightRequest { Number = "15555551212" }; } Setup(expectedUri, expectedResponseContent); //ACT BasicInsightResponse response; var creds = Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret); var client = new VonageClient(creds); if (passCreds) { response = client.NumberInsightClient.GetNumberInsightBasic(request, creds); } else { response = client.NumberInsightClient.GetNumberInsightBasic(request); } //ASSERT Assert.Equal(0, response.Status); Assert.Equal("Success", response.StatusMessage); Assert.Equal("ca4f82b6-73aa-43fe-8c52-874fd9ffffff", response.RequestId); Assert.Equal("15555551212", response.InternationalFormatNumber); Assert.Equal("(555) 555-1212", response.NationalFormatNumber); Assert.Equal("US", response.CountryCode); Assert.Equal("USA", response.CountryCodeIso3); Assert.Equal("United States of America", response.CountryName); Assert.Equal("1", response.CountryPrefix); }