読者です 読者をやめる 読者になる 読者になる

まゆたまガジェット開発逆引き辞典

電子工作やプログラミングのHowtoを逆引き形式で掲載しています。作りたいモノを決めて学んでいくスタイル。プログラマではないので、コードの汚さはお許しを

マイナスから始める機械学習入門4 Node-REDを使って簡易Botをつくる

Node-REDとWatsonを連携させる際にBotを作りたいので、ひとまずNode-REDで簡単なBotを作りたいと思います。
私のTwitterタイムラインに「ズンドコ」が流れてると、私のアカウント宛に「きよし」と返してくれるものです。

Node-REDで「ズンドコきよし」

ログインからNode-RED起動までは前回と同じです。
ただ注意点がひとつ。
「function」→「function」ブロックを設置してダブルクリックすることでjavascriptのコードが書けるのですが、日本語入力が上手くいきません。
文字を消すときにdeleteを押すと狙ってないところが消えたり、カーソルの位置があやしいです。
今回のようにテキストに日本語が入っている場合は要注意です。

  1. Bluemixにログインし、「カタログ」をクリック
  2. ボイラープレートから、「Node-RED Starter」をクリック
  3. アプリ名を英語で入力して(他ユーザと同じ名前は使えない・ホストはアプリ名と同じものが自動的に入力される)、「作成」を押す
  4. 「アプリは起動しています」の表示が出たら、隣のリンクをクリックする(かなり待ちます)
  5. 「Go to your Node-RED〜」と書かれたボタンをクリックする。Node-REDが起動

ここからTwitterの処理を入れていきます。アプリ承認をNode-REDから行うことで、それ以降Twitterを使った処理が可能になります。

  1. あらかじめBotとして使いたいアカウントで「ズンドコ」とツイートしておく
  2. 左側のブロックが並んでいる中から「social」→「twitter」を選択し(右側に□がついているブロック)、右側のウィンドウにドラッグ&ドロップする
  3. twitter」をダブルクリックしたら「Log in as」の右側にある鉛筆アイコンをクリックして、Twitterの承認を行う。Twitterにログインして承認するボタンを押せばOK
  4. 「Search」を「all public tweets」か「the tweets of who you follow」にする。前者は全体のツイートを検索対象に、後者は自分がフォローしている人のツイートを検索対象にします
  5. 「for」にはBotがツイートしたいアカウントを入力。Bot自身のアカウントでツイートする場合はBotのアカウント、誰かに@ツイートをしたいときはその方のアカウントを入力してOKを押す。これでツイートを取得できるようになる
  6. 左側のブロックが並んでいる中から「function」→「switch」を選択し、右側のウィンドウにドラッグ&ドロップする
  7. 「switch」をダブルクリックしたらPropertyの下にある初期状態では「==」となっているところを「contains」にし、右側に「ズンドコ」と入力する。これによって「ズンドコ」を含むツイートテキストのみチェックするようになる
  8. 左側のブロックが並んでいる中から「function」→「function」を選択し、右側のウィンドウにドラッグ&ドロップする。「function」でjavascriptのコードを書いていく
  9. 「function」をダブルクリックして、以下のコードを書く
msg.payload="キヨシ!"
return msg;

Twitterは短時間で同じツイートを何回も投稿することができないので、連投したい場合はポストした時間を追記するなど、以下のようにすると良さげです。

msg.payload=“キヨシ!”+new Date().getTime()
return msg;
  1. 仕上げに、左側のブロックが並んでいる中から「social」→「twitter」を選択し(左側に□がついているブロック)、右側のウィンドウにドラッグ&ドロップする
  2. twitter」をダブルクリックしたら「Twitter ID」がBotのアカウントになっていることを確認して、OKを押す
  3. いちおうデバック用に、左側のブロックが並んでいる中から「output」→「debug」を選択して側のウィンドウにドラッグ&ドロップする
  4. 以下の図のように接続する
  5. 「Deploy」ボタンを押して、「Successfully Deployed」の表示が出ればOK
  6. Twitterアプリやサイトを開いて、「キヨシ!」とポストされていれば成功。出ていない場合は再読み込みをする

テストが終わったら、Bluemixのダッシュボードでアプリを止めておきましょう。でないと「ズンドコ」がある限り「キヨシ!」とツイートし続けますw
アプリの止め方は、Bluemixのダッシュボードからアプリのアイコンの右上にある歯車アイコンをクリックし、「アプリの停止」を選択します。
「switch」のところでいろいろと条件を作ってあげれば、もっと複雑なBotが作れると思います。