Cloudライト・アカウントを使ってWatsonとSlackのBotと連携させてみましょう。Cloud」を開始しました。これまで「Bluemix」ブランドとして提供していた各種クラウドサービスを統合したものです。Cloudライト・アカウント」も提供されています。Cloudライトは無料、無期限で使えますが幾つかの制限があります。以下の2つは念頭においてください。Cloudライト・アカウントを作成しましょう。主な特徴や他の制限事項なども記載しています。Cloudライト・アカウント(Bluemix)「ライト・アカウントを今すぐ登録」をクリックすると各情報を入力するページが表示されます。パスワードを入力します。登録すると以下の画面が表示されて、登録したアドレス宛に確認メールが送られます。メールの確認をクリックすると登録は完了です。Cloudへログインするとダッシュボードが表示されます。ログイン時は何も表示されませんが、アプリ開発をするとここに表示されます。ダッシュボードがアプリを管理するメインのページになります。Cloudでアプリ開発をはじめる基本的な流れとして以下になります。Cloudでは作りたいものをカタログから選んで開発していくことになります。カタログを開くには画面上部の「カタログ」をクリックします。単純に見えますが、カタログの項目を選んだ後にそのアプリのワークスペースの作成や各種設定、プログラミングなどにそれなりの作業量が必要になります。その後の普段の作業は、「ログイン>ダッシュボードでアプリ選択>プログラム修正や設定など」になるかと思います。WatsonとSlackbotとの連携アプリ開発まずこのアプリを開発するにはカタログから以下のものを使用します。Starterが使用できるようになっています。Starterを使ってアプリを作る準備WatsonとSlackの連携アプリはNode-REDを使って作成します。Cloudはアプリ開発ツールとしてNode-REDを採用しています。Node-REDはサーバサイドスクリプトをビジュアルプログラムで作成できる開発ツールです。Starterというのがカタログのボイラーテンプレートで選択できますが、これはライト・アカウントでは使用できません。Starterを使用してアプリを開発していきます。それでは始めていきましょう。Starterをクリックするとアプリ作成画面が表示されます。適当にアプリ名を入力し、デプロイする地域は米国南部を選択します。あとは自動で入力されます。入力したら作成ボタンをクリックします。Foundryアプリが追加されます。ダッシュボードへ行くには、画面左上のメニューから選択します。ダッシュボードに追加されたアプリの「経路」に表示されているURLをクリックします。作成したアプリを選択した時に表示される概要画面から、右上の「経路」プルダウンメニューからURLをクリックします。するとブラウザの新しい画面でNode-REDのセットアップがはじまります。Node-REDは使用する際に別途ログインが必要となるので、アカウントとパスワードを設定します。editor」をクリックすると、初めての場合はユーザー名とパスワードを設定する画面が表示されます。これはNode-REDを開くためのユーザー名とパスワードです。(以前はURLにアクセスできると誰でも作成しているアプリ画面を開くことができたので、その対策がされています)以降はこのURLでNode-REDを開くにはユーザー名とパスワードを入力します。Node-REDを開くと、プログラミング作業画面が表示されます。Node-REDの使い方について詳細は説明しませんが、ある程度直感的にわかるようになっているかと思います。左ペインに一覧で表示されているノードをドラッグ・アンド・ドロップして右の画面に配置していき、各ノードを線で繋げることでプログラミングしていきます。これでNode-REDを使ってアプリを作成する準備ができました。APIを使えるようにします。APIのConversationを利用します。これは、アプリに自然言語インターフェースを追加してエンドユーザーとのやり取りを自動化します。会話のパターンを設定して、入力に適した応答を自動でするAPIです。これを使ってSlackbotと会話します。それでは画面上部のカタログをクリックしてカタログを開いてください。WatsonカテゴリーにあるConversationをクリックしてください。表示される作成画面で、適当なサービス名を入力(自動で入る名前でいいです)し、デプロイする地域は米国南部を選択してください。画面下の作成ボタンを押して作成します。作成できるとConversationを使うための設定ができるようになります。ConversationのWorkspaceを選択する画面が表示されます。ログインを要求する画面が表示されてもログインボタンを押せば入力せずにWorkspace画面が表示されます。Createボタンを押して今回のアプリで使用するConversationのWorkspaceを作成します。次の画面で名前を入力してcreateボタンをクリックします。Tool」ボタンを押してツール画面を開きます。ツール画面ではConversionが動作するためにIntentsとDialogを構築します。new」をクリックすると、上部にIntents、Entities、Dialogのタブメニューが表示される作成画面になります。Intentsを作成します。Intentsは言葉が意図する集まりをカテゴライズします。ここでは、「#あいさつ」と「#お別れ」のIntentsを作成します。newをクリックしてこれらのIntentsを作成します。#あいさつでは、おはよう、こんにちは、こんばんは、どうも、どーも、ちわっす、など挨拶で使う言葉を最低5つ以上作成します。#お別れでは、さよなら、ばいばい、またね、じゃね、じゃーね、ばいちゃ、などお別れするときに使う言葉を最低5つ以上作成します。次にDialogを作成します。Dialogでは会話の流れを作成します。DialogタブのCreateをクリックします。すると、「ようこそ」と「その他」ダイアログがデフォルトで作成されます。この2つのダイアログの間に、先程作成したIntentsに対応するダイアログを作成します。below」を選択します。追加された新しいノードをクリックして、中身を設定していきます。recognizes:」を設定します。by:のIntents:を選択します。するとIntentsを選択できるようになります。with:」を設定します。responseをクリックして#あいさつにカテゴライズされた言葉を受け取ると返信する言葉を入力します。ここでは例として「こんにちは。ご機嫌いかがですか?」と入力しています。同じように#お別れのダイアログも作成します。作成できると以下のようになっているかと思います。with:に「ばいばい。!」と入力しています。Conversationでは正しく動作するかをテストすることができます。画面右上にある吹き出しアイコンをクリックします。out画面が表示され会話を入力できます。「おはよう」「ばいばい」を入力すると、それぞれ設定した返信が返ってきます。動作してる感じですね。これで、Conversationの作成は完了です。これをNode-REDで使用するために、作成したConversationのWorkspaceIDをコピーしておきます。detailsを選択します。表示されるWorkspaceIDをアイコンをクリックしてコピーします。それをメモして後で使えるようにします。後ほどNode-REDのノードにこのWorkspaceIDを設定します。Cloudで作成したアプリで有効にするために接続を行います。アプリのダッシュボード画面から「接続の作成」ボタンを押します。表示されるConversationにあるConnectボタンを押して接続します。APIのConversationを使う準備が整いました。この後はNode-REDでプログラムを作成します。Cloudと連携するSlackbotを作成します。ここではBotを作成できるSlackのワークスペースがすでにあることとします。Slack画面のメニューからApp管理をクリックします。次に表示される画面でカスタムインテグレーションを選択してBotsをクリックします。次に表示される画面の左Botアイコンの下にある「設定を追加」ボタンを押します。するとBotが作成されます。作成されたときに表示される画面にAPIトークンが表示されているのでこれをメモしておきます。後ほど、Node-REDのノードにこのAPIトークンを設定します。Node-REDでSlack連携をプログラミングいよいよNode-REDを使って具体的にアプリをプログラミングしていきます。Node-REDの使い方としては、画面中央に左にあるノードをドラッグ・アンド・ドロップで配置して、それぞれのノードを線で繋ぐだけです。各ノードで必要な設定をして、繋ぎ終わると画面右上のデプロイをクリックして実行します。今回のSlack連携プログラムは以下のノードを使います。(msg.payloadから文字列だけを抽出)この内、Slackのノードはデフォルトでは左のメニューから選択できません。パレットの管理から「node-red-contrib-slack」ノードを追加します。Node-RED画面右上のメニューからパレットの管理をクリックします。スライド表示される画面から「ノードを追加」タブをクリックします。検索ワードに「slack」を入力するといくつかのノードが表示されます。この中のnode-red-contrib-slackのノードを追加ボタンをクリックします。すると画面左のノード一覧にslackノードが追加されます。Outノードをドラッグ・アンド・ドロップして中央画面に配置します。WatsonにあるConversationノードと、機能にあるfunctionノードも配置します。それをそれぞれ以下のように繋ぎます。各ノードを設定します。Outのどちらも設定内容は同じです。配置したノードをダブルクリックして設定画面を表示します。先程作成したSlackボットのAPIトークンをここで設定します。Nameはノードの表示テキストです。チャンネルを使う場合はChannelにチャンネル名を入力します。SlackはダイレクトメッセージするとBotのメッセージを削除できないので、Channelを利用した方がいいかもしれません。Channelを使う時は、設定にChannel名を入力してください。Watson一覧にあります。配置したノードをダブルクリックして設定画面を表示します。APIのConversionのWorkspaceIDを設定します。Nameはノードの表示テキストです。functionノードの設定functionノードは機能一覧にあります。Outに渡すために、このfunctionノードにプログラムを記述します。いっても一行以下の文を記述するだけです。配置したノードをダブルクリックして設定画面を表示します。以下のプログラムを記述して完了ボタンを押します。{payload:msg.payload.output.text[0]};配置したノードを接続してプログラミング完成です。全ての設定が終わるとNode-RED画面の右上にあるデプロイをクリックして完了です。動作確認それでは動作確認してみましょう。Slackの画面に戻って、先程作成したBot宛に「こんにちは」と送信してみましょう。すると、Dialogで設定した「こんにちは。ご機嫌いかがですか?」とBotが返信してきたかと思います。お別れの言葉を入力するとBotは「ばいばい。!」と返したかと思います。まとめお疲れ様でした。Cloudは設定や操作などの作業量が多くてプログラミングが少ないと思ったかもしれません。これも慣れてくるともっと少ない作業量で迅速にできるようになるかもしれません。今回のアプリもConversationのIntents、Entities、Dialogをもっと多くの設定をすれば複雑な会話もできます。APIはこの他にもライト・アカウントで使えるものがあるので、アイデア次第ではいろんなことができるかと思います。11月1日時点では無料ではなかったAPIも、いくつか無料で使えるようになっていたので、時間の経過とともに増えてくるのかもしれません。挑戦してみてください。挑戦してみてください。CodeAidについて。