如何为 Symfony NexySlackBundle 使用多个端点

How to use multiple endpoints for Symfony NexySlackBundle

我正在为我的 symfony 3.4 应用程序使用 nexylan/slack 包。我为 #general 通道配置了 slack Incoming WebHook,它按预期工作。捆绑包配置类似于:

nexy_slack:

    # If you want to use an another httplug client service.
    http:
        client: httplug.client

    # The Slack API Incoming WebHooks URL.
    endpoint:             https://hooks.slack.com/services/ABCD/987ABC
    channel:              null
    username:             null
    icon:                 null
    link_names:           false
    unfurl_links:         false
    unfurl_media:         true
    allow_markdown:       true
    markdown_in_attachments: []

现在我有另一个名为 #dev 的频道,我已经添加了 Incoming WebHook 并接收了端点。我还想向开发频道发送消息。

我的问题是,如何配置开发通道端点才能使用它。有什么办法可以做到这一点?

这里是Slack Bundle

看起来捆绑包只支持 1 个端点。如果你想拥有多个端点,你要么分叉要么发送 PR。

基本上您需要做的是调整 src/DependencyInjection 中的两个文件。

Configuration.php 中,您需要确保可以通过添加父 array node 来定义多个端点,例如称为端点。然后在 NexySlackExtension 中,您可以通过每个端点配置进行 foreach 并执行与之前相同的配置,只需添加前缀或后缀即可。所以像:

$configuration = new Configuration();
$endpointConfigs = $this->processConfiguration($configuration, $configs);

foreach ($endpointConfigs['endpoints'] as $config) {
    // ....
}

您可能还想为 "default" 端点添加一些特殊处理。这应该已经可以解决问题了,尽管它可能需要一些调整,因为我还没有详细研究 Bundle。也许你也可以通过 Issue tracker 中的工单联系作者,他们可以帮助你写 PR。