如何通过 ejabberd 管理员 API 获取 muc room vcard?
How to get muc room vcard trough ejabberd admin API?
所以正如标题所暗示的那样,当使用 ejabberd 的管理员 api 时,我似乎无法从 muc rooms 获取 vcard 信息:https://docs.ejabberd.im/developer/ejabberd-api/admin-api/#get-vcard .
当我在 MUC 房间尝试时,get_vcard
(以及 get_vcard2
)和 set_vcard
都不起作用。
我在做,例如:
ejabberdctl get_vcard my-room.jid conference.myhostname.com NICKNAME
并得到错误:
** exception error: {module_not_loaded,mod_vcard,
<<"conference.myhostname.com">>}
in function gen_mod:get_module_opts/2 (src/gen_mod.erl, line 338)
in call from gen_mod:get_module_opt/3 (src/gen_mod.erl, line 318)
in call from gen_mod:db_mod/3 (src/gen_mod.erl, line 352)
in call from mod_vcard:get_vcard/2 (src/mod_vcard.erl, line 311)
in call from mod_admin_extra:get_vcard_content/3 (src/mod_admin_extra.erl, line 1153)
in call from mod_admin_extra:get_vcard/3 (src/mod_admin_extra.erl, line 1132)
in call from ejabberd_ctl:call_command/4 (src/ejabberd_ctl.erl, line 315)
in call from ejabberd_ctl:try_call_command/4 (src/ejabberd_ctl.erl, line 280)
我对普通用户成功处理了所有相同的请求。
MUC 房间不支持此功能吗?
编辑:顺便说一句,我正在使用 ejabberd 20.4.0。
提前致谢!
XEP-0045中没有提到vcards,XEP-0054中也没有提到MUC房间,所以我想知道这是不是一个意想不到的“功能”。
在 ejabberd 中,MUC 房间 vcard 不是使用 mod_vcard 存储的,而是存储在房间自己的配置中。因此,get_vcard 命令不起作用,因为它们使用 mod_vcard,并且 mod_vcard 对 MUC 或 MUC 房间 vcards 一无所知。
我现在已经在 get_vcard 命令中实现了对 MUC 房间 vcard 的支持,请参阅:
https://github.com/processone/ejabberd/commit/19019bbe32be2074e3b78ac13fdfc30c260fff5e
关于设置 MUC 房间 vcard,目前唯一的方法是使用 change_room_option,并设置整个房间 vcard。
所以正如标题所暗示的那样,当使用 ejabberd 的管理员 api 时,我似乎无法从 muc rooms 获取 vcard 信息:https://docs.ejabberd.im/developer/ejabberd-api/admin-api/#get-vcard .
当我在 MUC 房间尝试时,get_vcard
(以及 get_vcard2
)和 set_vcard
都不起作用。
我在做,例如:
ejabberdctl get_vcard my-room.jid conference.myhostname.com NICKNAME
并得到错误:
** exception error: {module_not_loaded,mod_vcard,
<<"conference.myhostname.com">>}
in function gen_mod:get_module_opts/2 (src/gen_mod.erl, line 338)
in call from gen_mod:get_module_opt/3 (src/gen_mod.erl, line 318)
in call from gen_mod:db_mod/3 (src/gen_mod.erl, line 352)
in call from mod_vcard:get_vcard/2 (src/mod_vcard.erl, line 311)
in call from mod_admin_extra:get_vcard_content/3 (src/mod_admin_extra.erl, line 1153)
in call from mod_admin_extra:get_vcard/3 (src/mod_admin_extra.erl, line 1132)
in call from ejabberd_ctl:call_command/4 (src/ejabberd_ctl.erl, line 315)
in call from ejabberd_ctl:try_call_command/4 (src/ejabberd_ctl.erl, line 280)
我对普通用户成功处理了所有相同的请求。
MUC 房间不支持此功能吗?
编辑:顺便说一句,我正在使用 ejabberd 20.4.0。
提前致谢!
XEP-0045中没有提到vcards,XEP-0054中也没有提到MUC房间,所以我想知道这是不是一个意想不到的“功能”。
在 ejabberd 中,MUC 房间 vcard 不是使用 mod_vcard 存储的,而是存储在房间自己的配置中。因此,get_vcard 命令不起作用,因为它们使用 mod_vcard,并且 mod_vcard 对 MUC 或 MUC 房间 vcards 一无所知。
我现在已经在 get_vcard 命令中实现了对 MUC 房间 vcard 的支持,请参阅: https://github.com/processone/ejabberd/commit/19019bbe32be2074e3b78ac13fdfc30c260fff5e
关于设置 MUC 房间 vcard,目前唯一的方法是使用 change_room_option,并设置整个房间 vcard。