public async Task CreateReservation(string?locale) { var client = CreateClient(); var countryCode = "US"; var pageablePhonePlanGroups = client.GetPhonePlanGroupsAsync(countryCode, locale); var phonePlanGroups = await pageablePhonePlanGroups.ToEnumerableAsync().ConfigureAwait(false); string phonePlanGroupId = phonePlanGroups.First(group => group.PhoneNumberType == PhoneNumberType.TollFree).PhonePlanGroupId; var pageablePhonePlans = client.GetPhonePlansAsync(countryCode, phonePlanGroupId, locale); var phonePlan = (await pageablePhonePlans.ToEnumerableAsync()).First(); var areaCode = phonePlan.AreaCodes.First(); var reservationOptions = new CreateReservationOptions("My reservation", "my description", new[] { phonePlan.PhonePlanId }, areaCode); reservationOptions.Quantity = 1; var reservationOperation = await client.StartReservationAsync(reservationOptions); await reservationOperation.WaitForCompletionAsync().ConfigureAwait(false); Assert.IsNotNull(reservationOperation); Assert.IsTrue(reservationOperation.HasCompleted); Assert.IsTrue(reservationOperation.HasValue); var reservation = reservationOperation.Value; Assert.IsNotNull(reservation); Assert.AreEqual(ReservationStatus.Reserved, reservation.Status); Assert.AreEqual(areaCode, reservation.AreaCode); Assert.IsNull(reservation.ErrorCode); Assert.AreEqual(1, reservation.PhoneNumbers?.Count); }
public async Task CreateReservationErrorState(string?locale) { var client = CreateClient(); var countryCode = "US"; var pageablePhonePlanGroups = client.GetPhonePlanGroupsAsync(countryCode, locale); var phonePlanGroups = await pageablePhonePlanGroups.ToEnumerableAsync().ConfigureAwait(false); string phonePlanGroupId = phonePlanGroups.First(group => group.PhoneNumberType == PhoneNumberType.TollFree).PhonePlanGroupId; var pageablePhonePlans = client.GetPhonePlansAsync(countryCode, phonePlanGroupId, locale); var phonePlan = (await pageablePhonePlans.ToEnumerableAsync()).First(); var tollFreeAreaCode = phonePlan.AreaCodes.First(); string geographicPhonePlanGroupId = phonePlanGroups.First(group => group.PhoneNumberType == PhoneNumberType.Geographic).PhonePlanGroupId; var geographicPhonePlanId = (await client.GetPhonePlansAsync(countryCode, geographicPhonePlanGroupId, locale).ToEnumerableAsync()).First().PhonePlanId; var reservationOptions = new CreateReservationOptions("My reservation", "my description", new[] { geographicPhonePlanId }, tollFreeAreaCode); reservationOptions.Quantity = 1; var reservationOperation = await client.StartReservationAsync(reservationOptions); try { await reservationOperation.WaitForCompletionAsync().ConfigureAwait(false); } catch (Exception ex) { Assert.AreEqual("Reservation has failed.", ex.Message); return; } Assert.Fail("WaitForCompletionAsync should have thrown an exception."); }
public async Task GetAllReservations() { // Arrange var client = CreateClient(); const string locale = "en-US"; const string countryCode = "US"; var pageablePhonePlanGroups = client.GetPhonePlanGroupsAsync(countryCode, locale); var phonePlanGroups = await pageablePhonePlanGroups.ToEnumerableAsync().ConfigureAwait(false); string phonePlanGroupId = phonePlanGroups.First(group => group.PhoneNumberType == PhoneNumberType.TollFree).PhonePlanGroupId; var pageablePhonePlans = client.GetPhonePlansAsync(countryCode, phonePlanGroupId, locale); var phonePlan = (await pageablePhonePlans.ToEnumerableAsync()).First(); var areaCode = phonePlan.AreaCodes.First(); var reservationOptions = new CreateReservationOptions("My reservation", "my description", new[] { phonePlan.PhonePlanId }, areaCode); reservationOptions.Quantity = 1; var reservationOperation = await client.StartReservationAsync(reservationOptions); await reservationOperation.WaitForCompletionAsync().ConfigureAwait(false); // Act var reservationsPagable = client.GetAllReservationsAsync(); var reservations = await reservationsPagable.ToEnumerableAsync(); Assert.IsNotEmpty(reservations); }
/// <summary> Starts a phone number reservation. </summary> /// <param name="body"> Defines the reservation options. </param> /// <param name="cancellationToken"> The cancellation token to use. </param> /// <returns> A <see cref="PhoneNumberReservationOperation"/>. </returns> public virtual PhoneNumberReservationOperation StartReservation(CreateReservationOptions body, CancellationToken cancellationToken = default) { using DiagnosticScope scope = ClientDiagnostics.CreateScope($"{nameof(PhoneNumberAdministrationClient)}.{nameof(StartReservation)}"); scope.Start(); try { var response = RestClient.CreateSearch(body, cancellationToken); return(new PhoneNumberReservationOperation( this, response.Value.ReservationId, response.GetRawResponse(), cancellationToken)); } catch (Exception ex) { scope.Failed(ex); throw; } }
public async Task PurchaseAndReleaseAsync() { if (!IncludePhoneNumberLiveTests) { Assert.Ignore("Include phone number live tests flag is off."); } const string locale = "en-US"; var connectionString = TestEnvironment.ConnectionString; var client = CreateClient(false); const string countryCode = "US"; #region Snippet:GetPhonePlanGroupsAsync var phonePlanGroups = client.GetPhonePlanGroupsAsync(countryCode, locale); await foreach (var phonePlanGroup in phonePlanGroups) { Console.WriteLine($"Plan group: {phonePlanGroup.LocalizedName}, type: {phonePlanGroup.PhoneNumberType}"); } #endregion Snippet:GetPhonePlanGroupsAsync var phonePlanGroupsList = await phonePlanGroups.ToEnumerableAsync(); string phonePlanGroupId = phonePlanGroupsList.First(group => group.PhoneNumberType == PhoneNumberType.TollFree).PhonePlanGroupId; #region Snippet:GetPhonePlansAsync var phonePlans = client.GetPhonePlansAsync(countryCode, phonePlanGroupId, locale); await foreach (var phonePlan in phonePlans) { Console.WriteLine($"Plan: {phonePlan.LocalizedName}, {phonePlan.LocationType}"); } #endregion Snippet:GetPhonePlansAsync var firstphonePlan = (await phonePlans.ToEnumerableAsync()).First(); var areaCode = firstphonePlan.AreaCodes.First(); var phonePlanId = firstphonePlan.PhonePlanId; #region Snippet:ReservePhoneNumbersAsync var reservationName = "My reservation"; var reservationDescription = "reservation description"; var reservationOptions = new CreateReservationOptions(reservationName, reservationDescription, new[] { phonePlanId }, areaCode); reservationOptions.Quantity = 1; var reserveOperation = await client.StartReservationAsync(reservationOptions); //@@ await reserveOperation.WaitForCompletionAsync(); /*@@*/ await WaitForCompletionAsync(reserveOperation); #endregion Snippet:ReservePhoneNumbersAsync reserveOperation = new PhoneNumberReservationOperation(client, reserveOperation.Id); #region Snippet:PersistReservePhoneNumbersOperationAsync var reservationId = reserveOperation.Id; // persist reservationId and then continue with a new operation //@@var reserveOperation = new PhoneNumberReservationOperation(client, reservationId); //@@ await reserveOperation.WaitForCompletionAsync(); /*@@*/ await WaitForCompletionAsync(reserveOperation); #endregion Snippet:PersistReservePhoneNumbersOperationAsync #region Snippet:StartPurchaseReservationAsync var purchaseOperation = await client.StartPurchaseReservationAsync(reservationId); //@@ await purchaseOperation.WaitForCompletionAsync(); /*@@*/ await WaitForCompletionAsync(purchaseOperation); #endregion Snippet:StartPurchaseReservationAsync #region Snippet:ListAcquiredPhoneNumbersAsync var acquiredPhoneNumbers = client.GetAllPhoneNumbersAsync(locale); await foreach (var phoneNumber in acquiredPhoneNumbers) { Console.WriteLine($"Phone number: {phoneNumber.PhoneNumber}, activation state: {phoneNumber.ActivationState}"); } #endregion Snippet:ListAcquiredPhoneNumbersAsync var acquiredPhoneNumber = reserveOperation.Value.PhoneNumbers.Single(); acquiredPhoneNumbers = client.GetAllPhoneNumbersAsync(locale); var beforeReleaseNumberCount = (await acquiredPhoneNumbers.ToEnumerableAsync()).Count; #region Snippet:ReleasePhoneNumbersAsync //@@var acquiredPhoneNumber = "<acquired_phone_number>"; var releaseOperation = client.StartReleasePhoneNumber(new PhoneNumberIdentifier(acquiredPhoneNumber)); //@@ await releaseOperation.WaitForCompletionAsync(); /*@@*/ await WaitForCompletionAsync(releaseOperation); #endregion Snippet:ReleasePhoneNumbersAsync acquiredPhoneNumbers = client.GetAllPhoneNumbersAsync(locale); var afterReleaseNumberCount = (await acquiredPhoneNumbers.ToEnumerableAsync()).Count; Assert.AreEqual(1, beforeReleaseNumberCount - afterReleaseNumberCount); }
public void PurchaseAndRelease() { if (!IncludePhoneNumberLiveTests) { Assert.Ignore("Include phone number live tests flag is off."); } const string locale = "en-US"; var connectionString = TestEnvironment.ConnectionString; #region Snippet:CreatePhoneNumberAdministrationClient // Get a connection string to our Azure Communication resource. //@@var connectionString = "<connection_string>"; var client = new PhoneNumberAdministrationClient(connectionString); #endregion Snippet:CreatePhoneNumberAdministrationClient client = CreateClient(false); const string countryCode = "US"; #region Snippet:GetPhonePlanGroups var phonePlanGroups = client.GetPhonePlanGroups(countryCode, locale); foreach (var phonePlanGroup in phonePlanGroups) { Console.WriteLine($"Plan group: {phonePlanGroup.LocalizedName}, type: {phonePlanGroup.PhoneNumberType}"); } #endregion Snippet:GetPhonePlanGroups var tollFreePhonePlanGroup = phonePlanGroups.First(group => group.PhoneNumberType == PhoneNumberType.TollFree); var phonePlanGroupId = tollFreePhonePlanGroup.PhonePlanGroupId; #region Snippet:GetPhonePlans var phonePlans = client.GetPhonePlans(countryCode, phonePlanGroupId, locale); foreach (var phonePlan in phonePlans) { Console.WriteLine($"Plan: {phonePlan.LocalizedName}, {phonePlan.LocationType}"); } #endregion Snippet:GetPhonePlans var tollFreePhonePlan = phonePlans.First(); var phonePlanId = tollFreePhonePlan.PhonePlanId; var areaCode = tollFreePhonePlan.AreaCodes.First(); #region Snippet:ReservePhoneNumbers var reservationName = "My reservation"; var reservationDescription = "reservation description"; var reservationOptions = new CreateReservationOptions(reservationName, reservationDescription, new[] { phonePlanId }, areaCode); reservationOptions.Quantity = 1; var reserveOperation = client.StartReservation(reservationOptions); while (!reserveOperation.HasCompleted) { //@@ Thread.Sleep(2000); /*@@*/ SleepIfNotInPlaybackMode(); reserveOperation.UpdateStatus(); } #endregion Snippet:ReservePhoneNumbers reserveOperation = new PhoneNumberReservationOperation(client, reserveOperation.Id); #region Snippet:PersistReservePhoneNumbersOperation var reservationId = reserveOperation.Id; // persist reservationId and then continue with a new operation //@@var reserveOperation = new PhoneNumberReservationOperation(client, reservationId); while (!reserveOperation.HasCompleted) { //@@ Thread.Sleep(2000); /*@@*/ SleepIfNotInPlaybackMode(); reserveOperation.UpdateStatus(); } #endregion Snippet:PersistReservePhoneNumbersOperation #region Snippet:StartPurchaseReservation var purchaseOperation = client.StartPurchaseReservation(reservationId); while (!purchaseOperation.HasCompleted) { //@@ Thread.Sleep(2000); /*@@*/ SleepIfNotInPlaybackMode(); purchaseOperation.UpdateStatus(); } #endregion Snippet:StartPurchaseReservation #region Snippet:ListAcquiredPhoneNumbers var acquiredPhoneNumbers = client.GetAllPhoneNumbers(locale); foreach (var phoneNumber in acquiredPhoneNumbers) { Console.WriteLine($"Phone number: {phoneNumber.PhoneNumber}, activation state: {phoneNumber.ActivationState}"); } #endregion Snippet:ListAcquiredPhoneNumbers var acquiredPhoneNumber = reserveOperation.Value.PhoneNumbers.Single(); acquiredPhoneNumbers = client.GetAllPhoneNumbers(locale); var beforeReleaseNumberCount = acquiredPhoneNumbers.Count(); #region Snippet:ReleasePhoneNumbers //@@var acquiredPhoneNumber = "<acquired_phone_number>"; var releaseOperation = client.StartReleasePhoneNumber(new PhoneNumberIdentifier(acquiredPhoneNumber)); while (!releaseOperation.HasCompleted) { //@@ Thread.Sleep(2000); /*@@*/ SleepIfNotInPlaybackMode(); releaseOperation.UpdateStatus(); } #endregion Snippet:ReleasePhoneNumbers acquiredPhoneNumbers = client.GetAllPhoneNumbers(locale); var afterReleaseNumberCount = acquiredPhoneNumbers.Count(); Assert.AreEqual(1, beforeReleaseNumberCount - afterReleaseNumberCount); }
public async Task CreateGeographicalReservation(string?locale) { var client = CreateClient(); const string countryCode = "US"; var pageablePhonePlanGroups = client.GetPhonePlanGroupsAsync(countryCode, locale); var phonePlanGroups = await pageablePhonePlanGroups.ToEnumerableAsync().ConfigureAwait(false); var phonePlanGroup = phonePlanGroups.First(group => group.PhoneNumberType == PhoneNumberType.Geographic); var pageablePhonePlans = client.GetPhonePlansAsync(countryCode, phonePlanGroup.PhonePlanGroupId, locale); var phonePlan = (await pageablePhonePlans.ToEnumerableAsync()).First(); var locationOptionsResponse = await client.GetPhonePlanLocationOptionsAsync(countryCode, phonePlanGroup.PhonePlanGroupId, phonePlan.PhonePlanId); var state = locationOptionsResponse.Value.LocationOptions.Options.First(); var locationOptionsQueries = new List <LocationOptionsQuery> { new LocationOptionsQuery { LabelId = "state", OptionsValue = state.Value }, new LocationOptionsQuery { LabelId = "city", OptionsValue = state.LocationOptions.First().Options.First().Value } }; var areaCodes = await client.GetAllAreaCodesAsync(phonePlan.LocationType.ToString(), countryCode, phonePlan.PhonePlanId, locationOptionsQueries); var areaCode = areaCodes.Value.PrimaryAreaCodes.First(); var reservationOptions = new CreateReservationOptions("My reservation", "my description", new[] { phonePlan.PhonePlanId }, areaCode); reservationOptions.Quantity = 1; var reservationOperation = await client.StartReservationAsync(reservationOptions); if (TestEnvironment.Mode == RecordedTestMode.Playback) { await reservationOperation.WaitForCompletionAsync(TimeSpan.Zero, default).ConfigureAwait(false); } else { await reservationOperation.WaitForCompletionAsync().ConfigureAwait(false); } Assert.IsNotNull(reservationOperation); Assert.IsTrue(reservationOperation.HasCompleted); Assert.IsTrue(reservationOperation.HasValue); var reservation = reservationOperation.Value; Assert.IsNotNull(reservation); Assert.AreEqual(ReservationStatus.Reserved, reservation.Status); Assert.AreEqual(areaCode, reservation.AreaCode); Assert.IsNull(reservation.ErrorCode); Assert.AreEqual(1, reservation.PhoneNumbers?.Count); await client.CancelReservationAsync(reservationOperation.Id); }