ヤマハの RT58i には着信した電話の発信者番号を syslog に出力する機能があります。そして syslog デーモンの一種 rsyslog にはログをメールで送る機能があります。
そこでこれを組み合わせたら、着信した電話の発信者番号をメールで通知することができるのではないかと考えて試してみたので設定を紹介します。
前提条件
今回試した設定では以下のバージョン (リビジョン) を利用しました。
準備
RT58i でログを別ホストに送信する設定
まず RT58i でログを別ホストに送信するように設定します。以下のようにホスト名なり IP アドレスなりで rsyslog の動作するホストを指定します。
syslog host syslog.example.com
これを設定したら save
を忘れずに。
rsyslog で別ホストからログを受信する設定
rsyslog.conf
(Debian の場合は /etc/rsyslog.d
以下の任意の example.conf
ファイルに記載するとよいでしょう。) に以下を記述して UDP 受信を有効にします (ここでは legacy configuration で記載しています。)。
$ModLoad imudp
$UDPServerRun 514
ここまで設定して service rsyslog force-reload
を実行すれば、RT58i のログが rsyslog で記録されるようになるはずです。
rsyslog で着信電話の発信者番号をメール送信する設定
RT58i では電話の着信があると以下のようなログを残します。
TEL[**/*] InComing Call from 0ABCDEFGHIJ
そこでまずこれを抜き出すために以下のような正規表現を使ったフィルターを使います (まあ国内の電話番号なら必ず 0 で始まるはずなので [0-9]
は余計かもしれませんが念のために入れておきました。)。
:msg,regex,"InComing Call from [0-9]" action
rsyslog の仕様なのか TEL[…]
の部分は msg
プロパティーには含まれないので正規表現には含めていません。
次にこのフィルターを利用して以下のように発信者番号をメール送信するように設定します。
$ModLoad ommail
$template MailSubject,"Got an incoming call"
$template MailBody,"From %msg:R,ERE,1: from ([0-9]+)--end%"
$ActionMailFrom nobody@example.com
$ActionMailTo somebody@example.com
$ActionMailSubject MailSubject
:msg,regex,"InComing Call from [0-9]" :ommail:;MailBody
ここまで終わったらもう一度 service rsyslog force-reload
を実行して新しい設定を有効にします。
最後に自分の携帯電話から発信するなり誰かに発信してもらうなりして実際にメールで発信者番号が通知されることを確認すれば作業は終わりです。
たぶん後継機種の NVR500 でも同様にできると予想しますが、そこは自己責任でお願いします。