在我们的网站上,我们使用Botpress的网站嵌入函数
<script>
window.botpressWebChat.init({
host: OWN_URL:BOTPRESS_PORT,
botId: "test12345"
})
</script>它显示机器人并允许与它交互。到目前为止,一切都如预期的那样运作。
但是,在下一步中,我们打算在登录回系统时定义一个自定义userId来存储和恢复现有会话。虽然Botpress允许定义自定义userId,但它似乎不用于存储和重新加载当前会话在以后的时间点。相反,即使在使用此userId初始化聊天/会话时
<script>
window.botpressWebChat.init({
host: OWN_URL:BOTPRESS_PORT,
botId: "test12345",
userId: "example12345"
})
</script>然后从Networks检索conversationId,并尝试使用以下方法重新加载另一个窗口中的会话:
<script>
window.botpressWebChat.init({
host: OWN_URL:BOTPRESS_PORT,
botId: "test12345",
userId: "example12345",
conversationId: ID_RETRIEVED_FROM_NETWORKS_TAB
})
</script>Botpress发送一个"The conversation ID doesn't belong to that user"错误消息,它可以在这个文件中找到。
调试错误点告诉我们,即使找到了会话:
{
id: 'd3178f66-3b4f-493e-aa39-ce8fcc2195a3',
clientId: '076ea353-fcd7-4984-869e-713e12b0176f',
userId: 'a317d806-a6ad-493f-b3b3-70c792f29445',
createdOn: 2022-07-15T16:39:56.523Z
}userId与(例如,705d31e8-c6e0-4e7b-a28f-f0da46390653) -> conversation.userId !== userId不同。
似乎在初始化bot时设置一个userId (或者稍后--我们也尝试过了)对会话中的userId集没有影响。
现在的问题如下:如何在Botpress中恢复自定义userId的现有会话?或者这是指用户认证时的亲功能?
我们的主要想法是使用现有的用户(我们的系统),例如,example12345进行会话,以及当登录回系统(例如,从另一台计算机)恢复这个会话。
谢谢你的暗示!
其他链接:
发布于 2022-07-18 11:04:27
TL;DR
任何24到40个字符长的字母数字字符串都适用于userId。
研究
根据源代码,有效的userId必须是长篇 ( 40和模式 )。
尽管示例值(example12345)符合标准,但它确实不起作用。
您似乎表明该框架生成了UUID,因此,在测试了一些之后,UUID工作。
因此,nanoid 默认情况下使用相同的模式。在测试了一些之后,发现任何字符串都可以从24个字符长开始工作。
再生产
以下代码公开nanoId并使用来自localStorage的userId初始化框架:
<script src="http://localhost:3000/assets/modules/channel-web/inject.js"></script>
<script type="module">
import { nanoid } from 'https://cdn.jsdelivr.net/npm/nanoid/nanoid.js';
window.nanoid = nanoid;
window.botpressWebChat.init({
host: "http://localhost:3000",
botId: "test",
userId: window.localStorage.getItem('userId')
});
setTimeout(() => window.botpressWebChat.sendEvent({ type: 'show' }), 1000);
</script>第1步:生成第一个ID并表示Hi

第2步:生成第二个ID并表示Hi

步骤3:重新加载第一个ID并检索我以前的Hi (注意时间戳签出)

更多信息
在第一次测试时,我注意到在重新加载后不需要指定userId来检索会话。
https://stackoverflow.com/questions/72997779
复制相似问题