我需要将ID从Webchat客户端传递到机器人。我做了研究,发现了stackoverflow post,其中@ justin-harris提到了以下代码
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)
}
})
从某种意义上讲,它可以正常工作,并且我可以在我的机器人中接收ID,但是每当我以用户身份从网聊客户端发送消息时,它都会出现两次(第一条消息失败,第二条消息成功)。我不确定为什么要这么做。如果有人对这个问题有所了解,我们将不胜感激。
答案 0 :(得分:1)
没关系,我通过商店初始化期间可以通过的中间件弄清楚了。这是任何未来灵魂的解决方案:
const store = useMemo(
() =>
createStore({}, ({ dispatch }) => (next) => (action) => {
if (action.type === "DIRECT_LINE/POST_ACTIVITY") {
action = simpleUpdateIn(
action,
["payload", "activity", "channelData", "yourVariableHere"],
() => "Your data here"
);
}
return next(action);
}),
[]
);
我正在使用名为simple-update-in的程序包来修改对象。您应该可以通过action.payload.activity.channelData