gpt4 book ai didi

slack - 将元数据/自定义数据附加到通过 API 发送的 slack 消息

转载 作者:行者123 更新时间:2023-12-01 11:14:42 24 4
gpt4 key购买 nike

我正在为我的工作区开发一系列 Slack 应用程序,其中一些旨在与其他应用程序传递的内容(消息)进行交互:提取可能被其他消息引用的内容 ID

一个具体的例子:

假设我有一个应用程序“FindUser”,它能够在松弛用户键入 find me@example.com 时为我提供用户配置文件。 ,并在线程中回复用户配置文件的格式化 View

我正在开发一个应用程序 B“EditTags”,它基本上为我提供了一个带有“编辑标签”的右键单击选项(请参阅 Slack 的交互式组件/操作),其想法是用户可以首先要求应用程序 A 查找用户,然后右键单击来自应用程序 A 的回复,然后单击其他应用程序给出的“编辑标签”操作。这个应用程序 B 做了什么,它实际上检索了来自应用程序 A 的上一条消息中提到的用户的标签,并且在对该线程的另一个回复中,它提供了一些控件来删除现有标签或显示带有自动完成功能的选择以添加新标签.

B 应用程序需要检索 A 应用程序之前提到的用户 ID。所以我需要某种方式直接在 slack 消息中传递该数据。查看示例时, slack 似乎没有提供向消息添加任意“元数据”的方法 , 我错了吗 ? 你有解决方法吗 ?我的意思是我可以完全发送用户 ID 说,在页脚中,所以我可以阅读页脚,但我计划将页脚用于其他用途......有没有办法通过将隐藏的属性传递元数据给最终用户?

虽然这感觉无关紧要,但我正在使用 node slack sdk 构建一个松弛的 nodeJS 应用程序(尤其是 @slack/interactive-messages 包)

最佳答案

在大多数情况下,Slack API 不提供任何官方方法来将自定义数据/元数据附加到消息。但是通过一些简单的“黑客”,它仍然是可能的。方法如下:
方法
基本方法是使用消息的现有字段作为数据的容器。显然,您想选择一个与 Slack 功能没有直接关联的字段。
某些字段并不总是需要的,因此您可以将该字段用作数据容器。或者,如果需要,您可以在数据容器中包含该字段的功能值以及您的自定义数据。
例如 message buttons您可以使用 value按钮的字段,并以原始功能中不需要的方式构建代码。通常它足以知道用户客户端的哪个按钮(通过 name 字段),所以 value字段可免费用于您的自定义数据。或者,您可以在该字段中包含按钮的功能值以及数据容器(例如 JSON 字符串)中的自定义数据。
序列化
所有消息都通过 HTTP 传输,并且大多以 JSON 格式编码为 UTF-8。所以你想相应地序列化/反序列化你的数据,特别是如果它的二进制数据。如果可能,我建议使用 JSON。
长度
大多数字段的最大允许长度记录在官方 Slack API 文档中。例如为 value消息按钮字段最多可以包含 2.000 characters .请记住,您需要考虑序列化后数据的长度。例如如果您将二进制数据转换为 Base64 以便它可以通过 HTTP 传输,您最终会得到大约 1.33 characters for every byte .
内容
一般来说,我会建议您的数据容器尽可能小,并且不包含实际数据,而只包含 ID。下面是两种常用的方法:

  • 包含数据对象的 ID 并加载实际对象
    在稍后处理请求时从数据存储。
  • 包括服务器 session 的 ID,并在处理请求时
    可以恢复包含所有数据的相应服务器 session
    对象。
    此外,您可能需要包含功能值,以便您正在使用的字段的功能仍然有效(例如菜单选项的值,见下文)

  • 执行
    对话框
    Dialogs为自定义数据提供一个名为 state 的官方字段.最多 3.000 个字符。
    消息按钮
    对于 Message buttons您可以使用消息操作字段/ value .最多 2.000 个字符。也可以使用 name字段,但我建议不要这样做,因为该字段的最大允许长度没有记录。
    消息菜单
    对于 Message menus您可以使用 value 选项的字段或 name 菜单操作的字段。
    通常是 value field 是更好的方法,因为您记录的最大长度为 2.000,它为您提供了更大的灵活性。但是,您需要将自定义数据与每个选项的实际功能值结合起来。此外,这不适用于 dynamic select elements (如用户),您无法控制值字段。
    使用 name 时字段注释,请记住最大允许长度 name未记录在案,因此您希望数据尽可能短。此外,如果您想在每个附件中使用多个菜单,您需要将菜单的实际名称包含在您的数据容器中。
    普通邮件附件
    正常 message attachments不包含任何适合用作自定义数据容器的字段,因为所有字段都链接到 Slack 功能。
    从技术上讲,您可以使用 fallback字段,但前提是您 100% 确定您的应用程序从未在无法显示附件的客户端上使用。否则您的数据将显示给用户。

    关于slack - 将元数据/自定义数据附加到通过 API 发送的 slack 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53951839/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com