slack-goでユーザが所属するチャンネル情報を取得したい

2020年9月15日火曜日

GoLang Go言語 slack-go

t f B! P L
slackアプリを開発している際に、対象ユーザが所属するチャンネル情報が欲しいケースがあると思います。
私の場合は、課題管理アプリを作成しており、課題作成者、更新者が選択できるチャンネルを取得したい場面がありました。

結論から言うと、Slackの Conversations APIusers.conversationsを利用すると、ユーザがアクセスできる会話一覧を取得可能です。
こちらをslack-goで書くと以下のようになります。
// SLACK_USER_AUTH_TOKENには、OAuth Access Tokenを指定する

import (
	"os"

	slack "github.com/slack-go/slack"
)

// GetChannels : 課題担当者の所属するチャンネル情報を取得
func GetChannels(userID string) ([]slack.Channel, error) {
	// ユーザの所属するチャンネル情報を取得するのに利用
	userAuthAPI := slack.New(os.Getenv("SLACK_USER_AUTH_TOKEN"))

	conversationParams := slack.GetConversationsForUserParameters{
		UserID: userID,
		Cursor: "",
        	// DM、グループDMも取得したい場合は、im,mpimも設定してください 
		Types: []string{
			"public_channel",
			"private_channel",
		},
		Limit:           100,
		ExcludeArchived: false,
	}

	channels, _, err := userAuthAPI.GetConversationsForUser(&conversationParams)
	if err != nil {
		return nil, err
	}

	return channels, nil
}
Slack側の設定も必要です。OAuth & Permissionsに遷移し、User Token Scopesを設定してください。
※必要に応じて、im:read,mpim:readも設定してください。

私が作成したSlack課題管理Appはこちらです。
参考になる箇所があれば幸いです。

注目の投稿

composer.lockはGit管理すべき話

# 背景 # 結論 # composer installとcomposer updateの違い # 背景 仕事では主にLaravelを使用して開発を行っている。 ソースコードはGitでバージョン管理を行い、compose...

プロフィール

7年ほど中小企業でSIerとして働いていました。 現在は個人事業主としてPHP, Javascriptの企業案件をメインに受けています。 最近はポケモンカードの開封にはまっています。

アーカイブ

このブログを検索

QooQ