Twilioでコールセンターシステムを作ってみた

Twilioでコールセンターシステムを作ってみました。

※続編は「Twilioコールセンターシステムにヒストリカルレポート機能を搭載した」です。

※今は「Runa-CCA」を鋭意開発中になります。

何で作ろうかなあと考えました。
Rubyで作ろうかとも思ったのですが、Webアプリですし、フレームワーク上に構築するまでの規模でもなかったので、手軽なPHPにしました。

まず以下の本を買ってお勉強。
私がプログラマーだったとき、PHPはPHP3でありまして、今やPHP5.5です。もはやわかりません。ということで一から勉強し直してみました。PHP、MySQL、JavaScriptとCSSの基礎を学べる、非常にいい本です。オススメします。

コールセンターの機能としては、

音声自動応答(IVR)
音声ガイダンス
キューイング(待ち順番アナウンス付き)

の3つを搭載しようと考えました。基本的なフローは以下の通り。

Twilio-MiniCC Sequence

実装を考えます。

IVRが出来るということは、Twilioのブログにも書いてあったので、それほどハードルは高くないだろうと考えていました。コールセンターシステムで必要なのはキューです。オペレータに着信させなければならないのですが、オペレータがすべて電話業務(よく「受電」とか言います)をしているとき、お客様を待たせる必要があります。オペレータが忙しいからって、すぐに電話を切ってしまうのは良いセンターとは言えませんよね。その待たせる機能である「キュー」がTwilioにあるのかなあ・・・と思って探してみたら、ありました。こちらに紹介されています。

うーん、簡単すぎるぞ。オペレータはQueueタグで、お客様はEnqueueタグを使うのか。それだけでいいのかなあ・・・と思いましたが、まあ作ってみることにしました。

Twilioには、PHP用のHelperライブラリがあります。それを使うと実装は簡単です。今回のような、“着信”を処理する場合は、TwiMLというXMLライクなマークアップ言語を用いてTwilioに命令する形になるので、Helperライブラリ無しでも作れてしまいます。が、Responseタグの閉じ忘れとかなんとか、いろいろと発生しましたので、素直にHelperライブラリに頼るのが良いでしょう。

久々のPHP言語に不慣れだったので、PHPでのデータベースアクセス処理とか、クラスの定義方法とかに時間がかかりました。また、実行しても結果が無い(白いページが表示される)のにも悩まされました。白いページになる場合は、php.iniでエラーが出力される設定になっていない可能性があります。iniファイルの設定を変更するか、ini_set( ‘display_errors’, 1 );を書く必要があります。エラー出力される設定になっていても、白いページになることがあります。その場合は、php.iniに指定されているログを見ると、エラー内容を確認することが出来ます。当たり前かもしれませんが、なにぶん不慣れなので、こういったところに時間がかかってしまいました。

Twilioの部分は極めて簡単です。PHPを知っている人だったら、すぐに作れちゃうと思います。キューの実装もブログにある通り、超簡単でした。

完成したものをGitHubに公開しております。勉強用に、細かいところまでコメントを書いたつもりですので、よろしければご覧ください。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.