我正在尝试使用 slack Bolt jdk 以及以下依赖项:
// Slack bolt SDK
implementation("com.slack.api:bolt:1.8.1")
implementation("com.slack.api:bolt-servlet:1.8.1")
implementation("com.slack.api:bolt-jetty:1.8.1")
implementation("com.slack.api:slack-api-model-kotlin-extension:1.8.1")
implementation("com.slack.api:slack-api-client-kotlin-extension:1.8.1")
Run Code Online (Sandbox Code Playgroud)
fun SlashCommandContext.sendSectionAndAck(
message: String,
): Response {
slack.methods(botToken).chatPostMessage { req ->
req
.channel(channelId)
.blocks {
section {
markdownText(message)
}
}
}
return ack()
}
Run Code Online (Sandbox Code Playgroud)
看起来 Markdown 的格式几乎正确。页眉和页脚均按预期加粗,但由于某种原因,项目符号列表的格式不正确。我也尝试过用 替换 ,*但-没有任何运气。
就我而言,我可以使用以下输入调用该函数:
val input = """
*Some header text in bold*
- item
- another item
*Some footer text also in bold*
"""
sendSectionAndAck(input)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
在使用 Slack 的块套件构建器时,我创建了一条消息,该消息将发送通知以及供用户单击的链接。我喜欢默认按钮的外观,但每当我单击它时,我都会收到一条警告,提示我的应用程序未配置交互性。
该链接确实有效,但警告图标令人不安。有没有办法在不期望交互性的情况下使用这些按钮?另一种选择似乎是只使用降价链接,但我认为它看起来不太好。
我的区块:
{
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Hello here's a notification"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "<https://google.com|View Conversation>"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
如果我直接从块套件构建器发送此块,则不会出现警告消息。我猜这是因为它是作为我的用户而不是应用程序发送的。
我正在尝试为我的松弛团队制定一个工作流程,其中我有以下步骤:(使用工作流程构建器)
当用户单击频道中的快捷方式时启动
打开一个表格 - 我们提出很多问题,一个问题有多个修复选项
从 Google 表格中选择行 - 根据答案,我们选择一行
向 slack 通道发送消息 - 使用包含 slack 成员 ID(或用户名)的同一行的另一列中的值来提及消息中的人员
我所期望的:
频道上的松弛消息有 @userHere 作为提及(触发通知)
会发生什么:
该消息以 @userHere 作为计划字符串在通道上发送。不像提到的那样,即不可点击并且不会触发通知。
是否可以?我究竟做错了什么?
我尝试过的:
| 我在发送消息步骤中输入的内容 | 工作表中保存的内容 |
|---|---|
| @多变的 | “用户名” |
| @多变的 | “U123213” |
| 多变的 | “@用户名” |
| 多变的 | “@U123213” |
| {{多变的}} | @用户名 |
还有很多其他的..但我从未被提及。
我有一个使用下拉菜单的 Slack 机器人,它的侧面有一个颜色条。请参阅我在绿色圆圈中的屏幕截图
我希望该栏像此图片一样扩展整个消息
注意:此图像经过编辑以显示红色栏的示例(并且因为实际的松弛机器人消息并不重要)
我的代码有类似的东西
let slackPost = {
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": myText
}
} // ... some other blocks
],
"attachments": [
{
"text": menuTitle,
"color": menuBarColor,
"attachment_type": "default",
"actions": [
{
"name": menuName,
"text": menuPlaceHolder,
"type": "select",
"options": menuOptions
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud) 我尝试创建 Slack 的块套件构建器,所需的设计实际上很好。但我不知道在哪里可以找到一个按钮,以便我们可以在上面标记某人。
我在这里尝试标记一个名为john的人,但不幸的是它只生成了纯文本,它没有通知该人,也没有变成与预期相同的设计(参见下图结果)查看 游乐场
{
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "@juan \n\nis a mrkdwn section block"
}
},
.....
]
}
Run Code Online (Sandbox Code Playgroud)
这是结果
如何正确使用“可扩展”类型?
我有一个每小时运行一次的批处理,并向我们的 slack 发送一些统计数据。每个JSON输出都可能非常大,我正在寻找一种方法来使其可折叠/可扩展。
我正在玩 slack 的BlockKit Builder,希望有类似的东西,并且我发现(在查看消息错误时)有一种名为expandable.
但是,没有关于它的 (?) 文档。我唯一知道的是。
blocks属性blocks财产的孩子我继续使用块构建器(演示)并且能够让它不抛出任何错误,但没有视觉输出......
{
"blocks": [
{
"type": "expandable",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Hello, Assistant to the Regional Manager Dwight! *Michael Scott* wants to know where you'd like to take the Paper Company investors to dinner tonight.\n\n *Please select a restaurant:*"
}
}
]
}
] …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个 Slack 机器人,它将以各种名人的身份发布消息;因此,乍一看,信息将来自于以其形象闻名的人。这不起作用。我设法更改了机器人名称和图像,但发送的消息将发送到 slackbot DM 页面。我把它变成了一个聊天应用程序;但当我更改配置文件时,它显示无效用户。它允许我更改工作区中其他人的用户名,但不能更改机器人的用户名。
function changeProfile() {
(async () => {
const result = await web.users.profile.set({
profile:{real_name: "Jacinda Adern"},
user:"U0281UY0CSK". //id of bot
});
})();
}
Run Code Online (Sandbox Code Playgroud) Slack 让您可以使用块套件构建器轻松构建 UI,包括添加复选框:How do I make all checkboxes select by default on (using JS)? 当用户打开应用程序主页时,是否可以选中 1 个复选框?如果我能做到其中一件事,那么剩下的事情就很容易了。
{
"type": "home",
"blocks": [
{
"type": "input",
"element": {
"type": "checkboxes",
"options": [
{
"text": {
"type": "plain_text",
"text": "*this is plain_text text*",
"emoji": true
},
"value": "value-0"
},
{
"text": {
"type": "plain_text",
"text": "*this is plain_text text*",
"emoji": true
},
"value": "value-1"
}
],
"action_id": "checkboxes-action"
},
"label": {
"type": "plain_text",
"text": "Label",
"emoji": true
}
}
]
}
Run Code Online (Sandbox Code Playgroud) 当我使用这样的块通过 api 发送多个图像时:
{
"blocks": [
{
"type": "image",
"title": {
"type": "plain_text",
"text": "Please enjoy this photo of a kitten"
},
"image_url": "http://placekitten.com/500/500",
"alt_text": "An incredibly cute kitten."
},
{
"type": "image",
"title": {
"type": "plain_text",
"text": "Please enjoy this photo of a kitten"
},
"image_url": "http://placekitten.com/500/500",
"alt_text": "An incredibly cute kitten."
},
{
"type": "image",
"title": {
"type": "plain_text",
"text": "Please enjoy this photo of a kitten"
},
"image_url": "http://placekitten.com/500/500",
"alt_text": "An incredibly cute kitten."
}
]
} …Run Code Online (Sandbox Code Playgroud) 我创建了一个新的免费 Slack 工作区来学习 Slack 机器人应用程序 API。我有一个动作处理程序,它监听全局快捷方式并打开一个输入模式作为响应。还有另一个操作处理程序,它侦听模态输入 Submit callback_id,执行一些工作,然后使用trigger_id打开另一个模态。
app.view('do_thing_b.submit', async (slack) => {
try {
await slack.ack()
console.info(`Received modal submit`)
// TODO: actual work to save the data
const view = {
type: 'modal',
callback_id: 'do_thing_b.received_submission',
title: {
text: 'Thing B Done',
type: 'plain_text',
},
blocks: [
{
type: 'section',
text: {
text: 'My Plain Text',
type: 'plain_text',
emoji: true,
},
},
],
close: {
text: 'Close',
type: 'plain_text'
}
}
const openViewParams = {
trigger_id: slack.body.trigger_id, …Run Code Online (Sandbox Code Playgroud) 我正在使用模态来收集数据。我通过以下代码打开了一个视图:
view = {
"type": "modal",
"title": {
"type": "plain_text",
"text": "My App",
"emoji": True
},
"submit": {
"type": "plain_text",
"text": "Submit",
"emoji": True
},
"close": {
"type": "plain_text",
"text": "Cancel",
"emoji": True
},
"blocks": [
{
"type": "input",
"element": {
"type": "plain_text_input",
"action_id": "plain_text_input-action"
},
"label": {
"type": "plain_text",
"text": "Please leave feedback here",
"emoji": True
}
}
]
}
slack_client.views_open(trigger_id=body['trigger_id'],view=view)
Run Code Online (Sandbox Code Playgroud)
我想让输入文本可选,也就是说,即使用户将输入字段留空,他/她仍然可以提交模式。这能实现吗?
如何在 Slack Block Kit 中的 Slack Markdown 块中建立链接?
我已经尝试过我习惯使用的降价方法:
This is a [link](https://www.stackoverflow.com)
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。