gpt4 book ai didi

javascript - Microsoft Bot 框架,从 Javascript 设置用户状态

转载 作者:行者123 更新时间:2023-12-02 06:59:07 24 4
gpt4 key购买 nike

我正在尝试使用 Microsoft Bot Framework v4 和 Azure 对简单的支持和票务机器人进行概念验证。我已通过 Bot Framework Composer 成功创建了一个机器人,并使用 Web App Bot 将其部署到 Azure。我已在测试站点上配置并安装了 BotFramework-WebChat 组件,并成功将机器人连接到它。 BotFramework-WebChat 组件通过 cdn.botframework.com 安装。测试站点是一个单页面应用程序,机器人位于其旁边,以便用户可以方便地访问它。

一切都按预期进行。不过,我想根据当前的浏览器状态向机器人发布某些上下文信息。例如,如果用户在与机器人交谈时正在查看产品 ABC,我希望机器人知道这一点。为了实现这一目标,我想在主应用程序状态发生变化时更新机器人 channel 上的用户状态,最好通过普通 JavaScript 进行更新。我想在后台无缝地执行此操作,并且不想依赖其他框架,例如 React(Microsoft 文档大量引用了 React,不幸的是,我对特定产品不了解,因此发现很难/不可能遵循) .

因此,我的问题分为两部分。使用 BotFramwork-WebChat 组件提供的 API 是否可以实现上述操作?如果可以,将如何实现?如果不可能,如果存在替代方法,我也将不胜感激任何有关替代方法的帮助。

最佳答案

回答我自己的问题,这确实可以通过对用于创建/呈现网络聊天组件的示例代码进行少量修改来实现。

首先,我参数化了 DirectLine 客户端的创建。一旦设置了 WebChat 组件,此客户端就是发布到 channel 的关键:

var dl = window.WebChat.createDirectLine({ token: '#yourtokenhere#' });

window.WebChat.renderWebChat(
{
directLine: dl,
userID: '#yourid#',
username: '#yourusername#',
locale: 'en-US'
},
document.getElementById('#yourtargetelement')
);

使用客户端,然后使用 postActivity 方法将事件发布到 channel :

dl.postActivity({
from: { id: '#youruserid#', name: '#yourusername#' },
type: 'event',
name: '#youreventname#',
value: {
// Put your parameters here
}
})

在 Composer 端,我设置了一个触发器来激活名为 #youreventname# 的“自定义事件”。然后我可以从 value 属性中解析出参数并设置我的用户状态。

我亲自找到了documentation for the Microsoft Direct Line JS protocol比直接浏览 WebChat 文档更容易使用。

感谢@billoverton 为我提供了使用自定义事件的灵感。

关于javascript - Microsoft Bot 框架,从 Javascript 设置用户状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66319755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com