クラウド電話API “Twilio”で起こされてみた

     - 開発ツール , ,  


どうも、開発部のクラヴマガです。

弊社サービスも最近はAWSの様なクラウド環境でサービスを構築することが多くなりました。
そこで問題になるのが、障害などによる深夜対応・・・。
データセンターに物理サーバをおいていた頃は、データセンターから障害発生時に
電話連絡をもらっていたのですが、クラウド環境では別会社に頼むか、社内で人員を確保するか・・・、
とはいえリソースも原価もかけられないし・・・と悩んでいました。

調べてみるとAPI経由で電話やSMSを送信できるサービス「twilio」というものがありました。
これなら人員確保や外部委託しなくても実現できるかも。

というわけでさっそく試しました。

最終的にはアラートメールをトリガにして、担当者に電話連絡⇒応答者がプッシュボタンで返答⇒SMSで誰が対応を開始したか一斉送信
を行うつもり。

まず今回は、「電話で連絡」と「SMSでメッセージ送信」をやってみます。

事前準備

  1. トライアルアカウント作成
    まずはtwilioへアクセスして、トライアルアカウントを作成。
    ある程度は無料で電話やSMSを送れるみたいです。
  2. 続いて電話番号を購入
    今回はSMSもテストしたかったので、米国の電話番号を取得しました(番号によってSMSができるものとできないものがあり、日本の電話番号はできない模様)
  3. ライブラリの設置
    PHPで実装するつもりなので、
    ・PHP用のライブラリをダウンロード、サーバ上へアップロード
    APIライブラリよりphpのライブラリ(twilio-php-master.zip)を取得
    ・テスト用サーバへFTPアップロード・適当なディレクトリで展開

電話をかけてみる

先程ライブラリを展開したディレクトリ(testTwilio)へ移動し、phpファイル(testCall.php)を作成。

※・[AccountSid]:アカウントセッティングよりAccountSIDを確認して設定
・[AuthToken] :アカウントセッティングよりAuthTokenを確認して設定
・[CallNumber]:事前準備で購入手続きをした電話番号を設定
・[Reciveing Number]:ログインアカウント作成時登録した電話番号を設定

で、実行。

すんなり電話が掛ってきました。

IMG_call

電話にでると女性の声でテキスト読みあげてくれます。
設定・実装すれば固定メッセージの読み上げ、メールの内容なども読んでくれるみたいです。

SMSを送信する

同じディレクトリに今度はSMS送信用のphpファイル(testSms.php)を作成。

で、実行。

こちらもすぐにSMSが送信されてきました。
IMG_sms

感想

なんかものすごく簡単です。
他にも電話同士をつないだり、コールセンターの電話受付の様に電話のダイヤルプッシュごとに処理を実行したりできる様なので、障害復旧の自動化なんかもできるかも・・・?

なんとなく感じはつかめたので、次回はプロトタイプを作成します!


DACエンジニア採用情報

  関連記事

kubernetes の全ノード上で同じコンテナを動かす

今回は、kubernetes上で同一コンテナを全ノードで動かす方法を紹介したいと思います。kubernetes自体の起動方法はここでは割愛します。 はじめに 以前、CoreOSのFleet上でmackerel-agentを動かすということを行いました。今回は、kubernetes上で同じようにクラス …

【HTML5】4ツール出力ファイルサイズ比較

こんにちは、近江です。 前回もHTML5のSwiffyについて書かせて頂きましたが、まだまだHTML5について調査しています。 今回はSwiffyを含めた4つのHTML5系ツールで、同じ素材で同じアニメーションを作成した時のファイルサイズを比較したいと思います。 何故ファイルサイズの比較をするかと言 …

Tableauを利用してMySQLとRedshiftのクロスDBジョインを実現する

はじめに RedshiftやTreasureDataなどのデータマート用のDBにはID単位の解析結果が格納され、ローカルのMySQLにはIDに紐づいた名称マスタが管理されている構成の場合、データマートのクロス集計結果に対してIDに紐づいた名称を付与したいことがあります。 データマート用に用意したDB …

x-callback-urlを使ってみた

x-callback-urlとは? iOSのアプリ間連携の仕様の一つみたいです。簡単に言うと、ディープリンクを行うためにカスタムURLスキームを利用するが、アプリ毎にバラバラな規則でURLスキームを設定するとアプリ間連携をスムーズに行うことができないため、どのような規則でURLスキームを設定するかを …

Charlesを使ってスマホアプリ(iOS)のUAを調べてみた

はじめに ここ最近のスマホアプリには、Webブラウザの機能を実装したものが少なくありません。 (“スマホアプリ内で立ち上がるブラウザ「アプリ内ブラウザ」”の機能は「WebView」というコンポーネントを用いて実装されています。) 昨今のWebサイト、サービス運営に於いて、「通 …

Selenium × PHP でテスト自動化!【環境構築編】

はじめに みなさんこんにちは、プロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発を担当しています。 テスト自動化の背景 わたくしが担当するXmediaOneでは品質担保のために①コードベ …

【小ネタ】タスク管理ツール移行: Trello から Asana

  プロジェクトチームのタスク管理ツールを Trello から Asana に変えることになり、 タスクの移行が意外と簡単にできた、というお話です。 Trello と Asana もともと使っていたのは Trello(トレロ)です。 プロジェクト > タスクグループ > タスク …

Android 非同期処理についてまとめてみた

Androidには、UIに影響を与えないよういくつか非同期処理が用意されています。 今回は非同期処理の代表的な ・Service ・IntentService ・HandlerThread について違いを踏まえながらまとめます! 非同期処理について(http://codezine.jp/articl …

Scala番外編「Boxに保存したファイルをBox APIを使ってダウンロードしよう!」

はじめに みなさんこんにちは、プロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発を担当しています。 Box APIを使う背景・目的 DACはメディアレップです メディアレップとは、インタ …

no image
AWSにRailsアプリをデプロイする(公開編)

次にデプロイするため“aws rails デプロイ”でググってみるとunicorn、nginxというキーワードがでてくるので とりあえずこれを設定していきます。   アプリのsecret_key_baseの設定 [crayon-5dd3143fbde35367371 …