使用 Bolt 框架在 Slack 消息中提及两个人存在困难

问题描述 投票:0回答:1

好吧,我在谷歌上搜索了一下,但找不到很多答案,所以希望这里有人可以提供帮助。

我基本上是在尝试制作一个 Slack 应用程序,我办公室的人可以用它来通知办公室通道中的人他们正在楼下等待,需要让他们进来,因为不是每个人都有钥匙。 在我开始处理这个小项目之前,传入的 Webhook 用于将消息发送到特定通道,但是我最近将其更改为使用 Bolt 框架,因为它应该简化整个过程,并让我轻松地在未来。

发送消息时,应该提及 Slack 应用程序本身以及整个频道(@slackApp @channel 有人在楼下)。频道提及应该通知频道中的每个人,并且必须提及 Slack 应用程序,以便侦听此事件的其他进程可以发生。

但是,当我尝试实现此功能时,它会向所需的 Slack 通道发送一条消息,但仅提及整个通道。

下面的代码由 lambda 函数调用:

def respond_slack(name, location="Placeholder"):
    channel_id = ourOfficeChannel     # just a placeholder id for this post
    slack_token = os.environ["SLACK_BOT_TOKEN"]
    slackClient = WebClient(token=slack_token)
    try:
        result = slackClient.chat_postMessage(
            channel=channel_id,
            text=str('<@U041Z8F0TGE> <!channel> Somebody is downstairs!')
        )
        print(result)
    except SlackApiError as e:
        print(f"Error: {e}")

我尝试发送两条消息,一条包含频道提及,另一条包含应用提及,但它只会发送包含频道提及的消息。

我只是一名从事此工作的实习生,我没有接受过任何正式的培训,例如大学或其他任何东西,所以我真的不知道自己在做什么。任何帮助将不胜感激:)。

PS:这是我的第一篇 StackOverflow 帖子,请随时让我知道我应该在原始帖子中包含哪些其他详细信息

python slack slack-bolt
1个回答
0
投票

要在消息中提及 Slack 应用程序,您需要使用应用程序的用户 ID 而不是其名称。您可以通过转到应用程序设置页面的“关于”部分来找到 Slack 应用程序的用户 ID

这是代码的更新版本,其中应提及 Slack 应用程序和频道:

def respond_slack(name, location="Placeholder"):
channel_id = ourOfficeChannel     # just a placeholder id for this post
slack_token = os.environ["SLACK_BOT_TOKEN"]
slackClient = WebClient(token=slack_token)
try:
    result = slackClient.chat_postMessage(
        channel=channel_id,
        text=str(f'<@{slackClient.users_info(user="U041Z8F0TGE")["user"]["id"]}> <!channel> Somebody is downstairs!')
    )
    print(result)
except SlackApiError as e:
    print(f"Error: {e}")

在此更新的代码中,我们使用

users_info
类的
WebClient
方法来获取 Slack 应用程序的用户 ID,然后使用该 ID 在消息中提及该应用程序

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.