第1回 Twilioとは - TwilioとRailsでミニマムコールセンターを作ろう

`別サイトで2014/4/2に投稿した記事です。別サイト閉鎖につき、移転しました。情報が古い可能性があるので、ご注意ください。`

## Twilioとは
Twilioはクラウドで利用できる電話APIサービスです。
Twilioが提供するAPIを利用することで、固定電話・携帯電話やネット経由の電話、SMSなどのメッセージサービスを制御できます。

詳しくは、[Twilio公式サイトの機能](http://twilio.kddi-web.com/function/index.html)をご覧ください。

## 当連載「TwilioとRailsでミニマムコールセンターを作ろう」でやること
この連載では、Ruby on RailsでTwilioを動かして、最小限のコールセンターを作ります。
連載の概要は「連載の予定」以下に記載しました。

## 事例
日本の事例は、 [http://twilio.kddi-web.com/case/](http://twilio.kddi-web.com/case/) にまとめてあります。
ビデオコンテンツ配信サービスのHuluが、Twilioをコールセンターで利用しているとのこと。

米国の事例として、[タクシー予約のUberが使っている](http://blog.twilio.kddi-web.com/2013/06/18/twilio%E4%BA%8B%E4%BE%8B%E3%81%BE%E3%81%A8%E3%82%81-%E7%B1%B3%E5%9B%BD%E7%89%88/)そうです。

上記の事例を参考にTwilio活用を考えてみたいところです。

## アカウントの開設
[https://jp.twilio.com/try-twilio/kddi-web](https://jp.twilio.com/try-twilio/kddi-web)からアカウントを開設できます。2014年3月現在で、テスト用に2000円分の無料枠がもらえます。

## 価格
[http://twilio.kddi-web.com/price/index.html](http://twilio.kddi-web.com/price/index.html)から確認できます。
基本的に、050電話番号を1つ取得するのに月額490円かかり、Twilioを使用した分、従量制で利用料がかかります（2014年4月時点）。

## 前提環境
Ruby on Railsが動いていることを前提としています。

次回から作っていくサンプルは以下の環境で作成しました。

* ruby 2.0.0
* Rails 4.0.3
* Mac OSX Mavericks

## 参考情報
* Twilioの概要をざっくり知るには、連載「[ゼロからはじめるぜ! Twilio](http://blog.twilio.kddi-web.com/2013/06/28/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B%E3%81%9C-twilio-%E7%AC%AC1%E5%9B%9E/)」（シーズン1は全6回）が適していると思います。

* 「[ガチでギークな女優、池澤あやかの声で目覚まし電話が掛かってくるプログラムを書いてみた｜Mac](http://weekly.ascii.jp/elem/000/000/209/209354/)」は、Ruby女優として有名な池澤あやかさんがTwilioを使っている記事です。MacPeople5月号に載るとのこと。

* 「[数十兆円市場のテレコム関連市場に狙い：クラウド電話APIのTwilioが日本上陸、創業CEOに聞いた](http://www.atmarkit.co.jp/ait/articles/1304/17/news101.html)」 2013年に来日したTwilio CEOへのインタビューです。Twilioの概要が手際よくまとまっています。また、ジェフ・ローソンCEOのキャリア（AWSのプロダクトマネージャだったという。なお、TwilioのインフラはAWSです）と起業背景の話が興味深いです。ただ、料金プランは2014年4月に大きく変わったので、ご注意を。

---

## 連載の予定

### コールフロー： 顧客の電話発信からエージェントの受電までの流れ
* エージェント（コールセンターで電話に出る人、オペレータともいう）が問い合わせ用のキューにログイン
* 顧客がコールセンターに電話する
* 顧客にWelcomeアナウンスを流す（「お電話ありがとうございます。こちらはXXお客様サポートセンターです…」という類のアナウンス）
* 顧客の用件に応じて、番号入力アナウンスを流す（「お問い合わせの場合は１、注文の場合は２を押してください」）
* 顧客が「１」を選択する
* 問い合わせ用キューにコールが入る
* コールがエージェントにつながり、顧客とエージェントが通話を開始する
* 顧客がコールを切断し、通話が終了する

### 実装機能の切り分け
一挙に上記コールフローを実装すると分かりにくいので、実装機能を切り分けて、ステップ・バイ・ステップで実装していきます。

### [第2回 アナウンスを流す](http://qiita.com/fuji3zpg/items/0b458d42449cc0a2ed6d)
Twilioの基本的な機能を使ってみます。

最初にRailsのコンソールから、Twilioに対して、Twilioで取得した電話番号から自分の携帯番号に電話するようにコマンドを送ります。コールが接続したら、アナウンスを流します。

### [第3回 顧客の電話をエージェントのブラウザで受ける](http://qiita.com/fuji3zpg/items/4d9a2fa7c397f940118d)
タイトル通り、「顧客の電話をエージェントのブラウザで受ける」ことをイメージして、実装してみます。

### [第4回 用件選択アナウンスを流し、顧客入力番号を取得](http://qiita.com/fuji3zpg/items/a5250bdea5f2af6ac278)
顧客の用件に応じて、コールを受けるエージェントを変えるために、用件番号の入力アナウンスを流して、顧客に番号入力をしてもらいます。
例えば、顧客に「お問い合わせの場合は１、注文の場合は２を押してください」という番号入力アナウンスを流して、番号を入力してもらい、その番号を取得します。

###[ 第5回 キューを実装して完成！](http://qiita.com/fuji3zpg/items/f60a0d8be295b392e3a9)
第４回までの実装でミニマムコールセンターが完成したように見えますが、お客さんが電話するまでにエージェントがログインしていないと、エージェントはお客さんの電話に応答できません。

解決策としてキューを使用します。キューは、コールセンターにとって作業グループのようなものです。キューを作っておくと、エージェントがログインしていなくても、そのキューにコールをためておけます。エージェントが電話に応答可能になり、キューに接続すると、キューに溜まっていたお客さんの電話が着信します。

これでミニマムコールセンターが完成となります！

* カスタマーサービス用のキューと注文用のキューを作成する
* エージェントのブラウザからカスタマーサービス用のキューに接続する
* 顧客がコールセンターに電話して、カスタマーサービスを選ぶと、そのキューにコールが送られる
* 顧客とエージェントが通話する

という流れです。