Example #1
0
        public async Task ReceiveAsync(Message message, CancellationToken cancellationToken)
        {
            Trace.TraceInformation($"From: {message.From} \tContent: {message.Content}");
            if (message.Content.ToString() == "Início")
            {
                callingBot = true;
            }
            if (message.Content.ToString() == "Encerrar")
            {
                callingBot = false;
                await _sender.SendMessageAsync("At� mais! Qualquer coisa � s� chamar novamente!", message.From, cancellationToken);
            }
            if (callingBot == true)
            {
                var navigationRequest = new NavigationRequest
                {
                    NavigationType       = NavigationType.Text,
                    NavigationParameters = null, //dicionario
                    LimeMessages         = new List <Message> {
                        message
                    }
                };

                var result = await _navigateExtension.GetNavigationAsync(navigationRequest, cancellationToken); //async. executa mpa

                await _navigateExtension.ExecuteNavigationAsync(result, cancellationToken);                     //bot
            }
        }
 public async Task <NavigationResponse> GetNavigationAsync(NavigationRequest request, CancellationToken cancellationToken)
 {
     return(await RunRequestAsync(async() =>
     {
         var result = await _navigationExtension.GetNavigationAsync(request, cancellationToken);
         if (result.State == NavigationState.Error)
         {
             RequestErrorMeter.Mark();
         }
         return result;
     }));
 }
Example #3
0
        public async Task <NavigationResult> SendToMPA(List <Message> messageList, CancellationToken cancellationToken, Dictionary <string, string> navigationParameters = null)
        {
            var from    = messageList.FirstOrDefault().From;
            var request = new NavigationRequest
            {
                LimeMessages         = messageList,
                NavigationType       = NavigationType.Text,
                NavigationParameters = navigationParameters == null ? new Dictionary <string, string>() : navigationParameters
            };
            var result = await _navigation.GetNavigationAsync(request, cancellationToken);

            var navResult = await _navigation.ExecuteNavigationAsync(result, cancellationToken);

            if (result.State == NavigationState.Error || navResult?.NavigationState == NavigationState.Error)
            {
                var exception = navResult.Exception ?? result.NavigationActions.OfType <ErrorNavigationAction>().First().Exception;
                _logger.Error(exception, $"[NavigationError] Content: {from.ToString()};");
            }
            return(navResult);
        }