Watson AssistantのAPIとNode-REDの対応

この間のWatson AssistantのチャットボットをWordPressに掲載する記事で、SkillとAssistantについて触れました。

以前のWatson Assistantでは、Workspaceの配下にIntentなどがあって会話のやり取りを構成しています。一方、今回のWatson Assistantの更新では、IntentなどはSkillの配下となって、さらにSkillの上部にAssistantが配置されています。

将来的にはAssistantの配下に複数のSkillを置いて・・・ということが予想されますが、現時点ではSkillは1つしか置けないようです。

ちなみに、V1APIとV2APIの違いについては、Qiitaのこちらの記事を読めば充分なんですけどね。

Node-REDからWatson Assistantを呼び出したい

ところで、Watson Assistantで作ったチャットボットをLINEと連携したい場合などにNode-REDを使ってWebhookをちょっと作るみたいなことをやるのですが、Node-REDのassistantノードの設定画面はこのようなものです。

Username、Password、API Key、Workspace IDといった項目があります。Skillとして作成した場合、どのように設定すれば良いのでしょうか。

IBM CloudのNode-REDスターターキットを使っている場合、今日時点でNode-REDインスタンスを作成すると、node-red-node-watson 0.7.4が導入されます。

npmのサイトを見ると、0.7.4は最新版のようです。AssistantのAPIバージョンは2018-09-20となっています。これはV1APIです。(V2APIだと2018-11-08になります。)

New in version 0.7.4
Bump Assistant version to 2018-09-20

Watson Assistant側がV2APIに対応していても、Node-RED側がV1APIにしか対応していないので、それに応じた形での指定をしなければなりません。

実は、Skillsの画面でSkillのView API Detailsを参照すると、Skill IDと並んでWorkspace IDも表示されます。

Service Credentialsは、Watson Assistantのインスタンスを作成した時期でUsernameの値が異なり、古いインスタンスではUsernameがユニークな値となりますが、新しいインスタンスではUsernameはapikeyという値で固定になるようです。

Node-RED側では、下記のような設定となります。

Usernameがユニークな値

  • Username: Service CredentialsのUsernameの値
  • Password: Service CredentialsのPasswordの値
  • API Key: 空欄
  • Workspace ID: SkillのWordspace IDの値

Usernameがapikey

  • Username: 空欄
  • Password: 空欄
  • API Key: Service CredentialsのPasswordの値
  • Workspace ID: SkillのWordspace IDの値

これでOKなようです。

Watsonの機能が進化するのは有り難いことですが、使い方が都度変わるので、追いついていくのはなかなか大変ですね・・・。

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。画像認識モデルを活用したアプリや、生成AIを業務に組み込むためのサービス「Gen2Go」の開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。