接吻的消息顺序 - whatsapp
Messages order of smooch - whatsapp
我有一个机器人,我使用 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);
});
});
所有数据消息如下所示:
{
role: "appMaker",
type: "text",
text: txt
}
我试着看看如何安排它,我看到有一个选项可以从 webhook 获取消息状态,然后等待每条消息到达适当的状态。然后才发送以下消息。
但是我想知道有没有更简单的?是否有一个参数可以添加到消息本身来说明它的顺序是什么?或者 npm 中是否有提供有关消息及其状态的信息?
在下面的文档中,Whatsapp 提到他们不保证消息的顺序。
https://developers.facebook.com/docs/whatsapp/faq#faq_173242556636267
同样的限制适用于任何异步消息传递平台(大多数都是),因此后端处理时间和其他随机因素会影响单个消息 processing/delivery 次,从而影响用户设备上的排序(例如后端拥塞、附件、邮件大小等)。
您可以尝试在发送每封邮件之间添加一个小的[取决于类型]延迟,以减少错误排序邮件的频率(带有附件的邮件等的延迟时间更长)。
万无一失的方法(复杂得多)是在你这边通过 appUser 对消息进行排队,只有在收到前一条消息的 message:delivery:user webhook 事件后才发送下一条消息。
我有一个机器人,我使用 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);
});
});
所有数据消息如下所示:
{
role: "appMaker",
type: "text",
text: txt
}
我试着看看如何安排它,我看到有一个选项可以从 webhook 获取消息状态,然后等待每条消息到达适当的状态。然后才发送以下消息。
但是我想知道有没有更简单的?是否有一个参数可以添加到消息本身来说明它的顺序是什么?或者 npm 中是否有提供有关消息及其状态的信息?
在下面的文档中,Whatsapp 提到他们不保证消息的顺序。 https://developers.facebook.com/docs/whatsapp/faq#faq_173242556636267
同样的限制适用于任何异步消息传递平台(大多数都是),因此后端处理时间和其他随机因素会影响单个消息 processing/delivery 次,从而影响用户设备上的排序(例如后端拥塞、附件、邮件大小等)。
您可以尝试在发送每封邮件之间添加一个小的[取决于类型]延迟,以减少错误排序邮件的频率(带有附件的邮件等的延迟时间更长)。
万无一失的方法(复杂得多)是在你这边通过 appUser 对消息进行排队,只有在收到前一条消息的 message:delivery:user webhook 事件后才发送下一条消息。