用于community.lsst.org的友好邮件转发机器人
community_mailbot的Python项目详细描述
community_mailbot是一个友好的bot,它告诉lsst dm的旧邮件列表的订户有关community.lsst.org上发生的事情。
bot喜欢定期被cron唤醒;每次它都会向话语服务器询问bot跟踪的不同类别的最新消息(您可以用一个简单的config.json文件来设置)。 如果有新主题,community_mailbot将使用其好友Mandrill向相应的电子邮件列表发送电子邮件。 在bot重新进入睡眠状态之前,它会在一个简单的json缓存文件中记录已经通过电子邮件发送的所有主题。
安装
创建一个运行python 3.5的虚拟环境,然后:
pip install community_mailbot
运行社区mailbot
王国的钥匙
您需要从community.lsst.org和mandrill获取api密钥。 将它们设置为以下环境变量:
- $MANDRILL_KEY(注意,对于community_mailbot子帐户使用api键)
- $DISCOURSE_KEY(话语密钥应该对应于具有足够权限的用户)
- $DISCOURSE_USER
(可选)将$COMMUNITY_MAILBOT_CACHE设置为希望mailbot跟踪其转发的主题的位置。
设置主题→电子邮件映射
要设置如何将话语类别映射到收件人电子邮件地址,您需要知道每个相关类别的整数ID。 要获取这些,请运行包含的脚本:
discourse_categories
如果设置上述环境变量,则无需为脚本提供任何参数。
接下来,创建一个config.json文件。 它是一个简单的散列结构;每个键值对都是该类别的话语类别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调度
当机器人定期监视一个新话题的讨论站点时,它的工作效果最好。 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环境,然后运行mailbot。
然后指示cron每隔10分钟运行一次此脚本
首先,打开终端中的crontab。
crontab -e
并为bot添加一行
*/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意味着相当通用,可用于任何话语安装。
但是,请注意,mandrill电子邮件模板信息是当前硬编码的。 理想情况下,这将是用户可配置的。
许可证
版权所有2015 Aura/LSST。
mit许可;请参阅LICENSE文件。