Botpress Converse API:数据库中的事件顺序事件表 前端发布请求数据库表事件

问题描述

这个问题只存在于 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 中不可能阻止这种情况。来自事件表 schemaCreatedOn 已创建,但 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 列值(例如事件列)执行此操作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...