从App用户帐户发送chat.postmessage

时间:2017-07-21 16:26:28

标签: php slack slack-api

我一直在研究与我们公司的票务系统集成的内部Slack应用程序。

目前,我正在使用几个内部Webhooks URL将消息发布到不同的渠道以用于不同目的。这些消息是在用户作为应用程序名称的情况下发送的,旁边有“App”。这一切都很好。

现在,我正在添加一项额外的功能,可以使用chat.postmessage向各个用户发送私信。我正在查看不同的参数,如as_user,但不知道,但我想知道我需要做些什么来让这些私人消息“来自”同一个App用户。截至目前,他们正在“来自”Slack API Tester。我知道我可以更改用户名和图标,但我想知道我是否可以使用不同的令牌或类似内容直接从“应用”发送它们。

以下是我正在使用的一些代码的示例:

<?php

$ch = curl_init("https://slack.com/api/chat.postMessage");
$data = http_build_query([
    //Slack Legacy API token found at 
    //https://api.slack.com/custom-integrations/legacy-tokens
    "token" => "xoxp-0000000-00000-0000-0000",
    "channel" => "@gbewley", 
    "text" => "Hello Graham", 
]);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
curl_close($ch);

return $result;

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您希望发送源自使用您脚本的任何用户A的邮件。对不起,但Slack不允许这样做。 chat.postMessage邮件的始发者的唯一选项是:

  • 应用名称,使用“as_user”发送时为false(默认为此)
  • Bot用户,使用机器人令牌
  • 安装了您的应用的用户(我想你就是这样),使用“as_user”发送并使用完整访问令牌

正如您已经提到的,常见的解决方法是“伪造”用户名。但是,在这种情况下,Slack仍会显示一个“App”标签,表明该消息来自应用程序。