IFTTTでメールを電話に変換する

とあるメールアドレスにメールが届いたら、ケータイに電話がかかってくるような仕組みをつくる機会がありました。

適当なコードを書いて、AWS Lambdaで動かせばすぐできるのでしょうが、 メンテしたくなかったのでサービス連携サービスIFTTTを使ってみました。

仕様

  • どっかからメールが届く
  • それをトリガーにして電話をかける

前提

  • コードは書かない(重要)
  • 無料にこだわらない

構成

採用サービスは3点

ちなみにIFTTTではなくZapierを使うと、もっと簡単に実現できます。

Gmail

みんな大好きGmail

Twilio

APIで電話やSMSが送れるサービスです。

Twilio for KDDI Web Communications | クラウド電話API

050のアドレスが 108円/月、電話代が 16.2円/分と お手頃な値段で架電環境が構築できます。 ちなみにクレカが必要です。

IFTTT

異なるWebサービスを連携してくれるすごいやつ Twilioは対応していないので、手動で連携レシピをつくる必要があります。

やること

  1. Gmailでアドレス取る
  2. Twilioで電話番号取る
  3. APIで電話してみる(動作確認)
  4. サービス連携

メルアド取得とか電話番号取得とかは悩まないと思うので、3から書きます。

APIで電話してみる(動作確認)

とりあえず公式リファレンス

REST API: Making Calls - Twilio

最低限To、From、Url を渡すと動きます。

curl -X POST https://api.twilio.com/2010-04-01/Accounts/[Account]/Calls \
  -d "To=%2B[To Phone number]" \
  -d "From=%2B[From Phone number]" \
  -d "Url=http://demo.twilio.com/docs/voice.xml"

Account は ACxxxxxx 的なやつで、twilioの画面から見れます。

Toには宛先の電話番号を入れます。
090-1234-5678なら、国際番号81をつけて、"+819012345678"です。
+記号は%2Bにエスケープする必要があるので、最終的には以下のようになります。 "To=%2B819012345678"

FromもToと同様に記載します。 twilioで購入した番号を入力してください。

Urlには、音声内容を指定します。
デフォルトのvoice.xml では、陽気な音楽が流れると思います。

日本語音声の読み上げにも対応しています。
詳しくはこちら。

日本語読み上げ対応。FluentdからTwilioの電話APIを操作する「fluent-plugin-twilio」を使って電話を掛けてみた - Y-Ken Studio

-d オプションで渡す場合は、生成されたURLをさらにURLエンコードする必要があります。
もしくは --url-encoded を使って渡します。

サービス連携

あとで書く