automate-whatsapp

利用Kapso工作流构建WhatsApp自动化:配置WhatsApp触发器、编辑流程图、管理执行过程、部署功能模块,并通过数据库/集成工具维护状态信息。适用于自动化WhatsApp对话及事件处理场景。

查看详情
name:automate-whatsappdescription:"Build WhatsApp automations with Kapso workflows: configure WhatsApp triggers, edit workflow graphs, manage executions, deploy functions, and use databases/integrations for state. Use when automating WhatsApp conversations and event handling."source:"https://github.com/gokapso/agent-skills/tree/master/skills/automate-whatsapp"risk:safe

Automate WhatsApp

When to use

Use this skill to build and run WhatsApp automations: workflow CRUD, graph edits, triggers, executions, function management, app integrations, and D1 database operations.

Setup

Env vars:

  • KAPSO_API_BASE_URL (host only, no /platform/v1)

  • KAPSO_API_KEY
  • How to

    Edit a workflow graph

  • Fetch graph: node scripts/get-graph.js (note the lock_version)

  • Edit the JSON (see graph rules below)

  • Validate: node scripts/validate-graph.js --definition-file

  • Update: node scripts/update-graph.js --expected-lock-version --definition-file

  • Re-fetch to confirm
  • For small edits, use edit-graph.js with --old-file and --new-file instead.

    If you get a lock_version conflict: re-fetch, re-apply changes, retry with new lock_version.

    Manage triggers

  • List: node scripts/list-triggers.js

  • Create: node scripts/create-trigger.js --trigger-type --phone-number-id

  • Toggle: node scripts/update-trigger.js --trigger-id --active true|false

  • Delete: node scripts/delete-trigger.js --trigger-id
  • For inbound_message triggers, first run node scripts/list-whatsapp-phone-numbers.js to get phone_number_id.

    Debug executions

  • List: node scripts/list-executions.js

  • Inspect: node scripts/get-execution.js

  • Get value: node scripts/get-context-value.js --variable-path vars.foo

  • Events: node scripts/list-execution-events.js
  • Create and deploy a function

  • Write code with handler signature (see function rules below)

  • Create: node scripts/create-function.js --name --code-file

  • Deploy: node scripts/deploy-function.js --function-id

  • Verify: node scripts/get-function.js --function-id
  • Set up agent node with app integrations

  • Find model: node scripts/list-provider-models.js

  • Find account: node scripts/list-accounts.js --app-slug (use pipedream_account_id)

  • Find action: node scripts/search-actions.js --query --app-slug (action_id = key)

  • Create integration: node scripts/create-integration.js --action-id --app-slug --account-id --configured-props

  • Add tools to agent node via flow_agent_app_integration_tools
  • Database CRUD

  • List tables: node scripts/list-tables.js

  • Query: node scripts/query-rows.js --table --filters

  • Create/update/delete with row scripts
  • Graph rules

  • Exactly one start node with id = start

  • Never change existing node IDs

  • Use {node_type}_{timestamp_ms} for new node IDs

  • Non-decide nodes have 0 or 1 outgoing next edge

  • Decide edge labels must match conditions[].label

  • Edge keys are source/target/label (not from/to)
  • For full schema details, see references/graph-contract.md.

    Function rules

    async function handler(request, env) {
    // Parse input
    const body = await request.json();
    // Use env.KV and env.DB as needed
    return new Response(JSON.stringify({ result: "ok" }));
    }

  • Do NOT use export, export default, or arrow functions

  • Return a Response object
  • Execution context

    Always use this structure:

  • vars - user-defined variables

  • system - system variables

  • context - channel data

  • metadata - request metadata
  • Scripts

    Workflows

    ScriptPurpose
    list-workflows.jsList workflows (metadata only)
    get-workflow.jsGet workflow metadata
    create-workflow.jsCreate a workflow
    update-workflow-settings.jsUpdate workflow settings

    Graph

    ScriptPurpose
    get-graph.jsGet workflow graph + lock_version
    edit-graph.jsPatch graph via string replacement
    update-graph.jsReplace entire graph
    validate-graph.jsValidate graph structure locally

    Triggers

    ScriptPurpose
    list-triggers.jsList triggers for a workflow
    create-trigger.jsCreate a trigger
    update-trigger.jsEnable/disable a trigger
    delete-trigger.jsDelete a trigger
    list-whatsapp-phone-numbers.jsList phone numbers for trigger setup

    Executions

    ScriptPurpose
    list-executions.jsList executions
    get-execution.jsGet execution details
    get-context-value.jsRead value from execution context
    update-execution-status.jsForce execution state
    resume-execution.jsResume waiting execution
    list-execution-events.jsList execution events

    Functions

    ScriptPurpose
    list-functions.jsList project functions
    get-function.jsGet function details + code
    create-function.jsCreate a function
    update-function.jsUpdate function code
    deploy-function.jsDeploy function to runtime
    invoke-function.jsInvoke function with payload
    list-function-invocations.jsList function invocations

    App integrations

    ScriptPurpose
    list-apps.jsSearch integration apps
    search-actions.jsSearch actions (action_id = key)
    get-action-schema.jsGet action JSON schema
    list-accounts.jsList connected accounts
    create-connect-token.jsCreate OAuth connect link
    configure-prop.jsResolve remote_options for a prop
    reload-props.jsReload dynamic props
    list-integrations.jsList saved integrations
    create-integration.jsCreate an integration
    update-integration.jsUpdate an integration
    delete-integration.jsDelete an integration

    Databases

    ScriptPurpose
    list-tables.jsList D1 tables
    get-table.jsGet table schema + sample rows
    query-rows.jsQuery rows with filters
    create-row.jsCreate a row
    update-row.jsUpdate rows
    upsert-row.jsUpsert a row
    delete-row.jsDelete rows

    OpenAPI

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

    Install deps (once):

    npm i

    Examples:

    node scripts/openapi-explore.mjs --spec workflows search "variables"
    node scripts/openapi-explore.mjs --spec workflows op getWorkflowVariables
    node scripts/openapi-explore.mjs --spec platform op queryDatabaseRows

    Notes

  • Prefer file paths over inline JSON (--definition-file, --code-file)

  • action_id is the same as key from search-actions

  • --account-id uses pipedream_account_id from list-accounts

  • Variable CRUD (variables-set.js, variables-delete.js) is blocked - Platform API doesn't support it

  • Raw SQL execution is not supported via Platform API
  • References

    Read before editing:

  • references/graph-contract.md - Graph schema, computed vs editable fields, lock_version

  • references/node-types.md - Node types and config shapes

  • references/workflow-overview.md - Execution flow and states
  • Other references:

  • references/execution-context.md - Context structure and variable substitution

  • references/triggers.md - Trigger types and setup

  • references/app-integrations.md - App integration and variable_definitions

  • references/functions-reference.md - Function management

  • references/functions-payloads.md - Payload shapes for functions

  • references/databases-reference.md - Database operations
  • Assets

    FileDescription
    workflow-linear.jsonMinimal linear workflow
    workflow-decision.jsonMinimal branching workflow
    workflow-agent-simple.jsonMinimal agent workflow
    workflow-customer-support-intake-agent.jsonCustomer support intake
    workflow-interactive-buttons-decide-function.jsonInteractive buttons + decide (function)
    workflow-interactive-buttons-decide-ai.jsonInteractive buttons + decide (AI)
    workflow-api-template-wait-agent.jsonAPI trigger + template + agent
    function-decide-route-interactive-buttons.jsonFunction for button routing
    agent-app-integration-example.jsonAgent node with app integrations

    Related skills

  • integrate-whatsapp - Onboarding, webhooks, messaging, templates, flows

  • observe-whatsapp - Debugging, logs, health checks

  • [automate-whatsapp file map]|root: .
    |.:{package.json,SKILL.md}
    |assets:{agent-app-integration-example.json,databases-example.json,function-decide-route-interactive-buttons.json,functions-example.json,workflow-agent-simple.json,workflow-api-template-wait-agent.json,workflow-customer-support-intake-agent.json,workflow-decision.json,workflow-interactive-buttons-decide-ai.json,workflow-interactive-buttons-decide-function.json,workflow-linear.json}
    |references:{app-integrations.md,databases-reference.md,execution-context.md,function-contracts.md,functions-payloads.md,functions-reference.md,graph-contract.md,node-types.md,triggers.md,workflow-overview.md,workflow-reference.md}
    |scripts:{configure-prop.js,create-connect-token.js,create-function.js,create-integration.js,create-row.js,create-trigger.js,create-workflow.js,delete-integration.js,delete-row.js,delete-trigger.js,deploy-function.js,edit-graph.js,get-action-schema.js,get-context-value.js,get-execution-event.js,get-execution.js,get-function.js,get-graph.js,get-table.js,get-workflow.js,invoke-function.js,list-accounts.js,list-apps.js,list-execution-events.js,list-executions.js,list-function-invocations.js,list-functions.js,list-integrations.js,list-provider-models.js,list-tables.js,list-triggers.js,list-whatsapp-phone-numbers.js,list-workflows.js,openapi-explore.mjs,query-rows.js,reload-props.js,resume-execution.js,search-actions.js,update-execution-status.js,update-function.js,update-graph.js,update-integration.js,update-row.js,update-trigger.js,update-workflow-settings.js,upsert-row.js,validate-graph.js,variables-delete.js,variables-list.js,variables-set.js}
    |scripts/lib/databases:{args.js,filters.js,kapso-api.js}
    |scripts/lib/functions:{args.js,kapso-api.js}
    |scripts/lib/workflows:{args.js,kapso-api.js,result.js}