Dialogflow CX to CES Migration

v1.0.0

Full production-grade migration of a Dialogflow CX agent (v3beta1) to Google Customer Engagement Suite (CES) Conversational Agents. Migrates flows→sub-agents...

0· 39·0 current·0 all-time
byYash Kavaiya@yash-kavaiya
MIT-0
Download zip
LicenseMIT-0 · Free to use, modify, and redistribute. No attribution required.
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the included code and outputs. The code uses the Dialogflow CX client libraries to list agents, flows, pages, intents, entity types, webhooks and test cases and produces CES-formatted JSON/CSV reports. Requiring Python, the google-cloud-dialogflow-cx libraries, and gcloud (for ADC auth) is proportionate.
Instruction Scope
SKILL.md instructs running migrate.py with a GCP project and agent ID and to authenticate via gcloud application-default login — which matches the code's use of google.auth.default(). The tool writes full agent exports to disk (ces_agent.json, entity_types.json, golden_evals.csv, migration_report.md) and will therefore surface webhook URIs and other agent configuration; this is expected for a migration but may disclose sensitive endpoints/config to whoever has access to the output directory.
Install Mechanism
No install spec or network downloads are present. The skill bundles Python source files and migration output artifacts; runtime dependencies are standard Python packages (declared in SKILL.md) and no external arbitrary downloads or extraction steps occur.
Credentials
The tool requires Google application-default credentials (gcloud ADC), which is appropriate for reading Dialogflow CX resources. It does not request unrelated credentials or extra environment variables. There are no hidden env-var accesses in the code review.
Persistence & Privilege
The skill is not always-enabled and does not request persistent platform privileges or modify other skills. It runs as a one-off migration tool using provided GCP credentials; that level of access is appropriate for its purpose.
Assessment
This tool is coherent with its stated purpose. Before running it: (1) authenticate with gcloud application-default login in a secure context (it will use those credentials to read your Dialogflow CX agent), (2) run the --dry-run first to preview outputs, (3) be aware that the exported files include webhook endpoints and full agent configuration—treat migration_output as sensitive and don't share it publicly, and (4) review and reconfigure webhook auth (OAuth/mTLS) in CES after import because credentials are not migrated.

Like a lobster shell, security has layers — review code before you run it.

cesvk971wkc8rst8ektefeae5wftb983xzdddialogflowvk971wkc8rst8ektefeae5wftb983xzddgoogle-cloudvk971wkc8rst8ektefeae5wftb983xzddlatestvk971wkc8rst8ektefeae5wftb983xzddmigrationvk971wkc8rst8ektefeae5wftb983xzdd

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

Runtime requirements

Binspython, gcloud

SKILL.md

Dialogflow CX → CES Migration Skill

What This Skill Does

Migrates a Dialogflow CX v3beta1 agent to Google Customer Engagement Suite (CES) Conversational Agents format, producing:

Output FileContents
ces_agent.jsonCES agent definition (importable via Console or REST API)
golden_evals.csvCES batch evaluation CSV (golden test cases)
entity_types.jsonEntity type definitions for manual re-creation
migration_report.mdFull migration summary with next steps

Migration Mapping

Dialogflow CXCES Conversational Agents
AgentAgent Application + Root Agent
Flow (non-default)Sub-Agent
Pages + RoutesAgent Instructions (natural language)
Intent training phrasesRoot agent routing hints
Entity TypesExported JSON (manual import)
WebhookTool (OpenAPI schema)
Form ParametersInstruction slot-filling steps
Test CasesGolden Evaluations CSV

Prerequisites

  1. GCP Auth: gcloud auth application-default login
  2. Project access: Dialogflow CX API enabled on the project
  3. Python: 3.10+
  4. Packages: pip install google-cloud-dialogflow-cx google-auth

Usage

Run Migration

python migrate.py \
  --project YOUR_PROJECT_ID \
  --agent-id YOUR_AGENT_UUID \
  --output ./migration_output

Dry Run (fetch + preview, no files written)

python migrate.py \
  --project YOUR_PROJECT_ID \
  --agent-id YOUR_AGENT_UUID \
  --dry-run

Custom location (non-global agents)

python migrate.py \
  --project YOUR_PROJECT_ID \
  --agent-id YOUR_AGENT_UUID \
  --location us-central1 \
  --output ./migration_output

Example (carconnect agent)

python migrate.py \
  --project genaiguruyoutube \
  --agent-id 3736c564-5b3b-4f93-bbb2-367e7f04e4e8 \
  --output ./carconnect_ces

Expected output:

  • 14 flows → 13 sub-agents + root agent enrichment
  • 31 intents → root routing hints
  • 5 entity types → exported JSON
  • 2 webhooks → 2 OpenAPI tools
  • Test cases → golden_evals.csv

Post-Migration Steps

  1. Review ces_agent.json — check sub-agent instructions make sense, update tool endpoints
  2. Import into CES Console:
  3. Upload Golden Evals:
    • Evaluate tab → + Add test case → Golden → Upload file → select golden_evals.csv
  4. Re-create Entity Types from entity_types.json (CES uses them as tool parameters)
  5. Update webhook endpoints in the Tools section of your CES agent
  6. Run evaluation suite → review pass rates → iterate on instructions

Retry Logic

All Google API calls use exponential backoff (up to 4 attempts, base delay 1.5s × 2ⁿ). If the API is rate-limited or temporarily unavailable, the tool retries automatically.

Limitations & Known Gaps

  • Rich response types (carousels, chips, images) are converted to text messages. Update manually in CES.
  • Conditional routes using session parameter syntax ($session.params.X) are preserved as-is in instructions but may need updating for CES parameter syntax.
  • DTMF / telephony settings are not migrated (CES has different telephony config).
  • Entity type import: CES does not have a direct batch import API for entity types — use the exported JSON as reference to create them manually or via REST.
  • Webhook auth: OAuth and mTLS configs are noted but credentials must be re-configured in CES.

Autoresearch Evals (binary pass/fail)

When running autoresearch on this skill, use these evals:

  1. EVAL_FLOWS: All non-default flows appear as sub-agents in ces_agent.json?
  2. EVAL_TOOLS: All webhooks appear as tools with OpenAPI schemas in ces_agent.json?
  3. EVAL_ENTITIES: All entity types exported to entity_types.json?
  4. EVAL_EVALS_CSV: golden_evals.csv has correct header + at least one golden eval row?
  5. EVAL_INSTRUCTIONS: Each sub-agent has non-empty instructions?
  6. EVAL_REPORT: migration_report.md exists and contains a stats table?

Files

8 total
Select a file
Select a file to preview.

Comments

Loading comments…