LoginSignup
8
3

More than 5 years have passed since last update.

KtorでSlackBot作ってみた

Last updated at Posted at 2019-02-12

Slackで/chomadoを入力するとちょまどさんの写真を返すbotを作ってみました。

サンプルコードはこちらです。
https://github.com/hiroga-cc/chomadlin

また、サーバーも公開しているので、SlackBotだけ利用したい方は 3. Slackへのつなぎこみから読んでください。

Steps

  1. Ktorアプリの作成
  2. Herokuへのデプロイ
  3. Slackへのつなぎこみ

1. Ktorアプリの作成

公式ドキュメントに則ってセットアップします。

http://localhost:8080 で動くようになったら、次はロジックを作成します。

Ktorはレスポンスを返すメソッドにdata classを渡すといい感じでjsonに変換してくれるようなので(すみません、仕組みはよくわかってません...!)、Slackのレスポンスに準じてdata classを作成します。

SlackResponse.kt
# SlackResponse.kt
package cc.hiroga

data class SlackResponse(
    val response_type: String,
    val text: String,
    val attachments: Array<SlackResponseAttachement>
)
# SlackResponseAttatchment.kt
package cc.hiroga

data class SlackResponseAttachement(
    val image_url: String
)

データクラスのオブジェクトの生成 & レスポンス

        post("/chomado") {
            val TEST_CHOMADO_PIC = "https://pbs.twimg.com/profile_images/1086536800791740417/uvkmvoBk_400x400.jpg"
            val attachment = SlackResponseAttachement(TEST_CHOMADO_PIC)
            val response = SlackResponse(
                "in_channel",
                "(*゚▽゚* っ)З. (*゚▽゚* っ)З ‬",
                arrayOf(attachment)
            )

            call.respond(response)
        }

結果

# POST https://chomadlin.herokuapp.com/chomado
{
    "response_type": "in_channel",
    "text": "(*゚▽゚* っ)З. (*゚▽゚* っ)З \u202c",
    "attachments": [
        {
            "image_url": "https://pbs.twimg.com/profile_images/1086536800791740417/uvkmvoBk_400x400.jpg"
        }
    ]
}

2. Herokuへのデプロイ

公式ドキュメントのガイド通り、app.json(Herokuが使用するコンテナのイメージなどを指定する)とProcfile(イメージの中で起動されるべきコマンドを指定する)を設定します。

(system.propertiesは設定しなくてもなんかいけました...)

3. Slackへのつなぎこみ

もしSlackでちょまどさんbotを使いたいだけの人がいれば、以下のURLで手順を進めてみてください!

https://chomadlin.herokuapp.com/

WorkSpace内でアプリを作成

アプリの機能としてSlash Commandを追加

作成したアプリをWorkspaceにインストール

疎通完了!

まとめ

Ktorを使って手早くSlackBot用のAPIを構成することができました。

そこそこ小さいフレームワークながらもJSONに対するサポートがあり、APIサーバーとしてはいい感じ(でも仕組みを早く理解したい)という印象です。

次はKtorの仕組みを細かく追いつつ、Botのロジックも修正していきます!

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3