Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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($"中止しました。");
            }
        }
Exemplo n.º 4
0
        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($"中止しました。");
            }
        }