Отговаряне на тема чрез Slack Python Webhook API

Създавам скрипт на Python, за да изпращам съобщения до неактивен канал. Самото съобщение се доставя добре, но когато се опитам да стартирам нишка и да изпратя отговори в нишката, не мога да го накарам да работи. Отговорите на нишката се появяват като ново родителско съобщение.

Използвам модула slack-python-webhook, намерен на https://github.com/satoshi03/slack-python-webhook

import slackweb
import json
slack = slackweb.Slack(
    url="https://hooks.slack.com/services/XXXX/XXXX/XXXXXX")


attachment = [{"text": "This is TEXT",
              "ts": "1564629129"
              }]


print(json.dumps(attachment))
slack.notify(attachments=attachment)

attachment = [{"text": "This is Thread REPLY",
              "thread_ts": "1564629129",
              "thread_ts": "1564629130"
              }]

print(json.dumps(attachment))
slack.notify(attachments=attachment)

Бих искал да знам какво трябва да се промени в горния кодов фрагмент, така че второто съобщение да се появи като отговор на нишка.


person Shaf    schedule 01.08.2019    source източник


Отговори (1)


Кодът ви няма да работи, защото уеб куките не поддържат нишки. Ако искате да отговорите на теми, трябва да използвате методите на API за публикуване на съобщение (напр. chat.postMessage).

Това означава, че вероятно също трябва да използвате различна библиотека, тъй като споменатата във вашия въпрос изглежда поддържа само уебкукички.

Също така вашият синтаксис не е правилен. thread_ts не е свойство на прикачен файл, а параметър на API метод като channel.

Бих препоръчал да разгледате slackclient. Това е официалната библиотека на Python от Slack и има пълна поддръжка за всички API методи, вкл. нишки.

Ето как да отговорите на нишка със slackclient:

import slack
import os

# init slack client with access token
client = slack.WebClient(token=os.environ['SLACK_TOKEN'])

# reply to a thread
response = client.chat_postMessage(
    channel="general",
    text="This is a reply",
    thread_ts="1561764011.015500"
)
assert response["ok"]
print(response)

Вижте също това официално ръководство относно нишките и този отговор относно уебкукичките и нишките.

person Erik Kalkoken    schedule 01.08.2019