ユーザーガイド

基本の流れ

1. Botをつくる

kitenにログイン後、画面上部にある、あたらしいBotをつくるボタンをクリックすると、
あたらしいBotをつくる画面になります。

この画面で「Botのなまえ」を入力し、「Botのタイプ」を選択します。
Botのタイプは「Lua」と「Hubot1(Language: JavaScript, Coffee)」の2種類から選択できます。
Botタイプの説明はこちらをご覧ください。

あたらしいBotをつくる画面

2. コードファイル作成

Botの個別画面にある「ファイルを追加するボタン」をクリックして、Botのコードを記述します。
BotのサンプルはSampleページ、コードの書き方についてはReferenceページを参照してください。

Bot個別画面

3. チャットサービスへの接続

コードファイルの作成が完了したら、Botをチャットサービスに接続します。
現在、kitenで作成したBotは「Slack」と「LINE」に接続できます。
Botの個別画面にあるAddボタンもしくはEditボタンをクリックすると、接続設定画面になります。

接続設定画面


Botのタイプ(LuaとHubot)

kitenでは、プログラムを書くことでBotの動作を作りこみます。

使用するプログラミング言語に応じて、「Lua」と「Hubot(Language: JavaScript, Coffee)」、
2種類のBotタイプを用意しています。

タイプはBotを作成する際に決定します。Bot作成後にタイプを変更することはできません。

Luaタイプ

Luaタイプは、Lua5.2を使ってBotを記述するタイプです。
kitenでは、Luaタイプをメインストリームと位置付けており、今後の機能拡張についてはこちらを優先する計画です。

kitenのLuaには、robot:wait_message()robot:ask()のような、
ユーザからの入力を受け取る関数が用意されています。

これにより、パターンにマッチしたら何かを実行するという単純な応答だけではなく、
相手からの回答に応じてボットの動作を変更することができるようになっています。

以下のようなケースでは、Luaタイプがおすすめです。

Hubotタイプ

Hubotタイプは、Hubotのプラグインをほぼそのまま動かせるタイプです。
動作は、CoffeeScriptかJavaScriptで記述することができます。

Hubotとの互換性については、機能比較表をご覧ください。

以下のようなケースでは、Hubotタイプがおすすめです。


Hubotとkitenとの機能比較表

hubot documentationをベースに、kitenで対応している機能を一覧します。
👍が書いてあるセルはほぼ同じものが実装されている機能、説明の文章が書いてあるセルは相当する機能を示しています。

Hubot kiten(Hubotタイプ) kiten(Luaタイプ)
言語 CoffeeScript JavaScript, CoffeeScript Lua5.2
console 👍 robot:log()
robot.hear 👍 👍 robot:hear()
robot.respond 👍 👍 robot:respond()
msg.send 👍 👍 robot:send()
msg.reply 👍 👍 robot:reply()
msg.match 👍 👍
robot.messageRoom 👍 👍 robot.messageRoom()
Captureing Data 👍 👍
Making HTTP calls 👍 👍 http.get() / http.post()
Random 👍 👍
Topic 👍
Entering and leaving 👍
Custom listeners 👍
Environment Variables 👍
Dependencies 👍
setInterval 👍 👍
HTTP Listener 👍
Events 👍
Error Handling 👍
Documenting Scripts 👍
Persistence 👍 👍 robot.brain
Script Loading 👍 👍(下記参照) (下記参照)
Middleware 👍

ファイルの読み込み順

グローバル変数を定義する場合や他のファイルで定義した関数を呼び出したい場合、
ファイルの読み込み順を気にしなければいけなくなるケースがあります。

kitenではファイルの読み込み順は優先度の高い順にこのように決められています。

この順序はファイルを一覧する画面の表示順と同じになっています。
ファイルの一覧の上から順にスクリプトがロードされると考えてください。


タイムゾーン

kitenサービス上で動作するボットのタイムゾーンは、タイプによって以下のように決められています。

HubotタイプのBotはUTCで動作します。new Date()で得られる日付はUTCのものになります。
日本時間での処理を行いたい場合は9時間を足して計算してください。

LuaタイプのBotはJSTで動作します。os.date()で得られる日付は日本時間のものになります。
UTCでの時刻を取得したい場合はos.date("!*t")のようにフォーマット文字列を!から始めてください。


チーム管理

メンバー招待

チームにメンバーを新たに招待する場合、設定画面にある「招待URL」を招待したい方に共有してください。
招待URLをクリックすると、ユーザー新規登録画面になります。

チーム設定画面

権限とメンバー削除

メンバーの権限は、「管理者」と「メンバー」の2種類があります。

デフォルトの設定では、最初にチームを作成したユーザーの権限が「管理者」、
招待URLから登録したユーザーの権限は「メンバー」となります。

管理者は、設定画面から「メンバーの権限変更」と「メンバー削除」の操作が行えます。


他システムとの連携

Webhook

kitenでは、BotごとにWebhookが自動生成されます。
WebhookのURLは、Botの個別画面から確認できます。

チーム設定画面


制限事項


障害

現在障害は発生していません。


障害履歴

発言がダブる(2017/01/25 14:00時点で解消)

タイミングによっては、botが二人いるような挙動になってしまう場合があります。しばらくすると元に戻ります。
問題が起きている間は特定の発言に反応するボットやnewCronJob()によって登録したジョブが2回実行されます。

newCronJob()が正しく動作しない(2017/01/16 17:00時点で解消)

newCronJob()で設定した時刻に、登録した処理が実行されない場合があります。

発言が拾われない(2017/01/11 18:20時点で解消)

Botが一定期間動作していない状態(全く発言を受け取っていない状態)でBotに対して何か話しかけても、Botがその発言を受け取らずにスルーしてしまう場合があります。
Botに対して一度話しかけた後であれば、正しく反応するようになります。


既知の問題

変換中の文字が入力されてしまう

プログラム編集画面上で日本語入力を有効にしていると、変換中の文字が入力されてしまいます。


  1. Hubot はgithub社の製品です。