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));
        }
예제 #2
0
 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);
        }