private async Task AskingInputCommentAsync(ContextState contextState, MessageEvent ev) { bool isValidMessage(out TextEventMessage textEventMessage) { if (ev.Message.Type != EventMessageType.Text) { textEventMessage = null; return(false); } textEventMessage = (TextEventMessage)ev.Message; return(LineMessages.IsYesOrNo(textEventMessage.Text)); } if (!isValidMessage(out var text)) { await contextState.Client.ReplyMessageAsync(ev.ReplyToken, LineMessages.GetConfirmMessage(LineMessages.AskCommentMessage)); SetNextCallMethod(nameof(AskingInputCommentAsync)); return; } if (LineMessages.IsYes(text.Text)) { await contextState.Client.ReplyMessageAsync(ev.ReplyToken, LineMessages.GetInputCommentMessage()); SetNextCallMethod(nameof(InputCommentAsync)); return; } else { await FinishInputAsync(contextState, ev); } }
protected override async Task ExecuteImplAsync(ContextState context, MessageEvent messageEvent) { var textMessage = (TextEventMessage)messageEvent.Message; context.Settings.YourName = textMessage.Text.Trim(); await context.Client.ReplyMessageAsync(messageEvent.ReplyToken, LineMessages.GetFinishGreetingMessage(context.Settings.YourName)); context.Settings.ChatStatus = ChatStatusType.General; }
private async Task FinishInputAsync(ContextState contextState, MessageEvent ev, LocationLog locationLog = null) { locationLog = locationLog ?? await LocationLog.GetLocationLogByUserIdAsync(contextState.StateStoreTable, ev.Source.UserId); if (locationLog == null) { await ReplyUnknownMessageAsync(contextState, ev); return; } await contextState.Client.ReplyMessageAsync(ev.ReplyToken, LineMessages.GetFinishInputMessage(contextState.Settings, locationLog)); SetNextCallMethod(nameof(InitializeAsync)); }
private async Task ExecuteLocationMessageAsync(ContextState contextState, MessageEvent messageEvent) { var locationMessage = (LocationEventMessage)messageEvent.Message; var locationLog = new LocationLog { RowKey = messageEvent.Source.UserId, Latitude = locationMessage.Latitude, Longitude = locationMessage.Longitude, Name = locationMessage.Title, Address = locationMessage.Address, }; await contextState.StateStoreTable.ExecuteAsync(TableOperation.InsertOrReplace(locationLog)); await contextState.Client.ReplyMessageAsync(messageEvent.ReplyToken, LineMessages.GetConfirmMessage(LineMessages.AskCommentMessage)); SetNextCallMethod(nameof(AskingInputCommentAsync)); }
protected override async Task ExecuteImplAsync( ContextState contextState, MessageEvent messageEvent) { var m = (TextEventMessage)messageEvent.Message; if (m.Text == "その他") { await contextState.Client.ReplyMessageAsync(messageEvent.ReplyToken, LineMessages.GetManualInputMessage()); contextState.Settings.ChatStatus = ChatStatusType.ManualInputYourName; return; } contextState.Settings.YourName = m.Text.Trim(); await contextState.Client.ReplyMessageAsync(messageEvent.ReplyToken, LineMessages.GetFinishGreetingMessage(contextState.Settings.YourName)); contextState.Settings.ChatStatus = ChatStatusType.General; }
private async Task ExecuteTextMessageAsync(ContextState contextState, MessageEvent messageEvent) { var text = ((TextEventMessage)messageEvent.Message).Text; switch (LineMessages.DetectIntent(text)) { case IntentType.ChangeName: await contextState.Client.ReplyMessageAsync(messageEvent.ReplyToken, LineMessages.GetAskYourNameMessage()); contextState.Settings.ChatStatus = ChatStatusType.AskingYourName; break; case IntentType.ShowHistory: await ShowHistoryAsync(contextState, messageEvent); break; default: throw new InvalidOperationException($"Unknown intent: {text}"); } }
private async Task ShowHistoryAsync(ContextState contextState, MessageEvent messageEvent) { var histories = JsonConvert.DeserializeObject <List <DateTimeOffset> >(contextState.Settings.HistoryJson ?? "[]"); await contextState.Client.ReplyMessageAsync(messageEvent.ReplyToken, LineMessages.GetHistoriesMessage(histories)); }
private async Task ReplyUnknownMessageAsync(ContextState contextState, MessageEvent messageEvent) { await contextState.Client.ReplyMessageAsync(messageEvent.ReplyToken, LineMessages.GetReplyMessageForUnknownMessageType()); SetNextCallMethod(nameof(InitializeAsync)); }
protected override async Task ExecuteImplAsync(ContextState contextState, ReplyableEvent ev) { await contextState.Client.ReplyMessageAsync(ev.ReplyToken, LineMessages.GetGreetingMessage()); contextState.Settings.ChatStatus = ChatStatusType.General; }