Help us understand the problem. What is going on with this article?

hubot + Twilioで寝ている社長を無理矢理起こす

More than 5 years have passed since last update.

障害発生の際など、やむをえず自宅で就寝中の社長を起こさないといけないことがある。インターネット時代においても遠隔地にいる人間の意識を強制的に遮る有効な方法は一つである。電話だ。

普通の人間なら順番にただ電話すれば良いのだが、我々は電話恐怖症を患うエンジニアである。過去のトラウマから誰かに電話をかけることが不安で仕方ない。

さらにはリモートワークの環境だと、アメリカ西海岸にいる社員が日本の電話番号に電話するのは色々と敷居の高さがある。素早く簡単に社長に電話し不機嫌にすることなく即座に目覚めさせる方法が必要だ。

このような課題を、我々が対処する方法はただひとつ「自動化」である。機械に電話させればよい。行末スペースをただひとつも許せないほど繊細な心を持つ我々と比べて、機械は感情がないので不機嫌な人間に当たられても何も感じない。

今回は、感情のないロボットに社長に電話させる方法を紹介する。

Twilio

TwilioというAPIから電話をかけられるサービスがある。

電話というとお高いイメージがあるが、案外お手軽な価格で月額108円で電話番号が取得でき通信料も安い。たまにイタズラ電話を発信する程度なら中学生のお小遣いでも大丈夫だ。

今回はこのNode.js SDKを利用して、hubotから呼び出す。これだけで電話がかけられる。

client = require('twilio')(accountSid, authToken)
call = (to, callback) ->
  client.calls.create(
    url: "https://dl.dropboxusercontent.com/u/your/voice.xml"
    to: to
    from: "+8150xxxxxxxx"
    method: "GET"
    fallbackMethod: "GET"
    statusCallbackMethod: "GET"
    record: "false"
  , callback
  )

urlにあるのは電話通話時にさせたい操作が書かれたTwiMLという要するにXMLファイルで、「○○と自動音声で発言する」「1キーが押されたら○○する」というような操作が書ける。

<Response>
<Say voice="alice" language="ja-JP">おきて!おきて!おきて!</Say>
</Response>

こうすると、通話時にaliceちゃんが一方的におきてと言ってくれる。機械的な音声だが、野郎に深夜に電話で起こされることを考えたらはるかにマシだろう。

このXMLファイルは、URLから見える場所ならどこに置いてもいいのでDropboxのPublicフォルダに置いている。

hubot

あとはさきほどの関数を呼び出すhubotスクリプトを書けばよい。

module.exports = (robot) ->
  robot.respond /call/i, (msg) ->
    call('社長の電話番号', ->
      msg.send 'calling calling'
    )

僕のいる会社では名簿から電話番号をとってきて、人を指定して電話をかけて呼び出せるようにしている。

Gyazo

実際

深夜の障害発生時に、躊躇することなく素早く社長やインフラ担当を目覚めさせることができ、見事に障害を乗り切った。いまや起床ですらChatOpsの一部である。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした