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エンジニア/ブロガー。
井上研一事務所代表、株式会社ビビンコ代表取締役、一般社団法人ITC-Pro東京理事。
北九州市出身、横浜市在住。 AIやIoTに強いITコーディネータとして活動中。著書に「初めてのWatson」、「ワトソンで体感する人工知能」など。セミナーや研修講師での登壇も多数。

この記事が気に入ったら
いいね!しよう

最新の情報をお届けします