跳转到主要内容

针对community.lsst.org的友好邮件转发机器人

项目描述

https://img.shields.io/pypi/v/community_mailbot.svg

community_mailbot 是一个友好的机器人,它将向LSST DM的遗留Mailman电子邮件列表的订阅者通知 community.lsst.org 上发生的事情。

该机器人喜欢被 cron 定时唤醒;每次它都会询问 Discourse 服务器关于它跟踪的不同类别中的最新消息(您可以使用简单的 config.json 文件设置此操作)。如果有新的主题,community_mailbot 将使用其伙伴 Mandrill 向适当的电子邮件列表发送电子邮件。在机器人再次进入睡眠状态之前,它会将其已发送电子邮件的所有主题记录在一个简单的 JSON 缓存文件中。

安装

创建一个运行 Python 3.5 的虚拟环境,然后

pip install community_mailbot

运行 community 邮件机器人

王国钥匙

您需要从 community.lsst.org 和 Mandrill 获取 API 密钥。将它们设置为以下环境变量

  • $MANDRILL_KEY(注意,使用 community_mailbot 子账户的 API 密钥)

  • $DISCOURSE_KEY(Discourse 密钥应对应于具有足够权限的用户)

  • $DISCOURSE_USER

可选地设置 $COMMUNITY_MAILBOT_CACHE 为您希望 Mailbot 跟踪其已转发主题的位置。

设置主题 → 电子邮件映射

为了设置如何将 Discourse 类别映射到接收者电子邮件地址,您需要知道每个相关类别的整数 ID。要获取这些信息,请运行附带的脚本

discourse_categories

如果您设置了上述环境变量,您就不需要向脚本提供任何参数。

接下来,创建一个 config.json 文件。它是一个简单的哈希结构;每个键值对是 Discourse 类别 ID 和该类别的电子邮件接收者列表。一般格式是

{
    "<id>": [{"email": "<email address>",
              "name": "<recipient name>",
              "type": "to"}],
}

值中的 dict 结构与 Mandrill send-template API 相匹配。通常,"type" 字段应该是 "to",但也可能是 "cc""bcc"

请注意,由于每个类别的接收者信息是一个 list,因此您可以拥有多个接收者。

预缓存旧主题

在机器人发送电子邮件之前,您希望它了解并忽略较旧的消息。为了预热缓存,我们将使用 --cache-only 选项运行 forward_discourse 脚本。

forward_discourse config.json --cache-only

请注意,forward_discourse 可以使用您已设置的环境变量进行配置。运行 forward_discourse --help 查看完整的选项集。

设置 cron 调度

当机器人定期监控 Discourse 站点的新主题时,它运行效果最佳。cron 是设置此功能的好方法。

创建一个 shell 脚本来包含所有脚本参数很有用。例如,创建一个名为 run_mailbot.sh 的脚本

#!/bin/bash
source /home/ec2-user/.bash_profile
source activate community_mailbot
forward_discourse /home/ec2-user/config.json

echo "$(date) Ran forward_discourse"

此脚本设置了 shell 环境,加载 Python 环境,然后运行邮件机器人。

然后指示 cron 每 10 分钟运行此脚本一次

首先,在终端中打开 crontab

crontab -e

并为机器人添加一行

*/10 * * * * /home/ec2-user/run_mailbot.sh

然后坐下来观看电子邮件流动。

开发

要开发 community_mailbot,您需要克隆存储库并安装一个开发副本(最好在 virtualenv 中)

git clone https://github.com/lsst-sqre/community_mailbot.git
cd community_mailbot
python setup.py develop

要运行测试套件

python -m unittest discover -s community_mailbot/tests

难点

community_mailbot 旨在相当通用,可用于任何 Discourse 安装。

但是,请注意,Mandrill 电子邮件模板信息是当前硬编码的。理想情况下,这将是用户可配置的。

许可证

版权 2015 AURA/LSST。

MIT 许可;请参阅 LICENSE 文件。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

community_mailbot-0.1.1.tar.gz (8.8 kB 查看散列)

上传时间

构建分发

community_mailbot-0.1.1-py3-none-any.whl (13.6 kB 查看散列)

上传时间 Python 3

由以下机构支持