使用 webhook 将消息发布到松弛通道。
项目描述
ftw.slacker
<nav class="contents" id="table-of-contents">目录
介绍
ftw.slacker是一个 Plone 插件,它提供了一个易于使用的 api,通过 Slack 的 webhooks api 将消息发布到 Slack 频道。
有关 slack webhook 的更多信息,请参阅 Slack 关于传入 Webhook的文档
安装
将包作为依赖项添加到 setup.py:
setup(
# ...
install_requires=[
'ftw.slacker',
])
或您的构建配置:
[instance]
eggs += <s>ftw.slacker</s>
并运行构建
bin/buildout
用法
设置 Slack 网络钩子
首先,您需要设置一个 Slack webhook。
阅读有关传入 Webhook的 Slack 文档,并按照传入的 webhook 集成开始设置您自己的 webhock 。
将消息发布到 Slack
只需导入notify_slack api 函数并调用它。
from ftw.slacker import notify_slack
notify_slack('https://hooks.slack.com/services/xxx',
text="my first post")
完毕!
配置请求模块
以下属性被传递给请求模块:
这意味着,您可以使用此参数调用 api 函数来配置请求:
from ftw.slacker import notify_slack
notify_slack(webhook_url='https://hooks.slack.com/services/xxx',
timemout=10,
verify=False,
text="my first post")
松弛有效载荷
只需向 api 函数添加额外的关键字参数。所有参数都将作为有效负载传递给 Slack webhook。
from ftw.slacker import notify_slack
notify_slack('https://hooks.slack.com/services/xxx',
text="my first post",
attachments=[
{
"title": "Slack API Documentation",
"title_link": "https://api.slack.com/",
"text": "Optional text that appears within the attachment"
}
])
环境变量的 Webhook URL
通常,您不想将 webhook-url 存储在应用程序代码中。
ftw.slacker支持通过环境变量进行配置:
设置你的环境变量:
export STANDARD_SLACK_WEBHOOK='https://hooks.slack.com/services/xxx'
或通过扩建:
[instance]
environment-vars +=
STANDARD_SLACK_WEBHOOK https://hooks.slack.com/services/xxx
并调用不带 webhook_url 参数的 api 函数:
from ftw.slacker import notify_slack
notify_slack(text="my first post")
覆盖环境变量
如果您设置 STANDARD_SLACK_WEBHOOK 环境变量,您仍然可以使用不同的 slack webhook。
export STANDARD_SLACK_WEBHOOK='https://hooks.slack.com/services/default-channel-id'
from ftw.slacker import notify_slack
# Post message to service default-channel-id
notify_slack(text="my first post")
# Post message to service specific-channel-id
notify_slack('https://hooks.slack.com/services/specific-channel-id',
text="my first post")
停用 Slack 通知
让我们想象一下,您有一个具有多个部署的服务器,并且所有部署都应该推送到同一个 Slack webhook。
您可以通过 buildout 为每个部署配置标准的 slack webhook 环境变量,或者您只需在服务器环境中定义一次默认 webhook url:
export STANDARD_SLACK_WEBHOOK='https://hooks.slack.com/services/xxx'
每个应用程序都会将消息发布到这个 slack webhook。
黑名单
现在,您在要停用通知的同一台服务器上安装测试部署。
为此,您可以在此特定部署的buiodut.cfg中将另一个环境变量设置为值:deactivate。(参见静态变量NOTIFICATION_DEACTIVATION_VALUE):
[instance]
environment-vars +=
DEACTIVATE_SLACK_NOTIFICATION deactivate
将跳过此部署执行的所有通知。
白名单
你甚至可以为你的部署做一个白名单。
export STANDARD_SLACK_WEBHOOK='https://hooks.slack.com/services/xxx'
export DEACTIVATE_SLACK_NOTIFICATION deactivate
对于所有列入白名单的部署,请使用以下构建配置:
[instance]
environment-vars +=
DEACTIVATE_SLACK_NOTIFICATION
这会将 DEACTIVATE_SLACK_NOTIFICATION 变量重置为''
通过 webhook_url 停用
也可以仅停用特定通知。
假设您已设置 STANDARD_SLACK_WEBHOOK。我们了解到,您可以在没有任何 webhook_url 的情况下调用notify_slack来将通知推送到标准 webhook url,或者您可以使用更具体的 webhook url notify_slack(webhook_url="xxx")调用它来覆盖标准的 slack webhook。
使用 NOTIFICATION_DEACTIVATION_VALUE 作为 webhook_url 只会停用当前通知,并且不会冒泡到标准的 slack webhook。
此功能对于使用 slacker-integration 处理来自多个外部模块的通知特别有用。
有关高级用法的更多信息,请参阅下一章。
提前使用
也许您使用ftw.slacker实现获得了不同的外部模块,并且所有这些模块都提供了不同的默认 slack webhook url。
让我们想象一下,我们有一个名为 ftw.logger 的模块,它将您的 plonesite 中的所有用户登录记录到一个松弛通道。
它提供了一个名为FTW_LOGGER_SLACK_WEBHOOK的附加环境变量,用于将日志记录活动发布到单独的通道。所以这个模块的实现可能是这样的:
from ftw.slacker import notify_slack
import os
def notify_user_login(user):
notify_slack(os.environ.get('FTW_LOGGER_SLACK_WEBHOOK'),
text='User {} logged in'.format(user.username))
如果您不设置FTW_LOGGER_SLACK_WEBHOOK变量,ftw.slacker会将用户登录信息发布到默认通道。如果您设置了 FTW_LOGGER_SLACK_WEBHOOK,ftw.slacker将使用这个更具体的通道进行通知。
不需要通过 DEACTIVATE_SLACK_NOTIFICATION 环境变量停用整个通知系统,因为您仍想发布其他通知,即来自使用标准 slack webhook url 的应用程序。
为此,您可以通过将环境变量FTW_LOGGER_SLACK_WEBHOOK设置为停用来停用此特定通知分支(请参阅静态变量NOTIFICATION_DEACTIVATION_VALUE)。
[instance]
environment-vars +=
STANDARD_SLACK_WEBHOOK https://hooks.slack.com/services/xxx
FTW_LOGGER_SLACK_WEBHOOK deactivate
穿线
对 Slack-API 的所有请求都将在其自己的线程中处理。所有消息都在单独的线程中发送,因此它是非阻塞的,并且不会因错误而使应用程序崩溃。
函数notify_slack返回线程对象以进行进一步的线程处理(即在测试中)或不返回。
链接
版权
这个包是4teamwork的版权。
ftw.slacker在 GNU 通用公共许可证第 2 版下获得许可。
变更日志
1.1.0 (2019-11-27)
删除对 Plone 5.0 的支持。[姆巴赫托德]
针对 Plone 5.1 进行测试。[姆巴赫托德]
针对 Plone 5.2 和 Python 3.7 进行测试。[埃里克]
1.0.2 (2017-07-31)
在测试中使用 unittest 而不是 unittest2 。[埃利奥施穆茨]
1.0.1 (2017-07-27)
修复 README.rst 错误。[埃利奥施穆茨]
1.0.0 (2017-07-27)
初始发行。
项目详情
ftw.slacker -1.1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 454cc5b6569f6221785c33be6e06bfac00f4d3ee4cc1f9f62b3acc73a55b7b95 |
|
MD5 | 19b2bbad6ef0ba7058d45c792656ff79 |
|
布莱克2-256 | e8d26006f7a1ca8bf2de04f8c74ac0927e9ce77db1b4cc4da14f6a170adff1f4 |