Dialogflow CX to CES Migration
v1.0.0Full production-grade migration of a Dialogflow CX agent (v3beta1) to Google Customer Engagement Suite (CES) Conversational Agents. Migrates flows→sub-agents...
MIT-0
Security Scan
OpenClaw
Benign
high confidencePurpose & 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.
cesdialogflowgoogle-cloudlatestmigration
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 File | Contents |
|---|---|
ces_agent.json | CES agent definition (importable via Console or REST API) |
golden_evals.csv | CES batch evaluation CSV (golden test cases) |
entity_types.json | Entity type definitions for manual re-creation |
migration_report.md | Full migration summary with next steps |
Migration Mapping
| Dialogflow CX | → | CES Conversational Agents |
|---|---|---|
| Agent | → | Agent Application + Root Agent |
| Flow (non-default) | → | Sub-Agent |
| Pages + Routes | → | Agent Instructions (natural language) |
| Intent training phrases | → | Root agent routing hints |
| Entity Types | → | Exported JSON (manual import) |
| Webhook | → | Tool (OpenAPI schema) |
| Form Parameters | → | Instruction slot-filling steps |
| Test Cases | → | Golden Evaluations CSV |
Prerequisites
- GCP Auth:
gcloud auth application-default login - Project access: Dialogflow CX API enabled on the project
- Python: 3.10+
- 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
- Review
ces_agent.json— check sub-agent instructions make sense, update tool endpoints - Import into CES Console:
- Go to ces.cloud.google.com
- Select project → Import Agent → Upload
ces_agent.json
- Upload Golden Evals:
- Evaluate tab → + Add test case → Golden → Upload file → select
golden_evals.csv
- Evaluate tab → + Add test case → Golden → Upload file → select
- Re-create Entity Types from
entity_types.json(CES uses them as tool parameters) - Update webhook endpoints in the Tools section of your CES agent
- 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:
- EVAL_FLOWS: All non-default flows appear as sub-agents in
ces_agent.json? - EVAL_TOOLS: All webhooks appear as tools with OpenAPI schemas in
ces_agent.json? - EVAL_ENTITIES: All entity types exported to
entity_types.json? - EVAL_EVALS_CSV:
golden_evals.csvhas correct header + at least one golden eval row? - EVAL_INSTRUCTIONS: Each sub-agent has non-empty instructions?
- EVAL_REPORT:
migration_report.mdexists and contains a stats table?
Files
8 totalSelect a file
Select a file to preview.
Comments
Loading comments…
