public async Task <IActionResult> Index(int botId) { try { var viberBotClient = viberBotFactory.GetClient(botId); var body = await new StreamReader(Request.Body).ReadToEndAsync(); var signatureHeader = Request.Headers[ViberBotClient.XViberContentSignatureHeader]; var isSignatureValid = viberBotClient.ValidateWebhookHash(signatureHeader, body); if (!isSignatureValid) { throw new InvalidOperationException("Invalid signature"); } // Deserialize JSON callback data var callbackData = JsonConvert.DeserializeObject <CallbackData>(body); // var user = callbackData.User; switch (callbackData.Event) { case EventType.ConversationStarted: await botService.ConversationStarted(botId, user.Id, user.Name, user.Avatar); break; case EventType.Subscribed: await botService.Subscribed(botId, user.Id); break; case EventType.Unsubscribed: await botService.UnSubscribed(botId, callbackData.UserId); break; case EventType.Message: await botService.ReceiveMessage(botId, callbackData.Sender.Id, callbackData.MessageToken, callbackData.Message); break; } return(Ok()); } catch (Exception ex) { logger.LogError(ex, "Error: {ex.Message}", ex.Message); return(BadRequest(ex.Message)); } }
public SendMessageService(IBotFactory <IViberBotClient> viberBotFactory) { var botId = 1; this.viberBotClient = viberBotFactory.GetClient(botId); }