slack-go/slack ライブラリを利用したアプリで Slack の files.upload API 廃止に対応する
はじめに
2025年3月で Slack の files.upload API が廃止になるそうです。
詳しい情報はこちらにあります: https://zenn.dev/slack/articles/7ce5065cc4daa7
が、上記には
の情報はあるのですが、Go 関連の情報はないようだったので、slack-go/slack で古い API を利用していたのを対応したメモを残します。
利用箇所
kagome-bot という形態素解析結果を slack のメッセージとして返す bot で、解析結果のグラフのイメージを Slack にアップロードするために古い slack-go の API を利用していました。
対応
slack-go には Slack の file.upload v2 API に対応した API が既に存在するので、こちらに置き換えていきます。
以下は実際に kagome-bot でファイルアップロードをおこなっていた部分のコードです。画像は、直接ファイルにあるものをアップロードするのではなく、メモリ上に構築したものを io.Reader を経由してアップロードしています。
Before
After
v2 では、メモリ上の画像のサイズを渡すように変更されました。あとはおおむね同じ感じです。
パラメータに File という文字列のフィールドがあるのですが(←上では使われてない)、上記のようにメモリ上の画像をアップロードするのではなく、実際にファイルをアップロードする場合は、こちらにパスを指定するようです。ややこしいですが、Filename というフィールドの方は、アップロード後の Slack 上でのファイル名になります(Slack からダウンロードしたときのファイル名です)。
おわりに
slack-go/slack を利用して Slack にファイルをアップロードしている場合には、そんなに大きな変更にならずに置き換えられました。
これから置き換えようかなと思っている方の参考になれば幸いです。
Happy hacking!
Discussion