クラウド電話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エンジニア採用情報

  関連記事

image2
自社サービスのDocker化(前編)

こんにちは。 インフラ開発部の上田です。 普段は自社開発システムのインフラ担当として、日々頑張って仕事をしています。 今回は、近年話題になっているDockerについて、取り上げてみようと思います! なぜDockerなのか・・・? そもそもDockerとは何か・・・?   当社では様々なサー …

スクリーンショット 2015-05-29 6.49.13
Vagrantの機能を使って開発環境の効率をあげてみた。

プラットフォーム・ワンのシステムの運用・保守担当のエンジニアです。 保守の仕事に関わると、 ユーザからのお問い合わせだったり、監視アラートによる検知から システムを調査することがあります。 ログとソースコードを見て、不具合を特定し改修する。 すぐできればカッコいいですが、 「本番環境に反映して別のエ …

gnu
いまさらですが… GNU screen チートシート

最近はローカル環境で開発するようになってきたので、screen コマンドを使う機会も少なくなって来たような気がします。で、使ってないと忘れてしまうので、チートシートを作ってみました。 参照サイト GNU screen [quick_reference] 起動 コマンド 動作 screen -S &l …

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

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

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

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

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

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

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

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

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

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

ie10
modern.IEを使ってMac上でWindows10を動かす

Microsoftが提供している modern.IE というプロジェクトがある。そこで提供されている仮想環境を使って、MacにWindows10をインストールしてみる。ちなみに、このプロジェクトの本来の目的はInternet Explorerの表示確認やデバッグの支援。 VirtualBoxの準備 …

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

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