簡體   English   中英

如何閱讀傳入的松弛消息?

[英]How to read incoming slack messages?

每 5 小時在 Slack 頻道上發布一份報告,我們需要從中排序/過濾一些信息並將其放入文件中。

那么,有沒有辦法在該時間之前連續讀取通道或每 5 分鍾左右運行一些命令,並捕獲報告以供將來處理?

是的,這是可能的。 以下是解決方案的基本概要:

  • 基於可以訪問該頻道歷史的腳本(例如在 Python 中)創建一個 Slack 應用程序(例如,具有channels:history權限范圍)
  • 使用 cron 在需要的時間調用你的腳本
  • 該腳本讀取頻道歷史記錄(例如,公共頻道使用channel.history ),過濾掉它需要的內容,然后將報告存儲為文件。

另一種方法是從通道中連續讀取每條新消息,解析觸發器(例如,發送消息的特定用戶或報告的名稱),然后在報告出現時對其進行過濾和保護。 如果您能確定一個可靠的觸發器,根據我的經驗,這將是更穩定的解決方案,因為預定的報告可能會延遲。

對於這種方法,使用Slack 的事件 API而不是 CRON 並訂閱接收消息(例如公共頻道的消息事件)。 然后,Slack 會在每條新消息發布后立即自動將其發送到您的腳本。

如果您是創建 Slack 應用程序的新手,我建議您學習 Slack API 網站上優秀的官方文檔教程以開始使用。

可以在此處找到此方法的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM