こちらの記事を参考にしてHubotとTypeScriptを使ってChatwork botを作ってみたいと思います。
https://qiita.com/S_Shimotori/items/3da73b05bfdc3c582995
http://hatappo.hatenadiary.jp/entry/2015/07/19/034412
今回作るbotに関して
- とりあえず、"hello"と送ったら"world"を返すような本当に簡単なもの
- HubotのscriptはTypeScriptで記述しコンパイルする
- 動かす環境はCentOS7系
Node.jsの導入
$ sudo yum install epel-release
$ sudo yum install nodejs npm
TypeScriptを入れる
$ npm install -g typescript
$ npm install @types/node --global
$ npm install @types/hubot --save
hubotを入れる
$ npm install -g hubot hubot-chatwork yo generator-hubot
とりあえずhubotを生成して動かしてみる
$ mkdir kevin
$ cd kevin
$ yo hubot --adapter chatwork
実行するとHubot君がでてきてメールアドレスやbotの名前などの入力を求められるので入力する(特に設定の必要がなければ適当にEnter押すだけでもでも可)
_____________________________
/ \
//\ | Extracting input for |
////\ _____ | self-replication process |
//////\ /_____\ \ /
======= |[^_/\_]| /----------------------------
| | _|___@@__|__
+===+/ /// \_\
| |_\ /// HUBOT/\\
|___/\// / \\
\ / +---+
\____/ | |
| //| +===+
\// |xx|
? Owner dummy@dummy.mail
? Bot name kevin
? Description Chatwork bot Test
生成が終わるとjsonファイルやらscriptsやらがいろいろ出来上がる。
動かすときにhubot-script.jsonでエラーがでるので削除。
external-scripts.jsonのheroku関連行を削除。
以下で実行kevin ping
と打って、PONG
が返ってくればOK
$ ./bin/hubot
kevin> kevin ping
kevin> PONG
Chatworkアダプタの環境変数を設定
export HUBOT_CHATWORK_TOKEN="<CHATWORK_TOKEN>"
export HUBOT_CHATWORK_ROOMS="<ROOM_ID>"
export HUBOT_CHATWORK_API_RATE="<RATE>"
Chatworkから実行してみる
以下を実行してbotを起動
$ ./bin/hubot -a chatwork -n test-bot
Chatworkの指定のROOMからtest-bot ping
を実行し、PONG
が返ってくることを確認
TypeScriptを書く
基本的な記法等は本やら記事やらがたくさん出回っているので省略。
TypeScriptからJavaScriptを生成する際に型定義ファイルが必要となるが、今回使用するものは以下を参考にして作成する。
(@types/hubotをインストールしたことで必要がなくなったため打消し)
http://qiita.com/itoshiki/items/65d24b197d830054f501
hello.ts(/kevin/scripts/hello.ts)
import hubot = require("hubot");
module.exports = (robot: hubot.Robot): void => {
robot.respond(/hello/i, (msg: hubot.Response)=>{
msg.reply("world!");
});
};
~~型定義ファイルを同じ階層に設置し、~~JavaScriptにコンパイルする。
$ tsc scripts/hello.ts
成功するとhello.jsが出来上がっている。
出来上がったhello.js
"use strict";
exports.__esModule = true;
module.exports = function (robot) {
robot.respond(/hello/i, function (msg) {
msg.reply("world!");
});
};
これで準備OK。
もう一度botを起動する。
$ ./bin/hubot -a chatwork -n test-bot
Chatworkからtest-bot hello
と送信しworld!
が帰ってくることを確認。
ということで一応完成になります。
初のQiita記事なので手順に抜け、記法の誤りなど多々あるかもしれませんが悪しからず…。
作ってみた感想
- 初めて手をつけた割には、思っていた以上にすんなりとできた。とても使いやすい。
- TypeScriptに関する知識がほぼ皆無だったので少し手こずった(ちゃんとした書き方がまだわかってない)。これを機に勉強しようと思う…。
- ChatworkでたたいてからResponseが来るまでが割と長いなーという印象
今後の展開
- 業務において使用。今回作ったbotを使ってpythonで作成したテストコードの自動実行をし、結果をChatworkにだせるようにする。