松弛斜杠命令-接受媒体文件(图像、视频、语音备忘录)



我在slack上建立了一个斜杠命令,它试图利用slack的内置文件上传,并接受文本和媒体文件(如果存在特定关键字,则将其发布到另一个频道)。

然而,每当我得到命令的有效负载时,我只得到消息的文本部分,而忽略了图像/视频/语音备忘录。

是否有可能通过斜杠命令或slack bot获得用户上传的文件?我该怎么做呢?

我已经尝试添加范围files:readfiles:write(连同标准commands),并发送了一条带有上传图像或语音备忘录(通过slack录制)的消息。

在这两种情况下,我只得到命令的文本部分:

token=<TOKEN>&team_id=<TEAM_ID>&team_domain=<DOMAIN>&channel_id=<CHANNEL_ID>&channel_name=directmessage&user_id=<USER_ID>&
user_name=<USERNAME>&command=%2Fcreate&text=can+I+send+a+%23voice+%23memo&
api_app_id=<APP_ID>&is_enterprise_install=false&
response_url=https%3A%2F%2Fhooks.slack.com%2F<...>&trigger_id=<TRIGGER_ID>

我最终使用了Slack Bolt库,它支持所有新的Slack功能和事件。通过这样做,您可以访问完整的消息body,其中还包括event属性,您可以在其中找到files数组。

代码示例:

const { App } = require('@slack/bolt');
const app = new App({
token: process.env.SLACK_BOT_TOKEN,
signingSecret: process.env.SLACK_SIGNING_SECRET,
socketMode: true,
appToken: process.env.SLACK_APP_TOKEN
});
// Listens to incoming messages that contain "hello"
app.message('hello', async ({ message, say, logger, body, event }) => {
// notice event.files
logger.info('Body', body, 'Files', event.files);
await say(`Hey there <@${message.user}>!`);
});

此消息将对任何包含&;hello&;的消息作出反应,记录files数组在event中,并以友好的消息回复。

日志记录器记录的files数组示例(在本例中为3秒语音备忘录):

[
{
id: '<file-id>',
created: 1671452738,
timestamp: 1671452738,
name: 'audio_message.webm',
title: 'audio_message.webm',
mimetype: 'audio/webm',
filetype: 'webm',
pretty_type: 'WebM',
user: '<user-id>',
user_team: '<team-id>',
editable: false,
size: 39033,
mode: 'hosted',
is_external: false,
external_type: '',
is_public: false,
public_url_shared: false,
display_as_bot: false,
username: '',
subtype: 'slack_audio',
transcription: { status: 'processing' },
url_private: 'https://files.slack.com/files-tmb/<ids>/audio_message_audio.mp4',
url_private_download: 'https://files.slack.com/files-tmb/<ids>/download/audio_message_audio.mp4',
duration_ms: 2421,
aac: 'https://files.slack.com/files-tmb/<ids>/audio_message_audio.mp4',
audio_wave_samples: [
1,  0,  0,  0,  1,  1,  1,  0,  0,   0,  0,  0,
0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,
0,  0,  0, 12, 37, 47, 54, 62, 68,  79, 80, 58,
39, 30, 22, 18, 46, 82, 87, 90, 94, 100, 96, 72,
51, 76, 77, 62, 38, 47, 51, 51, 60,  68, 70, 60,
52, 42, 54, 66, 62, 61, 63, 50, 53,  55, 58, 47,
40, 36, 32, 27, 23, 16, 11,  6,  4,   4,  4,  3,
2,  2,  4,  5,  4,  3,  3,  3,  2,   2,  2,  2,
1,  1,  1,  1
],
media_display_type: 'audio',
permalink: 'https://<workplace-id>.slack.com/files/<file-id>/audio_message.webm',
permalink_public: 'https://slack-files.com/<file-id>',
has_rich_preview: false,
file_access: 'visible'
}
]

我找不到任何关于向slack bot发送文件的具体文档,希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新