ITぶろぐるとるのITぶろぐ日常を楽しんで。「るとるのぶろぐ」のITネタばーじょんです。replyTwilioでコールセンターシステムを作ってみました。※続編は「Twilioコールセンターシステムにヒストリカルレポート機能を搭載した」です。※今は「Runa-CCA」を鋭意開発中になります。何で作ろうかなあと考えました。Rubyで作ろうかとも思ったのですが、Webアプリですし、フレームワーク上に構築するまでの規模でもなかったので、手軽なPHPにしました。以下の本を買ってお勉強。私がプログラマーだったとき、PHPはPHP3でありまして、今やPHP5.5です。いうことで一から勉強し直してみました。PHP、MySQL、JavaScriptとCSSの基礎を学べる、非常にいい本です。音声自動応答(IVR)音声ガイダンスキューイング(待ち順番アナウンス付き)の3つを搭載しようと考えました。基本的なフローは以下の通り。IVRが出来るということは、Twilioのブログにも書いてあったので、それほどハードルは高くないだろうと考えていました。コールセンターシステムで必要なのはキューです。オペレータに着信させなければならないのですが、オペレータがすべて電話業務(よく「受電」とか言います)をしているとき、お客様を待たせる必要があります。オペレータが忙しいからって、すぐに電話を切ってしまうのは良いセンターとは言えませんよね。その待たせる機能である「キュー」がTwilioにあるのかなあ・・・と思って探してみたら、ありました。こちらに紹介されています。うーん、簡単すぎるぞ。オペレータはQueueタグで、お客様はEnqueueタグを使うのか。それだけでいいのかなあ・・・と思いましたが、まあ作ってみることにしました。Twilioには、PHP用のHelperライブラリがあります。それを使うと実装は簡単です。今回のような、“着信”を処理する場合は、TwiMLというXMLライクなマークアップ言語を用いてTwilioに命令する形になるので、Helperライブラリ無しでも作れてしまいます。Responseタグの閉じ忘れとかなんとか、いろいろと発生しましたので、素直にHelperライブラリに頼るのが良いでしょう。久々のPHP言語に不慣れだったので、PHPでのデータベースアクセス処理とか、クラスの定義方法とかに時間がかかりました。実行しても結果が無い(白いページが表示される)のにも悩まされました。白いページになる場合は、php.iniでエラーが出力される設定になっていない可能性があります。);を書く必要があります。エラー出力される設定になっていても、白いページになることがあります。その場合は、php.iniに指定されているログを見ると、エラー内容を確認することが出来ます。当たり前かもしれませんが、なにぶん不慣れなので、こういったところに時間がかかってしまいました。Twilioの部分は極めて簡単です。PHPを知っている人だったら、すぐに作れちゃうと思います。キューの実装もブログにある通り、超簡単でした。完成したものをGitHubに公開しております。勉強用に、細かいところまでコメントを書いたつもりですので、よろしければご覧ください。Twilioを使ったミニコールセンターシステムです。rutoruヒストリカルレポート収集機能実装ヒストリカルレポート収集機能実装。データベースアクセスにPDO利用。