Ejemplo n.º 1
0
 public DonorService(BuddyDbContext db, VonageClient client, IConfiguration config, IHubContext <DonorHub> hub)
 {
     _db     = db;
     _client = client;
     _config = config;
     _hub    = hub;
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 10
0
        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}");
        }
Ejemplo n.º 11
0
        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}");
        }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
        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);
        }
Ejemplo n.º 19
0
        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);
            }
        }
Ejemplo n.º 21
0
        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);
        }
Ejemplo n.º 22
0
        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());
        }
Ejemplo n.º 23
0
        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]);
        }
Ejemplo n.º 25
0
        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);
        }