BotMan for ChatWork
作り始めた所。
BotMan
The only PHP chatbot framework you will ever need.
https://botman.io/
BotMan を Laravel に導入済にして用意してあるのが BotMan Studio
https://github.com/botman/studio
今回は BotMan Studio を元に作っていった。
ChatWork Webhook
BotMan のデフォルトでは当然 ChatWork はない。ChatWork はこういう所が弱すぎる。少し前に Webhook 対応してやっと Chat bot 的なものを作れるようになった。
調べた結論としては Webhook は アカウントイベント
と ルームイベント
があり
-
アカウントイベント
にご自身へのメンション(mention_to_me)
-
ルームイベント
にメッセージ作成(message_created)
とメッセージ更新(message_updated)
一つの Webhook 設定で両方のイベントが飛んでくることはないので両方使うなら Webhook を2つ作る。
bot へのメンション時にのみ発動させるなら アカウントイベント
だけでもいい。
両方使うと bot へのメンションで mention_to_me と message_created 両方発動するので一つのほうがいいかもしれない。
作ったものとデモ
- https://www.chatwork.com/g/botman
- https://github.com/kawax/botman-chatwork
- https://github.com/kawax/botman-chatwork-project
- https://botman.kawax.biz/
基本的な使い方
導入は GitHub 見てなんとかしてもらうとして…
Chat bot としての動作をどこに書くか。
書く場所としては2つ。
routes/botman.php
<?php
$botman = resolve('botman');
$botman->hears('Hi', function ($bot) {
$bot->reply('Hello!');
});
Laravel のルーティングと大体同じなので分かりやすい。
クロージャではなくクラスで指定もできる。クラスの置き場所はどこでもいい。
$botman->hears('laravel version', 'App\Botman\LaravelCommand@version');
bot へのメンションで laravel version
と書けば GitHub API を使って取得した Laravel の最新バージョンを返すコマンド。
Laravel ベースだとなんでもできるのがメリット。Lambda とかでも作れるけど不慣れだと後からメンテできなくなる可能性が高い。
webルーティングからコントローラー
routes/web.php
の
Route::match(['get', 'post'], '/botman', 'BotManController@handle');
コントローラー内に書いている。
/**
* Place your BotMan logic here.
*/
public function handle()
{
$botman = app('botman');
//$botman->hears();
$botman->listen();
}
webhook で指定するのは /botman
のURL。
どっちかを使うかは別にどっちでもいいはずだけどたぶん botman.php。/botman
へのリクエストで BotMan が発動(listen)、実際の動作の細かいことは botman.php。
開発
困るのは開発時。ローカルサーバーでは当然 webhook は飛んで来ないのでやりにくい。
コマンド作るのを試してみたいという人がもしいれば ChatWork に参加して botman-chatwork-project のほうにプルリク送れば試せるようにする。
Author And Source
この問題について(BotMan for ChatWork), 我々は、より多くの情報をここで見つけました https://qiita.com/kawax/items/2273628b4108456a61fd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .