LoginSignup
5
0

More than 5 years have passed since last update.

slack-scala-clientを使用したAPI Clientのサンプル

Posted at

概要

slack-scala-clientを使用してslackの情報を取得したり、メッセージを送信したりしてみましたので、サンプルを記載します。
なお、botの作り方を知りたい場合は、@FScowardさんのこわくないScala vol.5 今日のランチbotを作ってみるの記事で解説されているので、こちらをご参照ください。

前準備

slackのAPIへアクセスするためのtokenを発行する必要があります。tokenの取得方法の詳細は、@ykhiraoさんのSlack API 推奨Tokenについてにて解説されていますので、こちらをご参照ください。

サンプルコード

今回はチャンネル一覧取得・ユーザ一覧取得・メッセージ送信の簡単なサンプルを作成してみました。

SlackTest.scala
import akka.actor.ActorSystem
import scala.util.{ Success, Failure }
import scala.concurrent.ExecutionContext.Implicits.global
import slack.api.SlackApiClient

object Main extends App {
  implicit val system = ActorSystem("slack")
  val token = "ここに取得したtokenを設定"
  val client = SlackApiClient(token)

  // ユーザ一覧を取得するサンプル
  client.listUsers().onComplete {
    case Success(users) =>
      users.foreach(u =>
        println(s"${u.id}:${u.name}")
      )
    case Failure(t) => println(s"error:${t.getMessage()}")
  }

  // チャンネル一覧を取得するサンプル
  client.listChannels().onComplete {
    case Success(channels) =>
      channels.foreach(c =>
        println(s"${c.id}:${c.name}")
      )
    case Failure(t) => println(s"error:${t.getMessage()}")
  }

  // チャンネルIDまたは送信先のユーザIDを指定してtestメッセージを送るサンプル(送信者はToken発行ユーザ)
  client.postChatMessage(channelId = "ここにIDを設定", text = "test", asUser = Some(true)).onComplete {
    case Success(_) =>
      println("Success")
    case Failure(t) =>
      println(s"error:${t.getMessage()}")
  }
}

その他補足

メッセージの送信元ユーザは、Token発行者かbotユーザしか使用できないようです。@mizuki_takahashiさんのSlack APIでメッセージ送信の記事で詳細を解説されています。

5
0
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
5
0