javascript - 使用每条消息将channelData发送到网络聊天

标签 javascript botframework webchartcontrol

我正在尝试将 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/

相关文章:

javascript - 将脚本值绑定(bind)到 Angular 值时出现问题

node.js - 带有 node.js 机器人框架的 Skype 语音识别 API

c# - 调用 Dispatch/LUIS 模型时操作返回无效状态代码 ‘Unauthorized’

botframework - 在Microsoft bot框架中,如何包含星级反馈

c# - UpdatePanel 中的图像在 Firefox 中不起作用

javascript - 带有选项卡导航的 jquery 选项卡

javascript - 正则表达式提取最后一次出现特殊字符后的所有数字

javascript ->>= 在 JavaScript 中是什么意思?