24
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Bluemix+Node-REDでWatson QA

Last updated at Posted at 2015-06-09

【注意】Watson QAサービスは2015年12月16日をもって提供終了となりました。

Node-REDといえば簡単にセンサデータ収集をするためのツールという側面が強いですが、BluemixではWatson関連ノードも公開されています。今回はtwitterボットを入出力デバイスとしてWatsonへの問い合わせを行うサンプルを作成しました。

##前提

  • Bluemixアカウントの取得
  • Twitterアカウントおよび開発者APIキーの取得

##Node-REDアプリケーションの作成

Bluemix上のアプリケーションを作成します。(ここではnrqasampleという名前にしていますので、URLはnrqasample.mybluemix.netとなります)

ボイラープレート「Node-RED Starter」を選択します。
node-red-starter-configuration.png

そのままアプリケーションのステージングを行います。
node-red-starter-initial-staging.png

ステージングが終了したらブラウザでアプリケーション(今回はnrqasample.mybluemix.net)を開きます。そうすると、フローエディタが現れます。
node-red-starter-flow-editor.png

ダッシュボードはこのような構成になっています。Node-RED Starterボイラープレートを選択すると、Cloudant NoSQL DBサービスとMonitoring and Analyticsサービスがそれぞれ自動的に追加されていることがわかります。
node-red-starter-dashboard.png

このままでは誰でもフローエディタにアクセスできてしまいますので、ユーザ名とパスワードを設定しましょう。ダッシュボードからユーザ環境変数を設定するだけです。
node-red-starter-security.png

環境変数を設定後、再度フローエディタにアクセスすると、今度はログイン要求されるようになります。
node-red-starter-flow-editor-with-password.png

##フローの作成

それでは、フローを作成していきます。

まず、Watson Q&Aを利用するために、ダッシュボードでサービスを追加します。
node-red-starter-watson-service-adding.png

次に、フローエディタでフローを作成します。

node-red-starter-twitter-watson-twitter.png

それぞれのノードのタイプと設定は以下のとおりです。

Name Type 用途と設定
Mention button-twitter-in.png メンションの取得
・Log in as: @botアカウント
・Search: all public tweets
・for: "@botアカウント"※取得するtweetの条件(先頭文字列)
・Name: "Mention"
QA button-watson-qa.png Watson QAへの問い合わせ
・Name: "QA"
・Corpus: Travel
・Output: Top answer
Cut button-function.png 140文字への整形
・Name: "Cut"
・Function:(*1)
・Outputs: 1
Reply button-twitter-out.png Tweet出力
・Twitter: @アカウント
・Name: "Reply"
Debug button-debug.png Debugメッセージ出力
・Output: message property, msg."payload"
・to: debug tab
・Name: "Debug"

(*1) "Cut"ノードのコード

var sender = msg.topic.replace(/^tweets\//, '')
if (msg.payload.length + sender.length + 2 > 140) {
    msg.payload = '@' + sender + ' ' + msg.payload.substring(0, 140 - sender.length - 6) + " ..."
} else {
    msg.payload = '@' + sender + ' ' + msg.payload
}
return msg;

##実行

フローエディタの右上にあるdeployボタンを押すと最新のデプロイが行われます。ただし、twitter apiの仕様上15分に一度しか更新できないことがありますので注意してください。

button-deploy.png

それではメンションを送ってみましょう。(この例では@travelqabotというアカウント名のボットを使用しています)

watson-question-by-twitter.png

リプライが来ました。

watson-answer-by-twitter.png

Debugノードにもログが出ています。

debug-log-in-flow-editor.png

##まとめ

  • Watsonへの問い合わせを行うtwitterボットをあっという間に作ることができました。
  • しかしながら、以前に投稿したような複雑なサービスを書くには多くのjavascriptコードを書く必要があるため、適材適所で選択することになるでしょう。基本的には名前の通り、ノード間でデータが流れるフローで書ける機能のみを実装するのがよさそうです。
24
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?