接吻的信息顺序-whatsapp



我有一个机器人,我用smoch在whatsapp上运行机器人。

我用"接吻核心"npm。

当我一个接一个地发送很多消息时,有时消息会在whatsapp中以相反的顺序显示。

这是发送消息的代码:

for (const dataMessage  of data) {
await sendMessage(dataMessage);
}

function sendMessage(dataMessage) {
return new Promise((resolve, reject) => {
smoochClient.appUsers.sendMessage({
appId: xxxx,
userId: userId,
message: dataMessage
}).then((response) => {
console.log('response: ' + JSON.stringify(response), 'green');
resolve();
}).catch(err => {
console.log('error: ' + JSON.stringify(err), 'red');
reject(err);
});
});

所有数据消息如下:

{
role: "appMaker",
type: "text",
text: txt
}

我试着看看如何安排它,我发现有一个选项可以从webhook获取消息状态,然后等待每条消息到达合适的状态。然后发送以下消息。

但我想知道有什么更简单的吗?是否有一个参数可以添加到消息本身,以说明其顺序?或者npm中是否有提供消息及其状态信息的内容?

在下面的文档中,Whatsapp提到他们不保证消息排序。https://developers.facebook.com/docs/whatsapp/faq#faq_173242556636267

同样的限制适用于任何异步消息平台(大多数都是(,因此后端处理时间和其他随机因素可能会影响单个消息处理/传递时间,从而影响用户设备上的订购(例如后端拥塞、附件、消息大小等(

您可以尝试在发送每条消息之间添加一个小的[取决于类型]延迟,以减少错误排序消息的频率(对于带有附件的消息,延迟更长,等等(

防傻的方法(更复杂(是通过你端的appUser对消息进行排队,只在收到消息后发送下一条消息:前一条消息的delivery:user-webhook事件。

最新更新