有没有办法使用 OAuth2 通过 Slack 验证 java 桌面应用程序?我正在尝试遵循Slack 的指南。
我陷入困境,因为它说您在应用程序的重定向 uri 内获取访问令牌。但由于我正在制作的应用程序不存在于网络浏览器中,我是否可以做到这一点?
我的 java 应用程序可以启动一个可以与其通信以用作重定向 uri 的本地主机站点吗?如果是这样,怎么办?
我在 Slack 工作区中创建了一个传入 Webhook。我使用第三方工具将 JSON 对象发布到挂钩 url。我想向@user_1发送通知
我的问题是,通知发送到我和该用户 @user_1 之间的私人通道,而不是直接发送到 @user_1,比如通过 Slackbot 或只有该用户的通道。
如何确保通知是从 Slackbot 或 @user_1 发送的,而不是我自己发送的?
我的设置方式是通过传入 Webhook 创建一个新应用程序。对于通道,我选择 @user_1,并使用第三方提供的 url 发送 slack 通知。
是否可以在 Slack Chat 中将单词的一部分加粗。示例:堆栈溢出。
我使用的是 Ubuntu 18.04 和 Linux 版本的 slack。使用消息生成器和 unicode 值 \u000b 似乎不起作用(见下图)。
我正在构建一个简单的机器人,定期生成图表作为图像,并通过 python slackclient包发布到 slack。
我已经成功使用以下代码发送了一条机器人消息:
def post_message_to_channel(self, channel_id, message=DEFAULT_TEST_MESSAGE):
sc = SlackClient(TOKEN)
sc.api_call(
"chat.postMessage",
channel=channel_id,
username='mybot',
text='test text message'
)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试对文件上传执行相同操作时,图像已正确发送,但它显示我的名字,而不是指定的机器人名称:
def post_image_to_channel(self, channel_name, filepath, tile='Test Upload'):
sc = SlackClient(TOKEN)
with open(filepath, 'rb') as file_content:
sc.api_call(
"files.upload",
channels=channel_id,
file=file_content,
title=tile,
username='mybot',
)
Run Code Online (Sandbox Code Playgroud)
查看files.upload 的 slack API 文档,似乎username不可用。
如何使用机器人名称发送files.upload图像?
我一辈子都不能向另一个频道发布消息,而不是我通过网络连接的频道。我不能像我自己(在我的 slackID 下)那样做,就像应用程序一样。
问题是我必须为我的公司做这件事,所以我们可以将 slack 集成到我们自己的软件中。我只是不明白 JSON 的“有效负载”必须是什么样子(实际上我正在按照 Slack 网站上的说明进行操作,但它根本不起作用 - 它总是忽略诸如“令牌”之类的东西,“用户”、“频道”等)。
我也不明白如何使用像“ https://slack.com/api/chat.postMessage ”这样的 url-methods - 他们去哪里了?正如您在我的代码中可能看到的,我只有 webhookurl,如果我不使用它,我就无法发布任何内容。此外,我不明白如何使用诸如令牌、特定用户 ID、特定频道之类的参数...... - 如果我尝试将它们放入有效负载中,它们似乎会被忽略。
好吧,抱怨够了!现在我将向您展示我到目前为止所得到的。这是网上有人发的!但我改变并添加了一些东西:
public static void Main(string[] args)
{
Task.WaitAll(IntegrateWithSlackAsync());
}
private static async Task IntegrateWithSlackAsync()
{
var webhookUrl = new Uri("https://hooks.slack.com/services/TmyHook");
var slackClient = new SlackClient(webhookUrl);
while (true)
{
Console.Write("Type a message: ");
var message = Console.ReadLine();
Payload testMessage = new Payload(message);
var response = await slackClient.SendMessageAsync(testMessage);
var isValid = response.IsSuccessStatusCode ? "valid" : "invalid";
Console.WriteLine($"Received {isValid} response.");
Console.WriteLine(response); …Run Code Online (Sandbox Code Playgroud) 有没有办法根据消息内容从一个 slack 频道自动转发到另一个?
我希望在一个频道中包含某个字符串的消息自动转发到另一个频道。
我正在尝试更新我的机器人发布的消息。但是,我在尝试调用 chat.update 时收到“cant_update_message”错误。这就是我的通话的样子:
oauth_token = os.environ.get("OAUTH_TOKEN")
sc=SlackClient(oauth_token)
sc.api_call("chat.update", channel=channel_id, text=text, ts=ts)
Run Code Online (Sandbox Code Playgroud)
我还尝试了 Bot OAuth 令牌而不是 OAuth 令牌,以及 as_user 的所有组合(True、False、机器人的用户 ID...),但没有成功。
另外,请注意通道和时间戳已经过测试并且是正确的;当我发布消息并且我是通过斜杠命令调用它的人时,我可以使用 OAuth 令牌更新消息。
我是 Slack API 开发的新手。你能让我知道我需要做什么才能让它工作吗?
另外,通过 chat.update 发布消息时是否可以自定义其他设置(例如username和)?icon_url这是一个重要的功能,因为我的机器人有时会使用不同的显示名称和图标进行发布。
我正在通过网络挂钩将消息发送到Slack。使用单个“文本” JSON元素的消息通知会通过适用于OS X和iOS的Slack应用生成正确的通知文本。消息文本在通道中也是正确的。但是,当使用新的“阻止”方法时,通知文本变为“无法显示此内容”。该消息确实正确显示在频道中。只是通知不起作用。
根据https://api.slack.com/messaging/composed/layouts,第一块中的文本用于通知:
当您在消息有效负载中使用块时,文本字段将成为通知中显示的后备消息。
不使用块样式,这可以工作:
curl -s -k -X POST https://hooks.slack.com/services/${webhook} -H 'Content-type: application/json' --data @- << EOF
{
"text": "${message}"
}
EOF
Run Code Online (Sandbox Code Playgroud)
如果您使用https://api.slack.com/tools/block-kit-builder上的块构建器应用程序通过清除任何现有代码然后添加Section块来生成等效的简单块样式,则将具有以下内容:
[
{
"type": "section",
"text": {
"type": "plain_text",
"text": "This is a plain text section block.",
"emoji": true
}
}
]
Run Code Online (Sandbox Code Playgroud)
现在,在页面底部,输入您的频道,然后点击“发送到Slack”。结果是文本正确到达频道,但是弹出的通知包含文本“此内容无法显示”。
起初,我认为自己的块样式代码不正确,但是,由块工具包构建器应用程序生成的代码也不起作用,这使我相信Slack本身存在问题/错误。
还是我忽略了什么?
谢谢
我正在创建一个新的 Slack 应用程序,它基本上接受斜杠命令。它已经可以工作了,但我想使用 API 密钥来保护我的 API。已经配置了 API 密钥 + 使用计划,但不确定如何在 slack 端使用它。
我基本上需要发送一个x-api-key标头,但这似乎从 Slack 方面不可能?
拥有一个仅依赖于 slack 验证令牌的开放 API 似乎非常危险,具体取决于您的命令......
有没有办法做到这一点,或者就是这样?仅使用令牌和团队 ID 进行验证。
这是我设置主题频道的代码, {"ok":false,"error":"channel_not_found"}
当频道存在时我会收到并且我尝试使用channelId而不是使用#channelName。但没有区别。并且权限设置正确。
function setTopic1() {
var topic = 'testing'
var url = 'https://xxxx.slack.com/api/conversations.setTopic'
var payload = {
'channel': '#temp-w',
'token': token,
'topic': topic,
};
var options = {
'method': 'post',
'payload': payload,
};
if (topic.length > 250) {
Logger.log("Topic is too long, API request might fail")
}
var response = UrlFetchApp.fetch(url,options);
Logger.log(response)
}`
Run Code Online (Sandbox Code Playgroud) slack-api ×9
slack ×7
aws-lambda ×1
c# ×1
java ×1
javascript ×1
json ×1
oauth-2.0 ×1
python ×1
webhooks ×1