我无法在松弛的API文档中看到机器人在响应用户的通道中发送消息的方式.
这样slackbot做的回答方式相同/help.
有人可以告诉我这是否可能?
请注意"仅对您可见".在RTM手册中,他们说这个消息与事件消息的类型相同.我没有看到任何可以说它仅对某个用户可见的属性.
我正在使用Poison将地图编码为JSON,并将其发送到Slack API.这就是Poison给我的东西:
"{\"text\":\"changed readme fad996e98e04fd4a861840d92bdcbbcb1e1ec296\"}"
Run Code Online (Sandbox Code Playgroud)
当我把它放入JSON lint时,它说它是有效的JSON,但是Slack响应"无效的有效载荷".
如果我将JSON更改为这样
{"text":"changed readme fad996e98e04fd4a861840d92bdcbbcb1e1ec296"}
Run Code Online (Sandbox Code Playgroud)
然后它工作.有谁知道我在哪里出错?我是否需要对编码的JSON进行额外处理,或者是否需要设置一些标头?
这是我的控制器
def create(conn, opts) do
message = Message.create_struct(opts)
response = Slack.Messages.send(message)
case response do
{:ok, data} ->
render conn, json: Poison.encode!(data)
{:error, reason} ->
render conn, json: reason
end
end
Run Code Online (Sandbox Code Playgroud)
这是发送消息的库的一部分
defmodule Slack.Messages do
def format_simple_message(map) do
text = map.description <> " " <> map.commits
message = %{text: text}
end
def post_to_slack(map) do
Slack.post(:empty, map)
end
def send(map) do
map
|> format_simple_message
|> post_to_slack
end
end
Run Code Online (Sandbox Code Playgroud)
我的HTTPoison处理
defmodule …Run Code Online (Sandbox Code Playgroud) 我正在尝试为 Slack 设置一个 webhook,但收到“Invalid_Payload”的错误消息
我已经浏览了 Stack、Slack 和 Github ……但找不到我想要的答案。
“CustomLink”在那里用于隐私,实际链接开始使用。
代码:
var request = require('request')
var webhook = "https://hooks.slack.com/services/CUSTOMLINK"
var payload={"text":"This is via an integration from Me - It is a test"}
request.post({url: webhook, payload: payload}, function(err, res){
if(err){console.log(err)}
if(res){console.log(res.body)}
})
Run Code Online (Sandbox Code Playgroud)
错误:
invalid_payload
Run Code Online (Sandbox Code Playgroud) 我做了一个松散的应用程序,我有一个机器人.我选择了频道:历史,频道:阅读,频道:在我的许可范围内写作,我也通过了范围
"scope":"bot channel:history channel:read channel:write"
在进行我的oauth2验证(使用python)时,我得到了范围的响应
"scope":"identify,bot,channels:history,channels:read,channels:write"
Run Code Online (Sandbox Code Playgroud)
以及客户端和机器人访问令牌.
现在,当我进行api调用以获取我的机器人被邀请的频道的历史记录时,我得到了
{
ok: false,
error: 'missing_scope',
needed: 'channels:history',
provided: 'identify,bot:basic'
}
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我哪里出错了.我怎样才能PROVIDE渠道:历史范围在我的API调用.这真让我疯了.我应该使用客户端访问令牌,即xoxp-xxxx,而不是机器人令牌,即xoxb-xxxx?
谢谢!
我刚刚使用Microsoft bot框架在我的dev slack团队中创建了我的第一个slack bot.现在我想将机器人添加到另一个团队进行测试.我的机器人不会公开使用,只是公司内部的.我尝试使用Add to Slack按钮将其添加到新团队但我得到了:
OAuth错误:invalid_team_for_non_distributed_app.
谢谢.
在 Slack 的传入 webhook文档中,他们提到thread_ts在请求正文中包含 以启动线程。
{
"text": "Hello, world.",
"thread_ts": "12345.6789"
}
Run Code Online (Sandbox Code Playgroud)
当我向传入的 webhook url 发出 POST 请求时,响应正文不包含thread_ts. 我期待thread_ts在响应正文中,但响应正文只是说ok并且不包含任何 json。
是否可以在thread_ts没有其他应用程序或身份验证令牌的情况下获得?我是否必须使用另一个 Slack API?我现在只配置了传入的 webhook。
附带说明一下,如果使用 Slack 的新 Block Kit API 更容易做到这一点,那也可以。
因此,最近我一直在研究 Slack API,并且想出了如何使用在 Chrome 中使用 Slack 时可用的密钥来访问 API。我可以访问 communications.history 方法并下载消息。有API经验的人知道这是否正常吗?为了能够使用应用程序或标准身份验证令牌访问 API(用户令牌的前缀为 xoxp- ,机器人令牌为 xoxb- ,工作区令牌为 xoxa-2 。我使用的令牌是 xoxc- 。)这似乎有点不安全,所以我的问题是,API 总是这样容易受到攻击吗?而且,我猜我不应该像这样访问它,并且想知道是否有人听说过有人因此陷入麻烦,或者它是否符合预期/可以?
我们正在努力做什么
我正在研究自动化,它使用自定义 Slack 应用程序上的传入 Webhooks将消息发布到 Slack 通道。这些消息提到了人。
什么有效
我们可以很好地发送一条消息,它具有格式化的内容,并且使用link-names flag正确解析了用户名。
什么不起作用
通知的全部目的是告知一群动态的人们他们应该关心的事情。我们标记的人群差异很大(想想那些为拉取请求做出贡献的人),因此并非所有可能的收件人都在这些自动消息发送的渠道中。
我们假设,鉴于用户名被直接@提及,Slack 会通知他们。然而,我们测试过并@提及的两名用户确认他们从未收到过他们被标记的通知。
这与“人类”行为不同,如果您在 Slack 中@提及某人,您会收到一条小消息,提醒您该人不在该频道中,并提出邀请他们或让他们知道。
据我们所知,以编程方式发送消息相当于上图中的“不执行任何操作”。我想做其他两个选项之一,最好是“让他们知道”。
我如何通知人们他们被提及?我查看了所有 API 文档,没有讨论通知不在他们提到的频道中的用户。
这不是一个罕见的问题......对吧?
笔记:
chat.postMessage,它只是我能找到链接到的关于 link_names 的唯一文档。我们正在使用 Incoming Webhooks,它对参数的文档很少 - 它似乎与chat.postMessage.我已经使用 slack 设置了自定义斜杠命令/news,它工作正常,但我找不到通过线程使用触发斜杠命令的方法。
我收到以下错误: /news is not supported in threads. Sorry!
我浏览了 slack api 文档,但似乎找不到它。我知道这是可能的,因为我/giphy安装了该应用程序并且可以在线程中使用它。
我找到了这篇文章,但它并没有真正的帮助。 https://medium.com/slack-developer-blog/bringing-your-bot-into-threaded-messages-cd272a42924f
欢迎任何建议。
我为松弛建立了一个机器人.它在新用户加入时读取消息,我打算发布一条消息欢迎他们:"欢迎@ 用户!你在建什么!?"
当它发布@ user时,似乎并不是真正的"标签"正在运行.我是否需要标记他们的用户ID,当我标记人僵尸,而不是仅仅使用@ 用户?
