【问题标题】:Messages order of smooch - whatsapp接吻的消息顺序 - whatsapp
【发布时间】:2020-08-11 23:55:57
【问题描述】:

我有一个机器人,我使用 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 中有什么东西可以提供有关消息及其状态的信息?

【问题讨论】:

    标签: node.js npm message whatsapp smooch


    【解决方案1】:

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

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

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

    万无一失的方法(复杂得多)是在您端通过 appUser 对消息进行排队,仅在收到上一条消息的 message:delivery:user webhook 事件后发送下一条消息。

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2019-09-19
      • 2015-12-31
      • 2011-06-14
      • 2020-10-25
      • 1970-01-01
      • 2013-04-23
      相关资源
      最近更新 更多