如何通过 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。