コード例 #1
0
        internal AwaitableFromItem <IMessageActivity> stringToMessageActivity(IDialogContext context, string message)
        {
            var messageActivity = context.MakeMessage();

            messageActivity.Text = message;
            var awaitble = new AwaitableFromItem <IMessageActivity>(messageActivity);

            return(awaitble);
        }
コード例 #2
0
        public async Task Should_Execute_ActionOne_Then_Post_Message()
        {
            //Arrange
            var service = new Mock <IWitService>();
            var counter = 0;

            service.Setup(wit => wit.QueryAsync(It.IsAny <IWitRequest>(), It.IsAny <CancellationToken>())).ReturnsAsync(() =>
            {
                switch (counter)
                {
                case 0:
                    counter++;
                    return(new WitResult()
                    {
                        Type = "action",
                        Action = "ActionOne"
                    });

                case 1:
                    counter++;
                    return(new WitResult()
                    {
                        Type = "msg",
                        Message = "test"
                    });

                case 2:
                    counter++;
                    return(new WitResult()
                    {
                        Type = "stop",
                    });
                }

                Assert.Fail("The dialog did not stop after the stop response from wit");
                return(default(WitResult));
            });
            var dialog  = new TestWitDialog(service.Object);
            var message = MakeTestMessage();

            message.Text = "execute action one, then respond with message \"test\", then stop";
            var item    = new AwaitableFromItem <IMessageActivity>(message);
            var context = new Mock <IDialogContext>(MockBehavior.Loose);

            context.Setup(c => c.MakeMessage()).Returns(() => new Activity());

            //Act
            await dialog.MessageReceived(context.Object, item);

            //Assert
            context.Verify(c => c.PostAsync(It.Is <IMessageActivity>(a => a.Text == "ActionOne"), It.IsAny <CancellationToken>()), Times.Once);
            context.Verify(c => c.PostAsync(It.Is <IMessageActivity>(a => a.Text == "test"), It.IsAny <CancellationToken>()), Times.Once);
            context.Verify(c => c.PostAsync(It.Is <IMessageActivity>(a => a.Text == "ActionTwo"), It.IsAny <CancellationToken>()), Times.Never);
        }
コード例 #3
0
        public async Task StartAsync(IDialogContext context)
        {
            if (!context.UserData.ContainsKey("level"))
            {
                var question = await DTML.EduBot.Common.MessageTranslator.TranslateTextAsync("How much English do you already know?");

                PromptDialog.Choice(
                    context,
                    this.AfterLevelSelected,
                    LevelChoices,
                    question,
                    Shared.DoNotUnderstand,
                    attempts: Shared.MaxPromptAttempts);
            }

            else
            {
                IAwaitable <string> result = new AwaitableFromItem <string>(context.UserData.GetValue <string>("level"));
                await AfterLevelSelected(context, result);
            }
        }