RootDialog

时间:2017-11-29 17:26:26

标签: c# botframework

我在RootDialog中遇到无限循环问题。我在这里想要实现的是创建一个聊天机器人,当用户加入对话时发送欢迎消息。没有更多的交互,只有ActivityTypes.ConversationUpdate上的单个消息 - 这就是全部。

代码中没有任何花哨的东西:

MessageController.cs

using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web.Http;
using Dialogs;
using Microsoft.Bot.Builder.Dialogs;
using Microsoft.Bot.Connector;

[BotAuthentication]
public class MessagesController : ApiController
{
    public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
    {
        if (activity.Type == ActivityTypes.ConversationUpdate)
        {
            await Conversation.SendAsync(activity, () => new RootDialog());
        }

        var response = Request.CreateResponse(HttpStatusCode.OK);
        return response;
    }
}

RootDialog.cs

using System;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Dialogs;

[Serializable]
public class RootDialog : IDialog<object>
{
    public async Task StartAsync(IDialogContext context)
    {
        await context.PostAsync("Message");
        context.Done(this);
    }
}

结果:

Result for Bot Emulator

Result from Bot Directory - different message, but code is the same

正如你所看到的那样,它永远不会真正退出RootDialog - 或者一遍又一遍地调用RootDialog。我一直在寻找答案,找不到任何有用的东西。文档指向使用context.Done(this)作为结束对话框的一种方式,但显然它在这里不起作用。

我找不到任何合理的解释为什么会发生这种情况,我会对任何建议感到高兴。

0 个答案:

没有答案