Token导航 LogoToken导航TokenDH.com
研究检索需要联网github未标认证来源可访问许可证需确认审计提醒

integrate-whatsappintegrate WhatsApp 搜索

Agent Skill

integrate-whatsapp 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

32,592

周安装

1,401

GitHub Stars

108

下载量

11,424
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:integrate-whatsapp(integrate WhatsApp 搜索)
来源仓库:https://github.com/gokapso/agent-skills
仓库路径:skills/integrate-whatsapp
安装命令:
npx skills add https://github.com/gokapso/agent-skills --skill integrate-whatsapp
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/gokapso/agent-skills --skill integrate-whatsapp

简介

端到端 WhatsApp 与入门、消息传递、模板、交互式消息和本机 Flow 集成。

  • 通过 CLI 或直接 API 的托管设置链接来吸引客户;通过 webhook 或重定向 URL 检测连接
  • 发送文本消息、模板(带有命名参数和按钮)、交互式消息和媒体;通过 CLI、SDK 或 API 读取收件箱数据
  • 使用静态或动态端点构建本机 WhatsApp Flows(表单);管理加密、版本控制和测试
  • 通过具有可配置缓冲、有效负载版本和签名验证的 Webhook 接收项目和电话号码事件
  • 包括 40 多个用于模板、流程、Webhooks、消息传递和 OpenAPI 探索的帮助程序脚本;完整的参考文档和资产示例

SKILL.md

Integrate WhatsApp

Setup

Preferred path:

  • Kapso CLI installed and authenticated (kapso login)
  • Use kapso status to confirm project access before onboarding or messaging

Fallback path: Env vars:

  • KAPSO_API_BASE_URL (host only, no /platform/v1)
  • KAPSO_API_KEY
  • META_GRAPH_VERSION (optional, default v24.0)

Auth header (direct API calls):

X-API-Key: <api_key>

Install deps (once):

npm i

Connect WhatsApp (setup links)

Preferred onboarding path (CLI):

  1. Start onboarding: kapso setup
  2. If setup is blocked, resolve context with:

- kapso projects list - kapso projects use <project-id> - kapso customers list - kapso customers new --name "<customer-name>" --external-id <external-id> - kapso setup --customer <customer-id>

  1. Complete the hosted onboarding URL
  2. Confirm connected numbers: kapso whatsapp numbers list --output json
  3. Resolve the exact number you want to operate: kapso whatsapp numbers resolve --phone-number "<display-number>" --output json

Fallback onboarding flow (direct API):

  1. Create customer: POST /platform/v1/customers
  2. Generate setup link: POST /platform/v1/customers/:id/setup_links
  3. Customer completes embedded signup
  4. Use phone_number_id to send messages and configure webhooks

Detect connection:

  • Project webhook whatsapp.phone_number.created (recommended)
  • Success redirect URL query params (use for frontend UX)

Recommended Kapso setup-link defaults:

{
  "setup_link": {
    "allowed_connection_types": ["dedicated"],
    "provision_phone_number": true,
    "phone_number_country_isos": ["US"]
  }
}

Notes:

  • kapso setup and kapso whatsapp numbers new use dedicated plus provisioning by default.
  • Keep phone_number_country_isos, phone_number_area_code, language, and redirect URLs as optional overrides.
  • Platform API base: /platform/v1
  • Meta proxy base: /meta/whatsapp/v24.0 (messaging, templates, media)
  • Use phone_number_id as the primary WhatsApp identifier

Receive events (webhooks)

Use webhooks to receive:

  • Project events (connection lifecycle, workflow events)
  • Phone-number events (messages, conversations, delivery status)

Scope rules:

  • Project webhooks: only project-level events (connection lifecycle, workflow events)
  • Phone-number webhooks: only WhatsApp message + conversation events for that phone_number_id
  • WhatsApp message/conversation events (whatsapp.message.*, whatsapp.conversation.*) are phone-number only

Create a webhook:

  • Project-level: node scripts/create.js --scope project --url <https://...> --events <csv>
  • Phone-number: node scripts/create.js --phone-number-id <id> --url <https://...> --events <csv>

Common flags for create/update:

  • --url <https://...> - webhook destination
  • --events <csv|json-array> - event types (Kapso webhooks)
  • --kind <kapso|meta> - Kapso (event-based) vs raw Meta forwarding
  • --payload-version <v1|v2> - payload format (v2 recommended)
  • --buffer-enabled <true|false> - enable buffering for whatsapp.message.received
  • --buffer-window-seconds <n> - 1-60 seconds
  • --max-buffer-size <n> - 1-100
  • --active <true|false> - enable/disable

Test delivery:

node scripts/test.js --webhook-id <id>

Always verify signatures. See:

  • references/webhooks-overview.md
  • references/webhooks-reference.md

Send and read messages

Discover IDs first

Two Meta IDs are needed for different operations:

IDUsed forHow to discover
business_account_id (WABA)Template CRUDkapso whatsapp numbers resolve --phone-number "<display-number>" --output json or node scripts/list-platform-phone-numbers.mjs
phone_number_idSending messages, media uploadkapso whatsapp numbers resolve --phone-number "<display-number>" --output json or node scripts/list-platform-phone-numbers.mjs

Operate with the CLI first

Common commands:

kapso whatsapp numbers list --output json
kapso whatsapp numbers resolve --phone-number "<display-number>" --output json
kapso whatsapp messages send --phone-number-id <PHONE_NUMBER_ID> --to <wa-id> --text "Hello from Kapso"
kapso whatsapp messages list --phone-number-id <PHONE_NUMBER_ID> --limit 50 --output json
kapso whatsapp messages get <MESSAGE_ID> --phone-number-id <PHONE_NUMBER_ID> --output json
kapso whatsapp conversations list --phone-number-id <PHONE_NUMBER_ID> --output json
kapso whatsapp templates list --phone-number-id <PHONE_NUMBER_ID> --output json
kapso whatsapp templates get <TEMPLATE_ID> --phone-number-id <PHONE_NUMBER_ID> --output json

SDK setup

Install:

npm install @kapso/whatsapp-cloud-api

Create client:

import { WhatsAppClient } from "@kapso/whatsapp-cloud-api";

const client = new WhatsAppClient({
  baseUrl: "https://api.kapso.ai/meta/whatsapp",
  kapsoApiKey: process.env.KAPSO_API_KEY!
});

Send a text message

Via SDK:

await client.messages.sendText({
  phoneNumberId: "<PHONE_NUMBER_ID>",
  to: "+15551234567",
  body: "Hello from Kapso"
});

Send a template message

  1. Discover IDs: node scripts/list-platform-phone-numbers.mjs
  2. Draft template payload from assets/template-utility-order-status-update.json
  3. Create: node scripts/create-template.mjs --business-account-id <WABA_ID> --file <payload.json>
  4. Check status: node scripts/template-status.mjs --business-account-id <WABA_ID> --name <name>
  5. Send: node scripts/send-template.mjs --phone-number-id <ID> --file <send-payload.json>

Send an interactive message

Interactive messages require an active 24-hour session window. For outbound notifications outside the window, use templates.

  1. Discover phone_number_id
  2. Pick payload from assets/send-interactive-*.json
  3. Send: node scripts/send-interactive.mjs --phone-number-id <ID> --file <payload.json>

Read inbox data

Preferred path:

  • CLI: kapso whatsapp messages..., kapso whatsapp conversations..., kapso whatsapp templates...

Fallback path:

  • Proxy: GET /{phone_number_id}/messages, GET /{phone_number_id}/conversations
  • SDK: client.messages.query(), client.messages.get(), client.conversations.list(), client.conversations.get(), client.templates.get()

Template rules

Creation:

  • Use parameter_format: "NAMED" with {{param_name}} (preferred over positional)
  • Include examples when using variables in HEADER/BODY
  • Use language (not language_code)
  • Don't interleave QUICK_REPLY with URL/PHONE_NUMBER buttons
  • URL button variables must be at the end of the URL and use positional {{1}}

Send-time:

  • For NAMED templates, include parameter_name in header/body params
  • URL buttons need a button component with sub_type: "url" and index
  • Media headers use either id or link (never both)

WhatsApp Flows

Use Flows to build native WhatsApp forms. Read references/whatsapp-flows-spec.md before editing Flow JSON.

Create and publish a flow

  1. Create flow: node scripts/create-flow.js --phone-number-id <id> --name <name>
  2. Update JSON: node scripts/update-flow-json.js --flow-id <id> --json-file <path>
  3. Publish: node scripts/publish-flow.js --flow-id <id>
  4. Test: node scripts/send-test-flow.js --phone-number-id <id> --flow-id <id> --to <phone>

Attach a data endpoint (dynamic flows)

  1. Set up encryption: node scripts/setup-encryption.js --flow-id <id>
  2. Create endpoint: node scripts/set-data-endpoint.js --flow-id <id> --code-file <path>
  3. Deploy: node scripts/deploy-data-endpoint.js --flow-id <id>
  4. Register: node scripts/register-data-endpoint.js --flow-id <id>

Flow JSON rules

Static flows (no data endpoint):

  • Use version: "7.3"
  • routing_model and data_api_version are optional
  • See assets/sample-flow.json

Dynamic flows (with data endpoint):

  • Use version: "7.3" with data_api_version: "3.0"
  • routing_model is required (defines valid screen transitions)
  • See assets/dynamic-flow.json

Data endpoint rules

Handler signature:

async function handler(request, env) {
  const body = await request.json();
  // body.data_exchange.action: INIT | data_exchange | BACK
  // body.data_exchange.screen: current screen id
  // body.data_exchange.data: user inputs
  return Response.json({
    version: "3.0",
    screen: "NEXT_SCREEN_ID",
    data: { }
  });
}
  • Do not use export or module.exports
  • Completion uses screen: "SUCCESS" with extension_message_response.params
  • Do not include endpoint_uri or data_channel_uri (Kapso injects these)

Troubleshooting

  • Preview shows "flow_token is missing": flow is dynamic without a data endpoint. Attach one and refresh.
  • Encryption setup errors: enable encryption in Settings for the phone number/WABA.
  • OAuthException 139000 (Integrity): WABA must be verified in Meta security center.

Scripts

Webhooks

ScriptPurpose
list.jsList webhooks
get.jsGet webhook details
create.jsCreate a webhook
update.jsUpdate a webhook
delete.jsDelete a webhook
test.jsSend a test event

Messaging and templates

ScriptPurposeRequired ID
list-platform-phone-numbers.mjsDiscover business_account_id + phone_number_id
list-connected-numbers.mjsList WABA phone numbersbusiness_account_id
list-templates.mjsList templates (with filters)business_account_id
template-status.mjsCheck single template statusbusiness_account_id
create-template.mjsCreate a templatebusiness_account_id
update-template.mjsUpdate existing templatebusiness_account_id
send-template.mjsSend template messagephone_number_id
send-interactive.mjsSend interactive messagephone_number_id
upload-media.mjsUpload media for send-time headersphone_number_id

Flows

ScriptPurpose
list-flows.jsList all flows
create-flow.jsCreate a new flow
get-flow.jsGet flow details
read-flow-json.jsRead flow JSON
update-flow-json.jsUpdate flow JSON (creates new version)
publish-flow.jsPublish a flow
get-data-endpoint.jsGet data endpoint config
set-data-endpoint.jsCreate/update data endpoint code
deploy-data-endpoint.jsDeploy data endpoint
register-data-endpoint.jsRegister data endpoint with Meta
get-encryption-status.jsCheck encryption status
setup-encryption.jsSet up flow encryption
send-test-flow.jsSend a test flow message
delete-flow.jsDelete a flow
list-flow-responses.jsList stored flow responses
list-function-logs.jsList function logs
list-function-invocations.jsList function invocations

OpenAPI

ScriptPurpose
openapi-explore.mjsExplore OpenAPI (search/op/schema/where)

Examples:

node scripts/openapi-explore.mjs --spec whatsapp search "template"
node scripts/openapi-explore.mjs --spec whatsapp op sendMessage
node scripts/openapi-explore.mjs --spec whatsapp schema TemplateMessage
node scripts/openapi-explore.mjs --spec platform ops --tag "WhatsApp Flows"
node scripts/openapi-explore.mjs --spec platform op setupWhatsappFlowEncryption
node scripts/openapi-explore.mjs --spec platform search "setup link"

Assets

FileDescription
template-utility-order-status-update.jsonUTILITY template with named params + URL button
send-template-order-status-update.jsonSend-time payload for order_status_update
template-utility-named.jsonUTILITY template showing button ordering rules
template-marketing-media-header.jsonMARKETING template with IMAGE header
template-authentication-otp.jsonAUTHENTICATION OTP template (COPY_CODE)
send-interactive-buttons.jsonInteractive button message
send-interactive-list.jsonInteractive list message
send-interactive-cta-url.jsonInteractive CTA URL message
send-interactive-location-request.jsonLocation request message
send-interactive-catalog-message.jsonCatalog message
sample-flow.jsonStatic flow example (no endpoint)
dynamic-flow.jsonDynamic flow example (with endpoint)
webhooks-example.jsonWebhook create/update payload example

References

Related skills

  • automate-whatsapp - Workflows, agents, and automations
  • observe-whatsapp - Debugging, logs, health checks
[integrate-whatsapp file map]|root: .
|.:{package.json,SKILL.md}
|assets:{dynamic-flow.json,sample-flow.json,send-interactive-buttons.json,send-interactive-catalog-message.json,send-interactive-cta-url.json,send-interactive-list.json,send-interactive-location-request.json,send-template-order-status-update.json,template-authentication-otp.json,template-marketing-media-header.json,template-utility-named.json,template-utility-order-status-update.json,webhooks-example.json}
|references:{detecting-whatsapp-connection.md,getting-started.md,platform-api-reference.md,setup-links.md,templates-reference.md,webhooks-event-types.md,webhooks-overview.md,webhooks-reference.md,whatsapp-api-reference.md,whatsapp-cloud-api-js.md,whatsapp-flows-spec.md}
|scripts:{create-flow.js,create-function.js,create-template.mjs,create.js,delete-flow.js,delete.js,deploy-data-endpoint.js,deploy-function.js,get-data-endpoint.js,get-encryption-status.js,get-flow.js,get-function.js,get.js,list-connected-numbers.mjs,list-flow-responses.js,list-flows.js,list-function-invocations.js,list-function-logs.js,list-platform-phone-numbers.mjs,list-templates.mjs,list.js,openapi-explore.mjs,publish-flow.js,read-flow-json.js,register-data-endpoint.js,send-interactive.mjs,send-template.mjs,send-test-flow.js,set-data-endpoint.js,setup-encryption.js,submit-template.mjs,template-status.mjs,test.js,update-flow-json.js,update-function.js,update-template.mjs,update.js,upload-media.mjs,upload-template-header-handle.mjs}
|scripts/lib:{args.mjs,cli.js,env.js,env.mjs,http.js,output.js,output.mjs,request.mjs,run.js,whatsapp-flow.js}
|scripts/lib/webhooks:{args.js,kapso-api.js,webhook.js}

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

36.93%
按下载量换算4,219

Claude

30.61%
按下载量换算3,497

Cursor

18.15%
按下载量换算2,073

Gemini CLI

9.15%
按下载量换算1,045

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills