Beispiel #1
0
        public FlowrouteClient(string accessKey, string _secretKey)
        {
            _accessKey      = accessKey;
            this._secretKey = _secretKey;

            Messaging    = new MessagingClient(accessKey, _secretKey);
            PhoneNumbers = new PhoneNumbersClient(accessKey, _secretKey);
        }
        /// <summary>
        /// Creates a <see cref="PhoneNumbersClient" /> with the token credential
        /// and instruments it to make use of the Azure Core Test Framework functionalities.
        /// </summary>
        /// <returns>The instrumented <see cref="PhoneNumbersClient" />.</returns>
        protected PhoneNumbersClient CreateClientWithTokenCredential(bool isInstrumented = true)
        {
            var client = new PhoneNumbersClient(
                TestEnvironment.LiveTestStaticEndpoint,
                (Mode == RecordedTestMode.Playback) ? new MockCredential() : new DefaultAzureCredential(),
                CreatePhoneNumbersClientOptionsWithCorrelationVectorLogs());

            return(isInstrumented ? InstrumentClient(client) : client);
        }
        /// <summary>
        /// Creates a <see cref="PhoneNumbersClient" /> with the azure key credential
        /// and instruments it to make use of the Azure Core Test Framework functionalities.
        /// </summary>
        /// <returns>The instrumented <see cref="PhoneNumbersClient" />.</returns>
        protected PhoneNumbersClient CreateClientWithAzureKeyCredential(bool isInstrumented = true)
        {
            var client = new PhoneNumbersClient(
                TestEnvironment.LiveTestStaticEndpoint,
                new AzureKeyCredential(TestEnvironment.LiveTestStaticAccessKey),
                CreatePhoneNumbersClientOptionsWithCorrelationVectorLogs());

            return(isInstrumented ? InstrumentClient(client) : client);
        }
        /// <summary>
        /// Creates a <see cref="PhoneNumbersClient" /> with the azure key credential
        /// and instruments it to make use of the Azure Core Test Framework functionalities.
        /// </summary>
        /// <returns>The instrumented <see cref="PhoneNumbersClient" />.</returns>
        protected PhoneNumbersClient CreateClientWithAzureKeyCredential(bool isInstrumented = true)
        {
            var client = new PhoneNumbersClient(
                TestEnvironment.LiveTestEndpoint,
                new AzureKeyCredential(TestEnvironment.LiveTestAccessKey),
                InstrumentClientOptions(new PhoneNumbersClientOptions()));

            return(isInstrumented ? InstrumentClient(client) : client);
        }
        /// <summary>
        /// Creates a <see cref="PhoneNumbersClient" /> with the token credential
        /// and instruments it to make use of the Azure Core Test Framework functionalities.
        /// </summary>
        /// <returns>The instrumented <see cref="PhoneNumbersClient" />.</returns>
        protected PhoneNumbersClient CreateClientWithTokenCredential(TokenCredential token, bool isInstrumented = true)
        {
            var client = new PhoneNumbersClient(
                TestEnvironment.Endpoint,
                token,
                InstrumentClientOptions(new PhoneNumbersClientOptions()));

            return(isInstrumented ? InstrumentClient(client) : client);
        }
        /// <summary>
        /// Creates a <see cref="PhoneNumbersClient" /> with the connectionstring via environment
        /// variables and instruments it to make use of the Azure Core Test Framework functionalities.
        /// </summary>
        /// <returns>The instrumented <see cref="PhoneNumbersClient" />.</returns>
        protected PhoneNumbersClient CreateClientWithConnectionString(bool isInstrumented = true)
        {
            var client = new PhoneNumbersClient(
                TestEnvironment.LiveTestStaticConnectionString,
                CreatePhoneNumbersClientOptionsWithCorrelationVectorLogs());

            // We always create the instrumented client to suppress the instrumentation check
            var instrumentedClient = InstrumentClient(client);

            return(isInstrumented ? instrumentedClient : client);
        }
        /// <summary>
        /// Creates a <see cref="PhoneNumbersClient" /> with the connectionstring via environment
        /// variables and instruments it to make use of the Azure Core Test Framework functionalities.
        /// </summary>
        /// <returns>The instrumented <see cref="PhoneNumbersClient" />.</returns>
        protected PhoneNumbersClient CreateClient(bool isInstrumented = true)
        {
            var client = new PhoneNumbersClient(
                TestEnvironment.ConnectionString,
                InstrumentClientOptions(new PhoneNumbersClientOptions()));

            // We always create the instrumented client to suppress the instrumentation check
            var instrumentedClient = InstrumentClient(client);

            return(isInstrumented ? instrumentedClient : client);
        }
Beispiel #8
0
        /// <summary>Snippet for SearchPhoneNumbersAsync</summary>
        public async Task SearchPhoneNumbersRequestObjectAsync()
        {
            // Snippet: SearchPhoneNumbersAsync(SearchPhoneNumbersRequest, CallSettings)
            // Create client
            PhoneNumbersClient phoneNumbersClient = await PhoneNumbersClient.CreateAsync();

            // Initialize request argument(s)
            SearchPhoneNumbersRequest request = new SearchPhoneNumbersRequest
            {
                NumberType    = PhoneNumber.Types.PhoneNumberType.Unspecified,
                CountryCode   = "",
                Prefix        = "",
                SupportsVoice = false,
                SupportsSms   = false,
                SupportsMms   = false,
            };
            // Make the request
            PagedAsyncEnumerable <SearchPhoneNumbersResponse, PhoneNumber> response = phoneNumbersClient.SearchPhoneNumbersAsync(request);

            // Iterate over all response items, lazily performing RPCs as required
            await response.ForEachAsync((PhoneNumber item) =>
            {
                // Do something with each item
                Console.WriteLine(item);
            });

            // Or iterate over pages (of server-defined size), performing one RPC per page
            await response.AsRawResponses().ForEachAsync((SearchPhoneNumbersResponse page) =>
            {
                // Do something with each page of items
                Console.WriteLine("A page of results:");
                foreach (PhoneNumber item in page)
                {
                    // Do something with each item
                    Console.WriteLine(item);
                }
            });

            // Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required
            int pageSize = 10;
            Page <PhoneNumber> singlePage = await response.ReadPageAsync(pageSize);

            // Do something with the page of items
            Console.WriteLine($"A page of {pageSize} results (unless it's the final page):");
            foreach (PhoneNumber item in singlePage)
            {
                // Do something with each item
                Console.WriteLine(item);
            }
            // Store the pageToken, for when the next page is required.
            string nextPageToken = singlePage.NextPageToken;
            // End snippet
        }
Beispiel #9
0
        static async Task Main(string[] args)
        {
            // Get a connection string to our Azure Communication resource.
            var connectionString = "<connection_string>";
            var client           = new PhoneNumbersClient(connectionString);

            // Search phone numbers
            var capabilities  = new PhoneNumberCapabilities(calling: PhoneNumberCapabilityType.None, sms: PhoneNumberCapabilityType.Outbound);
            var searchOptions = new PhoneNumberSearchOptions {
                AreaCode = "833", Quantity = 1
            };

            var searchOperation = await client.StartSearchAvailablePhoneNumbersAsync("US", PhoneNumberType.TollFree, PhoneNumberAssignmentType.Application, capabilities, searchOptions);

            await searchOperation.WaitForCompletionAsync();

            var phoneNumber = searchOperation.Value.PhoneNumbers.First();

            // Purchase searched phone numbers
            var purchaseOperation = await client.StartPurchasePhoneNumbersAsync(searchOperation.Value.SearchId);

            await purchaseOperation.WaitForCompletionResponseAsync();

            // Get purchased phone number(s)
            var getPhoneNumberResponse = await client.GetPurchasedPhoneNumberAsync(phoneNumber);

            Console.WriteLine($"Phone number: {getPhoneNumberResponse.Value.PhoneNumber}, country code: {getPhoneNumberResponse.Value.CountryCode}");

            var purchasedPhoneNumbers = client.GetPurchasedPhoneNumbersAsync();

            await foreach (var purchasedPhoneNumber in purchasedPhoneNumbers)
            {
                Console.WriteLine($"Phone number: {purchasedPhoneNumber.PhoneNumber}, country code: {purchasedPhoneNumber.CountryCode}");
            }

            // Update capabilities
            var updateCapabilitiesOperation = await client.StartUpdateCapabilitiesAsync(phoneNumber, calling : PhoneNumberCapabilityType.Outbound, sms : PhoneNumberCapabilityType.InboundOutbound);

            await updateCapabilitiesOperation.WaitForCompletionAsync();

            // Release phone number
            var releaseOperation = await client.StartReleasePhoneNumberAsync(phoneNumber);

            await releaseOperation.WaitForCompletionResponseAsync();
        }
Beispiel #10
0
        public void PurchaseAndRelease()
        {
            if (!IncludePhoneNumberLiveTests)
            {
                Assert.Ignore("Include phone number live tests flag is off.");
            }

            var connectionString = TestEnvironment.LiveTestConnectionString;

            #region Snippet:CreatePhoneNumbersClient
            // Get a connection string to our Azure Communication resource.
            //@@var connectionString = "<connection_string>";
            var client = new PhoneNumbersClient(connectionString);
            #endregion Snippet:CreatePhoneNumbersClient

            #region Snippet:CreatePhoneNumbersClientWithTokenCredential
            // Get an endpoint to our Azure Communication resource.
            //@@var endpoint = new Uri("<endpoint_url>");
            //@@TokenCredential tokenCredential = new DefaultAzureCredential();
            //@@client = new PhoneNumbersClient(endpoint, tokenCredential);
            #endregion Snippet:CreatePhoneNumbersClientWithTokenCredential

            client = CreateClient(false);

            const string countryCode = "US";

            #region Snippet:SearchPhoneNumbers

            var capabilities = new PhoneNumberCapabilities(calling: PhoneNumberCapabilityType.None, sms: PhoneNumberCapabilityType.Outbound);

            var searchOperation = client.StartSearchAvailablePhoneNumbers(countryCode, PhoneNumberType.TollFree, PhoneNumberAssignmentType.Application, capabilities);

            while (!searchOperation.HasCompleted)
            {
                //@@ Thread.Sleep(2000);
                /*@@*/ SleepIfNotInPlaybackMode();
                searchOperation.UpdateStatus();
            }

            #endregion Snippet:SearchPhoneNumbers

            #region Snippet:StartPurchaseSearch
            var purchaseOperation = client.StartPurchasePhoneNumbers(searchOperation.Value.SearchId);

            while (!purchaseOperation.HasCompleted)
            {
                //@@ Thread.Sleep(2000);
                /*@@*/ SleepIfNotInPlaybackMode();
                purchaseOperation.UpdateStatus();
            }
            #endregion Snippet:StartPurchaseSearch

            #region Snippet:GetPurchasedPhoneNumbers
            var purchasedPhoneNumbers = client.GetPurchasedPhoneNumbers();

            foreach (var phoneNumber in purchasedPhoneNumbers)
            {
                Console.WriteLine($"Phone number: {phoneNumber.PhoneNumber}, monthly cost: {phoneNumber.Cost}");
            }
            #endregion Snippet:GetPurchasedPhoneNumbers

            var purchasedPhoneNumber = searchOperation.Value.PhoneNumbers.Single();

            #region Snippet:UpdateCapabilitiesNumbers
            var updateCapabilitiesOperation = client.StartUpdateCapabilities(purchasedPhoneNumber, calling: PhoneNumberCapabilityType.Outbound, sms: PhoneNumberCapabilityType.InboundOutbound);

            while (!updateCapabilitiesOperation.HasCompleted)
            {
                //@@ Thread.Sleep(2000);
                /*@@*/ SleepIfNotInPlaybackMode();
                updateCapabilitiesOperation.UpdateStatus();
            }

            #endregion Snippet:UpdateCapabilitiesNumbers

            Assert.AreEqual(PhoneNumberCapabilityType.Outbound, updateCapabilitiesOperation.Value.Capabilities.Calling);
            Assert.AreEqual(PhoneNumberCapabilityType.InboundOutbound, updateCapabilitiesOperation.Value.Capabilities.Sms);

            purchasedPhoneNumbers = client.GetPurchasedPhoneNumbers();
            var beforeReleaseNumberCount = purchasedPhoneNumbers.Count();

            #region Snippet:ReleasePhoneNumbers
            //@@var purchasedPhoneNumber = "<purchased_phone_number>";
            var releaseOperation = client.StartReleasePhoneNumber(purchasedPhoneNumber);

            while (!releaseOperation.HasCompleted)
            {
                //@@ Thread.Sleep(2000);
                /*@@*/ SleepIfNotInPlaybackMode();
                releaseOperation.UpdateStatus();
            }
            #endregion Snippet:ReleasePhoneNumbers

            purchasedPhoneNumbers = client.GetPurchasedPhoneNumbers();
            var afterReleaseNumberCount = purchasedPhoneNumbers.Count();
            Assert.AreEqual(1, beforeReleaseNumberCount - afterReleaseNumberCount);
        }