用途:用于在本地开发与测试中模拟 Slack Web API,让 Slack 集成无需连接真实 Slack 即可运行和验证。
主要能力:提供有状态的模拟,包括频道、消息、线程、表情回应、用户资料、在线状态、现代文件上传、置顶、书签、视图、OAuth v2 与传入 Webhook。消息写入保留 blocks、attachments、metadata、格式标记、unfurl 标记与 client message id 等富字段;会话写入可更新归档状态、名称、主题、目的、成员、DM、MPIM 与已读游标;用户写入更新资料字段、状态、自定义字段与确定性在线/离开状态;文件写入支持当前外部上传流程,含本地上传 URL、文件分享消息、读取、列出、下载与删除;视图写入支持 App Home 发布与模态堆栈;种子 OAuth 应用与安装可创建机器人用户与安装记录;状态变化会向配置的 Webhook 派发 event_callback。
使用方式:默认本地监听 127.0.0.1。单服务启动可运行 npx emulate --service slack,默认端口 http://localhost:4000;也可编程调用 createEmulator({ service: 'slack', port: 4003 })。所有 Web API 端点需认证,通过 Authorization: Bearer <token> 传递令牌;未提供令牌返回 not_authed。可将应用指向模拟器,例如设置 SLACK_EMULATOR_URL=http://localhost:4003,并在 Slack SDK/Bolt 中设置 slackApiUrl 为 ${process.env.SLACK_EMULATOR_URL}/api/。OAuth 授权与换取地址分别映射为 $SLACK_EMULATOR_URL/oauth/v2/authorize 与 $SLACK_EMULATOR_URL/api/oauth.v2.access。种子配置可定义 team、users、channels、bots、oauth_apps、tokens、incoming_webhooks、strict_scopes 与 signing_secret 等。
限制:消息文本在 chat 写入、传入 Webhook 与文件上传初始评论中上限为 40,000 个 Unicode 字符,超出会在码点边界截断,成功响应包含 warning: "message_truncated" 及 response_metadata 说明。默认范围内检查为宽松模式;在种子配置中设置 slack.strict_scopes: true 可启用 Slack 风格 missing_scope 错误及 needed/provided 字段。views.publish、views.open、views.update、views.push 不做严格范围检查,仅要求认证。未配置 OAuth 应用时接受任意 client_id;配置后对 client_id、client_secret 与 redirect_uri 执行严格校验。signing_secret 用于签名出站事件订阅回调,缺少或为空则不签名。其他未提及的细节暂未提供。