public async Task <IActionResult> Post() { try { var signature = Request.Headers["X-Hub-Signature"].FirstOrDefault().Replace("sha1=", ""); string body = await new StreamReader(Request.Body).ReadToEndAsync(); if (!FacebookChatbotHelper.VerifySignature(_appSettings, signature, body)) { return(BadRequest()); } var value = JsonConvert.DeserializeObject <FacebookMessage>(body); if (value._object != "page") { return(Ok()); } foreach (var entry in value.entry) { // To-do: retrieve pageToken from database based on Page ID var incomingPageId = entry.id; var company = _companyService.Get(incomingPageId); // If company registered in db if (company != null) { foreach (var msgItem in entry.messaging) { if (msgItem.message == null && msgItem.postback == null) { if (!FacebookChatbotHelper.VerifyIsOneTimeNotifPayload(msgItem)) { continue; } await _oneTimeNotifService.UserOptinCaseNoification(msgItem, company); } else { // Dispatch bot agent await _botService.DispatchAgent(msgItem, company); } } } else { // To-do: Company not registered in db } } return(Ok()); } catch (Exception ex) { LoggingHelper.LogError(ex, _logger, this.Request, this.RouteData); return(Ok()); } }