首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >microsoft / BotFramework-DirectLineJS

microsoft / BotFramework-DirectLineJS
EN

Stack Overflow用户
提问于 2021-02-21 02:58:08
回答 2查看 158关注 0票数 1

我正在尝试建立一个到健康机器人的DirectLine连接,并选择了一个预设的场景。我计划用HealthBot设置几个场景,并希望能够按需触发它们。

我能找到的触发场景的唯一例子是我没有使用的WebChat,你可以在这里找到它:

https://github.com/microsoft/HealthBotContainerSample/blob/master/public/index.js

我还找到了https://www.linkedin.com/pulse/microsoft-healthcare-bot-covid-19-triage-scenario-up-ravichander/,它推荐这样做:

代码语言:javascript
复制
dl.postActivity({
            type: "invoke",
            value: {
                trigger: "covid19"
            },
            locale: 'en-US',
            from: user,
            name: "TriggerScenario"
        })

我试过这样做:

代码语言:javascript
复制
this.directLine.postActivity(
{   
    type: "event",
    locale: "en-us",
    textFormat: "plain",
    from: { id: "server", name: "server", role: "user" },
    name: "TriggerScenario",
    value: {
        trigger: "MyScenario",
        args: {
            myVar1: "{custom_arg_1}",
            myVar2: "{custom_arg_2}"
        }
    }
}).subscribe(console.log,console.error);

在DirectLineJS的文档中没有提到它可以像那样使用,但是它触发了正确的场景并正确地将参数传递给机器人。

我遇到的问题似乎更多地与HealthBot本身有关,因为它无法识别任何用户输入,并返回在Default reply for utterances that are not understood中定义的通用消息。有没有人有过这种程度的定制经验,可以建议如何使用postActivity通过DirectLineJS按需触发场景。

我触发场景的方式有什么问题吗?

EN

回答 2

Stack Overflow用户

发布于 2021-02-23 04:04:38

如果您使用的是WebChat V4,则示例代码https://github.com/microsoft/HealthBotContainerSample/blob/master/public/index.js具有正确的示例。只需取消对triggeredScenario对象的注释,并将触发器属性替换为您的场景id。

代码语言:javascript
复制
store.dispatch({
    type: 'DIRECT_LINE/POST_ACTIVITY',
    meta: {method: 'keyboard'},
    payload: {
        activity: {
            type: "invoke",
            name: "InitConversation",
            locale: user.locale,
            value: {
                // must use for authenticated conversation.
                jsonWebToken: jsonWebToken,

                // Use the following activity to proactively invoke a bot scenario
                /*
                triggeredScenario: {
                    trigger: "{scenario_id}",
                    args: {
                        myVar1: "{custom_arg_1}",
                        myVar2: "{custom_arg_2}"
                    }
                }
                */
            }
        }
    }
});
票数 0
EN

Stack Overflow用户

发布于 2021-02-26 22:02:40

我似乎已经解开了这个谜团。使用我的代码可以正确地触发这些场景。这个问题是由于Health Bot无法正确识别用户输入造成的。我已经解决了这个问题,在场景本身中添加了一些守卫。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66295403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档