javascript - 我们可以将哪个参数用于 window.WebChat.render WebChat 以便提供自定义 URL 参数?使用 Azure 机器人框架 Nodejs
问题描述
将自定义参数从网络聊天控件传递到机器人框架,哪个与机器人 URL 相关,我们要获取/渲染?即更详细的示例场景:
window.WebChat.renderWebChat({
directLine: window.WebChat.createDirectLine({
token: token,
....
...
customUrl : "mybot.net?q1=abc&&q2=xyz
}),
styleSet: styleSet,
store: store
}, document.getElementById('webchat'));
document.querySelector('#webchat > *').focus();
是否可以将不同的 url 参数与令牌一起传递,即机器人根据参数呈现特定功能,即用于 q2=xyz 运动相关问题卡。
解决方案
不,在创建 Direct Line 对象时无法发送特定参数。Direct Line 参数是该服务专有的 - 无法检索您发送的任何自定义值。
但是,在网络聊天客户端/用户和机器人之间发送数据的公认方法是使用网络聊天store
和dispatch()
功能。store
广播各种动作,例如DIRECT_LINE/CONNECT_FULFILLED
和DIRECT_LINE/INCOMING_ACTIVITY
(以及其他),允许您在触发时执行功能。
在您的情况下(不知道完整的详细信息),您可能希望在 Web 聊天加载后将值作为事件发送。代码看起来像这样:
<script>
(async function () {
const store = window.WebChat.createStore( {}, ( { dispatch } ) => next => async action => {
if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
console.log('Event dispatched');
dispatch( {
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'CUSTOM_PARAMETERS',
value: { q1: 'abc', q2: 'xyz' }
}
} )
}
return next(action);
});
[...]
window.WebChat.renderWebChat(
directLine: window.WebChat.createDirectLine({ token }),
store: store
/>,
document.getElementById( 'webchat' );
)
})
</script>
在您的机器人中,您将利用onEvent()
活动处理程序来捕获已调度的事件:
this.onEvent = async (context, next) => {
console.log('Event activity detected');
const { activity } = context;
if (activity && activity.name === 'CUSTOM_PARAMETERS') {
await context.sendActivity('Custom parameters received!');
}
await next();
};
您可以参考各种示例,详细了解如何实现不同的功能,包括如何在网络聊天中发送、接收和处理特定数据点。
希望有帮助!
推荐阅读
- react-native - Navigation.navigate 哪儿也不去
- vb.net - 有没有类似老基础字段函数的vb.net方法
- c++ - 组件上的虚幻引擎蓝图 UFUNCTION 导致构建错误
- cordova - binary File object created by cordova-plugin-file cannot be uploaded via XHR
- firebase - 使用 Firebase 函数获取上传到 Firebase 存储的 pdf 的签名下载 URL
- d3.js - DC条形图如何使用鼠标划定x轴范围
- coldfusion - 哪个 EncodeFor 应该用于定位?
- html - How do you prevent the interference of MULTIPLE SVG elements (text labels) on mouseover of a different SVG element?
- sql-server - Can object creation in a database project (SqlPackager) be conditional?
- javascript - Vue 不是来自 .js