迷惑電話がかかってきたら自動的にガチャ切りする

ALL
スポンサーリンク

自宅の電話がひかり電話の場合に、迷惑電話をガチャ切りする機能を Linux で実装します。
迷惑電話がかかってきたら自動的にすぐに切るので、電話のコール音もしません。
ワン切りしてくるような場合でも、相手のワン切りより速くガチャ切りできます。

パソコン鳥の家では、このシステムを RaspberryPI で動作させています。

なお、本記事の内容を実践する場合は自己責任にてお願いします。

スポンサーリンク

ガチャ切りする対象の電話番号

ここでは、0120 や 0800 で始まる番号から、かかってきたらガチャ切りします。
これらはフリーダイヤルで、迷惑電話がかかってくることが多いため、対象とします。

ただし、まともな業者も使用する番号なので、そのような電話も取れなくなることに注意して下さい。

準備

下の記事で紹介した baresip を使用しています。
「動作確認」までを実施して下さい。


Linux でひかり電話にかかってきた電話番号を取得する(2021) | パソコン鳥のブログ

次に、~/.baresip/config ファイルで、以下のように行頭の # を外して、モジュール cons.so を有効にします。

~/.baresip/config

module                  cons.so

また、netcatコマンドも使用します。
netcatコマンドが無い場合は、インストールしておいて下さい。

次のファイルを用意します。

hangup.pl

use strict;
use warnings;
use utf8;
use IO::Handle;
STDOUT->autoflush(1);
binmode(STDOUT, ":utf8");
my( $number );
open( IN , 'baresip 2>&1|' );
while( <IN> ){
    if( $_ =~ /from: (\d+) sip/ ){
        $number = $1;
        if( $number =~ /^0120/ || $number =~ /^0800/ ){
            system( "netcat 127.0.0.1 5555 -N < ab.txt 2>&1 > /dev/null" );
        }
    }
}
close( IN );

先ほど用意した hangup.pl と同じ場所に、1行にaとbだけを書いたファイル ab.txt を用意します。
a,bの後には改行を入れてください。

ab.txt

a
b

以上で準備は完了です。

実行

以下のコマンドを実行します。

perl hangup.pl &

これで、迷惑電話がかかってきたら、自動的にガチャ切りします。

しくみ

baresip は、~/.baresip/accounts ファイルで指定された SIPアカウントが対象とする、ひかり電話(IP電話)に対して、コマンドで操作ができます。

このコマンドは、~/.baresip/config ファイルで stdio.so が有効な場合は、キー入力で実行できます。
cons.so が有効な場合は、ネットワーク越しにコマンドを実行できます。この場合は、telnet等で5555番ポートに接続して、コマンドを流し込みます。

コマンドでは、電話をとったり、切ったりができます。
例えば、a(+Enter)で電話をとり、b(+Enter)で電話を切ります。
a(+Enter)b(+Enter) と続けて実行することにより、電話をとってすぐに切るガチャ切りになります。

今回のスクリプト hangup.pl では、0120 や 0800 で始まる番号でかかってきた場合に、上記動作をさせることで、迷惑電話をすぐに切っています。
実行するコマンドをあらかじめファイル ab.txt に書いておき、それを netcat を使ってネットワーク越し(正確には自分自身の 127.0.0.1宛)に流し込んで実行しています。

おわりに

0120 や 0800 で始まる番号は、まともな業者も使用していて、そのような電話も取れなくなります。
また、すぐに電話をガチャ切りするとは言え、電話の着信履歴には残ります。
これらの点に注意して下さい。

コメント

  1. lala より:

    ab.txt
    の中身が「b」だけになっているように見えるのですが、
    「ab」と記述すればいいのでしょうか?

  2. パソコン鳥 より:

    ご指摘ありがとうございます。
    ab.txtの中身は、
    a
    b
    と2行にします。a,bの後には改行を入れてください。
    本文の方も修正しました。

  3. lala より:

    修正ありがとうございました。
    とても参考になります。

    導入過程で
    wget http://www.creytiv.com/pub/baresip-0.5.5.tar.gz
    wget http://www.creytiv.com/pub/re-0.5.5.tar.gz
    wget http://www.creytiv.com/pub/rem-0.5.2.tar.gz

    の三つをインストールしようと実行したところサイト自体なくなっている感じでした。
    初心者なのでわからないのですが、これらのソースコードは他でも入手可能なものなのでしょうか?
    それとも既に入手不可能なものになったのでしょうか?

  4. パソコン鳥 より:

    すみません、ご指摘ありがとうございます。
    現在ダウンロード先が無くなっていますので、記事中の「準備」の

    Linux でひかり電話にかかってきた電話番号を取得する
    https://pcvogel.sarakura.net/2017/11/09/31778

    の代わりに、

    Linux でひかり電話にかかってきた電話番号を取得する(2021)
    https://pcvogel.sarakura.net/2021/01/17/32108

    の方を参照してください。
    本文の方も反映します。

  5. lala より:

    ありがとうございました。
    おかげで一通り完成しました。

    perlも初めて触ったのですが、記事を参考にさせていただいたため
    無事動作しました。

  6. パソコン鳥 より:

    こちらこそ、ご指摘いただけまして記事の不備を修正できました。
    ありがとうございました。