У меня есть служба узла, которая использует WebClient
из @slack/client
.
Я использую токен доступа бота для загрузки изображения с помощью метода web.files.upload
API. Затем я хочу отправить загруженное изображение пользователю в виде вложения в личное сообщение (то есть канал, начинающийся с D
). Я хочу, чтобы доступ к этому изображению был ограничен пользователями Slack в этой команде (так же, как когда вы делитесь документом или другим файлом).
Я попытался сделать это с ответом от функции files.upload
, но, похоже, нет свойства res.file
, которое дает мне URL-адрес, доступный для всех членов этой команды Slack:
conversationId = 'Dxxxxxxxx'; // ID of private channel between bot and user
web.chat
.postMessage({
channel: conversationId,
text: 'Hello there',
attachments: [
{
fallback: 'Required plain-text summary of the attachment.',
color: '#36a64f',
title: 'Slack API Documentation',
title_link: 'https://api.slack.com/',
text: 'Optional text that appears within the attachment',
image_url: res.file.permalink_public,
ts: 123456789
}
]
});
Начиная с документов , похоже, что этот файл является личным для бота, пока не будет отправлен на общедоступный канал.
Альтернативой, которую я рассмотрел, была загрузка файла в канал личных сообщений между пользователем и ботом, однако это выдает мне следующую ошибку:
{ Error: An API error occurred: invalid_channel
code: 'slackclient_platform_error',
data:
{ ok: false,
error: 'invalid_channel',
channel: '["Dxxxxxxxx"]',
scopes: [ 'identify', 'bot:basic' ],
acceptedScopes: [ 'files:write:user', 'post' ] } }
Нет ли способа добиться того, чего я добиваюсь?