private InfobipSmsAdapter GetInfobipSmsAdapter(params Guid?[] messageIds) { Func <InfobipResponseMessage> throwException = () => throw new HttpRequestException(); IEnumerable <Func <InfobipResponseMessage> > clientResponses = messageIds.Select(x => x.HasValue ? () => new InfobipResponseMessage { MessageId = x.Value } : throwException); var options = new InfobipSmsAdapterOptions("apiKey", "apiBaseUrl", "appSecret", "smsNumber", "smsScenarioKey"); options.BypassAuthentication = true; var client = new Mock <IInfobipSmsClient>(MockBehavior.Strict); var queue = new Queue <Func <InfobipResponseMessage> >(clientResponses); client.Setup(x => x.SendMessageAsync(It.IsAny <InfobipOmniSmsFailoverMessage>(), It.IsAny <CancellationToken>())) .ReturnsAsync((InfobipOmniSmsFailoverMessage x, CancellationToken y) => { return(queue.Dequeue()()); }); return(new InfobipSmsAdapter(options, client.Object, NullLogger <InfobipSmsAdapter> .Instance)); }
public ToSmsActivityConverterTest() { _adapterOptions = TestOptions.Get(); _toSmsActivityConverter = new ToSmsActivityConverter(_adapterOptions, NullLogger.Instance); }
public ToSmsActivityConverter(InfobipSmsAdapterOptions smsAdapterOptions, ILogger logger) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _smsAdapterOptions = smsAdapterOptions ?? throw new ArgumentNullException(nameof(smsAdapterOptions)); }
/// <summary> /// Converts a Bot Framework activity to a Infobip OMNI failover message ready for the OMNI API. /// </summary> /// <param name="activity">The activity to be converted to Infobip OMNI failover message.</param> /// <param name="options">The Infobip options object which contains scenario keys.</param> /// <returns>The resulting messages.</returns> /// <exception cref="ArgumentNullException"><paramref name="activity"/> is null.</exception> /// <exception cref="ValidationException"><paramref name="activity"/> is null.</exception> public static List <InfobipOmniSmsFailoverMessage> Convert(Activity activity, InfobipSmsAdapterOptions options) { if (activity == null) { throw new ArgumentNullException(nameof(activity)); } var messages = new List <InfobipOmniSmsFailoverMessage>(); var callbackData = activity.Entities? .SingleOrDefault(x => x.Type == InfobipEntityType.CallbackData)? .Properties.ToInfobipCallbackDataJson(); if (activity.Recipient?.Id == null) { throw new ValidationException("Activity must have a Recipient Id"); } var destinations = new[] { new InfobipDestination { To = new InfobipTo { PhoneNumber = activity.Recipient.Id } } }; var smsMessage = InfobipOmniSmsMessageFactory.Create(activity); if (smsMessage != null) { messages.Add(new InfobipOmniSmsFailoverMessage { Destinations = destinations, ScenarioKey = options.InfobipSmsScenarioKey, CallbackData = callbackData, Sms = smsMessage }); } return(messages); }