ejabberd - 在 pubsub 项目中获取发布者 JID
ejabberd - Get publisher JID in pubsub item
http://www.xmpp.org/extensions/xep-0060.html#impl-association 定义了一个名为 'itemreply' 的属性,它允许您将发布者信息与要发布的项目一起添加。看起来 ejabberd 没有实现上述选项。还有其他解决方法吗?
根据 https://support.process-one.net/browse/EJAB-1347 的说法,有一个可用的补丁可以完成它,但我不确定如何应用该补丁。正在寻找相同的指导。
谢谢,
米顿
补丁太旧,无法在 ejabberd 代码库上应用。它需要更新到最新版本,但我不认为这是一个高度要求的功能。
您可能应该提交项目 Github 的功能请求:https://github.com/processone/ejabberd/issues
设法更改代码以添加发布者信息。以下是相同的步骤。
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;
重新启动您的服务器,您应该会获得发布者信息以及正在发布的项目。
http://www.xmpp.org/extensions/xep-0060.html#impl-association 定义了一个名为 'itemreply' 的属性,它允许您将发布者信息与要发布的项目一起添加。看起来 ejabberd 没有实现上述选项。还有其他解决方法吗?
根据 https://support.process-one.net/browse/EJAB-1347 的说法,有一个可用的补丁可以完成它,但我不确定如何应用该补丁。正在寻找相同的指导。
谢谢, 米顿
补丁太旧,无法在 ejabberd 代码库上应用。它需要更新到最新版本,但我不认为这是一个高度要求的功能。
您可能应该提交项目 Github 的功能请求:https://github.com/processone/ejabberd/issues
设法更改代码以添加发布者信息。以下是相同的步骤。
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;
重新启动您的服务器,您应该会获得发布者信息以及正在发布的项目。