当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。

テクてく Lotus 技術者 Slack に参加しよう!

2017年2月5日日曜日

IBM Watson Workspaceにプログラムでメッセージを投稿してみよう

皆さん、こんにちは。

2月に入り、節分もあっという間に過ぎてしまいました。豆まきはしたんでしょうか?
今年は、ネットやテレビで、「渡辺さんは豆まきをしなくてもいい」というのをやってましたね。
なんでも、鬼(ここでは酒呑童子のことらしい)退治をした渡辺綱を恐れて、仲間の鬼に吹聴したようで、わざわざ追い払わなくても向こうから寄ってこないだとか・・・
色々な伝承があるものですね。

閑話休題。

今回もIBM Watson Workspace/IBM Watson Work Serviceについての話題です。
前回、前々回の記事から時間が空いてしまいましたので、併せて読んでいただいた方が良いかもしれません。
IBM Watson Workspaceを使ってみよう。
IBM Watson Work ServicesでGraphQLを使ってみよう


今回は、GraphQLをプログラムで実行する方法をやってみよう!となっているので、IBM Watson Workspaceにプログラムでメッセージを投稿するというサンプルを作ってみましょう。

前回紹介したスライドでは、プログラム言語は、Node.jsを使いますよ。といったことが書いてありました。
Node.jsはサーバサイドのJavaScript環境です。そのため、JavaScriptの知識は必須となります。
Notes/Dominoの場合、XPagesを使っていれば、自然とJavaScriptは覚えていくはずですので、併せて覚えるにはちょうど良いのではないでしょうか。

ですが・・・Node.jsを使って、ゴリゴリとプログラムを記述するよりももっと簡単な方法があります。
Node-REDを使いましょう。
こちらはNode.jsをプラットフォームとしているもので、UIでフローを作成して実行するというものです。
当ブログでも昨年(2016年)のXPages研究会のハンズオンの内容の紹介で記事を書いています。
XPages研究会のハンズオンをまとめましたよ(1)



では、実際に見ていきましょう。

まず、今回のアプリケーションの概要です。
といっても、とても簡単です。
アプリケーションは「IBM Watson Workspaceにメッセージを投稿する」というものにします。
  1. IBM Watson Workspaceにスペースを作成する
  2. IBM Watson Work Serviceでアプリを作成する
  3. スペースにアプリを設定する
  4. Node-REDでフローを作成する
  5. Node-RED上でプログラムを実行する

なお、Node-REDはIBM Bluemixのものを使います。


1. IBM Watson Workspaceにスペースを作成する

ブラウザでIBM Watson Workspaceを開きます。
画面上部にある「Spaces」と書いてあるところの隣にある(+)アイコンをクリックします。
スペース作成のメニュー
スペースを共同利用するメンバーは誰にしますか?と聞かれますが、画面右下にある「Name Your Space」をクリックします。
スペースを共同利用するお勧めメンバーが表示される
スペースの名前を入力する画面になるので、スペースの名前を入力します(任意ですが、重複しないようにしてください)。
スペースの名前を入力
名前を入力したら画面右下にある[Create]のボタンをクリックしてください。
すぐにスペースが作成されます。
新しいスペースが表示されました

簡単ですね。
画面下にある「Type something」というところにメッセージを書いてEnterを押せば、スペース上にメッセージが表示されます。

2.IBM Watson Work Serviceでアプリを作成する

今度は、IBM Watson Work Serviceで使うアプリを作成します。
画面左下にある歯車のアイコンをクリックします。
設定メニューが表示されるので、「Developers」と書かれたメニューをクリックします。
Developerメニューを選択
IBM Watson Work Servicesのトップ画面が表示されるので、画面上にある「Apps」をクリックします。
Appsメニューをクリック
アプリ一覧画面が表示されるので、[Create new app]をクリックします。
アプリの一覧画面
アプリの作成画面になるので、アプリの名前を入力して[Create]をクリックします。
アプリの名前を入力
すると、アプリの「App ID」と「App secret」が表示されるので、「App secret」を控えておきます
App IDとApp secretは必ず控えておくこと
※App secretはここで控えておくのを忘れると、二度と表示されなくなり、アプリの利用ができなくなってしまいます!
※App secretは画面の[Copy]をクリックすると、クリップボードにコピーされます。
App secretを控えたら、[Got it]をクリックします。
アプリのBasic Informationが表示されるので、「App ID」を控えておきます。
App IDも控えておく

IBM Watson Work Serviceのアプリはこれで作成できました。
(WebhookやoAuthの設定は今回は使いません)


3.スペースにアプリを設定する

アプリを作成したら、スペースに設定する必要があります。
スペースの画面に戻ります。
画面上部にある▽のようなアイコンをクリックして、スペースの設定画面を開きます。
スペースの設定画面を開く
画面左側にある「Apps」をクリックします。
設定可能なアプリの一覧が表示されます(SlackやIFTTTは標準で連携可能という事が分かります)。
ここでは、先ほど作成したアプリを選択(マウスオーバーさせるだけで良いです)したら、[Add to space]をクリックします。
すると、アプリがスペースに設定されて連携対象になります。
「Apps Added to Space」と書かれたリンクをクリックすると連携対象のアプリが表示されています。
連携対象のアプリが表示されている
これでスペースとアプリの設定は完了です。

4.Node-REDでフローを作成する

次に、IBM BluemixでNode-REDスターターを使って、Node-REDのアプリケーションを作成します。
アプリが作成できたら、Node-REDのフローを作成・・・
と行きたいのですが、Node-REDはGraphQLには標準では対応していません。
そこで、
wwsNodes - Waton Work Services Nodes for NodeRed
というものを利用します。
これは、IBM Watson Work Service用のNode-REDの部品(ノードと呼ぶ)です。
これをIBM BluemixのNode-REDのアプリに組み込むことで、Node-RED上からIBM Watson Work ServiceのGraphQLを実行できるようになります。

なお、IBM Bluemixへのノードの追加方法については、IBM Championの吉田さんが書かれた記事を参考にしていただくと、とても分かり易いです。
Node-RED から Domino へアクセスするためのノードを公開


Node-REDにノードを追加出来たら、Node-REDのフローエディタを表示します。

Node-RED上で実行することを前提に作るので、フローとしては、
1.Node-RED上で実行開始のボタンをクリック。
2.サンプルのメッセージを生成。
3.IBM Watson Workspaceにメッセージを投稿する。
というものにします。

1.は「injection」ノードを配置します。
2.は「function」ノードを配置します。
functionノードをダブルクリックして、ノードの編集を行います。
functionノードを編集
msg.payload = "サンプルのメッセージ";
msg.color   = "#FFFF00";
msg.title   = "タイトル";
msg.name    = "Masahiko Miyo";
msg.spaceId = "自分のスペースのIDを入力してください";
return msg;

※自分のスペースのIDは、スペースを開いたときのURLで分かります。
https://workspace.ibm.com/space/****************
の「****************」の部分です。

作成したら、[完了]をクリックします。
3.は「wws Send」というノードを配置します。
「function」ノードの時と同じようにダブルクリックして、ノードを編集します。
WWS Appの欄にある鉛筆マークをクリックして、IBM Watson Work Serviceのアプリの設定を行います。
WWSアプリの設定が必要
アプリの情報を入力する画面に切り替わるので、先ほど作成したIBM Watson Work Serviceのアプリ情報を入力して[追加]をクリックします。
アプリの情報を入力
WWS Appのノード編集画面に戻ります。すると、Space IDにはアプリと連携しているスペースの名前が選択されています。
Space IDにはスペースの名前が選択されている
設定した内容を確認して正しければ[完了]をクリックします。
ノード同士を線でつなぎます(グレーの●をクリックして、次のノードにドラッグすればつながります)
出来たら[デプロイ]をクリックして、Node-REDのプログラムを完成させます。
出来たフローの図


5.Node-RED上でプログラムを実行する

では、実際に実行します。
と言っても簡単です。
injectionノード(timestampと書かれているノード)の□の部分をクリックするだけです。
プログラムを実行!
IBM Watson Workspaceの画面を見てください。
見事にメッセージが投稿されています!
メッセージが投稿された



これで今回のサンプルは完了です。
今回は、実行するトリガーはNode-RED上から直接としていましたが、プログラムを修正すれば、別の形での実行も可能になります。
この辺りは、Node-REDを学習して各自で工夫してみてください。

IBM Notes/DominoのRESTサービスと組み合わせれば、Notes DBの内容をIBM Watson Workspaceに流すといったこともできるようになるかもしれませんね。





今回のサンプルでは、Node-REDを使っています。
Node-REDに興味を持った方は、こちらのHPを見てはいかがでしょうか。色々と書いてあります。
Node-RED日本ユーザ会
勉強会を開かれていて、私も時々参加させていただいています。
他にもfacebook上にもコミュニティがありますので、参加してみましょう。






それでは今日はこの辺で…


※IBM Watson Workspace 及びIBM Watson Work Serviceはまだプレビュー版であり、なおかつクラウドサービスであるため、画面は変更されることがありますのでご了承ください。




Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: