この記事は何?
案件でTwilioを使ったブラウザから発信する電話営業サービスを作ったので、概要や開発を通して苦労した点などを記載しました。
案件概要
今回「スクリプト見ながら営業電話が行えるWebアプリケーション」の開発を行いました。要件は
- ユーザのログイン機能
- 通信環境の確認をし、クリアした場合架電する
- 電話中に営業用スクリプトを表示、場面ごとにスクリプトの切り替えを行う
- 通話内容を録音し、テキスト化を行い画面に履歴の表示を行う
です。
システム構成
各サービスについて
Twilio
Twilioは電話やSMS・ビデオ・チャット・SNSなど世の中にある様々なコミュニケーションチャネルをWeb・モバイルアプリケーションとつなぐ「クラウドコミュニケーションAPI」です。今回は電話をかける機能と会話を録音する機能を使用しました。必要なトークン取得にはTwilioのサーバレスサービスのTwilio functionsを使用しました。
使用機能
・ Programmable Voice(TwiML apps)
・ Twilio functions
・Twilio Client(SDK)
Kintone
kintoneは、クラウド上で動作するビジネス向けのデータベースソフトウェアです。APIやブラウザのUIからデータベースの操作をすることができます。今回はスクリプトの管理、バッチのセッション管理、会話履歴の管理をKintoneアプリケーションで行いました。
AmiVoice
AmiVoiceは日本語、ビジネスに特化した音声認識システムです。音声ファイルをAmiVoiceにgetリクエストすると会話をテキスト化して返却してくれます。今回はTwilioで通話内容を録音したものをAmiVoiceで音声認識しました。
AWS
AWSは他の各サービスで実現できない部分を補う形で利用しました。ユーザ管理とログイン、トークンの機能にCognito。Kintoneやり取りを行うAPIにAPI GatewayとLambda、音声データを取得しAmiVoiceで変換を行うバッチやバッチを呼び出すAPIにLambdaを使用しました。Kintoneの音声データとソースコードはS3、コンテンツ配信やデプロイ関係にもAWSと使用しました。(構成図参照)
苦戦したこと
まずTwilioでの開発全体で頭を悩ませました。日本語でのドキュメントや事例などが少なく、今回どのTwilioのサービスを使うべきかの検証に時間がかかりました。また会話をオペレータと顧客でどう分割するかという問題や、日本での電話番号の取得についても問題が多く時間がかかってしまいました。それでもハッカソンの経験やTwilioパートナーであるKWCさんの助言のおかげで開発を進めることができました。結果、通信環境チェックをし成功した場合、指定の番号に架電し会話内容の音声チャネルを分割し録音、自動でS3に保存するというシステムを実現することができました。
他には、今回の開発は自分たちで設計から保守までの担当であり、いろんなことにチャレンジして開発を進めていきたく、Vue3,TypeScriptでのフロント開発、Chaliceでのサーバレス開発をしました。言語や開発環境の知見がないメンバーが多かったため勉強しつつ開発を行いました。フロントのデザインや各機能の動作についてはメンバーでたくさん話し合い試行錯誤を行い、当初の設計では仕様上実装できない箇所や、開発してみて使い辛い機能などはお客様との定例で提案を重ね開発を進めてきました。結果、満足していただけるものを開発できることができとてもいい経験になりました。
終わりに
今回、自分たちで使用する言語や環境、AWSやTwilioのサービスを決めたのでたくさん反省すべき点が出てきました。もちろん良かった部分もたくさんあり、各サービスについての経験も大きなものであるので次回の開発に活かし、知識の共有も行なっていきたいと思います。