输入 /slash 命令后从 bot 发送消息到直接消息
send message from bot to direct message after typing /slash command
我正在尝试制作 SlackBot,如果我在某个 public 频道中调用他,它工作正常,但是当我在任何直接频道中调用他(键入斜杠命令)时,我收到“服务器响应:{'ok':错误,'error':'channel_not_found'}”。在我邀请我的机器人的 public 频道中,它工作正常,但如果我在任何 DM 频道中键入“/my-command”,我会在单独的 DM 频道中收到与我的机器人的响应。我希望在我键入命令的那个 DM 通道中收到这些响应。
这是我的部分代码:
if slack_command("/command"):
self.open_quick_actions_message(user_id, channel_id)
return Response(status=status.HTTP_200_OK)
def open_quick_actions_message(self, user, channel):
"""
Opens message with quick actions.
"""
slack_template = ActionsMessage()
message = slack_template.get_quick_actions_payload(user=user)
client.chat_postEphemeral(channel=channel, user=user, **message)
Here are my Event Eubscriptions
Here are my Bot Token Scopes
谁能帮我解决这个问题?
我已经解决了我的问题。也许它会在将来帮助某人。我已将我的有效负载作为即时响应发送,如 docs 中所示,默认情况下 response_type
设置为 ephemeral
.
我的代码部分现在看起来像这样:
if slack_command("/command"):
res = self.slack_template.get_quick_actions_payload(user_id)
return Response(data=res, status=status.HTTP_200_OK)
else:
res = {"text": "Sorry, slash command didn't match. Please try again."}
return Response(data=res, status=status.HTTP_200_OK)
我还有一个操作按钮,我也需要在那里接收一些响应。为此,我使用了 response_url
,这里是 docs, and the requests 库。
部分代码在这里:
if action.get("action_id", None) == "personal_settings_action":
self.open_personal_settings_message(response_url)
def open_personal_settings_message(self, response_url):
"""
Opens message with personal settings.
"""
message = self.slack_template.get_personal_settings_payload()
response = requests.post(f"{response_url}", data=json.dumps(message))
try:
response.raise_for_status()
except Exception as e:
log.error(f"personal settings message error: {e}")
P. S. 这是我在 Whosebug 上的第一个问题和第一个答案,所以不要苛刻地评判我。
我正在尝试制作 SlackBot,如果我在某个 public 频道中调用他,它工作正常,但是当我在任何直接频道中调用他(键入斜杠命令)时,我收到“服务器响应:{'ok':错误,'error':'channel_not_found'}”。在我邀请我的机器人的 public 频道中,它工作正常,但如果我在任何 DM 频道中键入“/my-command”,我会在单独的 DM 频道中收到与我的机器人的响应。我希望在我键入命令的那个 DM 通道中收到这些响应。 这是我的部分代码:
if slack_command("/command"):
self.open_quick_actions_message(user_id, channel_id)
return Response(status=status.HTTP_200_OK)
def open_quick_actions_message(self, user, channel):
"""
Opens message with quick actions.
"""
slack_template = ActionsMessage()
message = slack_template.get_quick_actions_payload(user=user)
client.chat_postEphemeral(channel=channel, user=user, **message)
Here are my Event Eubscriptions
Here are my Bot Token Scopes
谁能帮我解决这个问题?
我已经解决了我的问题。也许它会在将来帮助某人。我已将我的有效负载作为即时响应发送,如 docs 中所示,默认情况下 response_type
设置为 ephemeral
.
我的代码部分现在看起来像这样:
if slack_command("/command"):
res = self.slack_template.get_quick_actions_payload(user_id)
return Response(data=res, status=status.HTTP_200_OK)
else:
res = {"text": "Sorry, slash command didn't match. Please try again."}
return Response(data=res, status=status.HTTP_200_OK)
我还有一个操作按钮,我也需要在那里接收一些响应。为此,我使用了 response_url
,这里是 docs, and the requests 库。
部分代码在这里:
if action.get("action_id", None) == "personal_settings_action":
self.open_personal_settings_message(response_url)
def open_personal_settings_message(self, response_url):
"""
Opens message with personal settings.
"""
message = self.slack_template.get_personal_settings_payload()
response = requests.post(f"{response_url}", data=json.dumps(message))
try:
response.raise_for_status()
except Exception as e:
log.error(f"personal settings message error: {e}")
P. S. 这是我在 Whosebug 上的第一个问题和第一个答案,所以不要苛刻地评判我。