LoginSignup
4
2

More than 5 years have passed since last update.

Rubyのfaradayを使ってslackにsnippetを投下する

Last updated at Posted at 2017-10-24

やりたいこと

  • slack botからddlをsnippetで投下
  • snippetの設定言語をsqlに設定していい感じに
  • 折りたたんだ状態で投下する(できなかった...)

現状

  • メッセージに```を入れてコードとして認識させる
  • 折りたたまれず見た目が悪い
  • あまりにddlが長いと分割されてコードと認識されない

やり方

  • slack apiのfiles.uploadを使用
  • modeでsnippetを指定(デフォでsnippetだったので省略)
  • まずcurl文で検証
hello_snippet.sh
curl -F channels={CHANNEL_NAME} -F content="Hello snippet" -F token={SLACK_TOKEN} https:/
/slack.com/api/files.upload

-次にfaradayを使ってPOST

hello_snippet.rb
require 'faraday'
require 'json'

slack_uri="https://slack.com/api/files.upload"
conn = Faraday::Connection.new(:url => slack_uri) do |builder|
  builder.request  :url_encoded     # リクエストパラメータを URL エンコードする
  #builder.response :logger          # リクエストを標準出力に出力する
  builder.adapter  :net_http        # Net/HTTP をアダプターに使う
end

res = conn.post do |req|
  req.body = {
    "title"=>"Hello snippet",
    "filetype"=>"sql",
    "token"=>SLACK_TOKEN,
    "channels"=>CHANNEL_NAME,
    "content"=>"Hello snippet"
  }
end

puts JSON.load(res.body)['ok']

結果

  • いい感じに投稿できました
  • デフォルトで折りたたむのはできませんでした... スクリーンショット 2017-10-24 16.51.56.png

参考にしたページ

4
2
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
4
2