【问题标题】:Slack, sending and receiving messagesSlack,发送和接收消息
【发布时间】:2017-06-25 21:27:23
【问题描述】:

我是 slack 的新手,我想在我的频道中做一个机器人用户。 问题是:每次我想向 slack 发送消息时,我都必须刷新我的页面(从 slack 接收信息的页面)。 我成功配置了传入 Webhook。

这就是我在 php 中成功配置传入 webhook 的操作:

header('Content-Type: application/json');
    $entityBody = file_get_contents('php://input');
    echo $entityBody;

我的问题是为什么我必须刷新页面才能接收或发送消息给 slack?

【问题讨论】:

    标签: php bots slack-api


    【解决方案1】:

    您刷新页面的原因是它包含 PHP 代码(我假设)并且刷新它会触发其执行。然而,这不是你通常会这样做的方式。根据您的用例,您通常会有另一个 Web 服务触发您的脚本,例如一个 Slack 事件。

    要实现机器人用户,一种方法是使用Events API 并订阅message 事件。每次发送消息时,Slack 都会自动调用您的脚本,然后可以处理传入的消息。

    要发回消息,只需使用echo 简单地回复 Slack 请求即可。您不需要传入的 webhook。

    【讨论】:

    • 我刚刚添加了事件消息。我现在在我的应用程序中有范围:channels:history、groups:history、im:history、mpim:history。它仍然不起作用。我一直不得不刷新页面。
    • 酷。确保在“事件订阅”中启用了事件,并且脚本的 URL 设置为事件的“请求 URL”。如果您的网络服务器是本地的,请查看 ngrok 以获取可与 Slack 一起使用的安全公共 URL。
    • 现在回复谢谢。但是给了我一个无限循环。
    • 是的,这可能会发生。您可能只想回复并非来自您的机器人的消息事件。
    【解决方案2】:

    这是一个使用curl将传出消息发送到slack的简单示例

    <?php
    define('SLACK_WEBHOOK', 'https://hooks.slack.com/services/xxx/yyy/zzz');
    function slack($txt) {
      $msg = array('text' => $txt);
      $c = curl_init(SLACK_WEBHOOK);
      curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
      curl_setopt($c, CURLOPT_POST, true);
      curl_setopt($c, CURLOPT_POSTFIELDS, array('payload' => json_encode($msg)));
      curl_exec($c);
      curl_close($c);
    }
    ?>
    

    摘自here

    【讨论】:

      猜你喜欢
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-04
      • 2017-01-19
      • 2016-04-08
      • 1970-01-01
      • 2018-04-12
      相关资源
      最近更新 更多