/// <summary> /// Get local phone number assigned to the applcation by name (or reserve it if need) /// </summary> /// <param name="phoneNumber">IPhoneNumber instance</param> /// <param name="availableNumber">IAvailableNumber instance</param> /// <param name="applicationId">Application Id</param> /// <param name="query">Optioons to allocate number</param> /// <param name="name">Name of allocated phone number</param> /// <param name="cancellationToken">Cancellation token</param> /// <returns>Phone number</returns> public static async Task <string> GetOrCreateLocalAsync(this IPhoneNumber phoneNumber, IAvailableNumber availableNumber, string applicationId, LocalNumberQueryForOrder query = null, string name = null, CancellationToken?cancellationToken = null) { var existingNumber = phoneNumber.GetByName(applicationId, name); if (existingNumber != null) { return(existingNumber.Number); } return(await phoneNumber.CreateLocalAsync(availableNumber, applicationId, query, name, cancellationToken)); }
/// <summary> /// Allocate local phone number and assign it to the application /// </summary> /// <param name="phoneNumber">IPhoneNumber instance</param> /// <param name="availableNumber">IAvailableNumber instance</param> /// <param name="applicationId">Application Id</param> /// <param name="query">Optioons to allocate number</param> /// <param name="name">Name of allocated phone number</param> /// <param name="cancellationToken">Cancellation token</param> /// <returns>Created phone number</returns> public static async Task <string> CreateLocalAsync(this IPhoneNumber phoneNumber, IAvailableNumber availableNumber, string applicationId, LocalNumberQueryForOrder query = null, string name = null, CancellationToken?cancellationToken = null) { query = query ?? new LocalNumberQueryForOrder(); query.Quantity = 1; var result = (await availableNumber.SearchAndOrderLocalAsync(query, cancellationToken)).First(); await phoneNumber.UpdateAsync(result.Id, new UpdatePhoneNumberData { ApplicationId = applicationId, Name = name }, cancellationToken); return(result.Number); }
public Task <OrderedNumber[]> SearchAndOrderLocalAsync(LocalNumberQueryForOrder query, CancellationToken?cancellationToken = default(CancellationToken?)) { return(_context.Invoke(f => f.SearchAndOrderLocalAsync(query, cancellationToken))); }