我正在尝试将 ChannelData 注入(inject)到从页面中的机器人网络聊天控件发送的每条消息中。我环顾四周,发现了这个示例 ( https://cmsdk.com/javascript/how-to-send-custom-channel-data-when-using-web-chat-client-with-bot-framework.html ),我的代码如下所示。
问题是这在 Chrome 中有效,但展开运算符 (...) 在 Edge 或 IE 上不起作用。是否有一种适用于所有浏览器的替代语法?
var user = {
id: '@User.Identity.Name',
name: '@User.Identity.Name'
};
var bot = {
id: BotId,
name: 'BotName'
};
var botConnect = new BotChat.DirectLine({
secret: '@ViewData["BotSecret"]',
webSockets: 'true'
});
var v = { ...botConnect };
debugger;
BotChat.App({
botConnection: {
...botConnect,
postActivity: activity => {
activity.channelData = {
StudentId: '@User.Identity.Name'
};
return botConnect.postActivity(activity);
}
},
user: user,
bot: bot,
resize: 'detect'
}, document.getElementById("bot"));
最佳答案
看起来 Babel 有 a plugin它使用 Object.assign
将 Spread 运算符转换为等效代码。这并不能完全解决您的问题,因为 IE 仍然不支持 Object.assign
- 对于 Babel,包含了 Object.Assign
的 polyfill。尽管在您的项目中包含 Babel 可能有点过分,但 MDN has sample code对于一个简单的独立 Object.assign
polyfill 来说,包含它可能更合理。
如果这是一个令人满意的依赖关系,那么一旦 Object.assign
可跨浏览器使用,Babel 文档表明这两行代码是等效的:
In:
z = { x, ...y };
Out:
z = Object.assign({ x }, y);
关于javascript - 使用每条消息将channelData发送到网络聊天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46849890/