问题描述
这个问题只存在于 Converse API,当使用网络聊天时它工作正常。
检查数据库时,‘createdOn’中的时间戳与按顺序发送的消息完全相同,这就是顺序混淆的原因,例如:
奇怪的是,在查看数据库时,createdOn
列中的 event
属性与 createdOn
列中的时间戳不同,它实际上用于对事件:
事件栏
//Dropdown Component that asks user for input
{""type"":""custom"",""channel"":""api"",""direction"":""outgoing"",""createdOn"":""2021-04-13T12:45:54.924Z""}
//Answer that is supposed to be displayed after user input
{""type"":""text"",""createdOn"":""2021-04-13T12:46:02.645Z““}
//User Input
{""type"":""text"",""direction"":""incoming"",""createdOn"":""2021-04-13T12:46:02.420Z""}
CreatedOn 列
//Dropdown Component
2021-04-13 12:45:55.243118+00
//Message that should be displayed after User Input
2021-04-13 12:46:03.253342+00
//User Input
2021-04-13 12:46:03.253342+00
有什么办法可以防止这种情况发生吗?
解决方法
我认为在 Botpress 中不可能阻止这种情况。来自事件表 schema。 CreatedOn
已创建,但 Knex。但是 event
列是一个 JSON 值。我没有找到在数据库中插入 event
列或对应于 event.createdOn
值的引用。
我很好奇,我尝试使用 Channel-web 模块。时间戳差异也会附加到 channel-web 模块中。
前端发布请求
初始负载
curl 'http://localhost:3001/api/v1/bots/weather/mod/channel-web/messages?__ts=1625757442879'
-H 'Accept: application/json,text/plain,*/*'
-H 'Authorization: Bearer {{BEARER_TOKEN}}'
--data-raw '{"webSessionId":"/guest#S9UoXB2NuDfySWqgAAAK","conversationId":7,"payload":{"type":"text","text":"hello"}}'
数据库表事件
sqlite> sqlite> select event,createdOn from events where botId = 'weather';
我使用 JQ 将事件 列 转换为可读格式
jq .createdOn,.payload
"2021-07-08T15:17:22.888Z"
{
"type": "text","text": "hello"
}
createdOn
列(不在事件列中)
2021-07-08T15:17:23.456Z
插入时触发
您可以在插入的值上创建触发器。此 post 说明如何使用 JSON 列值(例如事件列)执行此操作。