【问题标题】:Trigger event or message from webchat window to bot(MS bot framework)从网络聊天窗口触发事件或消息到 bot(MS bot 框架)
【发布时间】:2019-10-22 00:28:57
【问题描述】:

使用以下代码通过直线向机器人生成事件。

<!DOCTYPE html>
    <html>
    <head>
        <link href="https://cdn.botframework.com/botframework-webchat/latest/botchat.css" rel="stylesheet" />
    </head>
    <body>
        <div>
            <div id="bot" />
        </div>
        <script src="https://cdn.botframework.com/botframework-webchat/latest/botchat.js"></script>
        <script>
            var user = {
                id: 'user-id',
                name: 'user name'
            };
            var botConnection = new BotChat.DirectLine({
                token: 'MYTOKENHERE',
                user: user
            });
            BotChat.App({
                user: user,
                botConnection: botConnection,
                bot: { id: 'bot-id', name: 'bot name' },
                resize: 'detect'
            }, document.getElementById("bot"));
            botConnection
                .postActivity({
                    from: user,
                    name: 'requestWelcomeDialog',
                    type: 'event',
                    value: ''
                })
                .subscribe(function (id) {
                    console.log('"trigger requestWelcomeDialog" sent');
                });
        </script>
    </body>
</html>

我有代码来处理来自机器人的任何事件/消息。当我输入 hi 或任何消息时,它会起作用。但是,当我按照 MS bot 框架文档的承诺将聊天机器人加载为对话更新活动时,它不会自动进行。 有没有人可以帮忙。

【问题讨论】:

  • 将解决方案标记为已接受服务于更大的 Stack Overflow 社区和任何有类似问题的人。如果您觉得我的回答足够,请“接受”它。如果没有,请告诉我我还能提供哪些帮助!

标签: javascript botframework bots direct-line-botframework


【解决方案1】:

对于初学者来说,您似乎正在使用 Web Chat v3,该版本已弃用且不再受支持。我建议切换到 Web Chat v4,尤其是在您刚刚开始的时候。请注意,网络聊天 v4 确实适用于 v3 机器人。查看Web Chat Samples 以开始使用 v4。

另外,我假设您说的是在网络聊天中未正确发送欢迎消息。如果是这种情况,请查看此GitHub answer。它讨论了如何在网络聊天中正确发送欢迎消息。如果您不打算切换到 v4,则答案中讨论的一些原则仍然适用于 Web Chat v3。

【讨论】:

    【解决方案2】:

    您必须处理机器人代码上的请求。像这样检查“requestWelcomeDialog”。这应该在您的 MainDialog 中。

       protected override async Task OnEventActivityAsync(ITurnContext<IEventActivity> turnContext, CancellationToken cancellationToken)
            {
                if (turnContext.Activity.Name == "requestWelcomeDialog")
                {
                    //send activity here
                }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多