【问题标题】:ejabberd - Get publisher JID in pubsub itemejabberd - 在 pubsub 项目中获取发布者 JID
【发布时间】:2016-01-27 18:25:11
【问题描述】:

http://www.xmpp.org/extensions/xep-0060.html#impl-association 定义了一个名为“itemreply”的属性,可让您在发布项目的同时添加发布者信息。看起来 ejabberd 并没有实现上述选项。有没有其他解决方法?

根据https://support.process-one.net/browse/EJAB-1347,有一个可用的补丁可以实现它,但我不确定如何应用该补丁。寻找相同的指导。

谢谢, 米通

【问题讨论】:

    标签: xmpp ejabberd


    【解决方案1】:

    补丁太旧,无法在 ejabberd 代码库上应用。它需要更新到最新版本,但我不认为这是一个要求很高的功能。

    您可能应该在项目 Github 上提交功能请求:https://github.com/processone/ejabberd/issues

    【讨论】:

    • 我有一个要求,我需要使用 pubsub 实现 MUC,因此需要上述功能。我将提交功能请求。希望它在下一个版本中实现。
    【解决方案2】:

    设法更改代码以添加发布者信息。以下是相同的步骤。

    1) 打开文件 src/mod_pubsub.erl

    2) 找到如下函数

    itemAttr(ItemId) -> [{<<"id">>, ItemId}].
    

    3) 在上述函数下方添加一个新函数

    itemAttr(ItemId, From) -> [{<<"id">>, ItemId},{<<"publisher">>, From}].
    

    4) 接下来找到函数命名

    broadcast_publish_item(Host, Node, Nidx, Type, NodeOptions, ItemId, From, Payload, Removed) ->
    

    5) 替换

    Stanza = event_stanza(
                    [#xmlel{name = <<"items">>, attrs = nodeAttr(Node),
                            children = [#xmlel{name = <<"item">>, attrs = itemAttr(ItemId),
                                    children = Content}]}]),
    

    Stanza = event_stanza(
                    [#xmlel{name = <<"items">>, attrs = nodeAttr(Node),
                            children = [#xmlel{name = <<"item">>, attrs = itemAttr(ItemId, jlib:jid_to_string(From)),
                                    children = Content}]}]),
    

    6) 使用重新编译代码

    sudo make; sudo make install;
    

    重新启动您的服务器,您应该会获得发布者信息以及正在发布的项目。

    【讨论】:

      猜你喜欢
      • 2022-12-10
      • 1970-01-01
      • 1970-01-01
      • 2017-02-18
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多