コラム

社内業務効率化や、社内のデジタル化を推進するために役立つ情報、
PEP活用のヒントなどをご紹介しています。
catch-img

CData API Serverを使用してPEPからMySQLデータを検索するシナリオを作成

この記事では、PEPのパートナーであるCData Software Japan 合同会社のリードエンジニア杉本和也氏(@sugimomoto)による、CData社のAPI Serverを使用してPEPからMySQLデータを検索する連携事例についてご紹介させていただきます。

【以下杉本氏による解説です。】


目次[非表示]

  1. 1.PEPでのAPIノードを活用した連携について
  2. 2.今回やってみたこと
  3. 3.手順
    1. 3.1.API Server の環境構成
    2. 3.2.対象のエンドポイントを追加する
    3. 3.3.PEPでシナリオを作成
    4. 3.4.API 接続箇所の設定方法
    5. 3.5.取得したレスポンスの表示方法
    6. 3.6.動作イメージ
  4. 4.おわりに

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

今回はPEPというAIアシスタント型iPaaSとCData API Serverを組み合わせたAPI連携方法を紹介したいと思います。


PEPでのAPIノードを活用した連携について

PEPでは以下のような作成画面でAIアシスタント、いわゆるチャットボットを構成することができ、


また、APIノード(コネクタ機能)によって、各種クラウドサービスと連携させることができます。


今回やってみたこと

CData では、各種RDBやNoSQLから自動的にREST Ful API を生成することができる、CData API Server という製品を提供しています。

https://www.cdata.com/jp/apiserver/



通常、RDBをクラウドサービスからコールしたい場合は、インターフェースとなるAPIをフルスクラッチで作成する必要がありますが、API Serverを利用することで簡単にRDBに接続できるAPIを生成することが可能です。

これにより、既存のRDBや基幹システムのバックエンドとPEPを手軽に組み合わせてAIアシスタントを構成することができます。



今回はMySQL のサンプルデータベースとして有名なsakila(レンタルビデオの管理DB)のFilmテーブルを題材として、タイトルや主演での検索および在庫店舗の特定を行うためのAIアシスタント作成をPEPを通じて構成してみました。



手順

それでは実際の手順を紹介します。

API Server の環境構成

今回は AWS EC2にAPI Server を構成しました。内部でMySQL(MariaDB)を構成し、接続しています。


構成手順は以下を参考にしてみてください。

  CData API Server を AWS EC2 Amazon Linux2 で構成する - CData Software Blog こんにちは。CData Software Japan リードエンジニアの杉本です。 前回、CData Sync を AWS EC2 で構成する方法を紹介しました。今回は CData API Serverの構成も紹介したいと思います。 www.cdatablog.jp CData API Server の構成方法 Cross-Platform版を構成するにあたって 手順 CData API Serverのダウンロード AWS EC2 Amazon Linux の立ち上げ JDK Install Tomcat Install CData API Server の配置 Tomcat 起動 Maria… CData Software Blog


PEPがクラウドサービスのため、API ServerはクラウドホスティングもしくはオンプレミスのDMZなどに配置して、PEPがアクセスできるように構成する必要があります。

API Server にはデフォルトでCloud Gatewayの機能も提供されているので、もしオンプレミスに配置する場合はこちらを使ってみてください。




対象のエンドポイントを追加する

API Server 構成後、今回利用するエンドポイントを新しく追加します。

「設定」→「リソース」タブに移動し「新しいリソースを追加」をクリックします。


予め作成しておいた「MySQL」のコネクションを選択して、次へ移動し、


「film_list」「inventory」「store」等を追加します。


下記のようにリソースが追加されていればOKです。


あとは接続の時に利用するユーザーも登録しておきます。生成されたトークンを後で利用するので、控えておきましょう。


構成されたAPIエンドポイントを確認してみます。「API」タブに移動すると、追加したリソースが表示されています。ここでリクエスト方法などを確認できます。


試しにURLをクリックしてみると、以下のようなJSONを取得できました。



PEPでシナリオを作成

次にPEP側を構成していきます。

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


「会話編集」→「シナリオ」に移動し、新しいシナリオを作成します。


シナリオ名は「フィルム検索シナリオ」としました。条件はSlack Homeを選択しています。


「新規作成」ボタンをクリックすると、以下のようなシナリオエディタ画面に移動します。これでシナリオを作成する準備ができました。



API 接続箇所の設定方法

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

まず最初に検索したい文字列を受け取るための対話ノードを配置して、以下のように構成します。


ポイントは分岐条件で「以下のすべての会話」、発言内容の記憶で「film_name」として、会話した内容を変数に保存することです。


対話ノードを配置したら、APIノードを追加して、対話ノードから接続していきます。


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名:film_search
  • 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のトークンを指定」


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



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

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


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

検索結果は以下のとおりです。

{% for item in state.scenario_4.api_response.film_search.value %}
フィルムID:{{ item.FID }}
タイトル : {{ item.title }}
値段:{{ item.price }}
カテゴリー:{{ item.category }}
俳優: -----

{% endfor %}



ここでポイントになるのは、API Serverから受け取るJSONのレスポンスの分解方法です。

API Server のレスポンスはオブジェクト直下にvalueという配列要素があり、このレスポンスは「{{state.scenario_4.api_response.film_search.value}}」の形でアクセスできます。

設定イメージ:state.シナリオID.api_response.APIノード名.value

これを「FOR」での繰り返し処理で取得して、文章として表示する仕組みになっています。



動作イメージ

実際にできあがったものをSlackから動かしてみました。

シンプルですが、MySQL→API Server →PEP経由でデータを取得して表示していることがわかるかと思います。

これにInventoryやStoreを加えることで、在庫店舗の確認や貸出中ステータスのような確認もPEPで実現できそうです。



おわりに

このようにAPI ServerでAPIを公開することで、iPaaSから既存のRDBなどがとても使いやすくなります。

今回はMySQLを対象にしましたが、PostgreSQLやSQL Server、Oracleといったデータソースにも対応できます。

詳細はCDataの公式サイトをご確認ください。




また、SalesforceやSharePointなどのクラウドサービスも、部分的にAPI Server経由でAPI公開することができ、通常は複雑なAPIリクエストが必要なクラウドサービスにも手軽にAPIアクセスできるようになります。



ぜひ、いろんなシチュエーションで試してみてください。

CData Software Japan
CData Software Japan

CData Software, Inc. は、See the World as a Database をミッションに、データ接続および連携ソリューションを提供しています。ドライバーとデータ接続テクノロジーの開発に特化し、お客様のオンプレミスおよびクラウドアプリケーション、データベース、Web API へのリアルタイム接続を実現いたします。CData 製品は、世界中の大手企業、中小企業、政府機関、教育機関のデータ統合ソリューションにて利用されています。

PEPによる業務効率化・コスト削減について詳しく知りたい方は お気軽にご相談ください

コスト削減効果を無料で
シミュレーションできます
導入検討にあたっての
個別相談を承ります
PEPの詳細について
知りたい方はこちら

お電話でのお問い合わせ03-6277-5463平日10:00~18:00