ITのチカラで、デジタルビジネスへの変革を。

Watson AssistantとNode-REDを連携!

#Watson

本記事はWatsonシリーズ4回目になります。
過去記事はリンクを参照ください。

  1. Watson Assistantことはじめ
  2. Watson AssistantとSlack連携 
  3. Watson AssistantのContextを使って情報を記憶する!
  4. Watson AssistantとNodeRedを連携!←今ここ

はじめに

皆さんこんにちは。 日商エレクトロニクスの北川です。
Watsonライフ楽しんでいますか?触ったことが無い方は是非、上のリンクを参考にWatsonを触ってみてください!

さて前回までで、Watson Assistantについては大体触れるようになったかと思います。
前回の予告ではWatson AssistantとREST APIを連携させると書いておりましたが、
これらを連携させるためにはまず、Watson AssistantとREST APIの間にNode-REDを挟む必要があるそうです!

そこで今回はWatson AssistantとNode-REDの連携をしていきたいと思います!

余談:本当はWatson AssistantとNode-REDとSlackの連携を紹介したかったのですが、
Node-REDとSlackを連携させるためのノード(ライブラリ的なもの)にどれもバグが有り、そもそもノードを入れられなかったり、インストールして連携はできたけど、Node-REDを再起動させたり数日立つとNode-REDがエラーで落ちて二度と立ち上がってこなくなるといった状態が続いて心が折れたので、こちらについてはまた調べておきます。
ご存知の方いましたら教えてくれると泣いて喜びます。

 

 

Watson AssistantとNode-REDを連携

今回作るもの

今回はNode-REDからWatson Assistantへ文字列を渡し、返答が返ってくることを確認します。

Node-REDの起動

何はともあれNode-REDを起動しなければ始まりません。
画面上の「カタログ」をクリックして、Node-RED Starterをクリックします。

 

画像のように必要な部分を埋めていき、作成をクリックします。

 

ここで前回Watson AssistantとSlack連携をしていた場合は、エラーが出るかもしれません。
Node-REDを作る際はhogehoge-cloudantNoSQLDBが作られるのですが、Slack連携をすると自動的にこれが作成され、ライトプランでは1つしかこれは作れないため、エラーが出るというわけです。

そのため、一度ダッシュボードからこれを削除する必要があります。
このシリーズ記事を見ながら初めてWatsonを触っている方は削除してしまって大丈夫だと思いますが、それ以外でなにか作っている場合は本当に消して良いのか確認した上で削除してください。
何かあっても責任は取れません。

 

作成できたら、Node-REDの立ち上げが始まっているはずです。
少し時間がかかるので、気長に待ちましょう。

 

稼働したらアプリURLにアクセスをクリックします。

 

 

アクセスできると、Node-REDの設定画面に入ります。
英語でたじろぐかもしれませんが、基本的にはNextを押しておけば大丈夫です。
アクセスのためのユーザパスだけは設定しておきましょう。

 

一通り設定が終わればNode-REDが使用可能です。
Go to your Node-RED flow Editorをクリックしましょう。

 

これがNode-REDの画面です。
ここにノードを追加していって、処理フローをGUIベースで構築していきます。

 

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

Watson Assistantを呼び出すために、assistantノードをドラックアンドドロップしてフローに配置します。

 

次に配置したノードをダブルクリックして、設定を行っていきます。
必須の項目は赤枠で囲んだ部分です。
これらの情報をWatson Assistantからとってきます。

 

 

ダッシュボードからWatson Assistantへ移動します。

 

適当な名前をつけて、追加をクリックします。

 

 

作成が終わったら、ツールを起動し連携させたいSkillの「View API Details」をクリックします。
前回の記事で作成した「ご飯食べたい」を利用します。

 

すると必要な情報が表示されますので、それをメモります。

 

メモれましたら、Node-REDの画面に戻り、必要な情報を入力します。
これで、Watson Assistantの呼び出し準備は完了です。

 

Node-RED上で動かす準備をする

呼び出す準備はできましたが、まだこれだけでは動かすことはできません。
必要なノードを追加していきましょう。
まずはindectノードを追加します。
これを追加することでNode-RED上でフローの動作テストができます。

 

次にfunctionノードを追加します。
これを追加することでWatson Assistantに文章を渡すことができます。

 

次にdebugノードを追加します。
これを追加することで、Watson Assistantからの応答を確認できます。

 

配置したfunctionノードをダブルクリックし、名前とコードを記述し、完了をクリック。
接続したWatson Assistantが反応する文字列をダブルクォートで囲みます。

 

そうしたらそれぞれのノードの端をドラックアンドドロップで繋ぎます。

 

これでフローが完成です。
右上のデプロイをクリックすると、自動的にデプロイされます。

 

 

実際に動かしてみる

では実際に動かしてみましょう!
画像の部分をクリックすると、動作が始まります。
functionで定義した文字列がWatsonに渡され、アウトプットがdebugノードへ出力されます。

 

それでは実際に動いたかデバッグログを見てみましょう。
右側の虫マークをクリック。
この時点で下記のような内容が出ていれば、Watson Assistantの呼び出しができています。

 

更に➧をクリックして内容を開いていくと、Watson Assistantの返信が見えるようになりました!
これでNode-REDとWatson Assistantの連携ができました!

 

 

まとめ

Watson AssistantとREST APIを組み合わせるために、WatsonとNode-REDをまずは連携させました。
今回使ったフロー最後のdebugノードの代わりにfunctionノードを入れていくことによって、Watsonから受け取った情報を更に整形したりすることができます。
また会話の情報をコンテキストにためながら行い、必要なときにコンテキストを参照してREST APIを投げるといったこともできそうです!

次回予告

次回はコンテキストの受け取り方などを含めたNode-REDとWatson Assistantの連携応用編を行いたいと思います!
余裕があればREST APIへの繋ぎもやろうかと思います!

更新しました!
Watson AssistantとREST APIを連携!

Yusuke Kitagawa

この記事を書いた人

Yusuke Kitagawa

自動化、クラウド周りのエンジニア。
最近はDeepLearningにも手を出し始めました。

Twitter:
https://twitter.com/ykitagawa_310
Facebook:
https://www.facebook.com/yusuke.kitagawa.165