1

我在 ejabberd 上工作了很长一段时间,我正在用内部的 Ejabberd 替换第三方聊天基础设施。因为它是生产切换,所以我们需要在切换到 ejabberd 时维护以前的聊天消息。

所以我创建了所有的花名册,将用户迁移到 ejabberd,一切正常,现在我面临的主要挑战是消息迁移。我正在为用户、名册和消息使用 mysql。我正在运行一个脚本,该脚本直接将数据从先前的聊天内容推送到 ejabberd mysql。

但是当我连接到用户时,我可以看到通过 ejabberd 发送的新聊天消息,但是同一用户的迁移聊天不可见,也不会传播回客户端。

有人可以帮忙吗?

这是我在 mysql 中输入的两个条目,第一个是 ejabberd 条目,另一个是手动条目,客户端能够同步第一个但不能同步另一个。

username    timestamp   peer    bare_peer   xml txt id  kind    nick    created_at
xyz-customer    1454573488523175 abc-provider@xxx.amazonaws.com abc-provider@xxx.amazonaws.com  "<message from='xyz-customer@xxx.amazonaws.com/2131165549e1bc6553-32b9-4ec4-92bd-c9ed80fb5374' to='abc-provider@xxx.amazonaws.com' xml:lang='en' id='oG3Vb-568' type='chat'><body> CnsfjffsjJ</body><thread>90275196-0096-4bb4-a95d-d72ea5238f74</thread><request xmlns='urn:xmpp:receipts'/><delay xmlns='urn:xmpp:delay' stamp='2016-02-04T08:11:27.194+00:00' from='xyz-customer@xxx.amazonaws.com/2131165549e1bc6553-32b9-4ec4-92bd-c9ed80fb5374'/><markable xmlns='urn:xmpp:chat-markers:0'/><request xmlns='urn:urbanclap:request' requestId=''/><active xmlns='http://jabber.org/protocol/chatstates'/></message>"   " CnsfjffsjJ"   208044  chat        "2016-02-04 08:11:28"

xyz-customer    1454570506606317 abc-provider@xxx.amazonaws.com abc-provider@xxx.amazonaws.com  "<message from='xyz-customer@xxx.amazonaws.com' to='abc-provider@xxx.amazonaws.com' xml:lang='en' id='I5sO7-2' type='chat'><body>GB hard</body><request xmlns='urn:xmpp:receipts'/><markable xmlns='urn:xmpp:chat-markers:0'/><active xmlns='http://jabber.org/protocol/chatstates'/></message>"    "GB hard"   208045  chat    NULL    "2016-02-04 07:21:46"
4

1 回答 1

0

我猜您正在尝试填写邮件存档表,但期望离线邮件传递。请确保您在正确的表格中添加消息。我猜你正在存档表中写入,但应该在假脱机中写入。

请注意,用于传递离线消息的假脱机表仅在新用户登录时检查。这不是一种在运行会话中添加消息以传递给用户的方法。这意味着您不能仅通过写入 MySQL 消息表来真正同步两个正在运行的平台。您需要通过编写自定义 ejabberd 插件来实际路由消息。

于 2016-02-03T13:49:48.973 回答