0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Watson Assistant を no code low code で遊んでみるAdvent Calendar 2022

Day 15

パーソナライズ 化への第一歩 Part1 〜 カスタム拡張機能 (Db2編)

Last updated at Posted at 2022-12-15

image.png

ユーザーの顧客情報 (名前、住所、電話番号) やこれまでの取引内容がわかれば、ユーザーに聞き返すことが不要になったり、場合によってはレコメンドや個人のステータスに合わせた新たなサービスを提供できる可能性があります。

顧客情報を管理するシステムバーチャル・アシスタントが連携できれば、ユーザーに聞き返す項目が減らせたり、決まりきった回答だけでなく、ユーザーの特性に合わせた回答やレコメンドができる可能性があり、バーチャル・アシスタントを適用するユースケースが広がりそうです。

外部システムと連携するバーチャル・アシスタント

外部システムと連携するバーチャル・アシスタントを作成する場合、外部システムと連携する機能の開発が前提になります。
連携機能の開発には、接続先システムの接続仕様を理解し、その仕様に沿った接続プログラムの開発が必要になります。
New Watson Assistant は、この開発作業を軽減できるカスタム拡張機能を提供しています。

このカスタム機能を使った外部システムとの連携方法の全体像を確認してみます。
今回は、仮の顧客テーブルを準備して、それをデータベースに登録するところから始めてみます。
手順として、4 つのステップを考えました。

  1. 顧客テーブルの作成
  2. 顧客テーブルを呼び出すファンクションの作成
  3. ファンクションを呼び出すカスタム拡張機能の構成
  4. アクションの作成

今回の記事では、上記 12 の内容を見てみます。
残りの 2 つは明日の記事で見てみます。

顧客テーブルの作成

顧客テーブルの作成先として、Db2 を使用してみます。
IBM Cloud には、Db2 を無償で使用できる Db2 on Cloud Lite プランがあります。

Db2 インスタンスの作成

IBM Cloud ダッシュボードの上の方にある検索窓に Db2 と入力し、カタログ内で見つかった Db2 サービスをクリックします。
image.png
Lite プランが選択されていることを確認します。使用条件に同意し、作成をクリックします。
image.png
ダッシュボード画面に戻ると、Db2 インスタンスが作成されていますので、クリックします。
image.png

顧客テーブルを作成する

管理画面にアクセスするために Go to UI をクリックします。
image.png
Db2 管理画面が表示されました。まだ、テーブルが存在しないので、リソース使用量は 0 です。
ここで、バーチャルピザ屋の顧客情報と過去のオーダー履歴を含む、(仮想)顧客テーブルをアップロードします。テーブルの内容はこのような感じです。
image.png

仮想顧客テーブルは、こちらの GitHub に置いてあります。
ファイル名: account_data.csv

データアイコンをクリックします。
image.png
account_data.csv を ドラッグ & ドロップ でアプロードします。
image.png
ファイルがアップロードされたことを確認して、次へをクリックします。
image.png
新規表を作成します。表名には acount_data を使用します。
image.png
表が作成されたので、次へをクリックします。
image.png
image.png
image.png
10秒から20秒程度で、Db2 にテーブルを作成できました。本当に簡単ですね。

もちろん、CSV ファイルのアップロードではなく、定番の SQL 文を使ってテーブルを作成する方法もあります。
@nishikyon さんのこちらの記事が参考になると思います。

顧客テーブルの確認

作成した顧客テーブルを確認します。
image.png
スキーマにチェック、account_data をクリック、テーブルの表示をクリックします。
image.png
アップロードした CSV ファイルで作成された顧客テーブルの確認ができました。
image.png
テーブル項目に ID 列があります。この ID を使用して、バーチャル・アシスタントがテーブルから特定の情報を取得します。

顧客テーブルを呼び出すファンクションの作成

IBM Cloud Functions の作成

IBM Cloud ダッシュボード画面から、Functions を選択します。
image.png
image.png
初めて、IBM Cloud Functions を作成する場合、最初に名前空間が必要になります。
image.png
名前は任意です。ここでは VirtualPizza としています。
image.png
アクションをクリックします。
image.png
アクション名は任意です。ここでは acount_table としています。
今回は、Python コードを使用するので、ランタイムに Python 3.9 を選択します。
image.png

エディター画面が表示されますので、Python コードを書き加えます。

IBM Cloud Function: account_table
import sys
import ibm_db
import datetime

def main(dict):
    
    # ACCOUNT_TABLE テーブルにselect文を発行する
    if dict["action"] == "select":
        ssldsn = "DATABASE=BLUDB;HOSTNAME=***.databases.appdomain.cloud;PORT=32459;PROTOCOL=TCPIP;UID=***;PWD=***;Security=SSL"
        db_conn = ibm_db.connect(ssldsn,"","")
        sql = "SELECT * FROM ACCOUNT_DATA WHERE ID = ?"
        db_stmt = ibm_db.prepare(db_conn,sql)
        id = dict["id"]
        ibm_db.bind_param(db_stmt,1,id)
        ibm_db.execute(db_stmt)
        rows = ibm_db.fetch_tuple(db_stmt)
        ibm_db.close(db_conn)


        return {'result':
            {
                "id": rows[0],
                "name": rows[1],
                "age": rows[2],
                "sex": rows[3],
                "tel": rows[4],
                "address": rows[5],
                "pizza": rows[6],
                "size": rows[7],
                "drink": rows[8],
                "side": rows[9],
                "member": rows[10],
                "flag": rows[11]
            }
        }

Python コードは、こちらの GitHub に置いてあります。
ファイル名: account_data.py

作成した Functions のテスト

テストを実施するために、パラメータをセットします。
image.png
パラメータ欄にパラメータを指定します。

パラメータ
{
    "id": 222,
    "action": "select"
}

起動をクリックします。
image.png
ID 222 に関する顧客テーブルの呼び出しが成功しました。
(実行結果イメージ)
image.png

いかがでしたでしょうか

カスタム拡張機能から呼び出す前提が揃いましたので、明日は、カスタム拡張機能を構成し、アクションから呼び出してみます。

参考情報

公式オンライン・マニュアル:

役にたつ Qiita の記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?