protected override async Task OnPostbackAsync(PostbackEvent ev) { var userId = ev.Source.UserId; var gameEntry = await _tableStorage.FindGameEntryAsync(userId); var cardEntry = await _tableStorage.FindCardEntryAsync(userId); var replyToken = ev.ReplyToken; switch (ev.Postback.Data) { case "exit": await DeleteBingoEntry(replyToken, gameEntry, cardEntry); await new BingoMenuManager(_messagingClient).SetStartMenuAsync(userId); break; case "cancel-exit": await _messagingClient.ReplyMessageAsync(replyToken, "キャンセルしました。"); break; case BingoMenuManager.POSTBACK_DATA_START_MENU_HINT: await _messagingClient.ReplyMessageAsync(replyToken, ReplyMessage_Usage); break; case BingoMenuManager.POSTBACK_DATA_GAME_MENU_HINT: if (gameEntry?.GameId < 0) { await _messagingClient.ReplyMessageAsync(replyToken, ReplyMessage_Start); } else { await _messagingClient.ReplyMessageAsync(replyToken, Help_GameEntry); } break; case BingoMenuManager.POSTBACK_DATA_CARD_MENU_HINT: if (cardEntry?.CardId < 0) { await _messagingClient.ReplyMessageAsync(replyToken, ReplyMessage_Join); } else { await _messagingClient.ReplyMessageAsync(replyToken, Help_CardCreated); } break; } }