public async Task ReceivedMessageAsync(IDialogContext context, IAwaitable <IMessageActivity> argument) { try { var activity = await argument as Activity; // 現在の会話のユーザーIDを得る if (_currentUser == null) { var usecase = new UserUsecase(); var userId = await activity.GetFirstMember(); _currentUser = await usecase.GetUser(userId); } var message = await argument; Trace.WriteLine($"{_currentUser?.UserId ?? "unknown user"} posted '{message.Text}'."); var resolver = new CommandResolver(); var command = resolver.Resolve(message.Text); Trace.WriteLine($"Resolved command is {command.Type} with {command.Message}"); await CommandAsync(context, command); } catch (Exception ex) { Trace.WriteLine($"ReceivedMessageAsync failed - {ex.Message} - {ex.StackTrace}"); await context.PostAsync($"ReceivedMessageAsync failed - {ex.Message}"); context.Wait(ReceivedMessageAsync); } }
private async Task ReceivedCommandPreferenceAsync(IDialogContext context, IAwaitable <UserPreferenceDialog.Result> result) { try { var prefResult = await result; var usecase = new UserUsecase(); _currentUser = await usecase.Update(_currentUser, prefResult.PrefType, prefResult.Text); await context.PostAsync($"{prefResult.PrefType.ToAlias()}を変更しました。"); } catch (Exception ex) { Trace.WriteLine($"ReceivedCommandPreferenceAsync failed - {ex.Message} - {ex.StackTrace}"); await context.PostAsync($"中止しました。"); } context.Wait(ReceivedMessageAsync); }
private async Task ReceivedRegistUserOrderAsync(IDialogContext context, IAwaitable <RegistUserOrder> result) { try { var order = await result; var conversationRef = context.Activity.ToConversationReference(); var userId = await(context.Activity as Activity).GetFirstMember(); var usecase = new UserUsecase(); _currentUser = await usecase.RegistUser(userId, order, conversationRef); await context.PostAsync($"ユーザーを登録しました。\n\nこれから毎日、{order.EndOfWorkTime}になったら仕事が終わったかを聞きますので、よろしくお願いします。"); context.Wait(ReceivedMessageAsync); } catch (Exception ex) { Trace.WriteLine($"ReceivedRegistUserOrderAsync failed - {ex.Message} - {ex.StackTrace}"); await context.PostAsync($"中止しました。"); } }
public async Task ReceivedUnregistUserConfirmAsync(IDialogContext context, IAwaitable <bool> argument) { try { var confirm = await argument; if (confirm) { var usecase = new UserUsecase(); await usecase.DeleteUser(_currentUser); _currentUser = null; await context.PostAsync("ユーザーを削除しました。またのご利用をお待ちしております。"); } else { await context.PostAsync("ユーザー削除を中止しました。"); } } catch (Exception ex) { Trace.WriteLine($"ReceivedUnregistUserConfirmAsync failed - {ex.Message} - {ex.StackTrace}"); await context.PostAsync($"中止しました。"); } }