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 }); }
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); }