この間の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の機能が進化するのは有り難いことですが、使い方が都度変わるので、追いついていくのはなかなか大変ですね・・・。