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 Task StoreStateAsync(ContextState contextState, TEvent ev) { if (string.IsNullOrEmpty(_nextCallMethodName)) { contextState.SessionData.StatefulContext = null; return(Task.CompletedTask); } contextState.SessionData.StatefulContext = JsonConvert.SerializeObject(new StatefulContextSnapshot { TypeName = this.GetType().FullName, NextMethodName = _nextCallMethodName, StatusJson = JsonConvert.SerializeObject(this), }); return(Task.CompletedTask); }
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}"); } }
protected abstract Task ExecuteImplAsync(ContextState contextState, TEvent ev);
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 Task InitializeAsync(ContextState contextState, MessageEvent ev) { return(HandleMessageEventAsync(contextState, ev)); }
protected abstract Task InitializeAsync(ContextState contextState, TEvent ev);
protected override async Task ExecuteImplAsync(ContextState contextState, ReplyableEvent ev) { await contextState.Client.ReplyMessageAsync(ev.ReplyToken, LineMessages.GetGreetingMessage()); contextState.Settings.ChatStatus = ChatStatusType.General; }