サービス案内を自動で送り返す
コマンドメールで guide というコマンドを受けるとガイドを送り返します。
この仕組みを応用すると良いでしょう。
デフォルトではメッセージテンプレートのガイド案内が使われます。
&fml4; のようにMLのホームに guide ファイルがあるわけではありません。
もっとも &fml4; との互換性維持のために、
各MLのホームディレクトリに guide ファイルをおけば、
それを送り返してくれます。
「メールの内容にかかわらず常にガイドを送り返す」には、
もうひとひねり必要です。
このためには、
次のように HOOK で常に guide コマンドを実行するようにするとよいでしょう。
なお、この例では通常の処理は行なわないようにしています。
$distribute_run_start_hook = q{
# guide コマンドを呼び出します。
# guide コマンドの内容は汎用のメールキューシステムに渡されます。
use FML::Command;
my $dispatch = new FML::Command;
my $context = $curproc->command_context_init("guide");
$dispatch->guide($curproc, $context);
# 通常の処理を行ないません。
$curproc->stop_this_process();
};
# コマンドメールでも同じくガイドを送り返すように
$command_mail_run_start_hook = $distribute_run_start_hook;
&fml4; と異なり、
配送用とコマンドメール用それぞれのプロセスごとに
HOOK が分かれていることに注意して下さい。
このため上のように、
最後に同じ内容のコマンドメール用の HOOK も定義する必要があります
(次のように変数をコピーすれば十分です)。
$command_mail_run_start_hook = $distribute_run_start_hook;
お礼”も”返す意見受け付け用ML
「意見受付」用のMLを考えてみましょう。
前レシピに似ていますが、少し違います。
このMLに意見を送ってくれた人には、
とりあえずお礼の返事
「ご意見ありがとうございました。返事はしばらく待ってね。」を出し、
投稿されたメールを関係者に配送します。
よって、
(1) だれでも投稿できて、
(2) お礼を常に出し、
(3) さらに普通のMLとして動作する、
ように設定します。
(3) は「返事の前に、関係者が議論するため」の機能という想定です。
[config.cf]
article_post_restrictions = permit_anyone
=cut
$distribute_run_start_hook = q{
my $cred = $curproc->credential();
my $sender = $cred->sender();
# MLのメンバーでないならガイドを送り返します。
# MLのメンバーに対しては普通のMLとなります。
# この HOOK により、ガイドを送り返す機能が"追加されている"状態です。
unless ($cred->is_member($sender)) {
# guide コマンドを呼び出します。
use FML::Command;
my $dispatch = new FML::Command;
my $context = $curproc->command_context_init("guide");
$dispatch->guide($curproc, $context);
}
};