2017-10-20 5 views
1

ページ内のbot Webchatコントロールから送信された各メッセージをchannelDataに挿入しようとしています。私は周りを見回し、このサンプル(https://cmsdk.com/javascript/how-to-send-custom-channel-data-when-using-web-chat-client-with-bot-framework.html)と私のコードは、以下のコードのように見えます。各メッセージでwebchatにchannelDataを送信する

この問題は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")); 
+0

エッジはhttp://kangax.github.io/compatあたりに広がってサポートする必要があります-table/es6 /#test-spread _(...)_ operator –

+0

実験的な機能を手動で有効にする必要があると思うし、エンドユーザーにそれをさせたくないと思う。 IEの回避策はないと思います。 – GaboG

答えて

0

Object.assignを使用して同等のコードにスプレッド演算子を変換a pluginを持っています。 IEがまだサポートしていないので、これはあなたの問題を完全には解決しません。Object.assign - Babelの場合、ポリフィルはObject.Assignに含まれています。あなたのプロジェクトにBabelを含めても、余計かもしれませんが、インクルードするのが合理的かもしれない単体のObject.assign polyfillの場合はMDN has sample codeです。

で:アウト

z = { x, ...y }; 

ことがObject.assignは、クロスブラウザはあなたに利用可能になると、その後、快適依存だ場合は、バベルのドキュメントでは、2行のコードが等価であることを示唆しています:

z = Object.assign({ x }, y); 
0

だけCLO私はそのJSを知っているいくつかの人たちと一緒に作業し、私たちはIE、Chrome、Edgeで動作する "普及している同等の"機能を実装しました(Safariでテストしませんでしたが、

IEは、私たちはあまりにも機能し、ここでは結果のコードであることを変更=>演算子を好きではなかった:

var user = { 
    id: '@User.Identity.Name', 
    name: '@User.Identity.Name' 
}; 

var bot = { 
    id: 'TheBotId', 
    name: 'TheBotName' 
}; 

var botConnect = new BotChat.DirectLine({ 
    secret: 'TheBotSecret', 
    webSockets: 'true' 
}); 

// Spread equivalent function 
function getBotConnectionDetail(botconnection) { 
    var botConnectionDetail = {}; 
    var keys = Object.keys(botconnection); 
    for (var i = 0; i < keys.length; i++) { 
     botConnectionDetail[keys[i]] = botconnection[keys[i]]; 
    }; 
    botConnectionDetail['postActivity'] = function (activity) { 
     activity.channelData = { 
      StudentId: '@User.Identity.Name' 
     }; 
     return botconnection.postActivity(activity) 
    }; 
    return botConnectionDetail; 
} 

// Invokes Bot 
BotChat.App({ 
     botConnection: getBotConnectionDetail(botConnect), 
     user: user, 
     bot: bot, 
     resize: 'detect' 
    }, 
    document.getElementById("bot") 
); 
関連する問題