目的
- ruby から slack channel や個人へ message を送信する
- 送信者は bot 扱いとなる
概要
- 使用 gem
- token の取得
- channel id, user id の取得
- ruby code sample
- token 設定
- dm
- message
- block
使用 gem
gem 'slack-ruby-client'
bot auth token の取得
- [ 使用する slack app の設定画面 ] を開く
- [ OAuth & Permissions ] を開く
- [ Bot User OAuth Token ] を控える
App へ chat write 権限の付与
- [ OAuth & Permissions ] を開く
- [ Bot Token Scopes ] の [ Add an OAuth Scope ] を選択
- [ chat:write ] を追加する
- [ Reinstall to Workspace ] を実行
- 初回の場合は, message が異なる
channel, user id を取得する
- slack を browser で開き, url path より取得する
# channel id
https://app.slack.com/client/[TEAM_ID]/[CHANNEL_ID]/
# user id : user profile を開き, url 末尾が user_id となる
https://app.slack.com/client/[TEAM_ID]/[CHANNEL_ID]/rimeto_profile/[USER_ID]
ruby code sample
require 'slack-ruby-client'
def setup_slack
token="xoxb-11111111111-222222222222-DummyDummyDummy3333"
Slack.configure do |config|
config.token = token
end
end
def send_message_to_user
# user へ DM を送信する
user_id = 'USER_ID'
msg = 'test msg'
client = Slack::Web::Client.new
response = client.chat_postMessage(
channel: user_id,
text: msg
)
end
def send_message_to_channel
# channel へ message を送信する
channel_id = 'CHANNEL_ID'
msg = 'test msg'
client = Slack::Web::Client.new
response = client.chat_postMessage(
channel: channel_id,
text: msg
)
end
setup_slack
send_message_to_user
send_message_to_channel
block message
block とは
- 構造を持った teplate message を送信することができる
- 以下より, block 及び, block code の生成が可能
block sample 画像
sample code
- 投稿する際は, message と同様に block を付与して送信する.
- 投稿した block の更新も可能.
- 更新には message_ts が必要となる
- message_ts は, block 上の button などから発行される request に含まれる.
def post_block
client = Slack::Web::Client.new
block = generate_block
response = client.chat_PostMessage(
channel: channel_id,
blocks: block
)
end
def update_block
client = Slack::Web::Client.new
block = generate_block
response = client.chat_update({
ts: message_ts,
channel: channel_id,
blocks: block
})
end
以上
参考記事