【发布时间】:2020-04-16 18:48:59
【问题描述】:
我在通过 Slack Events API (im.message event) 响应传入消息时似乎遇到了问题。
-
当用户(在本例中为
UQ364CBPF)向我的 App Home 发送消息时,事件 API 会正确地将事件发布到我的后端(=下面日志中的第一行)。 我使用 HTTP 200 OK 响应事件,并且在我的代码(见下文)中,我触发了我的机器人用户的响应。
此响应在 Slack 中正确发送。
但是:在此之后,事件 API 不断发布我自己的机器人用户在此频道中发布消息的事件...
此外,这些事件通常只发布 3 次,而这些事件只会不停地发布。即使机器人用户在 Slack 中只发送了一条响应消息。
User UQ364CBPF has posted message: I'm typing a message to my Slack bot. in DQ5FF35N2 of channel type: im
[26/Dec/2019 15:16:30] "POST /slack/events/ HTTP/1.1" 200 0
User UQ5529KTR has posted message: Thank you for your message! We will get back to you soon! in DQ5FF35N2 of channel type: im
[26/Dec/2019 15:16:32] "POST /slack/events/ HTTP/1.1" 200 0
User UQ5529KTR has posted message: Thank you for your message! We will get back to you soon! in DQ3KX0NPJ of channel type: im
[26/Dec/2019 15:16:33] "POST /slack/events/ HTTP/1.1" 200 0
User UQ5529KTR has posted message: Thank you for your message! We will get back to you soon! in DQ3KX0NPJ of channel type: im
[26/Dec/2019 15:16:35] "POST /slack/events/ HTTP/1.1" 200 0
User UQ5529KTR has posted message: Thank you for your message! We will get back to you soon! in DQ3KX0NPJ of channel type: im
[26/Dec/2019 15:16:37] "POST /slack/events/ HTTP/1.1" 200 0
User UQ5529KTR has posted message: Thank you for your message! We will get back to you soon! in DQ3KX0NPJ of channel type: im
[26/Dec/2019 15:16:39] "POST /slack/events/ HTTP/1.1" 200 0
User UQ5529KTR has posted message: Thank you for your message! We will get back to you soon! in DQ3KX0NPJ of channel type: im
[26/Dec/2019 15:16:40] "POST /slack/events/ HTTP/1.1" 200 0
User UQ5529KTR has posted message: Thank you for your message! We will get back to you soon! in DQ3KX0NPJ of channel type: im
[26/Dec/2019 15:16:42] "POST /slack/events/ HTTP/1.1" 200 0
User UQ5529KTR has posted message: Thank you for your message! We will get back to you soon! in DQ3KX0NPJ of channel type: im
[26/Dec/2019 15:16:43] "POST /slack/events/ HTTP/1.1" 200 0
User UQ5529KTR has posted message: Thank you for your message! We will get back to you soon! in DQ3KX0NPJ of channel type: im
在我的代码中,这是处理 Slack 事件的更大函数的一部分,相关部分:
@csrf_exempt
def slack_events(request):
if request.method == 'POST':
json_data = json.loads(request.body)
event_callback_type = json_data['event']['type']
if event_callback_type == 'message':
user_id = json_data['event']['user']
text = json_data['event']['text']
channel_id = json_data['event']['channel']
channel_type = json_data['event']['channel_type']
timestamp = json_data['event']['ts']
print ('User ' + user_id + ' has posted message: ' + text + ' in ' + channel_id + ' of channel type: ' + channel_type)
slack_message_received(user_id, channel_id, channel_type, team_id, timestamp, text)
return HttpResponse(status=200)
这里(或函数slack_message_received)没有任何东西可以触发这个循环流。
所以
1. Slack 用所有这些东西轰炸我是不是很奇怪? 来自我自己的机器人用户的 POST 请求?
2。除了过滤掉我自己的机器人用户 ID 并在后端忽略这些请求之外,我是否可以避免这种行为?
【问题讨论】:
标签: django events bots slack slack-api