もういい加減話を切り上げたいから、Amazon Dash Buttonを押して、自分に電話が来たように振る舞ってみた

  • 523
    いいね
  • 0
    コメント

仕事中に世間話や会議から早く開放されたい、そんなこと誰でも思ったことありますよね。
いろいろ考えてみて一番良いのは、自分宛てに電話して割り込むことかな、と思い実装してみました。

流れ


あぁ、話長いなぁ、もう我慢できない

こっそりAmazon Dash Buttonを押す

SIPボットが自分のIP電話機を呼び出す

SIPボットと話すフリをする

無事開放されてホッとする。作戦大成功(=^・^=)

便利な仲間たち


  1. (HW) Raspberry Pi ... 実装母艦
  2. (SW) sipcmd ... SIPボットの正体
  3. (SW) Dash Button for Node ... Amazon Dash Buttonを押してSIPボットを起動する強者
  4. (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 を常時起動するよう設定します。

最後に

これ使ってること誰にも話さないでくださいね(=^・^=)