Php 从应用程序用户帐户发送chat.postmessage

Php 从应用程序用户帐户发送chat.postmessage,php,slack,slack-api,Php,Slack,Slack Api,我一直在开发一个内部Slack应用程序,它与我们公司的票务系统集成 现在,我正在使用两个内部Webhooks URL将消息发布到不同的频道,用于不同的目的。发送这些消息时,用户是应用程序的名称,旁边有“app”。这一切都很好 现在,我添加了一个额外的功能,可以使用chat.postmessage向个人用户发送私人消息。我正在查看不同的参数,如as_user和其他参数,但我想知道我需要做什么才能让这些私人消息“来自”同一个应用程序用户。到目前为止,它们都是从slackapi测试仪中引入的。我知道我

我一直在开发一个内部Slack应用程序,它与我们公司的票务系统集成

现在,我正在使用两个内部Webhooks URL将消息发布到不同的频道,用于不同的目的。发送这些消息时,用户是应用程序的名称,旁边有“app”。这一切都很好

现在,我添加了一个额外的功能,可以使用
chat.postmessage
向个人用户发送私人消息。我正在查看不同的参数,如
as_user
和其他参数,但我想知道我需要做什么才能让这些私人消息“来自”同一个应用程序用户。到目前为止,它们都是从slackapi测试仪中引入的。我知道我可以更改用户名和图标,但我想知道是否可以使用不同的令牌或类似的东西直接“从”他们的应用程序发送他们

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

<?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;

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

  • 应用程序名称,发送时使用“as_user”false(这是默认值)
  • Bot用户,使用Bot令牌
  • 安装了你的应用程序的用户(我猜就是你),发送“as_User”true并使用完全访问令牌

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

此外,在该页面上,我被告知需要一个bot访问令牌以bot用户身份发布。我已经在我的应用程序上创建了一个机器人用户,但我不知道如何找到该机器人用户的令牌。我在这个页面上:我点击了文档中的链接,上面写着“bot用户令牌”,但这只是将我带到了一个集成的管理页面,无法确定令牌在哪里。这是一个新问题,与第一个问题无关。请将其作为Slackoverflow上的新问题发布。