Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

概要

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でメッセージ送信の記事で詳細を解説されています。

someone7140
まだまだ修行中のエンジニアです。ちゃんとサービスを作れるようになりたいです。
http://toaruit.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away