2017-10-20 4 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에 channelChannel 보내기

문제는 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

에지 -table/es6/# test-spread _ (...) _ operator –

+0

실험용 기능을 수동으로 활성화해야 최종 사용자가 그렇게하지 않아도된다고 생각합니다. IE에 대한 해결 방법이 없다고 생각합니다. – GaboG

답변

0

Object.assign을 사용하여 상응하는 코드로 확산 연산자 변환 a plugin있다. 이것은 IE가 여전히 Object.assign을 지원하지 않기 때문에 문제를 완전히 해결하지 못합니다. Babel의 경우 polyfill이 Object.Assign에 포함되어 있습니다. 프로젝트에 Babel을 포함 시키면 과도 할 수도 있지만, 포함하기에 더 합리적인 polyfill이라는 간단한 독립형 Object.assign에 대해서는 MDN has sample code입니다.

에서 : 아웃

z = { x, ...y }; 

Object.assign 크로스 브라우저가 당신에게 사용할 수있게되면 다음, 쾌적한 의존성의 경우는 바벨 문서는 두 줄의 코드가 동일하다는 것을 시사한다 :

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

단지 클리오 이 하나의 루프를 노래하고, 나는 그들의 JS를 알고있는 몇몇 사람들과 일했고 우리는 IE, Chrome, Edge에서 작동하는 "spread equivalent"기능을 구현했다. (Safari에서 테스트하지는 않았지만 거기에서도 작동해야한다고 생각한다.) = 좋아하지 않았다

IE는> 연산자는 그래서 우리는 너무 기능, 여기에 결과 코드라고 변경 : http://kangax.github.io/compat 당 확산을 지원해야

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") 
);