针对community.lsst.org的友好邮件转发机器人
项目描述
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 文件。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。