12
10

More than 5 years have passed since last update.

Twilioとnode.jsをつかってサンタさんのメッセージを贈ろう!

Last updated at Posted at 2015-12-15

こんにちは!これはdots girls Advent Calendar 2015の16日目の記事です。

またまたやって来ました音楽と服と美少女をこよなく愛する関西人のsupermannerです!
そろそろ冬も本番、私はオフィスが表参道付近にあるのでまちはクリスマスで色めき立ちまくってます。
恋人はサンタクロース♪背の高いサンタクロース♪

ということで、独り身で寂しい思いをしている人に、サンタさんからのメリークリスマスを送るスクリプトを書いてみました!
前々からアラート監視、通知などで使われているTwilioですが今回は全私中で勝手に流行りつつあるnode.jsで書いてみます。

Twilioアカウントを作る

トライアルの期間が設けられているのでちゃちゃちゃっと作ってしまいましょう。
トライアル期間は、トライアルのクレジットから通話料を払ってくれるシステムになっているようです。

express等、アプリに必要なライブラリをいれる

Twilioは、実にたくさんの言語をサポートしています。
下記はチュートリアルページです。

この中に得意な言語がある方はそれで作るのがいいのではないでしょうか。
では、今回はnodeで作るので、まずは必要なお道具を揃えていきましょう。
今回の開発環境は以下のとおりです(nodebrew 0.8.1)

% node -v
v0.12.1

入れたnpm群は以下のとおりです

  • express
  • querystring
  • twilio
  • node-config

※結局テストアカウントなのでconfigいらなかったのでnode-configは使いませんでした!

twilioを呼び出すmoduleを作る

ここまでくればあとはあとはtwilio公式のAPIドキュメントを見ながらとんとんと進めていきます。
とりあえず、twilioから電話を発信してくれるmoduleを作ってみましょう!

twilio.js
var querystring = require('querystring');
var twilio      = require('twilio');
var express =require('express');
var router = express.Router();

// Twilio Credentials_
var accountSid = 'YOUR_SID';_
var authToken = 'YOUR_AUTH_TOKEN';
var client = twilio(accountSid, authToken);

var call = function(req, res) {
  var value = req.body;
  var tJson = JSON.parse(JSON.stringify(value));
  var message = tJson.message;
  var twiml = '<Response><Say voice="woman" language="ja-jp">' + message + '</Say></Response>';

  client.makeCall({
    to: 'トライアルでかけられる先としてphone number',
    from: 'トライアルアカウントとして登録したphone number',
    url: 'http://twimlets.com/echo?Twiml=' + querystring.escape(twiml)
  }, function(err, responseData) {
    if (err) {
      console.log(err);
      throw err;
    } else {
      res.send("Lets's call!!");
    }
  });
}

router.post('/', call);

module.exports = router;

app.js側でこのmoduleをexportしてuseしてあげれば準備は整いました。

電話をかける

ではサーバを立ち上げてみましょう。
ここは特に何もせずいつもどおりのport:3000で立ち上げました。

さて、次にPOST REQUESTを送ってあげましょう。
他にも色々やりたい方はこちらを参考にするともろもろ作れそうですね。
https://jp.twilio.com/docs/api

% curl -X POST  -H 'Content-Type: application/json' -d '{"message":"merry chistmas!!!"}' http://localhost:3000/twilio

curlでjsonをPOST!!!!
暫く待つ....

% POST /twilio 200 1485.567 ms - 93

request受理された...キタ━━━━(゚∀゚)━━━━!!
電話がかかってきました。

最初にトライアル版あるあるなガイダンスメッセージが流れるのでそれを聞いて適当に番号をおします。
すると、かの有名なゆっくりみたいな声で「ハロー、コンバンワ、メリークリスマス」とw

テストクレデンシャルについて

こちら、テスト用ののものも用意されています。
「ツール→テストクレデンシャル」
で見ることが出来ます。テスト用はfromにする電話番号が決まっているので気を付けてください。

はまったところ

前回に引き続き、今回も採りたて難しいことはしていないのですがハマったところが。
それはなんと電話番号登録...
そう、fromとtoの値をきちんとアカウント認証したものにしていたなかったのです。
本来課金してつかうtwilioの050の番号を入れていたり、自由に実家の電話番号にかけようとしたり笑
まぁそんな色々もerrをちゃんと表示してあげれば全部返してくれてるので、きちんと見ましょうってことですね。

最後に

最近始めたnodeを書いていて(本エントリでは大したこと書いてないですが)ふんだんnginx等にお願いしている部分を自分で作り上げる感覚がすごく面白いと思いました。
また世の中には色々と面白いREST APIがあふれているので、新しい言語を学ぶときはAPIを積極的に活用していくのが良いのではないかなぁと思います!特に初心者の場合興味が先行すると飽きずに作り切れる場合が多いですしね。

最近実家に帰れていない、忙しくて電話できないというあなたも、ぜひTwilioでで長文を書いてjson投げてご両親に電話をかけてあげてください!

イタズラはいけませんよ!!!!

さて、あしたはnpsamari0310さんがビジュアライゼーションツールTableauとデータ加工について書いて下さいます!お楽しみに!

12
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
10