アーキテクチャ コンポーネント一覧

ドコモAIエージェントAPIのアーキテクチャにおける、各種コンポーネントについて説明します。

SPF

概要

多目的エンジンであるSpeak基盤における対話フローの制御を行うコンポーネントとなります。

クライアントとなるアプリやデバイスに専用SDKを組み込みSPFサーバと接続することで対話を実現することができます。

機能

  • クライアントから受けとったデータをASR(音声認識)、NLU(自然対話PF)、TTS(音声合成)と連携し、クライアントへの返答を返却
  • 発話区間抽出を行い、会話の初めと終わりを特定
項番 機能 説明
1 通信接続 アプリより通信接続要求を受信し、アプリ⇔SPF間のWebsocketを接続する。
2 DeviceTokenチェック アプリから受信したDeviceTokenを対話UDSのDeviceTokenチェックAPIを呼び出し、ShadowIdとBotIdを取得する。また、DeviceTokenチェックAPIからエラー返却がされた場合(DeviceToken有効期限切れ、テナント状態無効等)、アプリへエラー返却する。
3 端末情報受信 アプリから受信した端末情報をSPF内にキャッシュする。
4 音声データ受信 アプリから音声データを受信する。
5 音声データ送信 アプリから受信した音声データの発話区間検出を行い、発話区間ごとに分割した音声データ、およびSPF内にキャッシュした端末情報をASRに送信し、テキストデータへの変換を依頼する。
6 音声認識結果受信 ASRで変換したテキストデータを受信する。
7 音声認識結果送信 ASRで変換したテキストデータをアプリに送信する。
8 テキストデータ受信 アプリからテキストデータを受信する。
9 テキストデータ送信 ASRで変換したテキストデータ、およびSPF内にキャッシュした端末情報をNLU Proxyに送信し、意図解釈を依頼する。
10 意図解釈結果受信 意図解釈した結果をNLU Proxyより受信する。
11 意図解釈結果送信 NLUで意図解釈した結果をアプリに送信する。
12 テキスト音声合成受信 NLUで意図解釈した結果をSPFからTTSに送信する。
※ NLUより音声合成の指示(意図解釈結果で音声再生指定)を判定し、送信する
13 テキスト音声合成送信 TTSで音声合成した結果をアプリに送信する。
14 通信切断 アプリより通信切断要求を受信し、アプリ⇔SPF間のWebsocketを切断する。

TGW

概要

TGWは、端末アプリ/デバイスより利用されるテキストベースの対話の制御を行うコンポーネントとなります。

テキストベースであるため、RestApiで対話を行います。

LINE、WowTalk、各種WebUIについてもTGWが制御を行います。

機能

テキストベースな対話および、対話を行う為に必要な各種情報の提供

項番 機能 説明
1 テキストデータ受信 アプリ/TGW ConnectorよりテキストデータとDeviceTokenを受信し、自然対話結果を返却する。
2 DeviceTokenチェック 対話するBotとユーザ(Shadow)を特定するため、対話UDSのDeviceTokenチェックAPIによりチェック結果とともにShadowIDとBotIDを取得する。
3 テキストデータ送信 受信したテキストデータおよびShadowIDとBotIDをNLU Proxyに送信し、自然対話結果を受信する。※ NLUの意図解釈はNLU Proxy経由で行う。
4 ユーザ登録(WowTalk/WebUI) WowTalk/WebUIよりチャネルIDを受け取り、ユーザIDを払い出して返却する。
5 テキストメッセージ受信 連携サービスよりトークアプリID、userId、テキストメッセージを受信し、連携サービスに応じたリクエストのパース処理・レスポンス処理を行う。
6 リクエスト・レスポンス変換(LINE) LINEサーバからのメッセージを、TGWへリクエストするためのメッセージに変換する。また、TGWより返却された自然対話結果をLINEのメッセージ書式に変換し、LINEのリプライAPIにより送信する。さらに、LINEへのHTTPレスポンスとして、ステータスコード200の空の応答を返却する。
7 リクエスト・レスポンス変換(WowTalk) WowTalkからのメッセージを、TGWへリクエストするためのメッセージに変換する。また、TGWより返却された自然対話結果よりメタ情報を除いてWowTalkに返却する。
8 リクエスト・レスポンス変換(WebUI) WebUIからのメッセージを、TGWへリクエストするためのメッセージに変換する。また、TGWより返却された自然対話結果をWebUIに返却する。
9 チャネル情報取得 連携サービスのチャネル情報(クライアントシークレット、(LINEの場合:LINEチャネルシークレット、LINE-APIアクセストークン 含む))をDBより取得する。
10 署名検証(LINE) LINEからのメッセージに含まれる署名情報より、アクセス元を検証する。
11 DeviceToken取得 トークアプリID、userIdをキーに、内部DBよりDeviceToken、DeviceRefreshTokenを取得する。
※初回アクセスユーザの場合、取得できないため「DeviceToken払出」で払い出す必要がある。
12 DeviceToken払出 対話UDSに対し、クライアントシークレット、userIdよりDeviceToken、DeviceRefreshTokenの払出を依頼する。また、DeviceRefreshToken期限切れの場合はDeviceIdも同時に渡し、DeviceToken、DeviceRefreshTokenの再払出を依頼する。
13 DeviceToken保存 トークアプリID、userIdをキーに、内部DBにDeviceToken、DeviceRefreshTokenを保存する。
14 テキスト対話 受信したテキストメッセージと取得したDeviceTokenを用いて、TGWとテキスト対話を行う。
15 DeviceTokenリフレッシュ TGWよりDeviceToken期限切れが通知された場合、DeviceRefreshTokenを対話UDSに送信し、DeviceToken、DeviceRefreshTokenの再払出を依頼する。
16 DeviceToken更新 textBotId、userIdをキーに、内部DBのDeviceToken、DeviceRefreshTokenを更新する。

NLU

概要

シナリオ型対話、非シナリオ型対話・雑談を担当します。

AIMLの記述により、雑談や天気などの対話内容をコンテキスト生成サーバーから得ることができます。

また、対話を行うためのデータを受け取った後、指定されたBOT-IDに従って通信先の振り分けを行います。

機能

対話のメイン機能を提供する

また、対話を行うためのデータを受け取り、正しい振り分け先を呼び出す

項番 機能 説明
1 シナリオ雑談対話
コントローラ通信インターフェース
自然対話API通信インターフェースを提供する。
2 NLU向け通信振り分け 受信した情報(対話用データ)を指定されたBOT-IDに従ってNLU通信先の振り分けを行い、その結果を返却する。
振り分けテーブルを持たず(BOT-IDに応じた動的な振り分けは行わず)、固定的な振り分けとする。
課金対象通信の場合は結果を返却する際に課金用データ出力機能を呼び出し、課金情報を出力する。

ASR

概要

SPFサーバーから音声を受け取り、音声認識を行い、認識結果の生成を行います。

機能

より正確な音声認識機能を提供する

大規模な運営を視野に入れており、各種監視機能も具備している

項番 機能 説明
1 音声取得機能 音声認識クライアント、および音声認識クライアントを組み込んだ 音声認識アプリケーションが動作する端末において、 既定のマイクデバイスを想定した音声データバッファから音声認識をするための音声を取得する機能。
2 区間検出・雑音抑圧機能 入力された音声の音声区間の切り出しと、雑音の抑圧をする機能。 本機能は、音声認識クライアントと音声認識サーバで個別に動作する。また、 クライアントで使用した場合については区間検出後の音声区間、雑音抑圧前の音声、 もしくは雑音抑圧後の音声を送信することが可能。VRVADによって実現する。
3 音声コーデックエンコード 音声認識クライアントと音声認識サーバとの間の通信量を削減することを主たる目的として、 /デコード機能 音声を圧縮/伸張する機能。OpusなどのOSSライブラリなどによって実現する。
4 通信機能 音声認識クライアントと音声認識サーバが接続し、音声データ、および認識結果の送受信を行う機能。
5 音声認識クライアント設定機能 接続する音声認識サーバのアドレス、ポート各種機能の使用有無などを設定する機能。
6 分散機能 複数の音声認識プロセスの稼働状況を把握し、 音声認識クライアントからの要求を適切に空きプロセスに割り振る機能。 また、複数マシン上の分散制御については連携サーバを通じて行う。
7 言語識別機能 受信した音声が何語であるかを識別する機能。識別された情報に基づいて、 該当する言語の音声認識モデルを有する音声認識機能を使って認識結果を取得する。
8 音声認識機能 音声を入力として音声認識を行い、認識結果を生成する。音声認識機能は、以下により構成される。 ・ロードする音声認識モデルにより多言語の認識が可能となる。 サーバ/クライアント型で実行する場合は、以下の機能も実現する。 ・音声認識結果を整形するコンバータの設定が行え、アラビア数字への変換などが行える機能を有する。 ・音声認識エンジンのプロセス内で、複数のスレッドを使用して、 複数の認識エンジンコア部を動作させることができる。 ただし、1プロセス内で動作する認識モデルは、1つである。 認識エンジンの動作中に再度別のモデルをロードすることで、認識する言語等を切り替えることは可能。 音声認識エンジンコア部は以下の機能を有する。 ・多言語対応 ・CNN-NIN ・RNN言語モデル ・音響モデルメモリ共有(サーバで起動する場合のみ) ・即時単語追加
9 音声認識サーバログ出力機能 プロセスの動作状態、クライアントからの接続状態、受信した音声データ(音声ログ)、認識結果、 音声認識サーバの状態などをログ保管ディレクトリに出力する機能。 音声ログと認識結果はファイルのベースネームからそれぞれを一意に紐づけることができるための情報や 話された言語、利用時刻などのメタ情報もあわせて記録する。また、ログのローテーション機能を有し、 ログ保管ディレクトリにあるログデータログ収集サーバから、 所定のファイルのルールに基づいたログファイルをパッキングできる構成とする。

TTS

概要

TTSは、音声合成処理をサーバ上で実行するWeb アプリケーションシステムです。

クライアントプログラムは、公開されているWebAPI に従いhttp(s)リクエストメッセージを音声合成サーバ宛に送信することで、サーバから音声合成データを受け取ることができます。

機能

テキストデータを受け取り、自然な音声データを作成する

項番 機能 説明
1 一括音声合成 音声合成を行い、入力されたテキストに対して生成される合成音声を一括で返却します。
2 逐次音声合成 音声合成を行い、入力されたテキストに対して生成すべき合成音声がすべて生成し終わるのを待たず、 生成された結果音声から逐次返却します。
3 テキスト解析 テキスト解析 テキスト解析を行い、読みテキストを返却します。
4 辞書作成 辞書を新規作成します。
5 辞書一覧参照 辞書のプロパティ情報(辞書 ID や辞書種別、辞書の作成日時・更新日時など)の一覧を取得します。
6 辞書一件参照 一件分の辞書のプロパティ情報(辞書 ID や辞書種別、辞書の作成日時・更新日時など)を取得します。
7 SMILE 互換音声合成 WebAPI SMILE 音声合成サーバ Web アプリケーションインタフェース互換の音声合成 API です。 音声合成を行い、全ての合成音声を一括で返却します。

UDS

概要

エンドユーザとデバイスとの対話を実現するため、デバイスの登録やエージェントの確認、利用設定、各種アカウントとの連携を行う機能です。

UDSFとUDSBの2種類が存在し、UDSBはRestApi、UDSFは画面を提供しています。
UDSFが提供する画面にアクセスして頂く事で、デバイスに対する各種連携がご利用いただけます。

法人様で専用のUDS画面を作成する事も可能です。その場合、作成頂いた専用UDS画面から、UDSBを呼び出して頂く形となります。

機能

デバイスとエージェントとの紐づけやアカウントの連携を行う

UDSF

項番 機能 説明
1 ログイン表示 ログイン画面を表示する。
2 OIDC認証要求 OIDCのAuthorizationCodeFlowを用いてCiRCUSにアクセスし、AuthorizationCodeを用いてトークン要求を行い、初ログインの場合ユーザを作成する。
3 ダッシュボード表示 UDSBから情報を取得し、シャドウ情報が記載されたダッシュボード画面を表示する。
4 新規デバイス登録表示 新規デバイス登録画面を表示する。
5 新規デバイス登録 入力されたDeviceIdをUDSBに登録する。
6 デバイス一覧表示 UDSBから情報を取得し、デバイス情報がリストで記載されたデバイス一覧画面を表示する。
7 デバイス削除 UDSBにユーザが選択したデバイスの削除を要求し、デバイス情報を削除する。削除後、自画面に遷移する。デバイスIDが一つもない場合は、ダッシュボード画面を表示する。
8 サービス一覧表示 UDSBから情報を取得し、サービス情報がリストで記載されたサービス一覧画面を表示する。
9 有効化サービスのみ表示 UDSBから情報を要求し、サービスを有効化したサービス情報のみ取得し、表示する。
10 サービス詳細表示 UDSBから情報を取得し、サービス情報が記載されたサービス詳細画面を表示する。
11 サービス有効化 UDSBに認証情報取得、その結果をもって認証要否で分岐する。認証が必要な場合はOAuth2のAuthorizationCodeFlowを用いて、個社IdPからアクセストークン、リフレッシュトークンを取得し、サービス有効化を行う。認証が不要な場合は上記認証を行わず、サービス有効化のみを行う。
12 サービス有効化受付 個社UDSFの代わりにサービス有効化の一連処理を行い、結果を返却する。
13 サービス無効化 UDSBにサービス無効化を要求する。
14 アカウント連携表示 UDSBから情報を取得し、アカウント情報が記載されたアカウント連携画面を表示する。
15 アカウント連携 OAuth2のAuthorizationCodeFlowを用いて、個社IdPからアクセストークン、リフレッシュトークンを取得し、UDSBにアカウント連携要求を行う。
16 ログアウト UDSBにログアウト要求する。

UDSB

項番 機能 説明
1 ログイン ログインを行うことによりUDSB内でセッション管理を行う。レスポンスとしてSessionIdを払いだす。
2 ログアウト UDSBに対しての明示的名ログアウトを行う。ログインした際に作成したセッション情報を削除し、SessionIdを無効化する。
3 Shadow一覧取得 ログイン中のユーザが保有するShadowの一覧を取得を行う。
4 サービス一覧取得 エージェントにマッチング状態にあるサービスの一覧、およびShadowに既に紐付いているサービス(利用中/有効化)の一覧を取得を行う。
5 サービス詳細取得 指定されたサービスの詳細情報を取得を行う。サービスの利用登録(有効化)および解除(無効化)に必要な情報を取得する。
6 サービス認証情報取得 指定されたサービスの有効化に必要な認証情報を取得する。
7 サービス有効化 Shadowに対して指定されたサービスの利用の登録(有効化)を行う。
8 サービス無効化 Shadowに対して登録されているサービスの利用の解除(無効化)を行う。
9 デバイス登録 ユーザが保有するデバイスの登録を行う。
10 デバイス一覧取得 Shadowに紐付くデバイスの一覧を取得を行う。
11 デバイス削除 Shadowに紐付くデバイスに対して紐付けの解除(削除)を行う。
12 アカウント連携情報一覧取得 Shadowに対して、OAuth2.0を利用した、AccessToken、RefreshTokenの登録を行うことができる情報(アカウント)の一覧取得を行う。
13 アカウント連携情報詳細取得 Shadowに対して、OAuth2.0を利用したAccessToken、RefreshTokenの登録するための詳細情報の取得を行う。OAuth2.0の認証を行うために必要な情報を取得する。
14 アカウント連携 Shadowに対して、OAuth2.0を利用した、AccessToken、RefreshTokenの登録(アカウント連携)を行う。
15 ログインセッション状態チェック セッション状態チェック、ユーザ情報の取得を行う。
16 契約状態チェック 契約の状態を取得、チェックを行う。
17 エージェント状態チェック エージェントの状態を取得、チェックを行う。
18 トークン設定 OAuth2.0を利用して取得したAccessToken/RefreshTokenを受け取り、Shadowに対し登録を行う。
19 NLU-UserStruct紐付け削除 ShadowとNLU-UserStructの紐付けを解除する。
20 エージェント有効化数計上 エージェントの有効化数を計上する。
21 エキスパートエージェント有効化数計上 エキスパートエージェントの有効化数を計上する。

CGS

概要

エージェントからアクセスする外部エンドポイントと、そのバックエンドのアプリケーションを指します。
エージェントから送信されてきた情報をもとにサービスにアクセスし、対話文の形式で結果をエージェントに返します。

あらかじめ用意されているシステムCGSと、開発者が独自に用意するオリジナルCGSがあります。
オリジナルCGSを追加していく事で、さまざまな機能の提供が可能となります。

機能

外部サービスとの橋渡しを担当し、適切なサービスの呼び出しを行う
実際の機能は、開発元に依存する

例:トレンドサーチサービスの場合

リクエスト

Method: POST
Headers: "Content-type: application/json"
Request Body
{
bot_id:"ボットID",
user_id:"ユーザID",
lang:"ja-JP",
args:{"keyword":"キーワード"}
}

レスポンス

Response Body
{
user_id:"ユーザID"
bot_id:"ボットID"
status:"true"
error_code:"success"
params:{
genre:"スポーツなど"
linkUrl:"http://www.XXXXX.html"
brief_body:"記事の内容など"
relatedContents:""
sourceName:"記事の導出元など"
title:"記事のタイトルなど"
body:"記事の内容など"
sourceDomain:"www.XXXXX"
}
}

「params」はCGSとAIML作成時に自由に定義して頂く事ができます。

FAQ

概要

複数の企業ユーザでの利用を想定し、それぞれの企業ユーザごとに所有するBotIDより、適切なFAQ情報の検索を行います。

また、必要に応じて適切なFAQ情報のデータ生成/登録を行うことが出来ます。

機能

FAQ情報の検索、登録、生成を行う

項番 機能 説明
1 キーリストマッチングFAQID 指定したキーリストを使用している
FAQID/AnswerIDを取得/AnswerID取得
2 FAQID使用キーリスト取得 指定したFAQIDが使用しているキーリストを取得
3 キー質問文取得 指定したキーの質問文を取得
4 FAQIDに紐づく質問/回答情報取得 指定したFAQIDに紐づく回答ID/回答文/FAQ質問文を取得
5 回答IDに紐づく質問/回答情報取得 指定した回答IDに紐づく回答ID/回答文/FAQ質問文を取得
6 文字列マッチによるキー取得 指定した文字列より揺らぎリストにマッチしたキーリストを取得
7 回答情報テーブルへ数値格納 指定した回答IDの格納先種別に数値を格納