顺序"/>
smooch的消息顺序
我有一个机器人,我使用smooch在whatsapp上运行该机器人。
我为此使用'smooch-core'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);
});
});
所有dataMessage看起来像这样:
{
role: "appMaker",
type: "text",
text: txt
}
我试图查看如何安排它,并且看到有一个选项可以从Webhook获取消息状态,然后等待每条消息到达相应的状态。然后才发送以下消息。
但是我想知道有没有更简单的东西?是否有可以添加到消息本身的参数来说明其顺序是什么?还是在npm中提供一些有关消息及其状态的信息?
回答如下:在下面的文档中,Whatsapp提到它们不保证消息顺序。https://developers.facebook/docs/whatsapp/faq#faq_173242556636267
相同的限制适用于任何异步消息传递平台(并且大多数都是如此),因此后端处理时间和其他随机因素会影响单个消息的处理/传递时间,从而影响用户设备上的订购(例如,后端拥塞,附件,消息尺寸等)。
您可以尝试在发送每封邮件之间添加一个小的[类型相关的]延迟,以减少错误排列的邮件的频率(对于带有附件的邮件等会更长的延迟。)>
防呆方法(更为复杂)是由您的appUser将消息排队,仅在收到上一条消息的message:delivery:user webhook事件之后才发送下一条消息。
更多推荐
smooch的消息顺序
发布评论