[英]How to read incoming slack messages?
每 5 小時在 Slack 頻道上發布一份報告,我們需要從中排序/過濾一些信息並將其放入文件中。
那么,有沒有辦法在該時間之前連續讀取通道或每 5 分鍾左右運行一些命令,並捕獲報告以供將來處理?
是的,這是可能的。 以下是解決方案的基本概要:
channels:history
權限范圍)channel.history
),過濾掉它需要的內容,然后將報告存儲為文件。另一種方法是從通道中連續讀取每條新消息,解析觸發器(例如,發送消息的特定用戶或報告的名稱),然后在報告出現時對其進行過濾和保護。 如果您能確定一個可靠的觸發器,根據我的經驗,這將是更穩定的解決方案,因為預定的報告可能會延遲。
對於這種方法,使用Slack 的事件 API而不是 CRON 並訂閱接收消息(例如公共頻道的消息事件)。 然后,Slack 會在每條新消息發布后立即自動將其發送到您的腳本。
可以在此處找到此方法的 Python 示例:https ://gist.github.com/demmer/617afb2575c445ba25afc432eb37583b
此腳本計算每個用戶的消息量。
基於此代碼,我為您創建了以下示例:
# get the correct channel id
for channel in channels['channels']:
if channel['name'] == channel_name:
channel_id = channel['id']
if channel_id == None:
raise Exception("cannot find channel " + channel_name)
# get the history as follows:
history = sc.api_call("channels.history", channel=channel_id)
# get all the messages from the history:
messages = history['messages']
# Or reference them by ID, so in this case get the first message:
ids = messages[0]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.