Azure 将自定义参数从webchat控件传递到bot框架
所以,我目前正在使用这个:Azure 将自定义参数从webchat控件传递到bot框架,azure,bots,azure-bot-service,direct-line-botframework,Azure,Bots,Azure Bot Service,Direct Line Botframework,所以,我目前正在使用这个: <!DOCTYPE html> <html> <body> <div id="webchat"></div> <script src="https://cdn.botframework.com/botframework-webchat/preview/botchat.js"></script> <script> window.WebC
<!DOCTYPE html>
<html>
<body>
<div id="webchat"></div>
<script src="https://cdn.botframework.com/botframework-webchat/preview/botchat.js"></script>
<script>
window.WebChat.renderWebChat({
directLine: window.WebChat.createDirectLine({ secret: 'YOUR_BOT_SECRET_FROM_AZURE_PORTAL' })
}, document.getElementById('webchat'));
</script>
</body>
</html>
但bot中的Context.Activity.ChannelData返回Null
也试过了
var d1 = window.WebChat.createDirectLine({ token })
window.WebChat.renderWebChat({
directLine: d1,
user: { id: 'userid', userparam:'test'},
styleSet
}, document.getElementById('webchat'));
})();
still Context.Activity.From.Properties[userparam]从Cilent端返回Null
var d1 = window.WebChat.createDirectLine({ token })
window.WebChat.renderWebChat({
directLine: Object.assign({}, d1, {
postActivity: activity => {
var newActivity = Object.assign({}, activity, { channelData: { "param1": "test" } });
return d1.postActivity(newActivity);
}
}),
styleSet,
botAvatarInitials: 'CAB',
userAvatarInitials: 'You'
}, document.getElementById('webchat'));
})();
从BOt框架
var channelObj = turnContext.Activity.ChannelData.ToString();
var channeldata = Newtonsoft.Json.Linq.JObject.Parse(channelObj);
var customdata = channeldata["param1"].ToString();
从纤毛侧
var d1 = window.WebChat.createDirectLine({ token })
window.WebChat.renderWebChat({
directLine: Object.assign({}, d1, {
postActivity: activity => {
var newActivity = Object.assign({}, activity, { channelData: { "param1": "test" } });
return d1.postActivity(newActivity);
}
}),
styleSet,
botAvatarInitials: 'CAB',
userAvatarInitials: 'You'
}, document.getElementById('webchat'));
})();
从BOt框架
var channelObj = turnContext.Activity.ChannelData.ToString();
var channeldata = Newtonsoft.Json.Linq.JObject.Parse(channelObj);
var customdata = channeldata["param1"].ToString();
提供的另一个答案很有帮助,但它会覆盖channelData。对于找到此答案并只想发送自定义参数的其他人,这将非常有用:
const originalDirectline = props.webchat.createDirectLine({
token,
})
const directLine = Object.assign({}, originalDirectline, {
postActivity: (activity: any) => {
const newActivity = Object.assign({}, activity)
newActivity.customParam = "custom value"
return originalDirectline.postActivity(newActivity)
}
})
提供的另一个答案很有帮助,但它会覆盖channelData。对于找到此答案并只想发送自定义参数的其他人,这将非常有用:
const originalDirectline = props.webchat.createDirectLine({
token,
})
const directLine = Object.assign({}, originalDirectline, {
postActivity: (activity: any) => {
const newActivity = Object.assign({}, activity)
newActivity.customParam = "custom value"
return originalDirectline.postActivity(newActivity)
}
})
这确实很有帮助,但它会覆盖其他通道数据。我知道你只是在编辑问题中最初做的事情,但这可能会给其他人带来问题。这确实很有帮助,但它会覆盖其他通道数据。我知道你只是在编辑问题中最初做的事情,但这可能会给其他人带来问题。