惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
U
Unit 42
V
Visual Studio Blog
D
DataBreaches.Net
F
Fortinet All Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
月光博客
月光博客
大猫的无限游戏
大猫的无限游戏
T
The Blog of Author Tim Ferriss
GbyAI
GbyAI
博客园 - 叶小钗
Blog — PlanetScale
Blog — PlanetScale
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MongoDB | Blog
MongoDB | Blog
The Cloudflare Blog
云风的 BLOG
云风的 BLOG
D
Docker
G
Google Developers Blog
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
S
SegmentFault 最新的问题

Vercel News

Vercel Open Source Program: Winter 2026 cohort How Notion Workers run untrusted code at scale with Vercel Sandbox How we run Vercel's CDN in front of Discourse From idea to secure checkout in minutes with Stripe Building Slack agents can be easy Scaling redirects to infinity on Vercel Advancing Python typing Gamma builds design-first agents with Vercel How Avalara turns pipe dreams into patent-pending with v0 Keeping community human while scaling with agents How OpenEvidence built a healthcare AI that physicians actually trust Security boundaries in agentic architectures Skills Night: 69,000+ ways agents are getting smarter Video Generation with AI Gateway We Ralph Wiggumed WebStreams to make them 10x faster How Stably ships AI testing agents in hours, not weeks How we built AEO tracking for coding agents Anyone can build agents, but it takes a platform to run them Introducing Geist Pixel The Vercel AI Accelerator is back with $6m in credits Making agent-friendly pages with content negotiation The Vercel OSS Bug Bounty program is now available Introducing the new v0 Run untrusted code with Vercel Sandbox, now generally available How Stripe built a game-changing app in a single flight with v0 How Sensay went from zero to product in six weeks AGENTS.md outperforms skills in our agent evals Agent skills explained: An FAQ Testing if "bash is all you need" AWS databases are now live on the Vercel Marketplace and v0
Chat SDK now supports callback URLs on buttons and modals...
Ben SabicContent EngineerJosh SinghSoftware Engineer · 2026-05-20 · via Vercel News

You can now pause a Workflow run on a Chat SDK card and resume it when someone clicks a button. The same flow works for form submissions. Buttons and modals accept a new callbackUrl prop, and the event payload is sent to that endpoint.

Example of a Slack approval card that requests your permission to send a status reportExample of a Slack approval card that requests your permission to send a status report

Slack approval card for a status report request

To build a card like this, create a workflow webhook and pass its URL to each button's callbackUrl prop inside your <Card> component:

import { createWebhook } from "workflow";

import { Card, CardText, Actions, Button } from "chat";

export async function statusReport(

thread,

content: { title: string; message: string },

) {

"use workflow";

using hook = createWebhook<{ action: "approve" | "approve-and-send" | "deny" }>();

await thread.post(

<Card title="Status Report Communications">

<CardText>Title: {content.title}</CardText>

<CardText>Message: {content.message}</CardText>

<Actions>

<Button callbackUrl={hook.url} id="approve" style="primary">

Approve

</Button>

<Button callbackUrl={hook.url} id="approve-and-send" style="primary">

Approve & Send

</Button>

<Button callbackUrl={hook.url} id="deny" style="danger">

Cancel

</Button>

</Actions>

</Card>

);

const { action } = await hook;

if (action === "approve" || action === "approve-and-send") {

await sendReport(content);

}

}

Create an approval card to approve or deny a deployment

For the <Modal> component, the form data is in the payload. callbackUrl works for buttons on most platforms with an official adapter, and for modals on Slack and Teams.

Read the documentation or walkthrough guide to start building.

The Complete Guide to Chat SDK

Learn how Chat SDK works end-to-end: from core concepts to building your first bot to deploying it across Slack, Teams, and more.

Read the guide