PublishSlack

文档中心 › 组件索引 › PublishSlack

PublishSlack Processor

类型全限定名:cn.org.acal.lynxus.processors.slack.PublishSlack

所属 Bundle:cn.org.acal.lynxus:lynxus-slack-nar:2.11.8

描述

向指定的 Slack 频道发送消息。消息内容可以是使用表达式语言的用户自定义消息,也可以将 FlowFile 的内容作为消息发送。 如果发送用户自定义消息,还可以选择将 FlowFile 的内容作为文件附件上传。

标签

slackconversationchat.postMessagesocial mediateamtextunstructuredwriteuploadsendpublish

使用场景

将特定文本作为消息发送到 Slack,可选地将 FlowFile 的内容作为附件发送。

将 "Access Token" 设置为您的 Slack OAuth Access Token 的值。
将 "Channel" 设置为频道的 ID 或以 # 符号为前缀的频道名称。例如,"C0123456789" 或 "#general"。
将 "Publish Strategy" 设置为 "Use 'Message Text' Property"。
将 "Message Text" 设置为您希望作为 Slack 消息发送的文本。
如果应将 FlowFile 的内容作为文件附件,则将 "Include FlowFile Content as Attachment" 设置为 "true",否则设置为 "false" 仅发送消息文本而不附加附件。

将 FlowFile 的内容作为消息发送到 Slack。

将 "Access Token" 设置为您的 Slack OAuth Access Token 的值。
将 "Channel" 设置为频道的 ID 或以 # 符号为前缀的频道名称。例如,"C0123456789" 或 "#general"。
将 "Publish Strategy" 设置为 "Send FlowFile Content as Message"。

多处理器协同场景

在线程中回复 Slack 消息。

slackrespondreplythread

配置 EvaluateJsonPath:

将 "Destination" 设置为 "flowfile-attribute"

添加一个名为 "thread.ts" 的新属性,值为 `$.threadTs`
添加一个名为 "message.ts" 的新属性,值为 `$.ts`
添加一个名为 "channel.id" 的新属性,值为 `$.channel`
添加一个名为 "user.id" 的新属性,值为 `$.user`

将 "matched" 关系连接到 PublishSlack。

配置 PublishSlack:

将 "Access Token" 设置为您的 Slack OAuth Access Token 的值。
将 "Channel" 设置为 `${'channel.id'}`
将 "Publish Strategy" 设置为 "Use 'Message Text' Property"。
将 "Message Text" 设置为您希望作为回复发送的文本。如果需要,可以通过包含文本 `<@${'user.id'}>` 来引用原始消息的用户。
    例如:`Hey, <@${'user.id'}>, thanks for asking...`
将 "Include FlowFile Content as Attachment" 设置为 "false"。
将 "Thread Timestamp" 设置为 `${'thread.ts':replaceEmpty( ${'message.ts'} )}`

属性

下表中,加粗的属性为必填项;其余为可选项。表格同时标注默认值、是否支持表达式语言,以及是否为敏感属性(值会被加密)。

名称默认值可选值描述
Access Token用于认证/授权 Lynxus 发送的 Slack 请求的 OAuth Access Token。可以是用户令牌或机器人令牌。该令牌必须被授予 chat:write 权限。此外,要将 FlowFile 内容作为附件上传,还必须被授予 files:write 权限。
敏感属性:是
Channel要发送消息的频道名称或标识符。如果使用频道名称,必须以 # 字符为前缀。例如,#general。这仅对公共频道有效。否则,必须提供要发布到的频道的唯一标识符。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Publish StrategySend FlowFile Content as Message
  • 发送 FlowFile 内容作为消息 — FlowFile 的内容将作为消息文本发送。
  • 使用 'Message Text' 属性 — 消息文本属性的值将作为消息文本发送。
指定处理器如何将消息或文件发送到 Slack。
Message Text要发送到 Slack 的消息文本。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Character SetUTF-8指定用于对 FlowFile 内容进行编码的字符集的名称。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Include FlowFile Content as Attachmentfalse
  • true
  • false
指定是否应将 FlowFile 的内容作为 Slack 消息的附件上传。
Max FlowFile Size1 MB可发送到 Slack 的 FlowFile 的最大大小。如果任何 FlowFile 超过此大小,它将被路由到 failure。这很重要,因为文件的全部内容必须加载到 Lynxus 的堆中才能将数据发送到 Slack。
Thread Timestamp此消息所属线程的时间戳标识符。如果未指定,消息将是顶级消息而不是线程中的消息。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Methods Endpoint Url PrefixSlack 客户端的自定义。设置 methodsEndpointUrlPrefix。如果您需要为 Slack API Methods 调用设置不同的 URL 前缀,可以在此设置。默认值:https://slack.com/api/
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)

关系 (Relationships)

名称描述自动终止
failure如果由于任何其他原因无法发送到 Slack,FlowFile 将被路由到“失败”否
rate limited如果超出速率限制,FlowFiles 将被路由到“速率受限”否
successFlowFiles成功发送到Slack后路由成功否

写入的 FlowFile 属性

名称描述
slack.channel.id从中检索消息的 Slack 通道的 ID
slack.ts发送的 slack 消息的时间戳; Slack 将其用作唯一标识符

状态管理

该组件不存储状态。

受限 (Restricted)

该组件不受限。

输入要求

该组件要求有传入连接。

另请参阅

详细说明

PublishSlack

说明

PublishSlack 可以使用 Slack 的 chat.postMessage API 向 Slack 发送消息。应优先使用该 Processor,而不是已弃用的 PutSlack 和 PostSlack Processor,因为它旨在整合这两个 Processor 的能力,提高可维护性,并简化用户配置。

Slack 配置

要使用该 Processor,需要在你的 Slack 工作区中创建并安装一个 Slack App。必须为该 App 创建一个 OAuth 用户令牌或 Bot 令牌。令牌必须具有 chat:write Token Scope。关于如何创建应用并安装到你的工作区, 参见 Slack 文档的最新信息。

根据 Processor 的配置,你可能还需要额外的 Scope。例如,如果配置为把 FlowFile 的内容作为消息附件上传,必须授予 files:write 用户令牌 Scope 或 Bot 令牌 Scope。此外,要消费的频道可以以 Channel ID 或(对于公开频道)频道名称列出。但是,如果使用了 #general 这样的名称,令牌必须具有 channels:read Scope 才能为你确定 Channel ID。

作为不需要 channels:read Scope 的替代,你可以只为 "Channel" 属性提供 Channel ID。要确定某个频道的 ID,在 Slack 中打开目标频道,点击屏幕顶部的频道名称。会弹出一个提供 频道信息的窗口。滚动到弹窗底部,可以看到 Channel ID,并可点击按钮将其复制到剪贴板。

编写本文档时,以下步骤可用于创建具有必要 chat:write Scope 的 Slack App。不过,这些说明可能随时变化,因此最好阅读 Slack 快速入门指南。

  • 创建一个 Slack App。点击这里开始。在这里,点击 "Create New App" 按钮并选择 "From scratch"。为你的 App 命名,并选择要用于开发该应用的工作区。
  • 创建应用后会进入应用的配置页面。例如 https://api.slack.com/apps/<APP_IDENTIFIER>。在这里,点击左侧菜单的 "OAuth & Permissions"。滚动到 "Scopes" 部分,点击 'Bot Token Scopes' 下的 "Add an OAuth Scope" 按钮。选择 chat:write Scope。
  • 滚动回顶部,在 "OAuth Tokens for Your Workspace" 部分,点击 "Install to Workspace" 按钮。如果你有相应权限,系统会提示允许 把该应用添加到你的工作区;否则,会生成一个供工作区所有者批准 安装的通知。此外,会生成一个 "Bot User OAuth Token"。
  • 复制 "Bot User OAuth Token" 的值。它将用作 ConsumeSlack Processor 的 Access Token 属性的值。
  • 然后必须为你要消费消息的每个频道启用该 Bot。方法是在 Slack 应用中,进入要消费的频道并按 /。选择 Add apps to this channel 选项,把你创建的 Application 作为 Bot 添加到频道。