コード例 #1
0
        public async Task <IActionResult> Post([FromForm] IFormCollection collection)
        {
            WhatsappResponse response;

            try
            {
                _logger.LogTrace($"Request received in the Whatsapp Controller");
                var pars = collection.Keys
                           .Select(key => new { Key = key, Value = collection[key] })
                           .ToDictionary(p => p.Key, p => p.Value.ToString());

                response = await _whatsappHandlerService.ProcessRequest(pars);
            }
            catch (Exception e)
            {
                _logger.LogError(e, $"Error occurred when processing the whatsapp message {e.Message}");
                response = new WhatsappResponse
                {
                    Accepted        = false,
                    ResponseMessage = $"Error: {e.ToString()}"
                };
            }

            var twiml = GenerateTwilioResponse(response);

            return(new ContentResult
            {
                Content = twiml.ToString(),
                ContentType = "application/xml",
                StatusCode = 200
            });
        }
コード例 #2
0
        private MessagingResponse GenerateTwilioResponse(WhatsappResponse response)
        {
            var twiml        = new MessagingResponse();
            var twimlMessage = new Message();

            twimlMessage.Body(response.ResponseMessage);
            if (!string.IsNullOrEmpty(response.ImageUrl))
            {
                twimlMessage.Media(new Uri(response.ImageUrl));
            }
            twiml.Append(twimlMessage);
            return(twiml);
        }