将变量从Webchat客户端传递到bot框架

时间:2020-11-10 18:54:24

标签: botframework direct-line-botframework web-chat

我需要将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,但是每当我以用户身份从网聊客户端发送消息时,它都会出现两次(第一条消息失败,第二条消息成功)。我不确定为什么要这么做。如果有人对这个问题有所了解,我们将不胜感激。

1 个答案:

答案 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

在漫游器端访问它