あっ、ずっと前から Slack Bot 作ってみたかったんですよ。
ずっと温めてたけど
なんで急に作ろうと思ったか。
うちの会社の新人ちゃんとその先輩が Unibo から Slack にメッセージを飛ばすみたいなことやってたので、そろそろやろうかなと、思ったわけです。
Bot と言ったものの...
よくメンヘラ Bot とか聞きますけど、自分で作るとなると題材がなく...
あっ!
うちの会社のマスコット的な子、PEOPLEくん(非公式)っていうんですけど、これ使おう!
これね
でも、個人的なイメージだけど Bot って毒舌だよね。だよね?
ブラックにしてしまえ!
はい、いいのかなこんな事して?
おっと、誰かが来たようだ...
本題(Slack 側)
Slack Bot を作るためには Slack API のページから Slack App を作成する必要があります。
1. Create an App を押す
押すだけ!
2. アプリ名と導入する Slack のワークスペースを選択
「App Name」にアプリ名を入力します。
利用したいワークスペースを「Development Slack Workspace」から選択して「Create App」!
3. Bot にする!
左側の「Bot Users」を選択すると画面が切り替わるので、「Add a Bot User」押す!
4. Bot に命を吹き込む
「Display name」に Bot の名前を入力します。
(日本語も OK だよ!)
「Default username」はユーザーネーム、つまり Slack の ID にあたる値です。
こちらは日本語むーりー
「Add a Bot User」押したら Bot が産声をあげます。
5. Slack と連動
「Basic Information」に戻り「Install your app to your workspace」のトグルを開くと「Install App to Workspace」というボタンが現れます。
押したらワークスペースとの認証の許可を聞かれますので、OK したらSlack に Bot が表示されるようになります!
本題(実装側)
Bot なので会話出来るのがいいなと思っていました。
Real Time Messaging API というものが用意されていますので、これを使って Bot を喋らせて見ようと思います!
(実装は Go言語 です)
1. 実装って言っても1ファイルだけだけど
package main
import (
"log"
"github.com/nlopes/slack"
)
func main() {
// API Client を作成する
api := slack.New("「Bot User OAuth Access Token」を入力するよ")
// WebSocket で Slack RTM API に接続する
rtm := api.NewRTM()
go rtm.ManageConnection()
for msg := range rtm.IncomingEvents {
switch ev := msg.Data.(type) {
case *slack.MessageEvent:
// メッセージイベントの場合は、入力メッセージを Log 出力
log.Printf("Message: %v\n", ev.Text)
rtm.SendMessage(rtm.NewOutgoingMessage("は?", ev.Channel))
}
}
}
コード内に概要を書いていますが、
API クライアント作成 Slack RTM API に接続 メッセージイベントの場合に喋る!
です!
ちなみにコメントにある "「Bot User OAuth Access Token」を入力するよ"
の部分は Slack API のページから取ってきます。
「OAuth & Permissions」の「Bot User OAuth Access Token」の値を貼り付けましょう。
動かしてみた
この子...嫌い。
まとめ
割とすんなり作れると思います。
いろいろな言語で書けるので、好きな言語で作ってみてはどうでしょう?
参考
参考にさせていただきました!
ありがとうございます!!