概要
Botkitで作成したSlackのBotからローカルにあるファイルをアップロードする方法です。
環境
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.11.6
BuildVersion: 15G1108
$ npm -v
3.10.9
$ node -v
v7.2.0
ファイルのアップロード
Botに対して「ファイルちょうだい」と言うと特定のファイル(ここではhoge.txt)をアップロードしてもらうようにします。
Slack APIのfiles.uploadを使います。
https://api.slack.com/methods/files.upload
index.js
const Botkit = require('botkit');
const fs = require('fs');
if (!process.env.token) {
console.log('Error: Specify token in environment');
process.exit(1);
}
const controller = Botkit.slackbot({
debug: false
});
controller.spawn({
token: process.env.token
}).startRTM(function(err){
if (err) {
throw new Error(err);
}
});
controller.hears('ファイルちょうだい',['direct_message','direct_mention','mention'],function(bot,message) {
const messageObj = {
file: fs.createReadStream('./hoge.txt'),
filename: 'hoge.txt',
title: 'hoge.txt',
channels: message.channel
};
bot.api.files.upload(messageObj, function(err, res){
if(err){
console.log(err);
}
});
});
messageObj.channelsは任意ですが、指定しないとアップロードしたことを発言してくれないのでダウンロードはもちろん、アップロードされたことすら気づきません。
結果はこんな感じです。
修正メモ (2016/11/29)
コメント欄で教えていただき、fs.createReadStreamを使うことによりBotkit v0.4.2で画像ファイルも正常にアップロードができることを確認。