iyuichiの私的開発ログ

渋谷で働くWebエンジニアのログ. Java, Android, iOS, Docker, GCP, AWS, ゲーム開発

Slack APIで画像ファイルをアップロードする

Botkitを使ってボットを作っていました。
ボットでチャンネルに常駐してBuild successというメッセージがきたら

  • ダウンロードリンクを取得
  • QRコードの画像ファイルを作成
  • 作成した画像ファイルをSlackに投稿

だいたいこんなことをやりたいボットです。

QRコードを作るのは簡単で以下のモジュールを使ってすぐに実装できました。
GitHub - soldair/node-qrcode: node js server side qr code generator utilizing node-canvas

使い方はこんな感じ。

        var QRCode = require('qrcode');
        QRCode.save('./qr.png' , 'http://google.com', function(err){
            if(err){
                console.log(err);
            }
        });

さて作成した画像をslackに投稿したいのですが、ここでハマりました。。
少しググったら以下の記事を見つけたので同様に試してみたのですが、どうも画像ファイルがtext/plainとして認識されてしまい文字化けしたような意味不明のファイルが投稿されてしまいます。

qiita.com

それで以下のAPIドキュメントを参考にしつつnodeのrequestモジュールを使って色々試行錯誤の沼に。。
files.upload method | Slack

だいぶ色々試して時間かかったのですが、
結論、以下の方法でできました。

slack apiで画像ファイルをアップロードする

追記

このプルリクがマージされるとBotkitだけで普通にアップロードできるようになりそうな。
Added multi-part file upload to files.upload by olirogers · Pull Request #112 · howdyai/botkit · GitHub


What Is Node?

What Is Node?