本記事でご紹介するのは、自社SaaSパッケージとして企画・開発したクラウド型の電話自動応答(IVR)システムです。
このシステムでは、管理画面から050番号を取得し、かかってきた電話に対して「どんな音声を流し、そのあと録音するのか、担当者に転送するのか、SMSで案内を送るのか」をノーコードで設定できます。プッシュボタン操作による振り分け、留守番電話の録音と自動文字起こし、登録済み顧客かどうかでの自動転送、着信のメール・Slack通知までを一つのサービスにまとめました。
本記事では、開発前の課題、開発のアプローチ、実装した主な機能、使用した技術、そして開発で苦労した点・工夫した点を整理してご紹介します。
今回のポイントは、電話機や専用機器を一切置かずに、「電話を受けてから対応者に届くまで」の流れをブラウザだけで組み立てられるようにしたことです。
開発前の課題
中小規模の事業者にとって、電話対応は「なくせないのに、手間ばかりかかる」業務の代表です。営業電話と大切なお客様からの電話が同じ回線に混ざってかかってくるため、誰かが電話に出るたびに作業が中断され、しかも出てみるまで用件がわからない。少人数の会社ほど、この負担は重くのしかかります。
「用件別に番号を押してもらう自動音声(IVR)」を導入すれば整理できることはわかっていても、従来のIVRは専用のPBX(構内交換機)や電話工事が前提で、初期費用が高く、ガイダンスの文言を少し変えるだけでも業者に依頼が必要というケースが少なくありません。結果として、留守番電話に頼るか、担当者の携帯に転送し続けるかの二択になりがちです。
留守番電話にも課題があります。録音は溜まっていくものの、一件ずつ再生しないと中身がわからず、急ぎの用件なのかどうかも判断できない。外出中やリモートワーク中はそもそも録音に気づけず、折り返しが遅れる。「電話の取りこぼし」は、そのまま機会損失につながります。
さらに、「既存のお得意様からの電話だけは担当者に直接つなぎたい」「電話では説明しきれない案内はURL付きのSMSで送りたい」といった、業種ごとの細かな要望もあります。こうした運用を、専門知識のない担当者が自分で設定・変更できることが、今回の開発の出発点でした。
ご提案・開発アプローチ
まず、電話回線そのものをクラウドの通信APIに任せる構成を選びました。電話番号の取得から着信時の音声再生、録音、転送、SMS送信までをAPI経由で制御することで、社内に電話機やPBXを置かず、Webシステムの設定だけで電話の動きを変えられる形にしています。電話番号も管理画面から空き番号を選んで購入でき、購入と同時に着信時の処理先が自動で設定されるため、導入時の技術的な作業は不要です。
電話の応答内容は「トークスクリプト」という単位で管理します。最初に流すメッセージ(文章を読み上げるか、用意した音声ファイルを流すか)を決め、そのあとの動きを「録音する」「通話を終了する」「通話を終了してSMSを送る」「電話番号に転送」「IP電話(SIP)に転送」「ダイヤル選択」「顧客判定」の7種類から選ぶだけです。ダイヤル選択を選べば、「1番なら転送、2番なら録音」のように分岐を重ねて、用件別の振り分けを組み立てられます。
留守番電話の録音は、音声認識APIで自動的に文字に起こし、通話内容のテキスト付きでメールやSlackに通知します。録音を再生しなくても、通知を読むだけで用件と緊急度がわかる、というのが狙いです。
加えて、システム内に顧客マスタを持たせ、着信した番号が登録済みの顧客かどうかを自動で判定できるようにしました。既存顧客は担当者へ直接転送し、それ以外は用件を録音してもらう、という「電話の門番」のような使い方ができます。顧客はCSVで一括登録でき、受信履歴の画面からもその場で登録できます。
実装した主な機能
- 管理画面からの050番号の検索・購入(1アカウントあたり複数番号に対応)と、着信時の処理先の自動設定
- 電話番号ごとのトークスクリプト(自動応答の流れ)の作成・編集・切り替え
- 音声合成による読み上げ、またはアップロードした音声ファイル(mp3)によるガイダンス再生
- プッシュボタン操作(ダイヤル選択)による多段階の振り分けと、分岐の流れを一覧できるツリー表示
- 留守番電話の録音と、音声認識による通話内容の自動文字起こし
- 外部の電話番号・IP電話(SIP)への転送
- 通話終了後のSMS自動送信と、画面からの個別SMS送信(顧客ごとのやり取り履歴つき)
- 顧客マスタとの照合による、登録済み顧客の自動転送/未登録者の録音への振り分け
- 顧客マスタの管理(検索、CSVテンプレートのダウンロードと一括登録、受信履歴からのワンクリック登録)
- 受信履歴の一覧(発信者・顧客名・通話状況・対応結果の表示、録音のブラウザ再生、対応メモ)
- 着信のメール通知(複数の宛先に対応)とSlack通知
- 運用サポート用の代理ログイン、アクセスログ、データベースの定期バックアップ
開発で苦労した点・工夫した点
「通知のタイミング」を応答の種類ごとに変える
着信通知は、単純に「電話が鳴ったら送る」だけでは役に立ちません。留守番電話の場合、着信直後に通知しても録音はまだ始まってすらおらず、通知を受け取った側は結局あとで録音を聞きに行くことになります。一方で、担当者への転送や即時終了のように録音が発生しない応答で通知を待たせる理由はありません。
そこで、録音を伴う応答では「録音の完了 → 文字起こし → 通知」の順に処理し、通話内容のテキストを本文に含めて届けるようにしました。録音のない応答は着信の時点ですぐに通知します。顧客判定のように「登録済みなら転送、未登録なら録音」と途中で分岐する応答では、判定結果に合わせて通知のタイミングも切り替わるようにしています。
Slackには通話内容の冒頭200文字を、メールには全文を載せるなど、通知先に合わせて見せ方も変えています。「通知を見ただけで、折り返すべきか判断できる」ことを目標にした設計です。
転送すると「非通知」になる問題と、電話番号の表記ゆれ
電話システムならではの落とし穴が、転送時の発信者番号です。当初は転送先の担当者にお客様の番号を表示しようとしましたが、通信サービスの仕様上、確認の取れていない番号を発信者として表示させようとすると、転送先では「非通知」になってしまうことがわかりました。担当者から見ると、誰からの電話かわからない着信が突然鳴ることになります。
そこで、転送先には着信を受けた050番号を発信者として表示する方式に統一しました。担当者は「会社の番号経由の電話だ」とすぐ判別でき、誰からの電話かは受信履歴や通知で確認できます。番号転送だけでなく、IP電話(SIP)への転送でも同じ問題が起きるため、両方に対策を入れています。
また、電話番号は「03-1234-5678」「0312345678」「+81312345678」のように、同じ番号でも表記がばらばらです。通信サービスから届く番号は国際形式、利用者が画面やCSVで入力する番号は国内形式が普通なので、そのまま比べると登録済みのお客様なのに「未登録」と判定されてしまいます。顧客登録時にはハイフンや空白を取り除いて国際形式にそろえて保存し、照合時には複数の形式で突き合わせる。顧客検索でも「0」から入力された番号を国際形式でも探す。地味ですが、顧客判定の精度を支える重要な処理です。
SMSの「送り漏れ」と「二重送信」をどちらも防ぐ
「通話を終了してSMSを送る」応答では、どのタイミングでSMSを送るかに苦労しました。通話の状態は通信サービスから段階的に通知されますが、電話の切れ方は一通りではありません。正常に終わる場合もあれば、「応答なし」「話し中」「キャンセル」として終わる場合もあります。「正常終了」のときだけ送る作りにすると、それ以外の終わり方でSMSが届かないという問題が起きました。
一方で、終了に関する通知が複数回届くこともあるため、単純に条件を広げると同じSMSが二重に送られてしまうおそれがあります。そこで、通話が「終了系」の状態に初めて切り替わった瞬間だけSMSを送るという判定にしました。直前の状態を記録しておき、すでに終了済みの通話には送らない仕組みです。
SMSの本文には「この番号は送信専用です」という案内を自動で付け加えています。SMSは日本語70文字ごとに課金され、送れる長さにも上限があるため、付け加える文面の長さまで考慮して設計しました。また、開発の途中でSMSの送信に使う通信サービスを別のサービスから切り替えましたが、その際に送信元の番号を設定ファイルで一元管理する形に整理し、将来の番号変更にもコードを触らずに対応できるようにしています。
電話をかけた人が迷わない、設定する人が失敗しない
ダイヤル選択の案内は、電話をかけた人が聞き終わる前に番号を押したくなるものです。当初は案内が流れ終わるまで操作を受け付けない作りでしたが、案内の途中でもボタン操作を受け付ける形に改めました。また、聞き逃した方のために案内を最大3回まで繰り返し、30秒の入力猶予を設けています。
設定する側のミスを防ぐ工夫も入れています。分岐のあるトークスクリプトは、すべての選択肢に次の応答が設定されるまで「適用」できないようにしました。「3番を押したら無音で何も起きない」といった事故を、公開前に止めるためです。新しく作ったスクリプトは下書き状態で保存し、準備ができてから一覧画面で切り替える運用にすることで、作成途中の設定が本番の電話に流れることも防いでいます。1つの電話番号で有効になるスクリプトは常に1つだけで、切り替えも1クリックです。
まとめ
電話自動応答(IVR)システムの開発事例では、クラウド通信APIと音声認識を組み合わせ、「電話を受ける・振り分ける・記録する・知らせる」までを専用機器なしでWeb上に集約したことがポイントです。
電話まわりのシステム開発は、画面の見た目以上に「実際の通話で何が起きるか」を丁寧に追いかける必要があります。転送時の番号表示、番号の表記ゆれ、通話の終わり方の違い、通知の順番。どれも仕様書だけでは見えにくく、実際に電話をかけて検証しながら一つずつ解消してきました。こうした細部の積み重ねが、担当者にとって「安心して任せられる電話窓口」をつくると考えています。
「電話対応に追われて本来の業務が進まない」「留守番電話の確認や折り返しが後手に回っている」「既存の業務システムと電話をつなげたい」といった課題をお持ちの方は、お気軽にご相談ください。電話・SMSなどの通信APIや音声認識を組み込んだWebサービスの開発についても、ご要望に合わせてご提案いたします。