我正在构建一个ejabberd模块,将消息的碳副本发送到外部RESTful API。一切正常,对该API的请求正在发送带有发件人,收件人和消息正文的POST参数。
我正在为此触发user_send_packet和user_receive_packet挂钩,我可以从数据包中提取params(Sender,Recipient,Body):
Sender = xml:get_tag_attr_s("from", Packet),
Recipient = xml:get_tag_attr_s("to", Packet),
Body = xml:get_path_s(Packet, [{elem, "body"}, cdata])
对于群聊(MUC)我还想在参数中发送MUC名单(参与者),但我不知道如何访问它们。
有这样的事件吗?有人能指点我一些文件吗?
提前致谢!
答案 0 :(得分:0)
您似乎希望获得特定房间的MUC参与者。
您需要查看mod_muc.erl和mod_muc_room.erl。 我不确定你使用哪个版本的ejabberd,所以我会根据最新的ejabberd进行解释。
通过致电
获得房间的pidmnesia:dirty_read(muc_online_room, {Room, Host})
你可以打电话
gen_fsm:sync_send_all_state_event(Pid, {get_disco_item, From, Lang}, 100)
或使用类似的代码。用户列表在回复中。
如果您不喜欢回复格式,可能需要将自定义handle_sync_event
添加到mod_muc_room.erl。