public SendSmsCommandHandlerWithDelayHandlerTests() { var mockQueueClientFactory = new Mock <IQueueClientFactory>(); _mockHandler = new Mock <ICommandHandlerAsync <SendSmsCommand> >(); _mockQueueClient = new Mock <IQueueClient>(); _mockLogger = new Mock <ILogger>(); _mockLoggerFactory = new Mock <ILoggerFactory>(); _mockSettingService = new Mock <ISettingService>(); _testQueueMessage = new Message(); _testOutgoingSms = new OutgoingSmsBuilder(); _maxRetryAttempts = 3; _retryDelayMs = 1000; _mockSettingService .Setup(m => m.GetInt("MaxRetryAttempts")) .Returns(_maxRetryAttempts); _mockSettingService .Setup(m => m.GetInt("RetryDelayMs")) .Returns(_retryDelayMs); _mockLoggerFactory .Setup(m => m.CreateLogger(It.IsAny <string>())) .Returns(_mockLogger.Object); mockQueueClientFactory.Setup(mock => mock.Create <SmsOutgoingMessage>()).Returns(_mockQueueClient.Object); _sut = new SendSmsCommandHandlerWithDelayHandler( _mockHandler.Object, mockQueueClientFactory.Object, _mockLoggerFactory.Object, _mockSettingService.Object); }
/// <inheritdoc /> /// <summary> /// Adds a message on to the Azure Storage Queue, ready for processing </summary> /// <param name="context"> The <see cref="T:Microsoft.Bot.Builder.ITurnContext" /> of the conversation turn/> </param> /// <param name="activity"> The <see cref="T:Microsoft.Bot.Schema.Activity" /> that will be used for the queue message </param> /// <returns> The <see cref="T:System.Threading.Tasks.Task" />. </returns> public async Task EnqueueMessageAsync(ITurnContext context, Activity activity) { CloudQueue messageQueue = this.queueClient.GetQueueReference(this.notifyConfig.OutgoingMessageQueueName); await messageQueue.CreateIfNotExistsAsync(); OutgoingSms sms = new OutgoingSms { From = new Participant { UserId = context.Activity.From.Id }, Recipient = new Participant { UserId = context.Activity.Recipient.Id }, Conversation = new BotConversation { ConversationId = context.Activity.Conversation.Id }, ChannelData = context.Activity.ChannelData, ChannelId = context.Activity.ChannelId, Time = DateTime.Now.ToString(CultureInfo.InvariantCulture), Message = activity.Text, }; CloudQueueMessage message = new CloudQueueMessage(JsonConvert.SerializeObject(sms)); await messageQueue.AddMessageAsync(message); }
public async Task EnqueueMessageAsync(ITurnContext context, Activity activity) { var turnProperty = feedbackBotStateRepository.ConversationState.CreateProperty <long>("turnId"); var turnId = await turnProperty.GetAsync(context, () => - 1); OutgoingSms sms = new OutgoingSms { From = new Participant { UserId = context.Activity.From.Id }, Recipient = new Participant { UserId = context.Activity.Recipient.Id }, Conversation = new BotConversation { ConversationId = context.Activity.Conversation.Id, UserId = context.Activity.From.Id, ActivityId = activity.Id, TurnId = turnId }, ChannelData = context.Activity.ChannelData, ChannelId = context.Activity.ChannelId, Time = DateTime.Now.ToString(CultureInfo.InvariantCulture), Message = activity.Text, }; var message = new SmsOutgoingMessage(sms); await this.smsQueueProvider.SendAsync(activity.Conversation.Id, message, this.notifyConfig.OutgoingMessageQueueName); }
public SendSmsCommandHandlerWithOrderCheckTests() { _mockHandler = new Mock <ICommandHandlerAsync <SendSmsCommand> >(); _mockConversationRepository = new Mock <IConversationRepository>(); _testQueueMessage = new Message(); _testOutgoingSms = new OutgoingSmsBuilder(); _sut = new SendSmsCommandHandlerWithOrderCheck( _mockHandler.Object, _mockConversationRepository.Object); }
public async Task WhenCalledAndtheTurnIdIsNotSet_ThenTheTurnIdIsSetToMinusOne() { // arrange OutgoingSms sentSms = null; _mockSmsQueueProvider .Setup(m => m.SendAsync(_testActivity.Conversation.Id, It.IsAny <Message>(), _testOutgoingQueueName)) .Callback <string, Message, string>((conversationId, message, queueName) => { sentSms = JsonConvert.DeserializeObject <OutgoingSms>(Encoding.UTF8.GetString(message.Body)); }) .Returns(Task.CompletedTask); // act await _sut.EnqueueMessageAsync(_mockTurnContext.Object, _testActivity); //assert Assert.Equal(-1, sentSms.Conversation.TurnId); }
public SendSmsCommandHandlerTests() { _mockConversationRepository = new Mock <IConversationRepository>(); _mockNotificationClient = new Mock <INotificationClient>(); _mockSettingService = new Mock <ISettingService>(); _testQueueMessage = new Message(); _testOutgoingSms = new OutgoingSms(); _testNotifyTemplateId = Guid.NewGuid().ToString(); _testNotifySmsSenderId = Guid.NewGuid().ToString(); _mockSettingService .Setup(m => m.Get("NotifyTemplateId")) .Returns(_testNotifyTemplateId); _mockSettingService .Setup(m => m.Get("NotifySmsSenderId")) .Returns(_testNotifySmsSenderId); _sut = new SendSmsCommandHandler(_mockConversationRepository.Object, _mockNotificationClient.Object, _mockSettingService.Object); }
public Task EnqueueMessageAsync(ITurnContext context, Activity activity) { OutgoingSms sms = new OutgoingSms { From = new Participant { UserId = context.Activity.From.Id }, Recipient = new Participant { UserId = context.Activity.Recipient.Id }, Conversation = new BotConversation { ConversationId = context.Activity.Conversation.Id }, ChannelData = context.Activity.ChannelData, ChannelId = context.Activity.ChannelId, Time = DateTime.Now.ToString(CultureInfo.InvariantCulture), Message = activity.Text, }; var message = new Message(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(sms))); return(queueClient.SendAsync(message)); }
public SmsOutgoingMessage(OutgoingSms trigger) : base(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(trigger))) { }
public SendSmsCommand(OutgoingSms message, Message queueMessage) { Message = message ?? throw new ArgumentNullException(nameof(message)); QueueMessage = queueMessage ?? throw new ArgumentNullException(nameof(queueMessage)); }