製品をチェック

製品の詳細・30日間の無償トライアルはこちら

CData API Server

OData のデータをAI アシスタントのPEP から利用する方法

AI アシスタントPEP から OData のデータに連携し、チャットボットでリアルタイムOData のデータを使う方法

杉本和也
リードエンジニア

最終更新日:2022-06-24
odata ロゴ

CData

apiserver ロゴ画像
PEP ロゴ

こんにちは!リードエンジニアの杉本です。

CData API Server と ADO.NET Provider / JDBC Driver for OData を使って、AI アシスタントPEP(https://pep.work/) から OData に接続して、チャットボットでリアルタイムODataデータを使った応答を可能にする方法を説明します。

OData とのデータ連携について

CData は、リアルタイムOData サービスデータへのアクセスと連携を容易にします。CData のコネクティビティを活用することで、以下のことが可能になります。

  • OData バージョン2.0、3.0、4.0 にアクセスすることで、レガシーサービスと最新の機能や性能を活用できます。
  • $filter、$select、$expand などの高度なクエリオプションを活用することで、サードパーティツールからのデータ取得を強化します。
  • 集計とグループ化をサーバーサイドで実行することで、データ転送を最小限に抑え、パフォーマンスを向上させます。
  • Azure AD、Digest、Negotiate、NTLM、OAuth など、さまざまなスキームを使用して安全に認証することで、あらゆる接続での安全な認証を実現します。
  • SQL ストアドプロシージャを使用してOData サービスエンティティの管理(エンティティ間の関連付けのリスト、作成、削除)を行います。

CData のソリューションを活用して、OData サービスをPower BI、MicroStrategy、Tableau などの好みのツールに定期的に連携したり、OData サービスからデータベースやデータウェアハウスにデータをレプリケートしたりすることができます。

API Server の設定

次のステップに従い、セキュアな REST API サービスを立ち上げます

デプロイ

API Server はサーバー上で稼働します。Windows 版は、製品に組み込まれているスタンドアロンのサーバーかIIS に配置して稼働させることができます。Java 版では、Java servlet コンテナにAPI Server のWAR ファイルを配置します。 デプロイの詳細は製品ヘルプを参照してください。API Server を Microsoft AzureAmazon EC2Heroku にデプロイする方法はKB に記事があります。

OData への接続

API Server の管理コンソールで[設定]→[接続]から新しい接続を追加してOData を追加します。

OData のアイコンがデフォルトのAPI Server の接続先にない場合には、API Server がJava 版の場合はJDBC Drivers、API Server がWindows 版の場合はADO.NET Data ProvidersからOData ドライバーをAPI Server と同じマシンにインストールして、API Server を再起動します。

OData への接続に必要な認証情報を入力します。接続のテストを行い、接続を確認して、設定を保存します。

OData への接続

OData に接続するには、Url を有効なOData サービスルートURI に設定する必要があります。 OData サービスにルートドキュメントがない場合、テーブルとして公開したい特定のエンティティをFeedURL に指定してください。

OData への認証

OData は、以下を経由する認証をサポートします。

  • HTTP
  • Kerberos
  • SharePoint Online
  • OAuth
  • Azure AD

HTTP 認証スキーム

HTTP で認証する場合は、次の表に従ってAuthScheme を設定します。

SchemeAuthSchemeその他の設定
NoneNone認証を必要としない場合に使用。
BasicBasicUserPassword
NTLMNTLMUserPassword
Digest(サポートされている場合)DigestUserPassword

その他の認証方法の詳細は、ヘルプドキュメントの「接続の確立」セクションを参照してください。

接続を確立後、[設定]→[リソース]の画面で からREST API として公開するエンティティを選択します。

API Server のユーザー設定

[設定]→[ユーザー]からAPI にアクセスできるユーザーの認証設定を行います。API Server はトークンでの認証を行うことができます。 IP アドレスでAPI へのアクセスを制限することも可能です。デフォルトではローカルマシンからのアクセスのみが許可されています。SSL の設定も可能です。

オンプレミスDB やファイルからのAPI Server 使用(オプション)

オンプレミスRDB やExcel/CSV などのファイルのデータを使用する場合には、API Server のCloug Gateway / SSH ポートフォワーディングが便利です。是非、Cloud Gatway の設定方法 記事を参考にしてください。

PEP でOData のデータをチャットで使う設定

前項まででAPI ができたので、ここからはPEP 側での設定作業です。

PEP でOData のAPI をコールするシナリオを作成

PEP 側ではあらかじめSlack などのアプリケーションを構成しておきます。ここにAPI Server をコールするAI アシスタントのシナリオを追加していきます。

PEP
  • 「会話編集」→「シナリオ」に移動し、新しいシナリオを作成します。
  • PEP
  • シナリオ名を入力します。この例では、条件はSlack Homeを 選択しています。
  • PEP
  • 「新規作成」ボタンをクリックすると、以下のようなシナリオエディタ画面に移動します。これでシナリオを作成する準備ができました。
  • PEP

OData のAPI の接続箇所の設定

具体的にAPI連携を含めたシナリオを作っていきます。

  • 最初に検索したい文字列を受け取るための対話ノードを配置して、以下のように構成します。
  • PEP
  • ポイントは分岐条件で「以下のすべての会話」、発言内容の記憶で「film_name」として、会話した内容を変数に保存することです。
  • PEP
  • 対話ノードを配置したら、APIノードを追加して、対話ノードから接続していきます。
  • PEP
  • APIノードでは、以下のように CData API Server へのリクエストを構成します。
    ポイントは2つです。CData API Server は Filter 機能によって、取得するデータを絞り込むことができます。その指定が「$filter=contains(title,'{{ state.scenario_4.form.film_name }}')」の部分です。 「{{ state.scenario_4.form.film_name }}」は直前の対話ノードで設定した変数をパラメータとして渡しています。「scenario_4」はPEP のシナリオIDですので、作成したシナリオに合わせて変更してください。
  • HTTPヘッダーにAPI Server のユーザートークンを指定します。
    • API名:任意の名前を設定
    • URL:http://apiserverurl/api.rsc/film_list?$filter=contains(title,'{{ state.scenario_4.form.film_name }}')
    • HTTPメソッド:GET
    • Content-Type:JSON
    • HTTPヘッダー:キー「x-cdata-authtoken」、値「予め取得したAPI Serverのトークン」を指定
  • PEP

これで保存すると、API ノードが使えるようになります。

取得したOData からのレスポンスの表示方法

最後に後続の対話ノードを構成し、取得した検索結果を表示します。

PEP

対話ノードの応答文には、以下のような文章を埋め込みます。

検索結果は以下のとおりです。 {% for item in state.scenario_4.api_response.film_search.value %} フィルムID:{{ item.FID }} タイトル : {{ item.title }} 値段:{{ item.price }} カテゴリー:{{ item.category }} 俳優: ----- {% endfor %} PEP

ここでポイントになるのは、API Server から受け取るJSONのレスポンスの分解方法です。 API Server のレスポンスはオブジェクト直下にvalueという配列要素があり、このレスポンスは「{{state.scenario_4.api_response.film_search.value}}」の形でアクセスできます。
設定イメージ:state.シナリオID.api_response.APIノード名.value
これを「FOR」での繰り返し処理で取得して、文章として表示する仕組みになっています。

PEP

これで設定は完了です。実際に動かしてみると、OData →API Server → PEP 経由でデータを取得して表示していることがわかるかと思います。

CData API Server の無償版およびトライアル

CData API Server は、無償版および30日の無償トライアルがあります。是非、API Server ページ から製品をダウンロードしてお試しください。

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。