You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Android Intent向Slack分享Block Kit并实现可视化渲染?

向Slack分享Block Kit区块的问题及解决方案

问题描述

我希望从Android应用向Slack分享一个Block Kit区块,使用了如下Intent代码,但Slack仅渲染JSON文本,不会展示可视化的Block区块,无论分享到频道还是用户都是直接粘贴JSON。想知道外部应用是否支持这类分享功能,该怎么实现预览?

所用代码示例

Android Intent代码

val sendIntent = Intent()
sendIntent.setAction(Intent.ACTION_SEND)
sendIntent.setType("text/plain")
sendIntent.putExtra(Intent.EXTRA_TEXT, blockJson)
sendIntent.setPackage("com.Slack")
startActivity(sendIntent)

Block Kit示例JSON

{
  "type": "section",
  "text": {
    "type": "mrkdwn",
    "text": "New Paid Time Off request from <example.com|Fred Enriquez>\n\n<https://example.com|View request>"
  }
}

解决方案

核心结论

外部应用无法通过ACTION_SEND Intent直接分享并渲染Block Kit区块,Slack的分享接收逻辑只会处理纯文本/普通富文本内容,不会自动解析JSON格式的Block Kit结构。

可行实现方案

要在Slack中展示Block Kit可视化内容,必须通过Slack官方API实现:

  • 创建Slack应用并获取权限:注册Slack应用,申请chat:write权限(用于发送消息),获取目标工作区的Bot Token或User Token
  • 调用Slack API发送消息:使用chat.postMessage接口,将Block Kit的JSON结构作为请求体的blocks参数传入,示例Kotlin代码(结合Retrofit):
    interface SlackApiService {
        @POST("chat.postMessage")
        suspend fun postMessage(
            @Query("token") token: String,
            @Query("channel") channel: String,
            @Body body: SlackMessageBody
        ): Response<SlackApiResponse>
    }
    
    data class SlackMessageBody(val blocks: List<Map<String, Any>>)
    
  • 引导用户选择Slack频道/用户:可通过Slack的OAuth流程让用户授权并选择目标频道,或在应用内提供输入框让用户输入频道ID/用户名

替代方案(快速分享)

如果仅需快速分享内容,可将Block Kit的内容转换成Slack支持的Markdown格式,通过ACTION_SEND分享纯文本,Slack会自动解析Markdown渲染成富文本,但无法实现Block Kit的复杂交互和布局。

内容的提问来源于stack exchange,提问作者ono

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 08:07:44