Linux でひかり電話にかかってきた電話番号を取得する(2021)

ナンバーディスプレイに加入していると電話番号を表示できますが、同様にLinux で、ひかり電話にかかってきた電話番号を取得できます。
以下では Ubuntu での取得方法です。

なお、以前の記事でも紹介しましたが、使用するモジュールを最新のものにしているのと、一部設定方法が異なる箇所がありますので、本記事の設定の方を参照してください。
(~/.baresip/accounts ファイルの記述内容が異なっています)

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


準備


libre、librem、baresip を次の手順でインストールします。

ソースコードをダウンロードします。


以降の手順で unzip を使いますのでインストールしておきます。

sudo apt install unzip


ビルド・インストールします。

unzip re.zip
cd re-1.1.0
make RELEASE=1
sudo make RELEASE=1 install
sudo ldconfig
cd ..
tar zxvf rem-0.6.0.tar.gz
cd rem-0.6.0
make
sudo make install
sudo ldconfig
cd ..
unzip baresip.zip
cd baresip-1.0.0
make RELEASE=1
sudo make RELEASE=1 install
cd ..



一旦 baresip を実行します。
実行は一般ユーザでOKです。


baresip


ずらずらっと表示がされ、最後に baresip is ready. と表示されます。
この時、赤字でエラーが表示されても、この時点では気にしないでください。

CTRL+C で baresip を終了します。

basresip を実行すると、~/.baresip ディレクトリが出来ます。
以降で、.baresip ディレクトリの中の各ファイルについて設定します。


設定


config ファイル


~/.baresip/config ファイルを編集します。

以下の行で # を入れてコメントにします。


#module                  stdio.so
#module                  alsa.so


baresip は、SIPクライアントとして、ダイアルしたりのコマンドをキー入力できます。
今回は電話番号を表示させるだけなので、上記の stdio のコメントアウトで、キー入力を無効化します。

また、alsa はサウンド関連のモジュールですが、特に設定していない状態では baresip 実行時にエラーになります。
電話番号を表示させるだけなので、stdio と同様に無効化します。

その他、syslog.so の行のコメントを外すと、/var/log/syslogにも出力されるようになりますので、必要な場合設定して下さい。


accounts ファイル


ひかり電話ルータの管理画面 http://ntt.setup/ にアクセスします。
ユーザ名「user」とパスワードを入力します。

画面左のメニューで、電話設定-内線設定 を選択します。
ひかり電話ルータによって、違う個所があるかもしれませんが、次のような画面になります。

内線番号 3~7 のどれかの [編集] を選択します。
ここでは、例として、内線番号3 を選択します。

画像



次のような画面になるので、"内線番号"、"ユーザID"、"パスワード" を確認します。
後でこの値を使用します。

画像



次に、ひかり電話ルータのIPアドレスを調べます。
不明な場合は、コマンドプロンプトで、
nslookup ntt.setup
と実行して下さい。
表示されたものが、ひかり電話ルータのIPアドレスです。

以上確認した内容を、~/.baresip/accounts の末尾に次の書式で追加します。


<sip:X@ZZ.ZZ.ZZ.ZZ>;auth_user=WWW;auth_pass=YYYYY

X:内線番号
WWW:ユーザID
YYYYY:パスワード
ZZ.ZZ.ZZ.ZZ:ひかり電話ルータのIPアドレス


例えば、次のような感じになります。

<sip:3@192.168.1.1>;auth_user=0003;auth_pass=7fag3hwf




動作確認


baresip を実行します。

何行か表示がされます。
最後に baresip is ready. に続いて、
3@192.168.1.1: {0/UDP/v4} 200 OK () [1 binding]
のような表示がされます。

この状態で、ひかり電話に電話すると、

sip:3@192.168.1.1: Incoming call from: DDDDDDDDDDD sip:DDDDDDDDDDD@192.168.1.1 - (press 'a' to accept)

のように表示されます。
DDDDDDDDDDD の個所には、かかってきた電話番号が表示されます。

この状態で、電話をかけてきた側が切るか、自宅内の電話をとった場合(留守電の応答も含みます)、
sip:DDDDDDDDDDD@192.168.1.1: session closed: Connection reset by peer
のように表示されます。
(DDDDDDDDDDD の個所には、かかってきた電話番号)

最後に CTRL+C で baresip を終了します。



電話番号の取得


電話番号を取得するには、baresip の出力を処理します。
baresip の出力は標準エラー出力なので、標準出力にリダイレクトし、それをパイプで sed で次のように処理すると、かかってきた電話番号が表示されます。


baresip 2>&1| sed -n "s/^.\+from: \(.\+\) sip.\+/\1/gp"


ここまで出来ると、後はさらにパイプで電話番号を渡して処理できますね。


参考


BaresipをUbuntuで使用する – HARD DAY'S NIGHT ブログ
続)ひかり電話の着信お知らせメール - yotayota diary(2016-01-12)
Linux でひかり電話にかかってきた電話番号を取得する: パソコン鳥のブログ

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント