好吧,我在谷歌上搜索了一下,但找不到很多答案,所以希望这里有人可以提供帮助。
我基本上是在尝试制作一个 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 帖子,请随时让我知道我应该在原始帖子中包含哪些其他详细信息
要在消息中提及 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 在消息中提及该应用程序