@copilotkit/channels-whatsapp

中文文档
0.12.0发布于 2026/10/28MITTypeScriptES Module构建来源已验证近 30 天下载 4.9万

CopilotKit JSX频道的WhatsApp Cloud API平台适配器 (@copilotkit/channels).

中文使用文档
文档目录16 节
  1. 安装
  2. 快速启动
  3. 必需的嵌入
  4. 能力
  5. WhatsAppAdapterOptions 参考文献
  6. JSX – 何为App渲染
  7. 经常预算
  8. 持久性
  9. ActionStore(交互还水)
  10. HistoryStore (对话记忆)
  11. 图标
  12. 内建
  13. 工具上下文
  14. 运行演示
  15. V1里没有什么
  16. 出口

@ copilotkit/ channels- whatsapp (英语)

这个 怎样 PlatformAdapter 页:1 @copilotkit/channels它连接一个 任何AG-UI代理的WhatsApp业务号:通过Meta Cloud API webhook入侵, 以文本或交互式信息形式从 @copilotkit/channels-ui 联合来文十 词汇,不透明-id相互作用,和HITL.

你曾经将你的UI写成JSX(@copilotkit/channels-ui和驱动机器人与 @copilotkit/channels;这个包是唯一一个与WhatsApp Cloud API对话的.

适配器保存自己的WhatsApp Cloud API证书(accessToken 编号 : phoneNumberId /.)——在所管理的路径中,频道运行在副驾驶Kit内 情报配置 CopilotRuntime (有免费计划),开始和 拥有频道的生命周期. 新建并运行您的频道运行 sDK原始人也是一条支持路径.

安装

pnpm add @copilotkit/channels @copilotkit/channels-whatsapp

快速启动

import { createChannel } from "@copilotkit/channels";
import {
  whatsapp,
  defaultWhatsAppContext,
} from "@copilotkit/channels-whatsapp";
import { CopilotRuntime, CopilotKitIntelligence } from "@copilotkit/runtime/v2";
import { createCopilotNodeListener } from "@copilotkit/runtime/v2/node";

const bot = createChannel({
  identifyUser: "platform",
  name: "support-bot", // project-unique Intelligence Channel name
  adapters: [
    whatsapp({
      accessToken: process.env.WHATSAPP_ACCESS_TOKEN!,
      phoneNumberId: process.env.WHATSAPP_PHONE_NUMBER_ID!,
      appSecret: process.env.WHATSAPP_APP_SECRET!,
      verifyToken: process.env.WHATSAPP_VERIFY_TOKEN!,
      port: 3000,
    }),
  ],
  agent: makeAgent(process.env.AGENT_URL!),
  tools: [...appTools],
  context: [...defaultWhatsAppContext, ...appContext],
});

// Every inbound text is for the bot — there is no @-mention concept on WhatsApp.
bot.onMessage(async ({ thread }) => {
  await thread.runAgent();
});

// The runtime owns the channel's lifecycle — there is no `bot.start()`.
const runtime = new CopilotRuntime({
  intelligence: new CopilotKitIntelligence({
    // apiUrl and wsUrl default to cloud-hosted CopilotKit Intelligence — override
    // both together only for a self-hosted deployment.
    apiKey: process.env.CPK_INTELLIGENCE_API_KEY!, // free tier available
  }),
  channels: [bot],
});

// Creating the listener starts the Channel's connection.
const listener = createCopilotNodeListener({ runtime });
// Optional: await that activation so a broken config fails startup loudly.
await listener.channels.ready(); // listener.channels.stop() tears it down
console.log("[whatsapp-bot] listening for webhooks");

whatsapp(opts) 返回 a WhatsAppAdapter打开 HTTP 服务器 port 处理 Meta webhook 的 (default 3000): a GET /webhook 核查 握手签名 POST /webhook 活动交付。 你一定要揭开这个口 公开(例如通过 ngrok)并注册 URL + verifyToken 在元应用程序中 配置 。 见 examples/whatsapp 全文 设出行道.

必需的嵌入

瓦尔目的
WHATSAPP_ACCESS_TOKENCloud API访问令牌 (Bearer),出自Meta App ~ API设置.
WHATSAPP_PHONE_NUMBER_ID商业电话号码,发送消息.
WHATSAPP_APP_SECRET密码 X-Hub-Signature-256 webhook 验证.
WHATSAPP_VERIFY_TOKENToken在GET核查握手时回放.

能力

能力支助页:1
supportsStreaming虚假WhatsApp消息不可改变;没有编辑消息API.
supportsModals虚假云的API中没有模式表面.
supportsTyping虚假无打入指标的API用于商业账户.
supportsReactions虚假没有反应 API 对于商务发送消息.

因为信息是不可改变的, thread.stream(...) 缓冲可移动的全部 并且发出一个单一的信息——没有逐一的信号。 呼吁 update 财务报告和审定财务报表 delete 也可以是无操作者(他们发了新信息,或者默不作声) 滴出). 这个 defaultWhatsAppContext 条目告诉代理人这个限制 它没有承诺"更新这个消息"

WhatsAppAdapterOptions 参考文献

选项类型默认说明
accessTokenstring所需经费Cloud API 访问令牌 (Bearer).
phoneNumberIdstring所需经费商业电话号码,发送消息.
appSecretstring所需经费密码 X-Hub-Signature-256 webhook 验证.
verifyTokenstring所需经费Token在GET核查握手时回放.
portnumber3000HTTP 服务器端口.
pathstring"/webhook"韦布克道.
apiVersionstring"v21.0"图表 API 版本 .
graphBaseUrlstring"https://graph.facebook.com"图表 API 基础来源 。 超乎测试.
interruptEventNamesReadonlySet<string>undefined自定义 AG- UI 事件名称被运行渲染器视为中断 .
commandPrefixstring"/"主键字命令匹配的前缀 .
historyStoreHistoryStorenew InMemoryHistoryStore()不断的对话 - 历史持续.
filesFileDeliveryConfig{}进入媒体处理配置.

JSX – 何为App渲染

renderWhatsAppMessage(ir) 下调 @copilotkit/channels-ui IR 到 Cloud API 载荷。 战略:

  • 0 动作 - 简单 text 消息(已转换为WhatsApp格式).
  • 1-3 按钮动作 • 互动 button 消息(重写按钮).
  • 4-10项行动 • 互动 list 消息(列表拾取器).
  • >10个动作 ^ 有编号的文本菜单(降级回放).

图像节点总是发出自己的 image 载荷。 Markdown 翻译为 何为App格式 : **bold**, (中文(简体) ), _italic_, (中文(简体) ), ~~strikethrough~~, (中文(简体) ), `code`,以及 代码块。 不支持标题、表格和可点击的Markdown链接 WhatsApp——链接为纯文本.

经常预算

WhatsApp 上限交互式元素。 限制居住 WA_LIMITS数字 :

限制数值元素
bodyText4096 (英语)文本信息正文字符
replyButtons3个在交互式按钮消息中回复按钮
buttonTitle20国回复按钮标题字符
interactiveBody第1024号交互式信件正文字符
interactiveHeader页:1交互式信头字符
interactiveFooter页:1交互式页脚字符
listRows10个列表消息中横跨所有段落的行总数
rowTitle24个列表行标题字符
rowDescription72国列表行描述字符
listButton20国列表打开按钮标签字符
controlId256号交互式控制 id 字符

持久性

ActionStore(交互还水)

发动机的 ActionStore (从) @copilotkit/channels)存储薄荷不透明标识 那个力量 Button 编号 : Select 点击处理器。 默认为内存: 进程重新启动,对旧交互消息的点击被确认但被忽略. 对于持续的互动,通过持久 ActionStore 改为 createChannel({ actionStore })。 。 。 .

HistoryStore (对话记忆)

与Slack不同的是,WhatsApp揭露了无法读取的信息历史. 适配器维持 其本身 HistoryStore 并重放到 agent.messages 在每一个转弯。 这个 默认为 InMemoryHistoryStore (每次谈话最多100个信息,滴出) ) (第1行,第2行). 通过执行 HistoryStore 接口 :

interface HistoryStore {
  append(conversationKey: string, message: StoredMessage): Promise<void>;
  read(conversationKey: string): Promise<StoredMessage[]>;
}

通过它作为 historyStore 在适配器选项中:

whatsapp({
  // ...
  historyStore: new MyRedisHistoryStore(),
});

没有耐用 HistoryStore中,对话历史在进程重新启动时丢失.

图标

命令与消息文本中的主关键字相匹配(默认前缀) /) (中文(简体) ). 登记处理器 bot.onCommand数字 :

bot.onCommand("status", async ({ thread, text }) => {
  await thread.runAgent({ prompt: `Status check: ${text}` });
});

与Slack不同的是,WhatsApp没有本地的斜线命令表面——命令是简单的 从前缀开始的文本信息。 它们不是由适配器预过滤的 (引擎与它们相匹配),命令信息不会持续到 HistoryStore 在入侵。 发送命令需要序列化为代理提示 明确,如果特工需要把它们视为历史.

内建

  • defaultWhatsAppTools —— v1 空 (WhatsApp 显示没有用户目录, 所以) 没有 lookup_user 页:1 展开到 tools 未来 兼容性.
  • defaultWhatsAppContext - 两个上下文条目:WhatsApp格式化规则 (粗体/斜体/代码,无标题或可点击链接)和交付限制(无) 流出,不编辑消息). 展开到 context。 。 。 .
  • whatsAppFormattingContext 编号 : whatsAppDeliveryContext ——个别条目 如果你需要有选择地作曲.

工具上下文

工具接收单一共享 ChannelToolContext 从 @copilotkit/channels (单位:千美元){ thread, message?, user?, signal?, platform }通过WhatsApp电源 能力 thread 此适配器背面的方法 :

  • thread.getMessages() ——当前对话的信息历史(从 HistoryStore),每个a ThreadMessage (单位:千美元){ user?, text, ts?, isBot? }) (中文(简体) ).
  • thread.postFile({ bytes, filename, title?, altText? }) ——上传并发送一个 文档(图像 ) image 有效载荷;其他 document 通过介质上载的有效载荷 (原始内容存档于2018-10-12). API.

说明: thread.lookupUser(query) 这是对WhatsApp的禁止 —— 云 API 显示没有 用户目录。 它总是回来 undefined。 。 。 .

运行演示

这个包是 图书馆。可运行的端到端演示布线 对一个真实的WhatsApp数字 住在 examples/whatsapp。 。 。 .

V1里没有什么

  • 没有信件编辑或流出( WhatsApp 信件是不可改变的)
  • 24小时客户服务窗口(适配器)外没有主动留言 不执行模板消息发送; 机器人只能在 由入境用户消息打开的24小时窗口
  • 没有用户目录( N)lookupUser 总是返回 undefined(中文(简体) )
  • 没有 OAuth / 多数安装( 仅一个访问符)
  • 持久性 ActionStore 财务报告和审定财务报表 HistoryStore 默认为内存; 动作和 历史在重新启动时过期, 除非您提供持久执行

出口

whatsapp, (中文(简体) ), WhatsAppAdapter· ; WhatsAppAdapterOptions, (中文(简体) ), ReplyTarget, (中文(简体) ), WhatsAppMessageRef (类型); WhatsAppConversationStore· ; InMemoryHistoryStore, (中文(简体) ), HistoryStore, (中文(简体) ), StoredMessage (类型); renderWhatsAppMessage, (中文(简体) ), WhatsAppOutbound (类型); WA_LIMITS, (中文(简体) ), truncateText, (中文(简体) ), clampArray· ; markdownToWhatsApp· ; decodeInteraction, (中文(简体) ), conversationKeyOf· ; createRunRenderer· ; WhatsAppClient, (中文(简体) ), DownloadedMedia (类型); buildFileContentParts, (中文(简体) ), AgentContentPart, (中文(简体) ), FileDeliveryConfig (类型); defaultWhatsAppTools· ; defaultWhatsAppContext, (中文(简体) ), whatsAppFormattingContext, (中文(简体) ), whatsAppDeliveryContext。 。 。 .

版本与发布记录

@copilotkit/channels-whatsapp 共发布 45 个版本,首次发布于 2026/07/09;过去 12 个月发布了 45 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.12.0latest2026/10/2813 天前
0.11.12026/10/1625 天前
0.11.02026/09/231 个月前
0.10.02026/09/151 个月前
0.9.32026/09/151 个月前
0.9.22026/09/032 个月前

其他发布通道:canary → 0.7.3-canary.1785878925。

关于 @copilotkit/channels-whatsapp 的常见问题

@copilotkit/channels-whatsapp 是什么?

CopilotKit JSX频道的WhatsApp Cloud API平台适配器 (@copilotkit/channels).

如何安装 @copilotkit/channels-whatsapp?

在项目目录运行 npm install @copilotkit/channels-whatsapp,或使用 pnpm add / yarn add / bun add。

@copilotkit/channels-whatsapp 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@copilotkit/channels-whatsapp 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@copilotkit/channels-whatsapp 可以商用吗?

@copilotkit/channels-whatsapp 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@copilotkit/channels-whatsapp 的下载量有多少?

根据 npm 官方下载统计,@copilotkit/channels-whatsapp 在 2026/10/11 – 2026/11/09 这 30 天内被下载 48,803 次,日均约 1,627 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@copilotkit/channels-whatsapp 还在维护吗?

最新版本 0.12.0 发布于 2026/10/28(13 天前);至今共发布 45 个版本,其中过去 12 个月发布了 45 个;首次发布于 2026/07/09。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。