3

メッセージのカーボンコピーを外部 RESTful API に送信する ejabberd モジュールを作成しています。すべてが正常に機能し、その API へのリクエストは、送信者、受信者、およびメッセージ本文を含む POST パラメータを送信します。

このために user_send_packet および user_receive_packet フックをトリガーしており、パケットからパラメーター (送信者、受信者、本文) を抽出できます。

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 名簿 (参加者) も送信したいのですが、それらにアクセスする方法がわかりません。

これのためのイベントはありますか?誰かが私にいくつかのドキュメントを教えてもらえますか?

前もって感謝します!

4

1 に答える 1

0

特定の部屋の MUC 参加者を取得したいようです。

mod_muc.erl と mod_muc_room.erl を見る必要があります。どのバージョンの ejabberd を使っているか分からないので、最新の ejabberd に基づいて説明します。

呼び出して部屋のpidを取得した後

mnesia:dirty_read(muc_online_room, {Room, Host})

あなたは電話することができます

gen_fsm:sync_send_all_state_event(Pid, {get_disco_item, From, Lang}, 100)

または同様のコードを使用します。ユーザーリストは返信にあります。

返信形式が気に入らない場合は、handle_sync_eventmod_muc_room.erl にカスタムを追加することをお勧めします。

于 2014-01-03T06:52:23.593 に答える