自宅の電話がひかり電話の場合に、迷惑電話をガチャ切りする機能を Linux で実装します。
迷惑電話がかかってきたら自動的にすぐに切るので、電話のコール音もしません。
ワン切りしてくるような場合でも、相手のワン切りより速くガチャ切りできます。
パソコン鳥の家では、このシステムを RaspberryPI で動作させています。
なお、本記事の内容を実践する場合は自己責任にてお願いします。
ガチャ切りする対象の電話番号
ここでは、0120 や 0800 で始まる番号から、かかってきたらガチャ切りします。
これらはフリーダイヤルで、迷惑電話がかかってくることが多いため、対象とします。
ただし、まともな業者も使用する番号なので、そのような電話も取れなくなることに注意して下さい。
準備
下の記事で紹介した baresip を使用しています。
「動作確認」までを実施して下さい。
Linux でひかり電話にかかってきた電話番号を取得する:パソコン鳥のブログ
2021.7.25 次の記事の方を参照してください
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 で始まる番号は、まともな業者も使用していて、そのような電話も取れなくなります。
また、すぐに電話をガチャ切りするとは言え、電話の着信履歴には残ります。
これらの点に注意して下さい。
その他、ひかり電話を使っている場合は、次の記事で説明した機能もあります。
RaspberryPiとなっていますが、Linuxで実装できますので、見てみて下さい。
ひかり電話の着信お知らせメールみたいなものを RaspberryPi で実現する パソコン鳥のブログ
RaspberryPiでひかり電話の着信音をmp3で鳴らす パソコン鳥のブログ
コメント
ab.txt
の中身が「b」だけになっているように見えるのですが、
「ab」と記述すればいいのでしょうか?
ご指摘ありがとうございます。
ab.txtの中身は、
a
b
と2行にします。a,bの後には改行を入れてください。
本文の方も修正しました。
修正ありがとうございました。
とても参考になります。
導入過程で
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
の三つをインストールしようと実行したところサイト自体なくなっている感じでした。
初心者なのでわからないのですが、これらのソースコードは他でも入手可能なものなのでしょうか?
それとも既に入手不可能なものになったのでしょうか?
すみません、ご指摘ありがとうございます。
現在ダウンロード先が無くなっていますので、記事中の「準備」の
Linux でひかり電話にかかってきた電話番号を取得する
https://pcvogel.sarakura.net/2017/11/09/31778
の代わりに、
Linux でひかり電話にかかってきた電話番号を取得する(2021)
https://pcvogel.sarakura.net/2021/01/17/32108
の方を参照してください。
本文の方も反映します。
ありがとうございました。
おかげで一通り完成しました。
perlも初めて触ったのですが、記事を参考にさせていただいたため
無事動作しました。
こちらこそ、ご指摘いただけまして記事の不備を修正できました。
ありがとうございました。