wxcli 1.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- wxcli/__init__.py +4 -0
- wxcli/_playbook/.claude/agents/migration-advisor.md +239 -0
- wxcli/_playbook/.claude/agents/wxc-calling-builder.md +946 -0
- wxcli/_playbook/.claude/rules/cleanup.md +29 -0
- wxcli/_playbook/.claude/rules/cucm-migration.md +58 -0
- wxcli/_playbook/.claude/rules/org-health.md +14 -0
- wxcli/_playbook/.claude/settings.json +8 -0
- wxcli/_playbook/.claude/skills/audit-compliance/SKILL.md +515 -0
- wxcli/_playbook/.claude/skills/call-control/SKILL.md +747 -0
- wxcli/_playbook/.claude/skills/configure-features/SKILL.md +623 -0
- wxcli/_playbook/.claude/skills/configure-routing/SKILL.md +627 -0
- wxcli/_playbook/.claude/skills/contact-center/SKILL.md +1181 -0
- wxcli/_playbook/.claude/skills/cucm-migrate/SKILL.md +820 -0
- wxcli/_playbook/.claude/skills/customer-assist/SKILL.md +443 -0
- wxcli/_playbook/.claude/skills/device-platform/SKILL.md +407 -0
- wxcli/_playbook/.claude/skills/manage-call-settings/SKILL.md +757 -0
- wxcli/_playbook/.claude/skills/manage-devices/SKILL.md +790 -0
- wxcli/_playbook/.claude/skills/manage-identity/SKILL.md +638 -0
- wxcli/_playbook/.claude/skills/manage-licensing/SKILL.md +528 -0
- wxcli/_playbook/.claude/skills/manage-meetings/SKILL.md +708 -0
- wxcli/_playbook/.claude/skills/messaging-bots/SKILL.md +365 -0
- wxcli/_playbook/.claude/skills/messaging-spaces/SKILL.md +520 -0
- wxcli/_playbook/.claude/skills/org-health/SKILL.md +159 -0
- wxcli/_playbook/.claude/skills/provision-calling/SKILL.md +421 -0
- wxcli/_playbook/.claude/skills/query-live/SKILL.md +183 -0
- wxcli/_playbook/.claude/skills/query-live/domains/call-flow-trace.md +223 -0
- wxcli/_playbook/.claude/skills/query-live/domains/call-history.md +44 -0
- wxcli/_playbook/.claude/skills/query-live/domains/features.md +169 -0
- wxcli/_playbook/.claude/skills/query-live/domains/numbers.md +93 -0
- wxcli/_playbook/.claude/skills/query-live/domains/people-and-settings.md +146 -0
- wxcli/_playbook/.claude/skills/query-live/domains/routing.md +124 -0
- wxcli/_playbook/.claude/skills/reporting/SKILL.md +501 -0
- wxcli/_playbook/.claude/skills/reporting/references/cdr-recipes.md +1628 -0
- wxcli/_playbook/.claude/skills/reporting-cc/SKILL.md +251 -0
- wxcli/_playbook/.claude/skills/reporting-meetings/SKILL.md +290 -0
- wxcli/_playbook/.claude/skills/teardown/SKILL.md +214 -0
- wxcli/_playbook/.claude/skills/video-mesh/SKILL.md +379 -0
- wxcli/_playbook/.claude/skills/wxc-calling-debug/SKILL.md +475 -0
- wxcli/_playbook/CLAUDE.md +373 -0
- wxcli/_playbook/docs/reference/CLAUDE.md +25 -0
- wxcli/_playbook/docs/reference/admin-apps-data.md +643 -0
- wxcli/_playbook/docs/reference/admin-audit-security.md +322 -0
- wxcli/_playbook/docs/reference/admin-hybrid.md +383 -0
- wxcli/_playbook/docs/reference/admin-identity-scim.md +1007 -0
- wxcli/_playbook/docs/reference/admin-licensing.md +414 -0
- wxcli/_playbook/docs/reference/admin-org-management.md +586 -0
- wxcli/_playbook/docs/reference/admin-partner.md +357 -0
- wxcli/_playbook/docs/reference/archive/wxc-sdk-patterns.md +1229 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-advanced.md +835 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-core.md +743 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-devices-workspaces.md +1305 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-features.md +849 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-locations.md +938 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-person.md +1255 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-routing.md +1262 -0
- wxcli/_playbook/docs/reference/authentication.md +965 -0
- wxcli/_playbook/docs/reference/call-control.md +1205 -0
- wxcli/_playbook/docs/reference/call-features-additional.md +2541 -0
- wxcli/_playbook/docs/reference/call-features-major.md +1320 -0
- wxcli/_playbook/docs/reference/call-routing.md +2304 -0
- wxcli/_playbook/docs/reference/contact-center-analytics.md +1049 -0
- wxcli/_playbook/docs/reference/contact-center-core.md +1614 -0
- wxcli/_playbook/docs/reference/contact-center-journey.md +457 -0
- wxcli/_playbook/docs/reference/contact-center-routing.md +1138 -0
- wxcli/_playbook/docs/reference/devices-core.md +1869 -0
- wxcli/_playbook/docs/reference/devices-dect.md +1150 -0
- wxcli/_playbook/docs/reference/devices-platform.md +467 -0
- wxcli/_playbook/docs/reference/devices-workspaces.md +1426 -0
- wxcli/_playbook/docs/reference/emergency-services.md +1122 -0
- wxcli/_playbook/docs/reference/location-calling-core.md +2037 -0
- wxcli/_playbook/docs/reference/location-calling-media.md +1334 -0
- wxcli/_playbook/docs/reference/location-recording-advanced.md +1482 -0
- wxcli/_playbook/docs/reference/meetings-content.md +473 -0
- wxcli/_playbook/docs/reference/meetings-core.md +903 -0
- wxcli/_playbook/docs/reference/meetings-infrastructure.md +899 -0
- wxcli/_playbook/docs/reference/meetings-settings.md +850 -0
- wxcli/_playbook/docs/reference/messaging-bots.md +1091 -0
- wxcli/_playbook/docs/reference/messaging-spaces.md +695 -0
- wxcli/_playbook/docs/reference/person-call-settings-behavior.md +1639 -0
- wxcli/_playbook/docs/reference/person-call-settings-handling.md +1394 -0
- wxcli/_playbook/docs/reference/person-call-settings-media.md +1898 -0
- wxcli/_playbook/docs/reference/person-call-settings-permissions.md +1329 -0
- wxcli/_playbook/docs/reference/provisioning.md +1366 -0
- wxcli/_playbook/docs/reference/reporting-analytics.md +1318 -0
- wxcli/_playbook/docs/reference/self-service-call-settings.md +1020 -0
- wxcli/_playbook/docs/reference/virtual-lines.md +1132 -0
- wxcli/_playbook/docs/reference/webhooks-events.md +1444 -0
- wxcli/_playbook/docs/reference/wxcadm-xsi-realtime.md +953 -0
- wxcli/_version.py +24 -0
- wxcli/auth.py +137 -0
- wxcli/commands/__init__.py +0 -0
- wxcli/commands/_registry.py +181 -0
- wxcli/commands/activation_email.py +103 -0
- wxcli/commands/admin_recordings.py +585 -0
- wxcli/commands/analytics.py +105 -0
- wxcli/commands/announcement_playlists.py +219 -0
- wxcli/commands/announcements.py +519 -0
- wxcli/commands/archive_users.py +36 -0
- wxcli/commands/attachment_actions.py +60 -0
- wxcli/commands/audit_events.py +83 -0
- wxcli/commands/authorizations.py +113 -0
- wxcli/commands/auto_attendant.py +642 -0
- wxcli/commands/broadworks_billing_reports.py +126 -0
- wxcli/commands/broadworks_enterprises.py +160 -0
- wxcli/commands/broadworks_subscribers.py +319 -0
- wxcli/commands/broadworks_workspaces.py +108 -0
- wxcli/commands/call_controls.py +1304 -0
- wxcli/commands/call_park.py +494 -0
- wxcli/commands/call_pickup.py +229 -0
- wxcli/commands/call_queue.py +1878 -0
- wxcli/commands/call_recording.py +707 -0
- wxcli/commands/call_routing.py +1610 -0
- wxcli/commands/call_settings_for_me_phase_5.py +212 -0
- wxcli/commands/caller_reputation.py +169 -0
- wxcli/commands/calling_service.py +305 -0
- wxcli/commands/cc_address_book.py +770 -0
- wxcli/commands/cc_agent_greetings.py +242 -0
- wxcli/commands/cc_agent_summaries.py +39 -0
- wxcli/commands/cc_agent_wellbeing.py +216 -0
- wxcli/commands/cc_agents.py +425 -0
- wxcli/commands/cc_ai_assistant.py +55 -0
- wxcli/commands/cc_ai_feature.py +294 -0
- wxcli/commands/cc_audio_files.py +149 -0
- wxcli/commands/cc_auto_csat.py +311 -0
- wxcli/commands/cc_aux_code.py +458 -0
- wxcli/commands/cc_business_hour.py +353 -0
- wxcli/commands/cc_call_monitoring.py +228 -0
- wxcli/commands/cc_callbacks.py +194 -0
- wxcli/commands/cc_campaign.py +212 -0
- wxcli/commands/cc_captures.py +39 -0
- wxcli/commands/cc_contact_list.py +169 -0
- wxcli/commands/cc_contact_number.py +295 -0
- wxcli/commands/cc_data_sources.py +235 -0
- wxcli/commands/cc_desktop_layout.py +380 -0
- wxcli/commands/cc_desktop_profile.py +322 -0
- wxcli/commands/cc_dial_number.py +511 -0
- wxcli/commands/cc_dial_plan.py +347 -0
- wxcli/commands/cc_dnc.py +101 -0
- wxcli/commands/cc_entry_point.py +545 -0
- wxcli/commands/cc_ewt.py +51 -0
- wxcli/commands/cc_flow.py +477 -0
- wxcli/commands/cc_global_vars.py +430 -0
- wxcli/commands/cc_holiday_list.py +335 -0
- wxcli/commands/cc_journey.py +1261 -0
- wxcli/commands/cc_legacy_flows.py +49 -0
- wxcli/commands/cc_multimedia_profile.py +436 -0
- wxcli/commands/cc_notification.py +51 -0
- wxcli/commands/cc_outdial_ani.py +604 -0
- wxcli/commands/cc_overrides.py +341 -0
- wxcli/commands/cc_queue.py +1083 -0
- wxcli/commands/cc_queue_stats.py +55 -0
- wxcli/commands/cc_realtime.py +51 -0
- wxcli/commands/cc_resource_collection.py +312 -0
- wxcli/commands/cc_search.py +46 -0
- wxcli/commands/cc_site.py +400 -0
- wxcli/commands/cc_skill.py +350 -0
- wxcli/commands/cc_skill_profile.py +289 -0
- wxcli/commands/cc_subscriptions.py +426 -0
- wxcli/commands/cc_summaries.py +130 -0
- wxcli/commands/cc_tasks.py +844 -0
- wxcli/commands/cc_team.py +325 -0
- wxcli/commands/cc_user_profiles.py +349 -0
- wxcli/commands/cc_users.py +701 -0
- wxcli/commands/cc_work_types.py +363 -0
- wxcli/commands/cdr.py +89 -0
- wxcli/commands/classifications.py +38 -0
- wxcli/commands/cleanup.py +1427 -0
- wxcli/commands/client_settings.py +72 -0
- wxcli/commands/conference.py +328 -0
- wxcli/commands/configure.py +72 -0
- wxcli/commands/converged_recordings.py +347 -0
- wxcli/commands/converged_recordings_export.py +310 -0
- wxcli/commands/cq_playlists.py +42 -0
- wxcli/commands/cucm.py +2794 -0
- wxcli/commands/cucm_config.py +129 -0
- wxcli/commands/customer_assist.py +373 -0
- wxcli/commands/data_sources.py +227 -0
- wxcli/commands/dect_devices.py +787 -0
- wxcli/commands/device_configurations.py +77 -0
- wxcli/commands/device_dynamic_settings.py +320 -0
- wxcli/commands/device_settings.py +1489 -0
- wxcli/commands/devices.py +280 -0
- wxcli/commands/domains.py +142 -0
- wxcli/commands/ecm.py +178 -0
- wxcli/commands/emergency_services.py +827 -0
- wxcli/commands/events.py +83 -0
- wxcli/commands/external_voicemail.py +52 -0
- wxcli/commands/groups.py +206 -0
- wxcli/commands/guest_management.py +76 -0
- wxcli/commands/hds.py +340 -0
- wxcli/commands/hot_desk.py +67 -0
- wxcli/commands/hot_desking_members.py +118 -0
- wxcli/commands/hot_desking_portal.py +124 -0
- wxcli/commands/hunt_group.py +577 -0
- wxcli/commands/hybrid_clusters.py +71 -0
- wxcli/commands/hybrid_connectors.py +67 -0
- wxcli/commands/identity_org.py +159 -0
- wxcli/commands/init_playbook.py +155 -0
- wxcli/commands/licenses.py +106 -0
- wxcli/commands/live_monitoring.py +40 -0
- wxcli/commands/location_call_handling.py +577 -0
- wxcli/commands/location_schedules.py +341 -0
- wxcli/commands/location_settings.py +1297 -0
- wxcli/commands/location_voicemail.py +494 -0
- wxcli/commands/locations.py +336 -0
- wxcli/commands/meeting_captions.py +110 -0
- wxcli/commands/meeting_chats.py +63 -0
- wxcli/commands/meeting_invitees.py +234 -0
- wxcli/commands/meeting_messages.py +28 -0
- wxcli/commands/meeting_participants.py +278 -0
- wxcli/commands/meeting_polls.py +111 -0
- wxcli/commands/meeting_preferences.py +515 -0
- wxcli/commands/meeting_qa.py +78 -0
- wxcli/commands/meeting_qualities.py +43 -0
- wxcli/commands/meeting_reports.py +101 -0
- wxcli/commands/meeting_session_types.py +105 -0
- wxcli/commands/meeting_site.py +57 -0
- wxcli/commands/meeting_slido.py +44 -0
- wxcli/commands/meeting_summaries.py +92 -0
- wxcli/commands/meeting_tracking_codes.py +233 -0
- wxcli/commands/meeting_transcripts.py +230 -0
- wxcli/commands/meetings.py +1997 -0
- wxcli/commands/memberships.py +164 -0
- wxcli/commands/messages.py +213 -0
- wxcli/commands/mode_management.py +244 -0
- wxcli/commands/my_call_settings.py +3577 -0
- wxcli/commands/numbers.py +405 -0
- wxcli/commands/operating_modes.py +410 -0
- wxcli/commands/org_contacts.py +284 -0
- wxcli/commands/org_health_cli.py +55 -0
- wxcli/commands/org_settings.py +71 -0
- wxcli/commands/organizations.py +83 -0
- wxcli/commands/paging_group.py +257 -0
- wxcli/commands/partner_admins.py +141 -0
- wxcli/commands/partner_reports.py +188 -0
- wxcli/commands/partner_tags.py +216 -0
- wxcli/commands/people.py +279 -0
- wxcli/commands/person_call_settings.py +71 -0
- wxcli/commands/pstn.py +280 -0
- wxcli/commands/recording_report.py +154 -0
- wxcli/commands/report_templates.py +38 -0
- wxcli/commands/reports.py +144 -0
- wxcli/commands/resource_group_memberships.py +160 -0
- wxcli/commands/resource_groups.py +67 -0
- wxcli/commands/roles.py +63 -0
- wxcli/commands/room_tabs.py +160 -0
- wxcli/commands/rooms.py +225 -0
- wxcli/commands/scim_bulk.py +46 -0
- wxcli/commands/scim_groups.py +246 -0
- wxcli/commands/scim_schemas.py +82 -0
- wxcli/commands/scim_users.py +283 -0
- wxcli/commands/security_audit.py +54 -0
- wxcli/commands/service_apps.py +51 -0
- wxcli/commands/single_number_reach.py +209 -0
- wxcli/commands/team_memberships.py +155 -0
- wxcli/commands/teams.py +153 -0
- wxcli/commands/ucm_profile.py +42 -0
- wxcli/commands/update.py +219 -0
- wxcli/commands/user_settings.py +5116 -0
- wxcli/commands/video_mesh.py +1090 -0
- wxcli/commands/virtual_extensions.py +502 -0
- wxcli/commands/virtual_line_settings.py +2072 -0
- wxcli/commands/webhooks.py +176 -0
- wxcli/commands/wholesale_billing_reports.py +147 -0
- wxcli/commands/wholesale_provisioning.py +523 -0
- wxcli/commands/workspace_locations.py +339 -0
- wxcli/commands/workspace_metrics.py +103 -0
- wxcli/commands/workspace_personalization.py +70 -0
- wxcli/commands/workspace_settings.py +3347 -0
- wxcli/commands/workspaces.py +279 -0
- wxcli/commands/xapi.py +114 -0
- wxcli/config.py +139 -0
- wxcli/errors.py +77 -0
- wxcli/main.py +210 -0
- wxcli/migration/CLAUDE.md +106 -0
- wxcli/migration/__init__.py +1 -0
- wxcli/migration/advisory/CLAUDE.md +196 -0
- wxcli/migration/advisory/__init__.py +46 -0
- wxcli/migration/advisory/advisor.py +107 -0
- wxcli/migration/advisory/advisory_patterns.py +2552 -0
- wxcli/migration/advisory/recommendation_rules.py +835 -0
- wxcli/migration/cucm/CLAUDE.md +74 -0
- wxcli/migration/cucm/__init__.py +5 -0
- wxcli/migration/cucm/connection.py +265 -0
- wxcli/migration/cucm/discovery.py +225 -0
- wxcli/migration/cucm/extractors/__init__.py +1 -0
- wxcli/migration/cucm/extractors/announcements.py +92 -0
- wxcli/migration/cucm/extractors/base.py +90 -0
- wxcli/migration/cucm/extractors/device_profiles.py +98 -0
- wxcli/migration/cucm/extractors/devices.py +193 -0
- wxcli/migration/cucm/extractors/e911.py +103 -0
- wxcli/migration/cucm/extractors/features.py +309 -0
- wxcli/migration/cucm/extractors/helpers.py +73 -0
- wxcli/migration/cucm/extractors/informational.py +295 -0
- wxcli/migration/cucm/extractors/locations.py +221 -0
- wxcli/migration/cucm/extractors/moh.py +100 -0
- wxcli/migration/cucm/extractors/remote_destinations.py +96 -0
- wxcli/migration/cucm/extractors/routing.py +493 -0
- wxcli/migration/cucm/extractors/shared_lines.py +146 -0
- wxcli/migration/cucm/extractors/templates.py +229 -0
- wxcli/migration/cucm/extractors/tier4.py +173 -0
- wxcli/migration/cucm/extractors/users.py +240 -0
- wxcli/migration/cucm/extractors/voicemail.py +243 -0
- wxcli/migration/cucm/extractors/workspaces.py +88 -0
- wxcli/migration/cucm/unity_connection.py +304 -0
- wxcli/migration/execute/CLAUDE.md +372 -0
- wxcli/migration/execute/__init__.py +303 -0
- wxcli/migration/execute/batch.py +277 -0
- wxcli/migration/execute/dependency.py +483 -0
- wxcli/migration/execute/engine.py +964 -0
- wxcli/migration/execute/handlers.py +2232 -0
- wxcli/migration/execute/planner.py +1939 -0
- wxcli/migration/execute/runtime.py +571 -0
- wxcli/migration/export/CLAUDE.md +49 -0
- wxcli/migration/export/__init__.py +8 -0
- wxcli/migration/export/csv_export.py +126 -0
- wxcli/migration/export/deployment_plan.py +479 -0
- wxcli/migration/export/json_export.py +60 -0
- wxcli/migration/models.py +941 -0
- wxcli/migration/phone_models.py +50 -0
- wxcli/migration/preflight/CLAUDE.md +52 -0
- wxcli/migration/preflight/__init__.py +89 -0
- wxcli/migration/preflight/checks.py +911 -0
- wxcli/migration/preflight/runner.py +293 -0
- wxcli/migration/rate_limiter.py +144 -0
- wxcli/migration/report/CLAUDE.md +245 -0
- wxcli/migration/report/__init__.py +7 -0
- wxcli/migration/report/appendix.py +2437 -0
- wxcli/migration/report/assembler.py +183 -0
- wxcli/migration/report/charts.py +263 -0
- wxcli/migration/report/executive.py +776 -0
- wxcli/migration/report/explainer.py +704 -0
- wxcli/migration/report/helpers.py +74 -0
- wxcli/migration/report/ingest.py +152 -0
- wxcli/migration/report/notice_templates.py +192 -0
- wxcli/migration/report/score.py +375 -0
- wxcli/migration/report/styles.py +1052 -0
- wxcli/migration/report/user_diff.py +1052 -0
- wxcli/migration/report/user_notice.py +425 -0
- wxcli/migration/state.py +139 -0
- wxcli/migration/store.py +860 -0
- wxcli/migration/transform/CLAUDE.md +107 -0
- wxcli/migration/transform/__init__.py +12 -0
- wxcli/migration/transform/analysis_pipeline.py +453 -0
- wxcli/migration/transform/analyzers/__init__.py +142 -0
- wxcli/migration/transform/analyzers/css_permission.py +189 -0
- wxcli/migration/transform/analyzers/css_routing.py +335 -0
- wxcli/migration/transform/analyzers/device_compatibility.py +122 -0
- wxcli/migration/transform/analyzers/dn_ambiguity.py +131 -0
- wxcli/migration/transform/analyzers/duplicate_user.py +221 -0
- wxcli/migration/transform/analyzers/extension_conflict.py +173 -0
- wxcli/migration/transform/analyzers/feature_approximation.py +227 -0
- wxcli/migration/transform/analyzers/layout_overflow.py +174 -0
- wxcli/migration/transform/analyzers/location_ambiguity.py +184 -0
- wxcli/migration/transform/analyzers/missing_data.py +300 -0
- wxcli/migration/transform/analyzers/selective_call_handling.py +394 -0
- wxcli/migration/transform/analyzers/shared_line.py +170 -0
- wxcli/migration/transform/analyzers/voicemail_compatibility.py +267 -0
- wxcli/migration/transform/analyzers/workspace_license.py +212 -0
- wxcli/migration/transform/cross_reference.py +1136 -0
- wxcli/migration/transform/cucm_pattern.py +246 -0
- wxcli/migration/transform/decisions.py +301 -0
- wxcli/migration/transform/e164.py +145 -0
- wxcli/migration/transform/engine.py +256 -0
- wxcli/migration/transform/mappers/CLAUDE.md +123 -0
- wxcli/migration/transform/mappers/__init__.py +76 -0
- wxcli/migration/transform/mappers/announcement_mapper.py +122 -0
- wxcli/migration/transform/mappers/base.py +190 -0
- wxcli/migration/transform/mappers/button_template_mapper.py +186 -0
- wxcli/migration/transform/mappers/call_forwarding_mapper.py +228 -0
- wxcli/migration/transform/mappers/call_settings_mapper.py +144 -0
- wxcli/migration/transform/mappers/css_mapper.py +868 -0
- wxcli/migration/transform/mappers/dect_mapper.py +367 -0
- wxcli/migration/transform/mappers/device_layout_mapper.py +289 -0
- wxcli/migration/transform/mappers/device_mapper.py +227 -0
- wxcli/migration/transform/mappers/device_profile_mapper.py +190 -0
- wxcli/migration/transform/mappers/device_settings_mapper.py +464 -0
- wxcli/migration/transform/mappers/e911_mapper.py +129 -0
- wxcli/migration/transform/mappers/ecbn_mapper.py +263 -0
- wxcli/migration/transform/mappers/executive_assistant_mapper.py +156 -0
- wxcli/migration/transform/mappers/feature_mapper.py +1179 -0
- wxcli/migration/transform/mappers/line_mapper.py +310 -0
- wxcli/migration/transform/mappers/location_mapper.py +235 -0
- wxcli/migration/transform/mappers/moh_mapper.py +114 -0
- wxcli/migration/transform/mappers/monitoring_mapper.py +221 -0
- wxcli/migration/transform/mappers/receptionist_mapper.py +245 -0
- wxcli/migration/transform/mappers/routing_mapper.py +821 -0
- wxcli/migration/transform/mappers/snr_mapper.py +201 -0
- wxcli/migration/transform/mappers/softkey_mapper.py +205 -0
- wxcli/migration/transform/mappers/user_mapper.py +264 -0
- wxcli/migration/transform/mappers/voicemail_group_mapper.py +286 -0
- wxcli/migration/transform/mappers/voicemail_mapper.py +514 -0
- wxcli/migration/transform/mappers/workspace_mapper.py +464 -0
- wxcli/migration/transform/normalizers.py +2008 -0
- wxcli/migration/transform/pattern_converter.py +106 -0
- wxcli/migration/transform/pipeline.py +271 -0
- wxcli/migration/transform/rules.py +255 -0
- wxcli/org_health/CLAUDE.md +63 -0
- wxcli/org_health/__init__.py +7 -0
- wxcli/org_health/analyze.py +93 -0
- wxcli/org_health/checks.py +458 -0
- wxcli/org_health/collector.py +62 -0
- wxcli/org_health/models.py +78 -0
- wxcli/org_health/report.py +300 -0
- wxcli/output.py +101 -0
- wxcli-1.2.0.dist-info/METADATA +505 -0
- wxcli-1.2.0.dist-info/RECORD +413 -0
- wxcli-1.2.0.dist-info/WHEEL +5 -0
- wxcli-1.2.0.dist-info/entry_points.txt +2 -0
- wxcli-1.2.0.dist-info/licenses/LICENSE +191 -0
- wxcli-1.2.0.dist-info/scm_file_list.json +751 -0
- wxcli-1.2.0.dist-info/scm_version.json +8 -0
- wxcli-1.2.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,1181 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: contact-center
|
|
3
|
+
description: |
|
|
4
|
+
Provision and manage Webex Contact Center resources using wxcli CLI commands:
|
|
5
|
+
agents, queues, entry points, teams, skills, flows, campaigns, dial plans,
|
|
6
|
+
dial numbers (DN-to-entry-point mapping), desktop profiles, CC sites, CC business hours,
|
|
7
|
+
CC holiday lists, and monitoring. Guides the user from prerequisites through
|
|
8
|
+
execution and verification.
|
|
9
|
+
Use for: create, update, delete, list, configure, or troubleshoot any CC resource.
|
|
10
|
+
NOT for: Webex Calling queues/hunt groups (use configure-features), Calling dial plans
|
|
11
|
+
(use configure-routing), or Calling schedules (use configure-features).
|
|
12
|
+
allowed-tools: Read, Grep, Glob, Bash
|
|
13
|
+
argument-hint: [cc-operation]
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Contact Center Workflow
|
|
17
|
+
|
|
18
|
+
**Checkpoint — do NOT proceed until you can answer these:**
|
|
19
|
+
1. What CLI command sets the CC API region? (Answer: `wxcli set-cc-region <region>` — defaults to `us1`. Valid regions: `us1`, `eu1`, `eu2`, `anz1`, `ca1`, `jp1`, `sg1`.)
|
|
20
|
+
2. What base URL do CC API calls target? (Answer: `api.wxcc-{region}.cisco.com`, not `webexapis.com`.)
|
|
21
|
+
3. How do you verify CC auth is working? (Answer: `wxcli whoami` for token, then `wxcli cc-site list -o json` to confirm CC access.)
|
|
22
|
+
|
|
23
|
+
If you cannot answer all three, you skipped reading this skill. Go back and read it.
|
|
24
|
+
|
|
25
|
+
## Step 1: Load references
|
|
26
|
+
|
|
27
|
+
1. Read `docs/reference/contact-center-core.md` for agents, queues, entry points, teams, skills, desktop profiles, sites, aux codes, and configuration data models
|
|
28
|
+
2. Read `docs/reference/contact-center-routing.md` for dial plans, campaigns, flows, audio files, contacts, outdial ANI
|
|
29
|
+
3. Read `docs/reference/contact-center-analytics.md` for AI features, monitoring, subscriptions, tasks
|
|
30
|
+
4. Read `docs/reference/contact-center-journey.md` for JDS: workspaces, persons, identity, profile views, events, WXCC subscription
|
|
31
|
+
|
|
32
|
+
**Mandatory --help verification:** Before constructing any wxcli command, run `wxcli <group> --help` to verify the subcommand exists, then `wxcli <group> <subcommand> --help` to verify the exact flags (e.g. `wxcli cc-queue create --help` — note the `cc-` prefix is what distinguishes Contact Center commands from Calling, so `cc-queue` ≠ `call-queue`; guessing the wrong one builds the wrong entity). Do NOT rely on examples in this skill or reference docs — the CLI is auto-generated and flag names may differ from what documentation suggests.
|
|
33
|
+
|
|
34
|
+
## Step 2: Verify auth token and CC region
|
|
35
|
+
|
|
36
|
+
Before any API calls, confirm the user has a working auth token and CC region is configured:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
wxcli whoami
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
If this fails, stop and resolve authentication first (`wxcli configure`).
|
|
43
|
+
|
|
44
|
+
### Set CC region
|
|
45
|
+
|
|
46
|
+
CC commands target `api.wxcc-{region}.cisco.com`. The region must be set before any `cc-*` command:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
wxcli set-cc-region us1
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Valid regions: `us1`, `eu1`, `eu2`, `anz1`, `ca1`, `jp1`, `sg1`.
|
|
53
|
+
|
|
54
|
+
### Verify CC access
|
|
55
|
+
|
|
56
|
+
After setting the region, confirm the token has CC admin access:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
wxcli cc-site list -o json
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
If this returns 403, the token lacks CC-specific OAuth scopes. Required scopes:
|
|
63
|
+
- **Read**: `cjp:config_read`
|
|
64
|
+
- **Write**: `cjp:config_write`
|
|
65
|
+
- **JDS admin (Journey Data Service)**: `cjds:admin_org_read` and/or `cjds:admin_org_write` — required for `/admin/v1/api/...` JDS endpoints (workspace, person, template management). Standard `cjp:` scopes alone will not grant JDS admin access.
|
|
66
|
+
|
|
67
|
+
The user may need to re-authenticate with CC scopes enabled.
|
|
68
|
+
|
|
69
|
+
> **WARNING:** Personal access tokens (PATs) from developer.webex.com do NOT carry CC scopes, even for full admins. If you get 403 "Access denied - Client is forbidden access to the resource" with a `ccconfig_` tracking ID, the token lacks CC scopes. Two options:
|
|
70
|
+
>
|
|
71
|
+
> **Option A — OAuth Integration** (user-facing apps):
|
|
72
|
+
> 1. Create an OAuth integration at developer.webex.com with `cjp:config_read` and `cjp:config_write` scopes selected
|
|
73
|
+
> 2. Complete the OAuth authorization flow to get a token
|
|
74
|
+
> 3. Run `wxcli configure` with the new token
|
|
75
|
+
> 4. If you added scopes to an existing integration, you must re-authorize — old tokens don't pick up new scopes
|
|
76
|
+
>
|
|
77
|
+
> **Option B — Service App** (production automation, no interactive login):
|
|
78
|
+
> 1. Create a Service App at developer.webex.com with `cjp:config_read` and `cjp:config_write` scopes (all CC scopes work except `spark:applications_token` and `spark:kms`)
|
|
79
|
+
> 2. Have a Full Admin authorize the app in Control Hub → Management → Apps → Service Apps
|
|
80
|
+
> 3. Generate tokens in the developer portal (Access Token: 14-day, Refresh Token: 90-day)
|
|
81
|
+
> 4. Run `wxcli configure` with the access token
|
|
82
|
+
|
|
83
|
+
> **Note:** The CC API requires the bare UUID org ID (e.g., `a9527d60-...`), not the base64-encoded Spark ID (`Y2lzY29...`). The CLI handles this automatically via `get_cc_org_id()`, which decodes the Spark ID to extract the UUID. No manual conversion is needed.
|
|
84
|
+
|
|
85
|
+
## Step 3: Identify the operation
|
|
86
|
+
|
|
87
|
+
Ask the user what they want to configure. Present this decision matrix if they are unsure:
|
|
88
|
+
|
|
89
|
+
### Agent Management
|
|
90
|
+
|
|
91
|
+
| Need | Operation | CLI Group(s) |
|
|
92
|
+
|------|-----------|-------------|
|
|
93
|
+
| Manage agent state (login, logout, state changes) | Agent lifecycle | `cc-agents` |
|
|
94
|
+
| Configure agent greetings | Upload/assign greeting files | `cc-agent-greetings` |
|
|
95
|
+
| View agent summaries | Agent activity summaries | `cc-agent-summaries` |
|
|
96
|
+
| Agent wellbeing settings | Burnout/wellness config | `cc-agent-wellbeing` |
|
|
97
|
+
| Manage user profiles | Agent desktop/permissions profiles | `cc-user-profiles` |
|
|
98
|
+
| Manage CC users | CC user CRUD | `cc-users` |
|
|
99
|
+
| Update dynamic skills for users | Bulk update dynamic skill assignments | `cc-users` |
|
|
100
|
+
| List users by dynamic skill | Query users with a specific dynamic skill | `cc-users` |
|
|
101
|
+
| Reskill users | Reassign skill profiles to users | `cc-users` |
|
|
102
|
+
|
|
103
|
+
### Queue & Routing
|
|
104
|
+
|
|
105
|
+
| Need | Operation | CLI Group(s) |
|
|
106
|
+
|------|-----------|-------------|
|
|
107
|
+
| Configure queues | Create/update/delete contact service queues | `cc-queue` |
|
|
108
|
+
| Query queues by skill/team/user | Skill-based routing queue lookups | `cc-queue` |
|
|
109
|
+
| Set up entry points | Inbound/outbound entry point CRUD | `cc-entry-point` |
|
|
110
|
+
| Configure dial plans | CC dial plan management | `cc-dial-plan` |
|
|
111
|
+
| Manage dial numbers | Number-to-entry-point mapping | `cc-dial-number` |
|
|
112
|
+
| Queue callbacks | Callback configuration | `cc-callbacks` |
|
|
113
|
+
| Estimated wait time | EWT config | `cc-ewt` |
|
|
114
|
+
| Queue overrides | Override routing rules | `cc-overrides` |
|
|
115
|
+
|
|
116
|
+
### Campaign & Contacts
|
|
117
|
+
|
|
118
|
+
| Need | Operation | CLI Group(s) |
|
|
119
|
+
|------|-----------|-------------|
|
|
120
|
+
| Run outbound campaigns | Start/stop/update campaigns | `cc-campaign` |
|
|
121
|
+
| Manage contact lists | Upload/manage contact lists for campaigns | `cc-contact-list` |
|
|
122
|
+
| Manage contact numbers | Contact number validation/management | `cc-contact-number` |
|
|
123
|
+
| Do-not-call lists | DNC list management | `cc-dnc` |
|
|
124
|
+
| Outdial ANI | Configure outbound caller IDs | `cc-outdial-ani` |
|
|
125
|
+
| Capture management | Capture data config | `cc-captures` |
|
|
126
|
+
|
|
127
|
+
### Configuration
|
|
128
|
+
|
|
129
|
+
| Need | Operation | CLI Group(s) |
|
|
130
|
+
|------|-----------|-------------|
|
|
131
|
+
| Manage sites | CC site CRUD | `cc-site` |
|
|
132
|
+
| Business hours | Business hours schedules | `cc-business-hour` |
|
|
133
|
+
| Holiday lists | Holiday schedule management | `cc-holiday-list` |
|
|
134
|
+
| Aux codes | Agent auxiliary/idle codes | `cc-aux-code` |
|
|
135
|
+
| Work types | Wrap-up/work type definitions | `cc-work-types` |
|
|
136
|
+
| Desktop layouts | Agent desktop UI layouts | `cc-desktop-layout` |
|
|
137
|
+
| Desktop profiles | Agent desktop config profiles | `cc-desktop-profile` |
|
|
138
|
+
| Multimedia profiles | Channel capacity profiles | `cc-multimedia-profile` |
|
|
139
|
+
| Global variables | Global flow variables | `cc-global-vars` |
|
|
140
|
+
| Skills | Skill definitions (routing attributes) | `cc-skill` |
|
|
141
|
+
| Skill profiles | Skill profile assignments | `cc-skill-profile` |
|
|
142
|
+
| Teams | CC team CRUD, agent assignment | `cc-team` |
|
|
143
|
+
|
|
144
|
+
### Flows & Automation
|
|
145
|
+
|
|
146
|
+
| Need | Operation | CLI Group(s) |
|
|
147
|
+
|------|-----------|-------------|
|
|
148
|
+
| Manage flows | Export/publish/list flows | `cc-flow` |
|
|
149
|
+
| Data sources | External data source config | `cc-data-sources` |
|
|
150
|
+
| Audio files | Upload/manage IVR audio | `cc-audio-files` |
|
|
151
|
+
| Resource collections | Resource collection management | `cc-resource-collection` |
|
|
152
|
+
|
|
153
|
+
### AI & Analytics
|
|
154
|
+
|
|
155
|
+
| Need | Operation | CLI Group(s) |
|
|
156
|
+
|------|-----------|-------------|
|
|
157
|
+
| AI assistant | Get AI-powered suggestions | `cc-ai-assistant` |
|
|
158
|
+
| AI features | Configure AI capabilities | `cc-ai-feature` |
|
|
159
|
+
| Auto CSAT | Automated satisfaction scoring | `cc-auto-csat` |
|
|
160
|
+
| Agent summaries (AI) | AI-generated call summaries | `cc-summaries` |
|
|
161
|
+
| Customer journey | Journey tracking, profiles, templates | `cc-journey` |
|
|
162
|
+
|
|
163
|
+
### Monitoring & Events
|
|
164
|
+
|
|
165
|
+
| Need | Operation | CLI Group(s) |
|
|
166
|
+
|------|-----------|-------------|
|
|
167
|
+
| Call monitoring | Monitor/barge/coach live calls | `cc-call-monitoring` |
|
|
168
|
+
| Real-time stats | Real-time queue/agent statistics | `cc-realtime` |
|
|
169
|
+
| Queue statistics | Queue performance metrics | `cc-queue-stats` |
|
|
170
|
+
| Event subscriptions | Subscribe to CC events (webhooks) | `cc-subscriptions` |
|
|
171
|
+
| Task management | Agent task lifecycle (accept, hold, transfer, wrapup) | `cc-tasks` |
|
|
172
|
+
| Notifications | Notification management | `cc-notification` |
|
|
173
|
+
| Search | Search CC resources | `cc-search` |
|
|
174
|
+
| Address books | Address book management | `cc-address-book` |
|
|
175
|
+
|
|
176
|
+
### Not Contact Center?
|
|
177
|
+
|
|
178
|
+
| Need | Redirect To |
|
|
179
|
+
|------|-------------|
|
|
180
|
+
| Webex Calling features (AA, CQ, HG) | `configure-features` skill |
|
|
181
|
+
| Person/workspace call settings | `manage-call-settings` skill |
|
|
182
|
+
| Webex Calling reporting (CDR) | `reporting` skill |
|
|
183
|
+
| Customer Assist on a Calling queue | `customer-assist` skill |
|
|
184
|
+
| Meetings | `manage-meetings` skill |
|
|
185
|
+
|
|
186
|
+
## Step 4: Check prerequisites
|
|
187
|
+
|
|
188
|
+
Before creating any CC resource, verify these conditions:
|
|
189
|
+
|
|
190
|
+
### 4a. CC tenant is provisioned
|
|
191
|
+
|
|
192
|
+
The org must have Webex Contact Center provisioned. Confirm with:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
wxcli cc-site list -o json
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
If this returns empty or errors, the CC tenant is not provisioned. The user must provision CC through Control Hub first.
|
|
199
|
+
|
|
200
|
+
### 4b. At least one site exists
|
|
201
|
+
|
|
202
|
+
Most CC resources are site-scoped. Confirm a site exists:
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
wxcli cc-site list -o json
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
If no sites exist, create one first:
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
wxcli cc-site create --json-body '{
|
|
212
|
+
"name": "Main Site",
|
|
213
|
+
"multimediaProfileId": "PROFILE_ID"
|
|
214
|
+
}'
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### 4c. Resource-specific prerequisites
|
|
218
|
+
|
|
219
|
+
#### Queues
|
|
220
|
+
|
|
221
|
+
| Prerequisite | Verification | If missing |
|
|
222
|
+
|-------------|-------------|-----------|
|
|
223
|
+
| Entry point exists | `wxcli cc-entry-point list-entry-point -o json` | Create entry point first |
|
|
224
|
+
| Team exists (for team-based routing) | `wxcli cc-team list -o json` | Create team first |
|
|
225
|
+
| Skill profiles (for skill-based routing) | `wxcli cc-skill-profile list-skill-profile -o json` | Create skills and skill profiles first |
|
|
226
|
+
|
|
227
|
+
#### Teams
|
|
228
|
+
|
|
229
|
+
| Prerequisite | Verification | If missing |
|
|
230
|
+
|-------------|-------------|-----------|
|
|
231
|
+
| Site exists | `wxcli cc-site list -o json` | Create site first |
|
|
232
|
+
| Multimedia profile exists | `wxcli cc-multimedia-profile list-multimedia-profile -o json` | Create multimedia profile first |
|
|
233
|
+
| Skill profile (optional) | `wxcli cc-skill-profile list-skill-profile -o json` | Create if using skill-based routing |
|
|
234
|
+
|
|
235
|
+
#### Campaigns
|
|
236
|
+
|
|
237
|
+
| Prerequisite | Verification | If missing |
|
|
238
|
+
|-------------|-------------|-----------|
|
|
239
|
+
| Contact list uploaded | `wxcli cc-contact-list list -o json` | Upload contact list first |
|
|
240
|
+
| Outdial ANI configured | `wxcli cc-outdial-ani list -o json` | Configure outbound caller ID first |
|
|
241
|
+
| Entry point exists (outbound) | `wxcli cc-entry-point list-entry-point -o json` | Create outbound entry point |
|
|
242
|
+
|
|
243
|
+
#### Flows
|
|
244
|
+
|
|
245
|
+
| Prerequisite | Verification | If missing |
|
|
246
|
+
|-------------|-------------|-----------|
|
|
247
|
+
| Audio files uploaded (if used in flow) | `wxcli cc-audio-files list-audio-file -o json` | Upload audio files first |
|
|
248
|
+
| Global variables defined (if used) | `wxcli cc-global-vars list-cad-variable -o json` | Create global variables first |
|
|
249
|
+
|
|
250
|
+
#### Skill Profiles
|
|
251
|
+
|
|
252
|
+
| Prerequisite | Verification | If missing |
|
|
253
|
+
|-------------|-------------|-----------|
|
|
254
|
+
| Skills defined | `wxcli cc-skill list-skill -o json` | Create skill definitions first |
|
|
255
|
+
|
|
256
|
+
#### Desktop Profiles
|
|
257
|
+
|
|
258
|
+
| Prerequisite | Verification | If missing |
|
|
259
|
+
|-------------|-------------|-----------|
|
|
260
|
+
| Desktop layout exists | `wxcli cc-desktop-layout list -o json` | Create or use default layout (note: `list` is the correct list-all for desktop layouts) |
|
|
261
|
+
|
|
262
|
+
#### Event Subscriptions
|
|
263
|
+
|
|
264
|
+
| Prerequisite | Verification | If missing |
|
|
265
|
+
|-------------|-------------|-----------|
|
|
266
|
+
| Webhook URL accessible | N/A — verify externally | Set up a webhook endpoint first |
|
|
267
|
+
|
|
268
|
+
## Step 5: Gather configuration and present deployment plan -- [SHOW BEFORE EXECUTING]
|
|
269
|
+
|
|
270
|
+
Based on the selected operation, collect the required parameters from the user. **Always present the plan before executing.**
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
### Queue (Contact Service Queue)
|
|
275
|
+
|
|
276
|
+
Collect from user:
|
|
277
|
+
|
|
278
|
+
| Parameter | Required | Notes |
|
|
279
|
+
|-----------|:--------:|-------|
|
|
280
|
+
| Name | Yes | Unique queue name |
|
|
281
|
+
| Channel type | Yes | `telephony`, `chat`, `email`, `social` |
|
|
282
|
+
| Routing type | No | `LONGEST_AVAILABLE_AGENT` (default), `SKILLS_BASED`, `BEST_AVAILABLE_AGENT` |
|
|
283
|
+
| Service level threshold | No | Seconds (default varies) |
|
|
284
|
+
| Max time in queue | No | Seconds before overflow |
|
|
285
|
+
| Overflow destination | No | Entry point or number for overflow |
|
|
286
|
+
|
|
287
|
+
**CLI command (v2 — preferred):**
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
wxcli cc-queue create --json-body '{
|
|
291
|
+
"name": "Support Queue",
|
|
292
|
+
"channelType": "telephony",
|
|
293
|
+
"routingType": "LONGEST_AVAILABLE_AGENT"
|
|
294
|
+
}'
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
**List queues:**
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
wxcli cc-queue list-contact-service-queue-v2 -o json
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
**Show specific queue:**
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
wxcli cc-queue show-contact-service-queue-v2 QUEUE_ID -o json
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
#### Queue Skill-Based Routing Queries
|
|
310
|
+
|
|
311
|
+
These commands query queues based on skill, team, or user assignments. Useful for verifying routing configuration and debugging skill-based queue assignments.
|
|
312
|
+
|
|
313
|
+
**List queues assigned to a specific team:**
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
wxcli cc-queue list-team-based-queues TEAM_ID -o json
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
**List queues for a CI user:**
|
|
320
|
+
|
|
321
|
+
```bash
|
|
322
|
+
wxcli cc-queue list-agent-based-queues USER_CI_ID -o json
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
**List skill-based queues by CI user:**
|
|
326
|
+
|
|
327
|
+
```bash
|
|
328
|
+
wxcli cc-queue list-agent-based-queues USER_CI_ID -o json
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
**List queues by skill profile:**
|
|
332
|
+
|
|
333
|
+
```bash
|
|
334
|
+
wxcli cc-queue list-skill-based-queues SKILL_PROFILE_ID -o json
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
**Fetch queues by dynamic skill and skill profile (POST):**
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
wxcli cc-queue create-fetch-by-dynamic-skills-and-skill-profile --json-body '{
|
|
341
|
+
"dynamicSkillIds": ["SKILL_ID"],
|
|
342
|
+
"skillProfileId": "SKILL_PROFILE_ID"
|
|
343
|
+
}'
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
**Fetch queues by user ID and skill profile ID (POST):**
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
wxcli cc-queue create-fetch-by-user-id-skill-profile-id --json-body '{
|
|
350
|
+
"userId": "USER_ID",
|
|
351
|
+
"skillProfileId": "SKILL_PROFILE_ID"
|
|
352
|
+
}'
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
**Fetch queues by grouped assistant skill (v2, POST):**
|
|
356
|
+
|
|
357
|
+
```bash
|
|
358
|
+
wxcli cc-queue create-fetch-by-grouped-assistant-skill --json-body '{
|
|
359
|
+
"skillIds": ["SKILL_ID"]
|
|
360
|
+
}'
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
---
|
|
364
|
+
|
|
365
|
+
### Entry Point
|
|
366
|
+
|
|
367
|
+
Collect from user:
|
|
368
|
+
|
|
369
|
+
| Parameter | Required | Notes |
|
|
370
|
+
|-----------|:--------:|-------|
|
|
371
|
+
| Name | Yes | Unique entry point name |
|
|
372
|
+
| Channel type | Yes | `telephony`, `chat`, `email`, `social` |
|
|
373
|
+
| Service level threshold | No | Seconds |
|
|
374
|
+
| Flow ID | No | Assigned flow for routing |
|
|
375
|
+
|
|
376
|
+
**CLI command (v2 — preferred):**
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
wxcli cc-entry-point create --json-body '{
|
|
380
|
+
"name": "Main IVR",
|
|
381
|
+
"channelType": "telephony"
|
|
382
|
+
}'
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
**List entry points:**
|
|
386
|
+
|
|
387
|
+
```bash
|
|
388
|
+
wxcli cc-entry-point list-entry-point -o json
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
**Show specific entry point:**
|
|
392
|
+
|
|
393
|
+
```bash
|
|
394
|
+
wxcli cc-entry-point show ENTRY_POINT_ID -o json
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
### Team
|
|
400
|
+
|
|
401
|
+
Collect from user:
|
|
402
|
+
|
|
403
|
+
| Parameter | Required | Notes |
|
|
404
|
+
|-----------|:--------:|-------|
|
|
405
|
+
| Name | Yes | Unique team name |
|
|
406
|
+
| Site ID | Yes | From `wxcli cc-site list` |
|
|
407
|
+
| Multimedia profile ID | No | Channel capacity assignment |
|
|
408
|
+
| Skill profile ID | No | For skill-based routing |
|
|
409
|
+
| Desktop profile ID | No | Agent desktop config |
|
|
410
|
+
|
|
411
|
+
**CLI command:**
|
|
412
|
+
|
|
413
|
+
```bash
|
|
414
|
+
wxcli cc-team create --json-body '{
|
|
415
|
+
"name": "Support Team",
|
|
416
|
+
"siteId": "SITE_ID",
|
|
417
|
+
"multimediaProfileId": "MM_PROFILE_ID"
|
|
418
|
+
}'
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
**List teams:**
|
|
422
|
+
|
|
423
|
+
```bash
|
|
424
|
+
wxcli cc-team list -o json
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
**Show specific team:**
|
|
428
|
+
|
|
429
|
+
```bash
|
|
430
|
+
wxcli cc-team show TEAM_ID -o json
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
---
|
|
434
|
+
|
|
435
|
+
### CC Users
|
|
436
|
+
|
|
437
|
+
**List CC users:**
|
|
438
|
+
|
|
439
|
+
```bash
|
|
440
|
+
wxcli cc-users list -o json
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
**Show a CC user:**
|
|
444
|
+
|
|
445
|
+
```bash
|
|
446
|
+
wxcli cc-users show USER_ID -o json
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
**Bulk update dynamic skill for users:**
|
|
450
|
+
|
|
451
|
+
```bash
|
|
452
|
+
wxcli cc-users update-dynamic-skill --json-body '{
|
|
453
|
+
"userIds": ["USER_ID_1", "USER_ID_2"],
|
|
454
|
+
"dynamicSkillId": "SKILL_ID",
|
|
455
|
+
"skillValue": 8
|
|
456
|
+
}'
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
**List users with a specific dynamic skill:**
|
|
460
|
+
|
|
461
|
+
```bash
|
|
462
|
+
wxcli cc-users show-by-dynamic-skill-id DYNAMIC_SKILL_ID -o json
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
**Reassign skill profiles to a user (reskill):**
|
|
466
|
+
|
|
467
|
+
```bash
|
|
468
|
+
wxcli cc-users update-reskill --json-body '{
|
|
469
|
+
"userId": "USER_ID",
|
|
470
|
+
"skillProfileId": "NEW_SKILL_PROFILE_ID"
|
|
471
|
+
}'
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
---
|
|
475
|
+
|
|
476
|
+
### Skill & Skill Profile
|
|
477
|
+
|
|
478
|
+
**Create a skill definition:**
|
|
479
|
+
|
|
480
|
+
```bash
|
|
481
|
+
wxcli cc-skill create --json-body '{
|
|
482
|
+
"name": "Spanish",
|
|
483
|
+
"skillType": "PROFICIENCY",
|
|
484
|
+
"description": "Spanish language proficiency"
|
|
485
|
+
}'
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
Skill types: `PROFICIENCY` (1-10 scale), `BOOLEAN` (true/false), `TEXT` (string match), `ENUM` (set of values).
|
|
489
|
+
|
|
490
|
+
**List skills:**
|
|
491
|
+
|
|
492
|
+
```bash
|
|
493
|
+
wxcli cc-skill list-skill -o json
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
**Create a skill profile:**
|
|
497
|
+
|
|
498
|
+
```bash
|
|
499
|
+
wxcli cc-skill-profile create --json-body '{
|
|
500
|
+
"name": "Bilingual Agent",
|
|
501
|
+
"description": "English + Spanish",
|
|
502
|
+
"skills": [
|
|
503
|
+
{"skillId": "SKILL_ID", "skillValue": 8}
|
|
504
|
+
]
|
|
505
|
+
}'
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
**List skill profiles:**
|
|
509
|
+
|
|
510
|
+
```bash
|
|
511
|
+
wxcli cc-skill-profile list-skill-profile -o json
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
---
|
|
515
|
+
|
|
516
|
+
### Dial Plan & Dial Number
|
|
517
|
+
|
|
518
|
+
**Create a dial plan:**
|
|
519
|
+
|
|
520
|
+
```bash
|
|
521
|
+
wxcli cc-dial-plan create --json-body '{
|
|
522
|
+
"name": "US Dial Plan",
|
|
523
|
+
"description": "US domestic dialing rules"
|
|
524
|
+
}'
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
**List dial plans:**
|
|
528
|
+
|
|
529
|
+
```bash
|
|
530
|
+
wxcli cc-dial-plan list-dial-plan -o json
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
> **NOTE:** `cc-dial-plan list` is a references endpoint (shows what references a specific dial plan), not a list-all. Always use `list-dial-plan-v2` to list all dial plans.
|
|
534
|
+
|
|
535
|
+
**Map a dial number to an entry point:**
|
|
536
|
+
|
|
537
|
+
```bash
|
|
538
|
+
wxcli cc-dial-number create --json-body '{
|
|
539
|
+
"dialNumber": "+18005551234",
|
|
540
|
+
"entryPointId": "ENTRY_POINT_ID"
|
|
541
|
+
}'
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
---
|
|
545
|
+
|
|
546
|
+
### Business Hours & Holidays
|
|
547
|
+
|
|
548
|
+
**Create business hours:**
|
|
549
|
+
|
|
550
|
+
```bash
|
|
551
|
+
wxcli cc-business-hour create --json-body '{
|
|
552
|
+
"name": "Standard Hours",
|
|
553
|
+
"timezone": "America/New_York",
|
|
554
|
+
"businessHours": [
|
|
555
|
+
{"day": "monday", "startTime": "08:00", "endTime": "17:00"},
|
|
556
|
+
{"day": "tuesday", "startTime": "08:00", "endTime": "17:00"},
|
|
557
|
+
{"day": "wednesday", "startTime": "08:00", "endTime": "17:00"},
|
|
558
|
+
{"day": "thursday", "startTime": "08:00", "endTime": "17:00"},
|
|
559
|
+
{"day": "friday", "startTime": "08:00", "endTime": "17:00"}
|
|
560
|
+
]
|
|
561
|
+
}'
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
**List business hours:**
|
|
565
|
+
|
|
566
|
+
```bash
|
|
567
|
+
wxcli cc-business-hour list -o json
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
**Create a holiday list:**
|
|
571
|
+
|
|
572
|
+
```bash
|
|
573
|
+
wxcli cc-holiday-list create --json-body '{
|
|
574
|
+
"name": "US Holidays 2026",
|
|
575
|
+
"holidays": [
|
|
576
|
+
{"name": "New Year", "startDate": "2026-01-01", "endDate": "2026-01-01"},
|
|
577
|
+
{"name": "Memorial Day", "startDate": "2026-05-25", "endDate": "2026-05-25"}
|
|
578
|
+
]
|
|
579
|
+
}'
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
---
|
|
583
|
+
|
|
584
|
+
### Desktop Layout & Desktop Profile
|
|
585
|
+
|
|
586
|
+
**Create a desktop layout:**
|
|
587
|
+
|
|
588
|
+
```bash
|
|
589
|
+
wxcli cc-desktop-layout create --json-body '{
|
|
590
|
+
"name": "Standard Layout",
|
|
591
|
+
"description": "Default agent desktop"
|
|
592
|
+
}'
|
|
593
|
+
```
|
|
594
|
+
|
|
595
|
+
**List desktop layouts:**
|
|
596
|
+
|
|
597
|
+
```bash
|
|
598
|
+
wxcli cc-desktop-layout list -o json
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
**Create a desktop profile:**
|
|
602
|
+
|
|
603
|
+
```bash
|
|
604
|
+
wxcli cc-desktop-profile create --json-body '{
|
|
605
|
+
"name": "Standard Profile",
|
|
606
|
+
"desktopLayoutId": "LAYOUT_ID"
|
|
607
|
+
}'
|
|
608
|
+
```
|
|
609
|
+
|
|
610
|
+
**List desktop profiles:**
|
|
611
|
+
|
|
612
|
+
```bash
|
|
613
|
+
wxcli cc-desktop-profile list-agent-profile -o json
|
|
614
|
+
```
|
|
615
|
+
|
|
616
|
+
---
|
|
617
|
+
|
|
618
|
+
### Multimedia Profile
|
|
619
|
+
|
|
620
|
+
**Create a multimedia profile:**
|
|
621
|
+
|
|
622
|
+
```bash
|
|
623
|
+
wxcli cc-multimedia-profile create --json-body '{
|
|
624
|
+
"name": "Voice Only",
|
|
625
|
+
"mediaTypes": [
|
|
626
|
+
{"media": "telephony", "maxCount": 1}
|
|
627
|
+
]
|
|
628
|
+
}'
|
|
629
|
+
```
|
|
630
|
+
|
|
631
|
+
**List multimedia profiles:**
|
|
632
|
+
|
|
633
|
+
```bash
|
|
634
|
+
wxcli cc-multimedia-profile list-multimedia-profile -o json
|
|
635
|
+
```
|
|
636
|
+
|
|
637
|
+
---
|
|
638
|
+
|
|
639
|
+
### Aux Codes & Work Types
|
|
640
|
+
|
|
641
|
+
**Create an aux code (idle/wrap-up code):**
|
|
642
|
+
|
|
643
|
+
```bash
|
|
644
|
+
wxcli cc-aux-code create --json-body '{
|
|
645
|
+
"name": "Break",
|
|
646
|
+
"description": "Agent on break",
|
|
647
|
+
"isSystemCode": false
|
|
648
|
+
}'
|
|
649
|
+
```
|
|
650
|
+
|
|
651
|
+
**List aux codes:**
|
|
652
|
+
|
|
653
|
+
```bash
|
|
654
|
+
wxcli cc-aux-code list-auxiliary-code -o json
|
|
655
|
+
```
|
|
656
|
+
|
|
657
|
+
**Create a work type:**
|
|
658
|
+
|
|
659
|
+
```bash
|
|
660
|
+
wxcli cc-work-types create --json-body '{
|
|
661
|
+
"name": "Follow-up Call",
|
|
662
|
+
"description": "Post-call follow-up"
|
|
663
|
+
}'
|
|
664
|
+
```
|
|
665
|
+
|
|
666
|
+
**List work types:**
|
|
667
|
+
|
|
668
|
+
```bash
|
|
669
|
+
wxcli cc-work-types list-work-type -o json
|
|
670
|
+
```
|
|
671
|
+
|
|
672
|
+
---
|
|
673
|
+
|
|
674
|
+
### Global Variables
|
|
675
|
+
|
|
676
|
+
**Create a global variable:**
|
|
677
|
+
|
|
678
|
+
```bash
|
|
679
|
+
wxcli cc-global-vars create --json-body '{
|
|
680
|
+
"name": "maxRetries",
|
|
681
|
+
"variableType": "INTEGER",
|
|
682
|
+
"defaultValue": "3",
|
|
683
|
+
"description": "Max IVR retry attempts"
|
|
684
|
+
}'
|
|
685
|
+
```
|
|
686
|
+
|
|
687
|
+
Variable types: `STRING`, `INTEGER`, `BOOLEAN`, `DECIMAL`, `DATE_TIME`, `JSON`.
|
|
688
|
+
|
|
689
|
+
**List global variables:**
|
|
690
|
+
|
|
691
|
+
```bash
|
|
692
|
+
wxcli cc-global-vars list-cad-variable -o json
|
|
693
|
+
```
|
|
694
|
+
|
|
695
|
+
---
|
|
696
|
+
|
|
697
|
+
### Flow Management
|
|
698
|
+
|
|
699
|
+
**List flows:**
|
|
700
|
+
|
|
701
|
+
```bash
|
|
702
|
+
wxcli cc-flow list PROJECT_ID -o json
|
|
703
|
+
```
|
|
704
|
+
|
|
705
|
+
**Export a flow:**
|
|
706
|
+
|
|
707
|
+
```bash
|
|
708
|
+
wxcli cc-flow export FLOW_ID PROJECT_ID -o json
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
Use `--version` to specify a version: `draft`, `latest`, or a specific version ID.
|
|
712
|
+
|
|
713
|
+
```bash
|
|
714
|
+
wxcli cc-flow export FLOW_ID PROJECT_ID --version draft -o json
|
|
715
|
+
```
|
|
716
|
+
|
|
717
|
+
**Publish a flow:**
|
|
718
|
+
|
|
719
|
+
```bash
|
|
720
|
+
wxcli cc-flow publish FLOW_ID PROJECT_ID --comment "Initial publish"
|
|
721
|
+
```
|
|
722
|
+
|
|
723
|
+
Use `--json-body` for additional publish options (e.g., tag IDs):
|
|
724
|
+
|
|
725
|
+
```bash
|
|
726
|
+
wxcli cc-flow publish FLOW_ID PROJECT_ID --json-body '{
|
|
727
|
+
"comment": "Production release",
|
|
728
|
+
"tagIds": ["TAG_ID"]
|
|
729
|
+
}'
|
|
730
|
+
```
|
|
731
|
+
|
|
732
|
+
> **NOTE:** Flow import (file upload) is not available via CLI. Use Control Hub or the API directly for flow import.
|
|
733
|
+
|
|
734
|
+
---
|
|
735
|
+
|
|
736
|
+
### JDS (Journey Data Service) — Flow Designer Integration
|
|
737
|
+
|
|
738
|
+
JDS tracks customer journey events. The two most common flow patterns are:
|
|
739
|
+
|
|
740
|
+
**1. Detect returning caller at flow entry**
|
|
741
|
+
|
|
742
|
+
Query JDS by CallerANI at the start of the flow using an HTTP Request node:
|
|
743
|
+
|
|
744
|
+
```
|
|
745
|
+
Method: GET
|
|
746
|
+
URL: https://api.wxcc-{region}.cisco.com/admin/v1/api/person/workspace-id/{{CJDS_Workspace_ID}}/aliases/{{CallerANI}}
|
|
747
|
+
Authorization: Bearer {{cc_oauth_token}}
|
|
748
|
+
```
|
|
749
|
+
|
|
750
|
+
- **200 + data array** → caller exists in JDS; check event history to determine if returning
|
|
751
|
+
- **NOT_FOUND** → first-time caller (no prior contacts)
|
|
752
|
+
- CallerANI must be E.164 with `+1` prefix — WXCC writes ANI that way, so `+19105551234`, not `9105551234`
|
|
753
|
+
|
|
754
|
+
**2. Post a custom event from a flow**
|
|
755
|
+
|
|
756
|
+
Use an HTTP Request node to record a business event (e.g., store verified, order looked up):
|
|
757
|
+
|
|
758
|
+
```
|
|
759
|
+
Method: POST
|
|
760
|
+
URL: https://api.wxcc-{region}.cisco.com/publish/v1/api/event?workspaceId={{CJDS_Workspace_ID}}
|
|
761
|
+
Authorization: Bearer {{cc_oauth_token}}
|
|
762
|
+
Content-Type: application/json
|
|
763
|
+
```
|
|
764
|
+
|
|
765
|
+
Body:
|
|
766
|
+
```json
|
|
767
|
+
{
|
|
768
|
+
"id": "{{DialedDNIS}}-{{CallerANI}}",
|
|
769
|
+
"specversion": "1.0",
|
|
770
|
+
"type": "custom:your_event_type",
|
|
771
|
+
"source": "wxcc_flow",
|
|
772
|
+
"identity": "{{CallerANI}}",
|
|
773
|
+
"identitytype": "phone",
|
|
774
|
+
"datacontenttype": "application/json",
|
|
775
|
+
"data": {
|
|
776
|
+
"event": "your_event_type"
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
```
|
|
780
|
+
|
|
781
|
+
> `workspaceId` goes on the query string — the body schema has no `workspaceId` field.
|
|
782
|
+
> The URL must be a full absolute URL — relative paths return HTTP 500.
|
|
783
|
+
> `id` must be unique per event (use a combination of flow variables to ensure uniqueness).
|
|
784
|
+
> A successful post returns `"Accepted for processing"` — JDS ingests asynchronously.
|
|
785
|
+
|
|
786
|
+
**Query events for a person (wxcli):**
|
|
787
|
+
|
|
788
|
+
```bash
|
|
789
|
+
wxcli cc-journey show-workspace-id-events WORKSPACE_ID --identity "+19105551234" --filter "type=='custom:your_event_type'" -o json
|
|
790
|
+
```
|
|
791
|
+
|
|
792
|
+
Filter uses RSQL syntax. Omit `--filter` to return all events for that identity.
|
|
793
|
+
|
|
794
|
+
---
|
|
795
|
+
|
|
796
|
+
### SCIM User Lookup from Flow Designer
|
|
797
|
+
|
|
798
|
+
Use this pattern to look up a Webex user's identity data (e.g. alternate phone number, userName, ID) from within a WxCC flow using HTTP Request nodes.
|
|
799
|
+
|
|
800
|
+
**Authentication:** The SCIM API (`/identity/scim/`) requires `identity:people_read` scope — separate from `spark-admin:people_read`. PATs expire after 12 hours. For production use an OAuth Integration or Service App with `identity:people_read` explicitly selected at developer.webex.com.
|
|
801
|
+
|
|
802
|
+
**Phone number types:** `work`, `mobile`, `fax`, `work_extension`, `alternate1`, `alternate2`
|
|
803
|
+
|
|
804
|
+
---
|
|
805
|
+
|
|
806
|
+
**Node 1 — Search by alternate1 phone number (DNIS)**
|
|
807
|
+
|
|
808
|
+
Before this node, add a Set Variable node to strip the `+` from DNIS:
|
|
809
|
+
|
|
810
|
+
```
|
|
811
|
+
Variable: DNIS
|
|
812
|
+
Expression: {{NewContact.DNIS | slice(1)}}
|
|
813
|
+
```
|
|
814
|
+
|
|
815
|
+
> `| slice(1)` works in WxCC Flow Designer. `| replace("+", "%2B")` does NOT — `+` is a regex special character and fails silently. `.substring(1)` also does not work.
|
|
816
|
+
|
|
817
|
+
HTTP Request node config:
|
|
818
|
+
- **Method:** GET
|
|
819
|
+
- **URL:** `https://webexapis.com/identity/scim/{orgId}/v2/Users`
|
|
820
|
+
- **Header:** `Authorization: Bearer {token}`
|
|
821
|
+
- **Query param key:** `filter`
|
|
822
|
+
- **Query param value:** `phoneNumbers%5Btype%20eq%20%22alternate1%22%20and%20value%20eq%20%22%2B{{DNIS}}%22%5D`
|
|
823
|
+
- **Output variable:** `StoreUserPersonId` ← JSONPath: `$.Resources[0].id`
|
|
824
|
+
|
|
825
|
+
Decoded filter: `phoneNumbers[type eq "alternate1" and value eq "+19197010928"]`
|
|
826
|
+
|
|
827
|
+
Key syntax rules:
|
|
828
|
+
- No space before `[` — `phoneNumbers[...]` not `phoneNumbers [...]`
|
|
829
|
+
- `+` must be hardcoded as `%2B` in the filter — the SCIM server decodes bare `+` as a space, returning zero results
|
|
830
|
+
- `phoneNumbers.value eq "..."` dot notation returns 400 and is not implemented despite being documented
|
|
831
|
+
|
|
832
|
+
---
|
|
833
|
+
|
|
834
|
+
**Node 2 — Get full user profile by ID**
|
|
835
|
+
|
|
836
|
+
HTTP Request node config:
|
|
837
|
+
- **Method:** GET
|
|
838
|
+
- **URL:** `https://webexapis.com/identity/scim/{orgId}/v2/Users/{{StoreUserPersonId}}`
|
|
839
|
+
- **Header:** `Authorization: Bearer {token}`
|
|
840
|
+
- **Query param:** `attributes=id,userName,phoneNumbers` (optional — trims response)
|
|
841
|
+
- **Output variable:** `StoreExtension` ← JSONPath: `$.phoneNumbers[?(@.type=='alternate1')].value`
|
|
842
|
+
|
|
843
|
+
Response is the raw user object (no `Resources` wrapper), so JSONPath starts at `$.phoneNumbers` not `$.Resources[0].phoneNumbers`.
|
|
844
|
+
|
|
845
|
+
The `[?(@.type=='alternate1')]` filter expression is supported in WxCC Flow Designer's JSONPath parser.
|
|
846
|
+
|
|
847
|
+
---
|
|
848
|
+
|
|
849
|
+
### Auto CSAT
|
|
850
|
+
|
|
851
|
+
**Show Auto CSAT configuration:**
|
|
852
|
+
|
|
853
|
+
```bash
|
|
854
|
+
wxcli cc-auto-csat show-auto-csat -o json
|
|
855
|
+
```
|
|
856
|
+
|
|
857
|
+
**Update Auto CSAT settings:**
|
|
858
|
+
|
|
859
|
+
```bash
|
|
860
|
+
wxcli cc-auto-csat update --json-body '{...}'
|
|
861
|
+
```
|
|
862
|
+
|
|
863
|
+
**List Auto CSAT entries:**
|
|
864
|
+
|
|
865
|
+
```bash
|
|
866
|
+
wxcli cc-auto-csat list -o json
|
|
867
|
+
```
|
|
868
|
+
|
|
869
|
+
**List Auto CSAT questions:**
|
|
870
|
+
|
|
871
|
+
```bash
|
|
872
|
+
wxcli cc-auto-csat list-question -o json
|
|
873
|
+
```
|
|
874
|
+
|
|
875
|
+
---
|
|
876
|
+
|
|
877
|
+
### Call Monitoring
|
|
878
|
+
|
|
879
|
+
**Create a monitoring session:**
|
|
880
|
+
|
|
881
|
+
```bash
|
|
882
|
+
wxcli cc-call-monitoring create --json-body '{
|
|
883
|
+
"taskId": "TASK_ID",
|
|
884
|
+
"agentId": "AGENT_ID"
|
|
885
|
+
}'
|
|
886
|
+
```
|
|
887
|
+
|
|
888
|
+
**Barge into a call:**
|
|
889
|
+
|
|
890
|
+
```bash
|
|
891
|
+
wxcli cc-call-monitoring create-barge-in --json-body '{
|
|
892
|
+
"taskId": "TASK_ID"
|
|
893
|
+
}'
|
|
894
|
+
```
|
|
895
|
+
|
|
896
|
+
**List active monitoring sessions:**
|
|
897
|
+
|
|
898
|
+
```bash
|
|
899
|
+
wxcli cc-call-monitoring list -o json
|
|
900
|
+
```
|
|
901
|
+
|
|
902
|
+
**End a monitoring session:**
|
|
903
|
+
|
|
904
|
+
```bash
|
|
905
|
+
wxcli cc-call-monitoring create-end --json-body '{
|
|
906
|
+
"taskId": "TASK_ID"
|
|
907
|
+
}'
|
|
908
|
+
```
|
|
909
|
+
|
|
910
|
+
---
|
|
911
|
+
|
|
912
|
+
### Event Subscriptions
|
|
913
|
+
|
|
914
|
+
**Create a subscription:**
|
|
915
|
+
|
|
916
|
+
```bash
|
|
917
|
+
wxcli cc-subscriptions create --json-body '{
|
|
918
|
+
"name": "Agent Events",
|
|
919
|
+
"eventTypes": ["AgentStateChange", "TaskRouted"],
|
|
920
|
+
"callbackUrl": "https://example.com/webhook"
|
|
921
|
+
}'
|
|
922
|
+
```
|
|
923
|
+
|
|
924
|
+
**List subscriptions:**
|
|
925
|
+
|
|
926
|
+
```bash
|
|
927
|
+
wxcli cc-subscriptions list -o json
|
|
928
|
+
```
|
|
929
|
+
|
|
930
|
+
**List available event types:**
|
|
931
|
+
|
|
932
|
+
```bash
|
|
933
|
+
wxcli cc-subscriptions list-event-types-v2 -o json
|
|
934
|
+
```
|
|
935
|
+
|
|
936
|
+
---
|
|
937
|
+
|
|
938
|
+
### Task Management
|
|
939
|
+
|
|
940
|
+
**List tasks:**
|
|
941
|
+
|
|
942
|
+
```bash
|
|
943
|
+
wxcli cc-tasks list -o json
|
|
944
|
+
```
|
|
945
|
+
|
|
946
|
+
**Accept a task:**
|
|
947
|
+
|
|
948
|
+
```bash
|
|
949
|
+
wxcli cc-tasks create-accept-tasks --json-body '{
|
|
950
|
+
"taskId": "TASK_ID"
|
|
951
|
+
}'
|
|
952
|
+
```
|
|
953
|
+
|
|
954
|
+
**Transfer a task:**
|
|
955
|
+
|
|
956
|
+
```bash
|
|
957
|
+
wxcli cc-tasks create-transfer-tasks --json-body '{
|
|
958
|
+
"taskId": "TASK_ID",
|
|
959
|
+
"destinationId": "QUEUE_OR_AGENT_ID"
|
|
960
|
+
}'
|
|
961
|
+
```
|
|
962
|
+
|
|
963
|
+
**Wrap up a task:**
|
|
964
|
+
|
|
965
|
+
```bash
|
|
966
|
+
wxcli cc-tasks create-wrapup --json-body '{
|
|
967
|
+
"taskId": "TASK_ID",
|
|
968
|
+
"auxCodeId": "AUX_CODE_ID"
|
|
969
|
+
}'
|
|
970
|
+
```
|
|
971
|
+
|
|
972
|
+
**Hold/unhold a task:**
|
|
973
|
+
|
|
974
|
+
```bash
|
|
975
|
+
wxcli cc-tasks create-hold --json-body '{"taskId": "TASK_ID"}'
|
|
976
|
+
wxcli cc-tasks create-unhold --json-body '{"taskId": "TASK_ID"}'
|
|
977
|
+
```
|
|
978
|
+
|
|
979
|
+
---
|
|
980
|
+
|
|
981
|
+
### Deployment Plan Template
|
|
982
|
+
|
|
983
|
+
Before executing any commands, present the full plan to the user:
|
|
984
|
+
|
|
985
|
+
```
|
|
986
|
+
DEPLOYMENT PLAN
|
|
987
|
+
===============
|
|
988
|
+
Resource type: [queue / entry point / team / skill / flow / ...]
|
|
989
|
+
Operation: [create / update / delete]
|
|
990
|
+
Region: [us1 / eu1 / ...]
|
|
991
|
+
|
|
992
|
+
Configuration:
|
|
993
|
+
Name: [resource_name]
|
|
994
|
+
[Resource-specific settings listed here]
|
|
995
|
+
|
|
996
|
+
Dependencies:
|
|
997
|
+
✓ Site exists: [site_name] ([site_id])
|
|
998
|
+
✓ [Prerequisite 1]: [name] ([id])
|
|
999
|
+
✓ [Prerequisite 2]: [name] ([id])
|
|
1000
|
+
|
|
1001
|
+
Commands to execute:
|
|
1002
|
+
wxcli cc-[group] [command] --json-body '{...}'
|
|
1003
|
+
|
|
1004
|
+
Proceed? (yes/no)
|
|
1005
|
+
```
|
|
1006
|
+
|
|
1007
|
+
**Wait for user confirmation before executing.**
|
|
1008
|
+
|
|
1009
|
+
## Step 6: Execute via wxcli
|
|
1010
|
+
|
|
1011
|
+
Run the command(s) from the approved deployment plan. If the operation requires multiple steps (e.g., create team then assign agents), execute them in order.
|
|
1012
|
+
|
|
1013
|
+
Handle errors explicitly:
|
|
1014
|
+
|
|
1015
|
+
### Generic errors
|
|
1016
|
+
|
|
1017
|
+
- **401/403**: Token expired or insufficient scopes — run `wxcli configure` to re-authenticate. CC requires `cjp:config_read` / `cjp:config_write` scopes.
|
|
1018
|
+
- **403 with scope hint**: The CLI detects CC 403 errors and prints a scope tip. Follow the guidance.
|
|
1019
|
+
- **409**: Name conflict — ask user for alternate name.
|
|
1020
|
+
- **400**: Validation error — read the error message and fix the parameter.
|
|
1021
|
+
- **404**: Resource not found — verify the ID and region are correct.
|
|
1022
|
+
|
|
1023
|
+
### CC-specific errors
|
|
1024
|
+
|
|
1025
|
+
- **Region mismatch**: If calls fail with connection errors, verify the region is correct: `wxcli set-cc-region <region>`. The CC API base URL is `api.wxcc-{region}.cisco.com`.
|
|
1026
|
+
- **orgId injection**: The CLI auto-injects `orgId` from the authenticated user's org. If operating on a partner-managed org, ensure `wxcli configure` has the correct org selected.
|
|
1027
|
+
- **v1 vs v2 endpoints**: Some CC groups have both v1 (bulk) and v2 (CRUD) endpoints. Prefer v2 commands (e.g., `list-contact-service-queue-v2` over `list`).
|
|
1028
|
+
- **Bulk operations**: v1 bulk endpoints (`create`, `list`) handle multiple resources at once. Use these for migrations or large-scale provisioning.
|
|
1029
|
+
|
|
1030
|
+
## Step 7: Verify creation
|
|
1031
|
+
|
|
1032
|
+
After execution, fetch the resource back and confirm:
|
|
1033
|
+
|
|
1034
|
+
```bash
|
|
1035
|
+
# Queue
|
|
1036
|
+
wxcli cc-queue show-contact-service-queue-v2 QUEUE_ID -o json
|
|
1037
|
+
|
|
1038
|
+
# Entry point
|
|
1039
|
+
wxcli cc-entry-point show ENTRY_POINT_ID -o json
|
|
1040
|
+
|
|
1041
|
+
# Team
|
|
1042
|
+
wxcli cc-team show TEAM_ID -o json
|
|
1043
|
+
|
|
1044
|
+
# Skill
|
|
1045
|
+
wxcli cc-skill show SKILL_ID -o json
|
|
1046
|
+
|
|
1047
|
+
# Skill profile
|
|
1048
|
+
wxcli cc-skill-profile show SKILL_PROFILE_ID -o json
|
|
1049
|
+
|
|
1050
|
+
# Site
|
|
1051
|
+
wxcli cc-site show SITE_ID -o json
|
|
1052
|
+
|
|
1053
|
+
# Dial plan
|
|
1054
|
+
wxcli cc-dial-plan show DIAL_PLAN_ID -o json
|
|
1055
|
+
|
|
1056
|
+
# Business hours
|
|
1057
|
+
wxcli cc-business-hour show BH_ID -o json
|
|
1058
|
+
|
|
1059
|
+
# Desktop profile
|
|
1060
|
+
wxcli cc-desktop-profile show PROFILE_ID -o json
|
|
1061
|
+
|
|
1062
|
+
# Multimedia profile
|
|
1063
|
+
wxcli cc-multimedia-profile show MM_PROFILE_ID -o json
|
|
1064
|
+
|
|
1065
|
+
# Global variable
|
|
1066
|
+
wxcli cc-global-vars show VAR_ID -o json
|
|
1067
|
+
|
|
1068
|
+
# Aux code
|
|
1069
|
+
wxcli cc-aux-code show AUX_ID -o json
|
|
1070
|
+
|
|
1071
|
+
# Subscription
|
|
1072
|
+
wxcli cc-subscriptions show SUBSCRIPTION_ID -o json
|
|
1073
|
+
|
|
1074
|
+
# CC user
|
|
1075
|
+
wxcli cc-users show USER_ID -o json
|
|
1076
|
+
|
|
1077
|
+
# Auto CSAT
|
|
1078
|
+
wxcli cc-auto-csat show-auto-csat -o json
|
|
1079
|
+
```
|
|
1080
|
+
|
|
1081
|
+
## Step 8: Report results
|
|
1082
|
+
|
|
1083
|
+
Present the results:
|
|
1084
|
+
|
|
1085
|
+
```
|
|
1086
|
+
CC RESOURCE CONFIGURED
|
|
1087
|
+
======================
|
|
1088
|
+
Type: [resource_type]
|
|
1089
|
+
Name: [name]
|
|
1090
|
+
ID: [resource_id]
|
|
1091
|
+
Region: [cc_region]
|
|
1092
|
+
|
|
1093
|
+
Configuration:
|
|
1094
|
+
[Key settings confirmed]
|
|
1095
|
+
|
|
1096
|
+
Next steps:
|
|
1097
|
+
- [Resource-specific next steps]
|
|
1098
|
+
- [e.g., "Assign flow to entry point"]
|
|
1099
|
+
- [e.g., "Add agents to team"]
|
|
1100
|
+
- [e.g., "Map dial number to entry point"]
|
|
1101
|
+
```
|
|
1102
|
+
|
|
1103
|
+
---
|
|
1104
|
+
|
|
1105
|
+
## Critical Rules
|
|
1106
|
+
|
|
1107
|
+
1. **Always set CC region first.** Before any `cc-*` command, ensure the region is set: `wxcli set-cc-region <region>`. CC API calls go to `api.wxcc-{region}.cisco.com`, not `webexapis.com`.
|
|
1108
|
+
2. **CC requires separate OAuth scopes.** Standard Webex admin tokens don't include CC scopes. The user needs `cjp:config_read` and `cjp:config_write`. The CLI detects 403 and prints a scope tip.
|
|
1109
|
+
3. **Always show the deployment plan** (Step 5) and wait for user confirmation before executing.
|
|
1110
|
+
4. **Prefer v2 commands over v1.** v2 endpoints are CRUD-oriented (single resource). v1 endpoints are bulk-oriented (arrays). For individual creates/updates, use the v2 variant (e.g., `create-contact-service-queue-v2`, `list-entry-point-v2`).
|
|
1111
|
+
5. **orgId is auto-injected.** The CLI resolves `orgId` from the authenticated user's org. No need to pass it manually.
|
|
1112
|
+
6. **Most CC creates use `--json-body`.** CC resources have complex nested structures. Use `--json-body '{...}'` for creates and updates.
|
|
1113
|
+
7. **Dependency order matters.** Create resources in this order: sites → skills → skill profiles → multimedia profiles → desktop layouts → desktop profiles → teams → entry points → queues → dial plans → dial numbers → flows.
|
|
1114
|
+
8. **Delete in reverse dependency order.** When tearing down: flows → dial numbers → dial plans → queues → entry points → teams → desktop profiles → desktop layouts → multimedia profiles → skill profiles → skills → sites.
|
|
1115
|
+
9. **Bulk operations for migrations.** For large-scale provisioning, use the v1 bulk endpoints (`cc-team create-bulk`, `cc-skill create-bulk`, `cc-site create-bulk`). These accept arrays of resources.
|
|
1116
|
+
10. **Audio files must be uploaded before flow references.** If a flow references an audio prompt, upload it via `cc-audio-files` first.
|
|
1117
|
+
11. **Campaign prerequisites are strict.** Campaigns require: contact list, outdial ANI, outbound entry point. Verify all three exist before starting a campaign.
|
|
1118
|
+
12. **Task commands are real-time agent operations.** `cc-tasks` commands (accept, hold, transfer, wrapup) operate on live calls. Confirm with the user before executing.
|
|
1119
|
+
13. **Monitoring is supervisor-only.** `cc-call-monitoring` commands require supervisor privileges. The authenticated user must have the CC supervisor role.
|
|
1120
|
+
14. **Journey API is complex.** `cc-journey` has 41 commands across workspaces, templates, persons, identities, and subscriptions. Read `docs/reference/contact-center-journey.md` before using. Key gotchas: alias lookup is exact after stripping `+` (no country-code normalization); WXCC writes ANI in E.164 so lookups must use `+1` prefix; events are immutable (no delete); event filter uses RSQL syntax (`type=='custom:event_name'`); Publish API requires `workspaceId` as a query param not in the body. For posting events from Flow Designer, see `docs/reference/contact-center-routing.md` gotchas #16–18.
|
|
1121
|
+
15. **Cross-skill handoffs:**
|
|
1122
|
+
- Webex Calling features (AA, CQ, HG) → `configure-features` skill
|
|
1123
|
+
- Customer Assist (CX Essentials on Calling queues) → `customer-assist` skill
|
|
1124
|
+
- Webex Calling reporting (CDR, queue stats) → `reporting` skill
|
|
1125
|
+
- Person/workspace call settings → `manage-call-settings` skill
|
|
1126
|
+
- Webex Calling routing (trunks, route groups, PSTN) → `configure-routing` skill (CC dial plans stay in this skill)
|
|
1127
|
+
- Location teardown → `teardown` skill
|
|
1128
|
+
|
|
1129
|
+
---
|
|
1130
|
+
|
|
1131
|
+
## Common Workflows
|
|
1132
|
+
|
|
1133
|
+
### Workflow A: Set up a basic inbound voice queue
|
|
1134
|
+
|
|
1135
|
+
1. Verify site exists → `wxcli cc-site list -o json`
|
|
1136
|
+
2. Create multimedia profile → `wxcli cc-multimedia-profile create --json-body '...'`
|
|
1137
|
+
3. Create team → `wxcli cc-team create --json-body '...'`
|
|
1138
|
+
4. Create entry point → `wxcli cc-entry-point create --json-body '...'`
|
|
1139
|
+
5. Create queue → `wxcli cc-queue create --json-body '...'`
|
|
1140
|
+
6. Map dial number → `wxcli cc-dial-number create --json-body '...'`
|
|
1141
|
+
7. Create/assign flow → `wxcli cc-flow publish FLOW_ID PROJECT_ID --comment "..."`
|
|
1142
|
+
8. Verify end-to-end → list all resources and confirm IDs are linked
|
|
1143
|
+
|
|
1144
|
+
### Workflow B: Add skill-based routing
|
|
1145
|
+
|
|
1146
|
+
1. Create skill definitions → `wxcli cc-skill create --json-body '...'` (one per skill)
|
|
1147
|
+
2. Create skill profiles → `wxcli cc-skill-profile create --json-body '...'`
|
|
1148
|
+
3. Update queue routing type → `wxcli cc-queue update --json-body '{"routingType": "SKILLS_BASED", ...}'`
|
|
1149
|
+
4. Assign skill profiles to teams/agents
|
|
1150
|
+
5. Verify queue-to-skill mapping → `wxcli cc-queue list-skill-based-queues SKILL_PROFILE_ID -o json`
|
|
1151
|
+
6. Verify user queue assignments → `wxcli cc-queue list-agent-based-queues USER_CI_ID -o json`
|
|
1152
|
+
|
|
1153
|
+
### Workflow C: Set up outbound campaign
|
|
1154
|
+
|
|
1155
|
+
1. Configure outdial ANI → `wxcli cc-outdial-ani create --json-body '...'`
|
|
1156
|
+
2. Upload contact list → `wxcli cc-contact-list create --json-body '...'`
|
|
1157
|
+
3. Create outbound entry point → `wxcli cc-entry-point create --json-body '...'`
|
|
1158
|
+
4. Start campaign → `wxcli cc-campaign create --json-body '...'`
|
|
1159
|
+
|
|
1160
|
+
### Workflow D: Configure agent monitoring
|
|
1161
|
+
|
|
1162
|
+
1. Create event subscription → `wxcli cc-subscriptions create --json-body '...'`
|
|
1163
|
+
2. Monitor live calls → `wxcli cc-call-monitoring create --json-body '...'`
|
|
1164
|
+
3. Barge in if needed → `wxcli cc-call-monitoring create-barge-in --json-body '...'`
|
|
1165
|
+
|
|
1166
|
+
### Workflow E: Reskill agents
|
|
1167
|
+
|
|
1168
|
+
1. List current user skill assignments → `wxcli cc-users show USER_ID -o json`
|
|
1169
|
+
2. List users by dynamic skill → `wxcli cc-users show-by-dynamic-skill-id SKILL_ID -o json`
|
|
1170
|
+
3. Bulk update dynamic skills → `wxcli cc-users update-dynamic-skill --json-body '...'`
|
|
1171
|
+
4. Reassign skill profile → `wxcli cc-users update-reskill --json-body '...'`
|
|
1172
|
+
5. Verify updated queues → `wxcli cc-queue list-agent-based-queues USER_CI_ID -o json`
|
|
1173
|
+
|
|
1174
|
+
---
|
|
1175
|
+
|
|
1176
|
+
## Context Compaction Recovery
|
|
1177
|
+
|
|
1178
|
+
If context compacts mid-execution, recover by:
|
|
1179
|
+
1. Read the deployment plan from conversation history to recover what was planned
|
|
1180
|
+
2. Check what's already been created: run the relevant `list` commands for each resource type
|
|
1181
|
+
3. Resume from the first incomplete step
|