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

dev.kokushin

HTML5、CSS3、JavaScriptを中心に、日々のプログラミングで得た知識をメモしています。

Slack+Botkitでアマデウス紅莉栖を実装してみる・導入編

はろー。

唐突にSlackでBOTつくりたくね?って話になったので勉強がてら触ってみることにしました。

Botkitと呼ばれる簡単なBOT作成キットを使用します。 今回作成するBOTのモデルにはシュタインズ・ゲートに登場する牧瀬紅莉栖を元に開発された人工知能、 アマデウス紅莉栖氏に協力して頂きます。

理由はそれっぽいからです。

では、さっそく作り方を。

npmコマンドを打てるようにする

Botkitは「Node.js」で動作するので、インストールを済ませておきます。 詳しいことは割愛します。

▼ ダウンロード https://nodejs.org/en/

Slackを入手

アマデウス紅莉栖とコミュニケーションを取るためのアプリケーションになります。 公式サイトから会員登録とデスクトップアプリのインストールをしておきましょう。

icon128-2x

▼ 公式サイト Slack: Be less busy

BOT作成しSlackに追加

BOTはSlack上のページで簡単に作成できます。 Slackアカウントでログインした後、以下のページから作ってきましょう。

【BOT作成ページ】 Bots - Slack App Directory

BOTの名前を入れる部分があるので、名前を入力して「Add」します。 ここでは@amadeusにしました。

slk01

しばらくするとSlackに先ほど作った@amadeusが追加されています。

スクリーンショット 2016-02-05 10.15.31

なんとこれだけでBOT自体は作れてしまうんですね。ハンパねぇ!

ちょっと見た目とかも変えたりすれば ...

slk03

完成!

スクリーンショット 2016-02-05 10.27.13

いい感じだぞ、助手よ。

あ、ちなみにこのページにある「API Token」を使用して次で説明する「Botkit」と連携するので、このページは開いたままにしておいてくださいね。

満足して閉じないようにしてください。

Botkitを導入し、生命を宿す

いよいよBOTに心臓部分となるBotkitしていきます。

Botkitのダウンロード

黒い画面を開いて、Github上にある「Botkit」を任意のディレクトリにクローンしてください。

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

Botkitに必須パッケージをインストール

続いてクローンしたディレクトリに移動し、パッケージをインストールします。

cd botkit
npm install

以上でBotkitの準備は完了です。

アマデウス紅莉栖を起動

では実際に、アマデウス紅莉栖を起動させてみましょう。 以下のコマンドを黒い画面に入力します。

token=※API Token※ node bot.js

入力したら、

SlackのBOT作成ページで取得した「API Token」をコピーし、上記の「※API Token※」の部分と差し替え。

差し替えたら、Enter叩いて実行。

Botkitが実行され英語がブワッと出てきますが、最後の方に

notice: ** BOT ID:  amadeus  ...attempting to connect to RTM!

と表示されていれば成功です。

アマデウス紅莉栖とお話してみる

Botkitにはあらかじめサンプルが入っているので、ちょっと会話してみましょう。

まず「@ちゃんねる」を作成します。

で、栗御飯とカメハメ波を招待します。

スクリーンショット 2016-02-05 10.33.55

「@amadeus hello」

スクリーンショット 2016-02-05 10.35.38

おおおお!

ちゃんと送ったメッセージに反応して返信してくれていますね。 これがシュタインズ・ゲートの選択か...。

感想とか

とりあえず今回はここまでです。 次回は「bot.js」を編集して自分好みのアマデウス紅莉栖を作り上げます。

スクリーンショット 2016-02-05 11.30.33

いやー、思った以上に簡単に作れてびっくり。

SlackのBOTは高性能かつ柔軟なので、作りこめば普通にチャットするだけでなく家電とかも動かせたりするみたいです。天才か。

色々アイデアはあるので、後は実装あるのみですね。 楽しみです。

© MAGES./5pb./Nitroplus/Chiyo st. inc.