HubotとTwilio APIを使ってSlackから電話をかけてピザを注文してみる


はじめに

極端に面倒臭がり屋なぼくは、 Slack から出前ピザが注文できたらいいなと思いついたので Hubot スクリプトを書いてみることにしました。

実行例

hubot call +818044431800 起きろ! てな感じで命令すると、電話して合成音声でメッセージを話してくれます。画像の電話番号は僕の携帯ですが、モザイクをかけるのも面倒なので気にしないでください。

電話番号に + がない場合 Twilio は from 番号と同じ国番号を使うそうなので、この例では頭の 0 を取った番号に日本の国番号 +81 を追加しています。

Hubot の導入

導入については下記の記事を参考にしてください。bouzuya さんかっこいいです。

Slack で Hubot を使えるようにする
Hubot / ChatOps とは

Twilio への登録、ID の取得など

電話をかけるために、なにはともあれ Twilio への登録をします。アカウントを登録したら、アカウントセッティングのページに行き AccountSIDAuthTokenコール元の電話番号 をひかえます。

そうそう、トライアルではひとつの番号にしかかけられないため、色んな番号にかけたいのであればクレジットカードの登録が必要です。

Hubot-twilio-call のインストール

npm install --save hbkr/hubot-twilio-call

GitHubに置いてるスクリプトを直接 hubot/scripts 配下にぶっこんでもらっても大丈夫ですが、下記依存モジュールの追加をお願いします。

npm install --save twilio querystring

環境変数のセット

上記 Twilio で取得したデータをセットします。

$ heroku create
$ heroku config:set HUBOT_TWILIO_ACCOUNT_SID=<Twilio AccountSID>
$ heroku config:set HUBOT_TWILIO_AUTH_TOKEN=<Twilio AuthToken>
$ heroku config:set HUBOT_TWILIO_FROM_PHONE_NUMBER=<取得した twilio の電話番号>
$ heroku config:set HUBOT_TWILIO_VOICE_TYPE=<man or woman>
$ git push heroku master

ピザを注文してみる

これで無事にSlack からピザを注文できるようになりましたので、ピザハット渋谷1丁目店に注文してみます。

ieiri> hubot +81354531112 東京都渋谷区道玄坂2-10-12株式会社キメラまで、ピザを1枚お願いします。
hubot> Calling to +81354531112

結果

合成音声が不審がられたのか、注文は通りませんでした。無念です。

おまけ

SMS送信機能もつけてみました。これはこれで便利かもですね。
hubot sms +818044431800 起きろ!
こんな感じ。