【问题标题】:Reading incoming slack message读取传入的松弛消息
【发布时间】:2017-08-18 02:16:10
【问题描述】:

slack 频道每 5 小时发布一次报告,我们需要从中对一些信息进行排序/过滤并将其放入文件中,那么有什么方法可以连续读取频道或在该时间前 5 分钟运行一些命令并捕获报告以供将来处理。

【问题讨论】:

  • 这是在linux系统上,如果是,使用cron
  • 是的,这是在 Linux 上,但你可以分享可以查看松弛消息的命令,以便我们可以使用 cron。

标签: python python-2.7 python-3.x slack slack-api


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    • 基于脚本(例如 Python)创建一个 Slack 应用程序,该脚本可以访问 该频道的历史记录(例如,具有channels:history 权限范围)
    • 在需要的时候使用 cron 调用您的脚本
    • 脚本读取频道历史记录(例如,公共频道使用channel.history),过滤掉它需要的内容 然后将报告存储为文件。

    另一种方法是不断地从频道中读取每条新消息,解析触发器(例如,发送消息的特定用户或报告的名称),然后在报告出现时对其进行过滤和保护。如果您能确定一个可靠的触发器,根据我的经验,这将是更稳定的解决方案,因为预定的报告可能会延迟。

    对于该方法,请使用 Events API of Slack 而不是 CRON 并订阅接收消息(例如公共频道的 message 事件)。然后,Slack 会在每条新消息发布后立即自动将其发送到您的脚本。

    如果您不熟悉创建 Slack 应用程序,我建议您学习 Slack API 网站上优秀的 official documentationtutorials 以开始使用。

    【讨论】:

    • 如果我们创建用于读取频道的应用程序,文件在 Slack 服务器或客户端计算机上存储在哪里,是否会有任何手动干预。
    • 这将取决于您的 Slack 应用程序选择存储它的位置。假设您的 slack 应用程序包含在您的 linux 机器上运行的 python 脚本,您可能会将其存储在 linux 机器上。或者您可以使用该脚本在其他地方提交报告。理论上,如果需要,它还可以将新报告提交到您的 Slack 上的频道。如果脚本做得好,应该不需要人工干预。
    • 对不起,我不懂 Python。此外,stackoverfow 不是编码服务,而是编码人员的论坛。查看 Slack 教程或 github 以获取有关其工作原理的示例。如果您需要有关现有代码的帮助,请随时在此处再次发布。
    猜你喜欢
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多