仮想スマートシティ構築 第3回(後編)「自動音声電話によるバス乗車支援サービス」~スマートシティにおける高速開発アプローチ~

コラム3回目のテーマは、「NooS City」アプリに新たなユースケース「自動音声電話によるバス乗車支援」を追加することです。前編では、ユースケースの要件および基本シナリオ、システム全体の構成について説明しました。後編では「NooS City」アプリがお客様に自動的に電話を掛ける(架電する)部分を中心に、設計・構築上のポイントを説明します。
以下は前編で説明したシステム構成のうち、自動架電を行う部分にフォーカスした図です。VANTIQ上に構築する「乗車予定連絡サービス」と、AWS上に構築する「自動架電基盤」から構成されます。

2_6766_1a.gif

    全体の流れは下記の通りでした。なお箇条書きの番号は、図の番号に対応しています。

  1. 「乗車予定連絡サービス」は、バスのGPS情報を基に電話連絡対象の乗車予定を特定し、「自動架電基盤」に連携する。また乗車予定のステータスを「電話連絡中」に更新する。
  2. 「自動架電基盤」は、お客様に自動音声電話を掛ける。
  3. お客様への電話が終了したら、「自動架電基盤」は「乗車予定連絡サービス」に架電終了通知を行う。
  4. 「乗車予定連絡サービス」は、架電終了通知を受けて乗車予定のステータスを「電話連絡済」に更新する。

以降では、「乗車予定連絡サービス」および「自動架電基盤」について、詳細を説明します。

乗車予定連絡サービス(VANTIQ)

VANTIQ上におけるアプリケーション開発

VANTIQでは、フローチャートを作成するイメージでアプリケーションを開発します。図上の角が丸い四角形のことを「アクティビティ」と呼びます。「アクティビティ」はデータ変換やAPI呼び出し、集計処理といったさまざまな処理を行います。「アクティビティ」をパレットから選択して線で結び、アクティビティのプロパティを設定することで、開発ツール上でビジュアルにアプリケーションを開発することができます。

2_6766_2a.gif

「乗車予定連絡サービス」上に作成した、自動架電対象抽出アプリケーションを以下に示します。このアプリケーションでは、フローの上から順に記載した通りの処理を行っています。

2_6766_3a.gif

次の節では、APIリクエスト変換処理(transformToAPIRequest)とAPI呼出処理(callAPI)について、VANTIQが用意したアクティビティを用いて簡単に開発できることを説明します。また、VANTIQが用意したアクティビティでは実現できない処理を開発する例として、ステータス更新処理(updateStatusToCalling)を説明します。

アクティビティの詳細

自動架電要求APIリクエストへの変換処理

バスのGPS情報や乗車予定の情報を、自動架電要求APIのリクエストに変換します。この処理はオブジェクトの変換を行う「Transformation Activity」で実現しました。アクティビティには以下画像のようにオブジェクトの変換ルールを設定しました。コーディングを行う必要はありません。

6766_4transformation.gif

自動架電要求APIの呼出処理

先ほど変換したリクエストを引数として、自動架電要求APIを呼び出します。この処理は「PublishToSource Activity」で実現しました。以下画像のようにAPIのURLとHTTPヘッダーの値、HTTPメソッドを設定しています。これだけでAPIを呼び出すことができます。

6766_5source.gif

ステータス更新処理

VANTIQでアプリケーションを開発する場合、通常は、これまでに説明したようにVANTIQが用意したアクティビティを使用して行います。ですが実際には、VANTIQが用意したアクティビティでは機能が足りないこともあります。そのような場合、VANTIQでは「Procedure」を作成します。今回はステータスを更新する処理(*1)を「Procedure」で実現することにしました。

2_6766_6procedure.gif

「Procedure」とはVANTIQ上で動くプログラムです。VAILと呼ばれる専用言語でコーディングします。AWSにおけるLambdaに相当する機能というイメージです。このように、VANTIQはノーコード開発を基本としながらも、必要な場合は自分でコーディングできる柔軟性を備えています。「Procedure」は、VANTIQ外から直接REST APIとして呼び出すことができます。そのため、電話終了時に「自動架電基盤」から「乗車予定連絡サービス」に通知を行う部分は、「自動架電基盤」から、この「Procedure」をREST APIとして呼び出すことで実現できます。AWSで同じことをする場合はAPI Gatewayの設定が必要ですが、VANTIQではそのような追加手順は不要です。

(*1)実際には「SaveToTypeActivity」を使用すれば、ノーコードでステータス更新を行うことができます。ただし今回は「Procedure」の説明する都合上、「SaveToTypeActivity」は使用しませんでした。

自動架電基盤(AWS)

「自動架電基盤」は、「乗車予定連絡サービス」から受けとった自動架電要求を基にお客様に電話連絡を行い、音声メッセージを流します。この部分はAmazon Connect上に自動架電用のフローを作成して実現します。今回作成したフローは以下画像の通りです。

2_6766_7amazon-connect.gif

詳細については、以下を参考に構築しましたのでご参照ください。

「NooS City」アプリの動作確認

最後に今回開発したアプリについて、前回説明した基本シナリオ通りに動作することを確認します。

2_6766_8demo_01.gif

鈴木さんは、8時20分に大崎ビルのバス停に乗車する予定です。この予定を、あらかじめ「NooS City」アプリに登録しておきます。

2_6766_9demo_02.gif

バスが停留所に到着する5分前になると、「NooS City」アプリはそのことを検知し、鈴木さんに自動的に電話連絡を行います。ダッシュボード上のステータスは「電話連絡中」に更新されます。

6766_10demo_03.gif

鈴木さんのスマートフォンに着信連絡があります。鈴木さんがスマートフォンに応答すると、以下のような自動音声メッセージが流れます。「鈴木花子様、ご利用ありがとうございます。大崎ビルに、8時40分到着予定のバスが、あと5分で到着いたします。ご乗車の準備をお願いいたします。」

2_6766_11demo_04.gif

鈴木さんが自動メッセージを確認し電話を切ると、ダッシュボード上のステータスは「電話連絡済」に更新されます。

今後の拡張性について

今回、お客様に対する電話終了後の処理は、非常に簡単な内容でした。この部分について、たとえばお客様に数字のボタンを押していただいた結果や、お客様がスマートフォンにしゃべった内容などを踏まえて、処理を行うといった機能拡張が考えられます。そのような場合でも、VANTIQでは簡単に機能を実現できます。またVANTIQは、生成系AIとの連携機能も提供しており、より柔軟な対応を実現することも可能です。

まとめ

今回は、「NooS City」アプリに新たなユースケース「自動音声電話によるバス乗車支援」を追加しました。前編ではユースケースの要件および基本シナリオ、システム構成を説明しました。後編ではお客様へ自動的に電話を掛ける部分を中心に、VANTIQおよびAmazon Connectにおける設計・構築上のポイントを説明しました。本コラムの内容を通じて、VANTIQがDX・スマートシティ・自動架電といった分野で、ローコード開発よる高い生産性を発揮できることがおわかりいただけたかと思います。
本連載ではこれからも、DXやスマートシティを実現するお客様の手助けになる情報を発信させていただく予定です。

2023年11月03日公開
※この記事に掲載されている内容、および製品仕様、所属情報(会社名・部署名)は公開当時のものです。予告なく変更される場合がありますので、あらかじめご了承ください。

関連サービス

  • VANTIQ

    「リアルタイムデータ連携」「複合イベント処理」「ローコード開発」を可能にする開発運用プラットフォームVANTIQ