2018年4月Twilioでのテレフォニーリニューアルについてこんにちは、@24guchiaです。弊社では内製していた顧客管理システムの全面刷新を年始に行いました。私はその中でもTwilioを用いたテレフォニーに関するリニューアルを担当しました。リニューアルにあたりTwilioをなぜ採用したのかや、どういう技術構成を組んだか、リニューアルから3ヶ月経ち、成功と失敗、これからの未来について考えをまとめていきます。リニューアルに関してそもそもなぜリニューアルに踏み切ったかデータ最適化を進め、機械学習の導入などエンジニアの進化速度の向上エンジニアリング組織として、強くしていくレガシーシステムで改修に時間がかかり、改善のスピードを上げることが出来ないデータが見えづらいため、勘に頼った判断が増えていた顧客管理システムのUIUXが悪く、実際に使う営業からのハレーション他にもいろいろありますが、大きな理由はこの辺ですね。社内の電話システム改修とCRMつなぎ込みを行いました。インハウスのコンタクトセンターを1人で作りました(ドヤ)・・・すいません、実装は1人でやりましたが色んな人の協力あってです。これ書くのも、協力してくれた人への自分なりの感謝の表れです。知りたい方は読み進めていってください。なんでTwilioを採用したの電話機にとらわれない、コミュニケーション手段として利用できる電話機を使う必要がなくなります。PCとインターネット回線さえあれば、どこでも働くことができます。今まででは考えられないコミュニケーション手段として、使えるためです。放棄呼、到達率といったすべてのログを集めることができます。ログが残るサービスは多いですが、それを開かれたAPIで検索できることが強みだと思います。APIがあるため、必要な情報を集めることができ、データを基にした判断が可能になります。音声からテキスト化し、分析するための基盤を作ることが出来ます。これは他のサービスでは提供されているのは見たことがないです。メールやメッセージは元々テキストなので、分析しやすいですが、この特長により音声までも分析の対象にできるため、よりデータドリブンな判断が可能になります。オープンなAPIが公開されている存在しているAPIはすべて下記ドキュメントで公開されています。https://www.twilio.com/docs/一部、知ってる人は知っているみたいな隠し情報とかもあったりしますが、普通に使う分には困らないです。弊社で必要なことがすべて実現できるか不明でした。先の特長とあわせて、Twilioで問題ないだろうという判断ができました。社内限定で公開しています。受電できないということを懸念し、ブラウザ一体型のExtensionにしました。通話が始まったら通話中と切り替えました。受電割り振りはTaskRouterを採用Twilio.TaskRouterを採用し、受電の割り振りをしています。同じチームも全員離席していれば在席の誰かを呼び出します。通話ログが着々と溜まっていき、電話機は減らせました。転送することで放棄が減っているようです。失敗したこと一つの失敗だけで一記事できそうです(涙)。他にもいろいろありますが、とりあえず5つだけ。Syncの事前の負荷テスト不足で全然動かない【対応済み】SyncはAPI制限があります。https://www.twilio.com/docs/sync/limits200人くらいいる営業を同じマップに配置し、それが更新をしまくるので、SyncがAPI制限に引っかかり、まったく在席管理が見れないという不具合が起きました。現在、修正済みですが、在席管理と電話機を同じExtension上においていたため、電話が動かないということが頻発し、かなり迷惑をかけました。API制限に引っかからない形にし、また、在席管理をExtensionとは別ページに置くことで対応済み。StackOverflowに質問して、SyncのPMから返信いただいているので、参照してください。https://stackoverflow.com/questions/48207330/twilio-sync-map-frequently-cannot-get-300-over-itemsデータ分析するための分析基盤が必要【未対応】Twilioはログが残りますが、通話の考え方がユーザから見たときと異なります。一般的な電話利用者から見ると、1つの通話ですが、Twilioの通話ログは下記の通り2つに分かれます。AliceからTwilioへの通話TwilioからBobへの通話TaskRouterを使うと通話ログは更に分かれ、AliceからTwilioへの通話、Twilioから各Workerへの通話が生成された分だけ通話が分かれます。いうことかというと、下記の通りの通話ログが生成されます。詳しくは以前記事を書いているのでそちら参照。https://harinoma.info/caution-taskrouter-in-japan/詳細は記事を読んでもらうとして、問題の概要として、TaskRouterで生成されたタスクを通常の通話で処理すると、アメリカのサーバを経由した通話になり、通話が遅れる可能性があります。日本国内での対応方法はDequeueなどは使わずに、Conferenceで使用し、regionをjp1にすると国内での通話が実現できます。Conference使用量分、料金が増えます。こちらConferenceに置き換え作業を現在対応中。対応のめどが付いたら、別記事作ります。なく問題を抱えたまま動き続けるシステムに僕が心身ともに参ってしまいました。体重が一時的にけっこう落ちました。下記のようなことが言えます。安定稼働しつつあり、たくさんの人に協力してもらえているのでほとんど回復しています。Extensionが思いの外使いにくい【対応中】Chromeは開いているけど、Excelなど他のソフトウェアを使ったりすることもあるので、Chrome上にしか表示できないExtensionでは、解決ができないことが多くあります。配布方法が一番の困りどころです。配布は下記順番で行います。Extension更新パッケージを管理画面でアップロード最大1時間以内に更新パッケージがStore上に公開される公開されたパッケージを各利用者が手動アップロードか自動アップロードこれの何が問題かというと、クライアントとサーバの両方を修正する時、サーバの更新は一瞬ですが、クライアントの更新タイミングは不明です。そのため、サーバ上のみ最新で、クライアントが古いままなどが発生し、サバクラでバージョン不一致が発生してしまうことがあげられます。最大1時間程度は電話が使えないということが起こり得ます。対応として、夜中に1人でアップロードして、翌朝更新するよう依頼するという方法で現在はしのぎ、できるだけサバクラ同時に修正が必要なことは実施しないようにしています。これらの理由につき、Extensionを捨てて、Electronでアプリ化を進めています。これの作業にはなんと、僕以外の優秀なフリーランスの方が着手してくれています。Electronでは上記問題は解決できそうですが、また別の問題も起きると思います。同じ失敗をしないよう事前テストとして、ExtensionとElectronを併用する期間を設ける予定です。通話音声に関するデータ基盤を作り、データドリブンな組織、とかっこよく今どきな言葉を並べていますが、この3ヶ月は書いた通り、泥臭く地道な修正を続けていました。3ヶ月かもっと長い期間、同様な地道な作業が続くと思います。短期的には影が薄くなりたいこの泥臭い作業が終わったあと、声大きめにあれやこれやの指示出していた僕はひっそりと仕事をしたいです。最近あの電話おじさん見ないね?と言われるようになりたい。利用者がわざわざエンジニアに話す必要がない状態だからです。僕らは普段意識することはあまりないです。いう状態を目指します。中期的にはコンタクトセンターとして最適な組織に変えたい顧客からの問い合わせに最適最速な経路で、担当者に繋がる組織。放棄呼や待ち時間を圧倒的に少なくしたい。最適な担当者につなげるというのは、システムだけではできず、どういった電話がどの時間帯に誰宛にかかってくるのかといった分析と組織としてどう対応するのかの方針を定める必要があると思ってます。その部分の分析をした上で、システムに組み込み測定を繰り返す事ができる、SMARTなコンタクトセンターにしていきたい。長時間労働のうち、本当は必要のない勤務時間を減らせるようになると思います。長期的にはコミュニケーション全般を最適化していきたいはい、Twilioのミッションですね。プロダクトとしては、Twilio.Channlesが近いです。https://twilio.kddi-web.com/blog/developer/entry000316.htmlまた、TaskRouterは実は通話以外のタスク生成と割り振りが可能です。割り振るといった器用なことが出来ます。この辺、まとめた概念がTwilio.Flexだと思っています。最適な部分に最適な技術で対応していきたいです。最後に、通話ログがあり、テキスト化ができるため、テキストマイニングに従った最適な通話シナリオの作成、リアルタイム文字起こしやリアルタイム感情分析など技術的におもしろそうなことも待ち構えています。まとめTwilioに携わるようになり、はや一年が経ちました。弊社でのキャリアが終わったとも思ったものです。調べても分からないことを解決していくのはエンジニアとして自信が付きました。なんでも出来る、でも必要なことだけやるようにこれから精進していきます。2020年1月12日こんにちは、@24guchiaです。2020年1月1日こんにちは、@24guchiaです。あけましておめでとうございます。今年もよろしくお願いします。2019年12月29日こんにちは、@24guchiaです。年の瀬ということで、今年、2019年の振り返りです。2019年12月14日こんにちは、@24guchiaです。2019の14日目です。2019年11月1日こんにちは、@24guchiaです。入社エントリーにある通り、bellFaceに入社しました。