仕事中に世間話や会議から早く開放されたい、そんなこと誰でも思ったことありますよね。
いろいろ考えてみて一番良いのは、自分宛てに電話して割り込むことかな、と思い実装してみました。
流れ
あぁ、話長いなぁ、もう我慢できない
↓
こっそりAmazon Dash Buttonを押す
↓
SIPボットが自分のIP電話機を呼び出す
↓
SIPボットと話すフリをする
↓
無事開放されてホッとする。作戦大成功(=^・^=)
便利な仲間たち
- (HW) Raspberry Pi ... 実装母艦
- (SW) sipcmd ... SIPボットの正体
- (SW) Dash Button for Node ... Amazon Dash Buttonを押してSIPボットを起動する強者
- (HW) Amazon Dash Button ... 好きなボタンで
SIPボットのインストール
インストール
$ cd
$ sudo apt-get update
$ sudo apt-get install libopal-dev libpt-dev
$ git clone https://github.com/tmakkonen/sipcmd.git
$ cd sipcmd
$ make
動作確認
SIPサーバはRasPBXで動作確認が取れています。
- SIPサーバのアドレス
- 192.168.1.111
- SIPボットのユーザ名(内線番号)
- 200
- SIPボットのパスワード
- neko
- 自分のIP電話機の内線番号
- 100
- 呼び出すだけ。
$ ./sipcmd -P sip -u 200 -c neko -w 192.168.1.111 -x "c100"
- 呼び出して受話器をとったらメッセージを流す。ファイル名は sip-bot.wav (Mono 16bit 8kHz)。
$ ./sipcmd -P sip -u 200 -c neko -w 192.168.1.111 -x "c100;vsip-bot.wav"
- 他にもいろいろできるよ。詳しくはsipcmdをどーぞ。
Amazon Dash button の設定
詳しい説明はAmazon Dash Buttonを(正しくない方向で)使ってみたさんをどーぞ。
スクリプト adb-sip-bot.js はこんな感じです。
var DashButton = require("dash-button");
const PHY_ADDR = "XX:XX:XX:XX:XX:XX";
var button = new DashButton(PHY_ADDR);
button.addListener(() => {
const execSync = require('child_process').execSync;
const result = execSync('cd /home/pi/sipcmd ; ./sipcmd -P sip -u 200 -c neko -w 192.168.1.111 -x "c100;vsip-bot.wav"');
});
あとは好きなプロセス管理ツールで adb-sip-bot.js を常時起動するよう設定します。
最後に
これ使ってること誰にも話さないでくださいね(=^・^=)