Botkitを使ってSlackのボットを作る

 「エンジニア彼氏に愛想を尽かされた普通のOLでもSlackbotが作れた話 - くまのからあげ」のページを読んで、HubotではなくBotkitでボットを作ってみようと思いました。「Slackの新しいフレームワークBotkitを試してみる - Qiita」のページを読むと、まずGitHubからcloneしろ、とあります。しかし、そもそもGitを導入していません←導入しろ。

# yum update
# yum install git
# su - stic
$ git clone git@github.com:howdyai/botkit.git

 ところが最後のコマンドを実行したら、

Initialized empty Git repository in /home/stic/botkit/.git/
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

 と言われてしまいました。グーグル先生に聞いたら、「自分でcommitしたファイルをローカルリポジトリにcloneできないので対処した」的な話ばかりでNG。結論→以下のコマンドに変えたら、OKでした。

$ git clone git://github.com/howdyai/botkit.git

 続いて、Slackにボットユーザーを追加します……って、そんなチーム持っていません←作れ。とゆーわけで、全然セッションに参加できていない(すみませんスミマセン)TRPGのサークル用チームを作成しました。

https://my.slack.com/services/new/bot

 上のURLにアクセスしてボットユーザーを作成して、API Tokenをコピーしておきます。

$ cd botkit
$ token=[コピーしておいたAPI Token] node slack_bot.js

 ところがところが最後のコマンドを実行したら、

module.js:472
    throw err;
    ^

 と言われてしまいました。またしてもグーグル先生に泣きついて、以下のページを参考に足りないモジュールを導入します。

【Node.js】足りないモジュールをたったの一行でインストールするコマンド - Qiita

 導入するには権限が必要なので、rootに戻って、

$ exit
# npm install -g npm-install-missing

 スクリプトを実行したいユーザーに戻って、

# su - stic
$ npm-install-missing

 足りないモジュールの導入が終わったら、もう一度……

$ token=[コピーしておいたAPI Token] node slack_bot.js

 ところがところがところが(あなかま)、同じエラーが出てしまいます。

module.js:472
    throw err;
    ^

 以下のコマンドをを実行すると、

$ npm-install-missing

Package  Current  Wanted  Latest  Location
clone      2.0.0   2.0.0   2.1.0  botkit
jscs      2.11.0  2.11.0   3.0.7  botkit
mocha      2.5.3   2.5.3   3.2.0  botkit
should     8.4.0   8.4.0  11.1.2  botkit
npm-install-missing: No modules seem to be missing.  Huzzah!

 と表示されるので、モジュールは足りているはず……(?_?)。仕方ない(?)ので、よくないんでしょうけど、全部rootで実行してしまいます。

# git clone git://github.com/howdyai/botkit.git
# npm-install-missing
# token=[コピーしておいたAPI Token] node slack_bot.js

 Slack上で、ボットユーザー名の左側が緑丸(●)=有効になりました。お話したいチャンネルに、ボットユーザーを呼びます。

/invite @[ボットユーザー名]

 ボット用スクリプトによりますが、話しかけると反応します。同梱されていたslack_bot.jsを使ってみたので、「@[ボットユーザー名] Hi!」と話しかけたら「Hello.」と返事してくれました……が、スクリプトを少しいじくったら日本語が表示されません。どうやら、UTF-8で書かないといけないみたいです。

# 2017/01/07


Back to Top Page