2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

第2回 アナウンスを流す - TwilioとRailsでミニマムコールセンターを作ろう

Last updated at Posted at 2017-05-18

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

今回は、Twilioを使って、自分の携帯番号に電話して、アナウンスを流してみます。

Twilioアカウントの取得は終わっていることを前提にしています。Twilioアカウントの開設は、日本のTwilio公式サイトからどうぞ。

今回の流れ

  • Railsのコンソールから Call.voice_message メソッドを呼び出すことで、
  • Twilioから自分の携帯番号にコールし、
  • 着信したら、「お電話ありがとうございます。こちらはABCお客様サポートセンターですです。」というメッセージを流します。

Ruby on Railsで実装してみよう

Railsプロジェクトの作成

$ rails new twilio_rails_test # 「twilio_rails_test」という新しいRailsプロジェクトを作成する
$ cd twilio_rails_test

RubyでTwilioで制御するためのgemを Gemfile に追加

gem "twilio-ruby"

"twilio-ruby" gem のGithubページ

call.rb というモデルを追加

class Call
  def self.voice_message
    account_sid = ENV['TWILIO_SID'] # Twilioで取得したSID
    auth_token = ENV['TWILIO_TOKEN'] # Twilioで取得したトークン

    client = Twilio::REST::Client.new(account_sid, auth_token)

    client.account.calls.create(
      from: ENV['TWILIO_CALL_FROM'], # 発信元電話番号: 取得したTwilioの電話番号
      to:   ENV['TWILIO_CALL_TO'], # 発信先電話番号: トライアルの場合は、発信先電話番号に制限があります。自分の場合は、Twilioの管理画面から自分の携帯番号を設定しました。すると、SMSで携帯番号を通知が来てました。無事、Twilioが認識すると、その番号に発信できます。
      url: ENV['TWILIO_XML_URL'], # インターネット上にあるXML形式のファイル。XMLにアナウンスする内容を記載。設定内容は後ほど。
      method: 'GET' # HPPTのGETメソッドを使うことにしました。
    )
  end
end

環境変数を設定

call.rb のENV['xxx']を使って、環境変数を取得できます。

export TWILIO_SID=xxx
export TWILIO_TOKEN=xxx
export TWILIO_CALL_FROM=+8150xxx
export TWILIO_CALL_TO=+8180xxx
export TWILIO_XML_URL=http://xxx

.bash_profile 辺りに上記の環境変数を設定しておくと便利です。

設定後、

source ~/.bash_profile

コマンドを実行して、追加した環境変数を有効にするのをお忘れなく。

XMLファイルサンプル

call.rb の ENV['TWILIO_XML_URL'] は、コール着信後に流すメッセージをXML形式で定義しています。
↓ は今回使用するXMLファイルです。
このファイルをTwilio(インターネット)からアクセスできる所に置いてください。

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Say language="ja-jp">お電話ありがとうございます。こちらはABCお客様サポートセンターです。</Say>
</Response>

Railsコンソールでテストコール

$ rails console
> Call.voice_message

トライアルの場合は、現在トライアルで使用中であるというTwilioアナウンスが流れた後、Twilioから自分の携帯番号に電話がかかってきます。
応答すると、「お電話ありがとうございます。こちらはABCお客様サポートセンターです。」というアナウンスが流れます。

サンプルコードのダウンロード

上記のサンプルコードは、Githubよりダウンロードできます。
https://github.com/fuji3zpg/twilio-call-test

次回

無事、アナウンスが流れたでしょうか?
はじめてアナウンスが流れた時は、私は感動しました。

今でもコンピュータ側から公衆回線網経由の電話を制御するのは相当なコストと労力が必要ですが、Twilioの登場によって、クラウドAPIで操作できるようになりました。

Railsのプログラマになる前、私はCTIという電話とコンピュータを連動させる分野の仕事をしていました。私が携わっていたプロダクトは高品質なものでしたが、その分複雑で理解するのも動かすもの、なかなか骨が折れたものです。

今回の例は単純なものだとはいえ、こうして公衆回線網の電話をRailsを通じて動かせたというのは大変な驚きです。

さて、次回は、エージェント(コールセンターで電話に対応する人)がブラウザでTwilioのコールを扱えるようにします。

関連するページ

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?