目次


連載: IBM Watson Workspace #鬼わか アプリケーション開発

第 4 回: IBM Watson Workspace でチャットボット開発 #鬼わか 解説

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: 連載: IBM Watson Workspace #鬼わか アプリケーション開発

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:連載: IBM Watson Workspace #鬼わか アプリケーション開発

このシリーズの続きに乞うご期待。

1

はじめに

連載: IBM Watson Workspace #鬼わか アプリケーション開発」にアクセスいただきどうもありがとうございます。

第 3 回の記事では、IBM Watson Workspace (以下、WWS と表記) との連携アプリケーションを開発する際の最初のステップであるアプリケーションを登録する方法をご紹介しました。

連携アプリケーションの登録方法は簡単であることがご理解いただけたかと思います。

第 4 回では、実際に登録したアプリケーションにロジックを実装する様子を解説します。

今回はコーディングの少ない Node-RED を利用したチャットボットの作り方について鬼わかりやすく説明します。

コーディング経験のあまりない方でも気軽に試すことが可能ですので、この連載を見ながら皆さんもぜひ挑戦してみてください。

2

Node-RED の環境セットアップ

今回の開発は IBM Cloud 上で動作する Node-RED を利用します。IBM Cloud 上の Node-RED を利用して WWS 連携アプリケーション開発を行う際に利用できる便利な機能が用意されているので、まずは Node-RED を WWS 連携アプリケーション開発用に利用するための準備について解説します。

最初のステップとして、下のリンクを参考に、IBM Cloud のアカウントを作成してください。

Qiita: 新しいIBM Cloud(Bluemix)の無料アカウントを申し込んでみる

次にカタログから Node-RED starter を選択します

 

ガイドに従って設定を行うと、Node-RED を使用する準備が整います。

Node-RED を使用する準備が整いましたら、作成したアプリケーションをクリックし、Node-RED の編集画面を開きます。(Go to your Node-RED flow editor をクリック)

 

編集画面 (Node-RED flow editor) が開けたら、右のメニューボタンからパレットの管理を選択し、ノードを追加タブを開き、次に "wws" と入力し、一番下の、"node-red-contrib-wwsNodes" を追加します。

 

これで NODE-RED 上で wws ノードを利用した WWS 連携アプリケーションの開発をする準備が整いました。

3

Webhook の有効化

Node-RED の準備が整ったら、Watson Work Services を利用して連携アプリケーションで Webhook の有効化を行います。

Webhook とは、アプリケーション上で特定のイベントを Listen し、イベント発生時に予め指定してある URL に POST リクエストを送るという仕組みのことです。

これを利用して、WWS のスペース上のイベント (メッセージの投稿など) 発生時に、Node-RED の URL にイベント情報が POST され、受け取った Node-RED 側で何らかの処理をする (投稿されたメッセージ内容に応じたアクションを行うなど) という流れを実装することができます。

具体的にどのようなイベントを取得できるかは、第 3 回: IBM Watson Workspace へのアプリ登録 #鬼わか 解説 の「4. 連携アプリで利用する機能を構成する」をご参照ください。

Webhook 有効化の大きな流れは以下の通りです。

  1. Watson Work Services で WWS アプリケーションに Webhook の設定を行う
  2. Node-RED に「wwsIn」ノードを追加し、WWS アプリケーションの情報と 1 で作成した Webhook の情報を入力する
  3. Watson Work Services 上の WWS アプリケーション設定で、1 で作成した Webhook の設定を有効化する

それでは、順に詳しい手順を解説していきます。

まず、WWS の Your Apps 画面に移動し、Webhook を有効化したいアプリケーションをクリックします。

※Your Apps 画面の開き方と、アプリケーションの作成の仕方は、第 3 回: IBM Watson Workspace へのアプリ登録 #鬼わか 解説 の「3. 連携アプリケーションの登録方法」をご参照ください。

 

「Listen to Events」の「Add an outbound webhook」をクリックします。

 

以下の通り設定を行い、「Save」をクリックします。

  • Webhook Name:任意の Webhook 名
  • Webhook URL:[Node-RED で作成したアプリケーション名].mybluemix.net/[任意の文字列]
  • Events:Listen したいイベントにチェックを入れる

 

Webhook URL と Webhook secret を控えて画面を閉じます。

特に Webhook secret は二度と表示できないので必ず控えてください!

 

次に、Node-RED 側の作業を行います。

Node-RED の編集画面を開き、「入力」の下にある「wwsIn」ノードをフロー画面にドラッグ&ドロップし、「WWS In」と名前をつけます。

 

ドロップした「WWS In」をダブルクリックします。

ノード編集画面が開くので、「WWS App」欄右横の鉛筆アイコンをクリックします。

 

Webhook を有効化しようとしている WWS アプリケーションの名前・App ID・App Secret を入力し、「追加」をクリックします。

 

ノード編集画面に戻ったら、「Callback URL」欄に Webhook URL の最後の「/」以降の文字列を入力し、「Webhook secret」に先程控えておいた Webhook secret を入力して、「完了」をクリックします。

 

Node-RED 画面右上の「デプロイ」をクリックします。

 

最後に、WWS のアプリケーション画面に戻ります。

「Listen to events」画面で、作成した Webhook の「Enable」ボタンをクリックします。

 

エラーなく、「Enable」ボタンが「Disable」ボタンに変わったら成功です。

以上で、Webhook の有効化が完了しました。

4

Node-RED を用いてチャットボットを実装

ここまでで Node-RED の準備、WWS と Webhook を利用した連携の設定ができました。では、実際に Node-RED でチャットボットを作ってみましょう。

A) 最初に WWS スペースにメッセージを投稿するボットを作ってみます。

  1. ノード一覧の ”入力" にある inject ノードをフローページにドラッグ&ドロップします。

     

  2. ノード一覧の "機能" にある function を同じようにドラッグ&ドロップし、ふたつのノードをつなぎます。

     

  3. Function ノードをクリックすると、コードを編集できるようになるので、以下のように入力します。

    名前 {任意}
    msg.payload = WWS に投稿するメッセージ
    msg.name = 投稿者名

    投稿するスペースの指定は、5. で行いますが、この Function ノード内で msg.spaceId として指定することも可能です。その場合は、は、以下のように指定してください。

    msg.spaceId= ワークスペースの ID (ブラウザで表示した場合の URL https://workspace.ibm.com/space/ 以降の文字列)

     

  4. wwsSend ノードを最後に追加し、先程の Function ノードとつなげます。

     

  5. wwsSend ノードをクリックして以下のように編集します。

    Name: {任意}
    WWS App: 第三章で作成した WWS App 名
    SpaceID: アプリを登録したスペース名がリストされるのでメッセージ投稿したいスペースを選択

     

  6. デプロイボタンをクリックし、完成です。

    timestamp ノードの左部分をクリックすると、ノードが起動し、スペースにメッセージが投稿されます。

     

B) 次に、スペースに投稿されたメッセージに反応するボットを作ってみます。

  1. 前章で作成した WWS In ノードに続く形で、Switch ノード、Function ノード、WWS Send ノードをつなげます。

    WWS In はスペースに投稿された内容をフックしますので、それに対する処理を追加します。

     

  2. Switch ノードを使用することにより、メッセージに含まれる文字を条件とし、処理の分岐をさせることが可能になります。

    プロパティ:msg.payload.content
    "おはよう" が含まれている場合は、処理 1 に (function1)
    "質問" が含まれている場合は、処理 2 に (function2)

     

  3. function ノードと WWS Send はそれぞれ A) 3 及び 4 を参考に設定をしてください。ノードが完成したら デプロイを実行し、実際にメッセージを投稿してみましょう。

     

このように、メッセージによって、ボットが返す内容を変えることが可能になります。

5

まとめ

今回は WWS の実際の開発の第一弾として Node-RED を使ったチャットボットの作り方についてご紹介いたしました。Node-RED を利用するために Node-RED に WWS Node を追加し、WWS のスペース上のイベントを拾う Webhook を有効化した上で、Node-RED でチャットボットを実現していくという流れをおわかりいただけたと思います。是非、試してみてください!

この記事に「いいね!」と感じた方は、ハッシュタグ「 #鬼わか 」をつけて是非共有してください。

次回は、node.js を用いてチャットボットを作ってみる方法について鬼わかりやすくご紹介したいと思います。お楽しみに!


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Lotus
ArticleID=1061671
ArticleTitle=連載: IBM Watson Workspace #鬼わか アプリケーション開発: 第 4 回: IBM Watson Workspace でチャットボット開発 #鬼わか 解説
publish-date=06072018