@Amiramix が述べていることは正確ですが、全体像ではありません。
ejabberd には、モジュール間でイベントを通信する低結合メカニズムがあります。これは、フックとハンドラーの概念です。リンクは MongooseIM のドキュメントを指していますが、このメカニズムは両方のコードベースでほぼ同じです。
一般に、1 つのモジュールでhookを呼び出すことができます。これは関数呼び出しに似ていますが、登録されたハンドラーによっては、実行されるアクションが発生する場合と発生しない場合があります。他のモジュールは、選択したフックのハンドラーを登録できます。問題のモジュールを作成している場合、これは必要な通信チャネルを提供するメカニズムです。
物事をより具体的にするために、アクセスできるmod_filter
情報が必要になるたびに、カスタムフック名で実行できます。そのフックのハンドラーを (通常はその関数で) 登録する場合、 に関連するデータを返すことができます。ただし、さまざまなモジュールがフックのハンドラーを実装できるため、直接関数呼び出し ( など) を使用した場合のように、 とは結合されません。mod_calculate
ejabberd_hooks:run_fold/4
mod_calculate
start
mod_filter
mod_filter
mod_calculate
mod_calculate:some_function(...)