【问题标题】:Send chat.postmessage from App user account从 App 用户帐户发送 chat.postmessage
【发布时间】:2017-07-22 16:18:21
【问题描述】:

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

现在,我正在使用几个内部 Webhook URL 将消息发布到不同的频道以用于不同的目的。这些消息以用户为应用程序的名称传递,旁边有“应用程序”。这一切都很好。

现在,我添加了一个额外的功能,可以使用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;

【问题讨论】:

  • 另外,在这个页面上,我被告知我需要一个机器人访问令牌才能以机器人用户的身份发布。我在我的应用程序上创建了一个机器人用户,但我不知道如何找到该机器人用户的令牌。我在这个页面上:api.slack.com/bot-users 我点击了文档中的链接,上面写着“机器人用户令牌”,但这只是将我带到我的集成管理页面,无法弄清楚令牌在哪里。跨度>
  • 这是一个新问题,与第一个无关。请将其作为新问题发布在 Slackoverflow 上。

标签: php slack slack-api


【解决方案1】:

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

  • 应用名称,以“as_user”为假发送(这是默认设置)
  • 机器人用户,使用机器人令牌
  • 安装您的应用程序的用户(我猜是您),以“as_user”为真发送并使用完全访问令牌

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 2016-11-22
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 2011-07-27
    相关资源
    最近更新 更多