ナンバーディスプレイに加入していると電話番号を表示できますが、同様にLinux で、ひかり電話にかかってきた電話番号を取得する方法です。
準備
libre、librem、baresip をインストールします。
ソースコードをダウンロードします。
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
ビルド・インストールします。
tar zxvf re-0.5.5.tar.gz cd re-0.5.5/ make sudo make install sudo ldconfig cd .. tar zxvf rem-0.5.2.tar.gz cd rem-0.5.2/ make sudo make install sudo ldconfig cd .. tar zxvf baresip-0.5.5.tar.gz cd baresip-0.5.5/ make sudo make install
一旦 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:YYYYY@ZZ.ZZ.ZZ.ZZ>;auth_user=WWWW
X:内線番号
WWW:ユーザID
YYYYY:パスワード
ZZ.ZZ.ZZ.ZZ:ひかり電話ルータのIPアドレス
例えば、次のような感じになります。
<sip:3:7fag3hwf@192.168.1.1>;auth_user=0003
動作確認
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)
コメント