Ответ на поток с использованием 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 для публикации сообщения (например, _1 _ ).

Это означает, что вам, вероятно, также потребуется использовать другую библиотеку, поскольку та, которая упомянута в вашем вопросе, похоже, поддерживает только веб-перехватчики.

Также ваш синтаксис неверен. 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