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,443 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: customer-assist
|
|
3
|
+
description: |
|
|
4
|
+
Configure Webex Calling Customer Assist (CX Essentials) using wxcli CLI commands: screen pop,
|
|
5
|
+
wrap-up reasons, queue call recording, supervisors, and available agents.
|
|
6
|
+
Guides the user from prerequisites through configuration and verification.
|
|
7
|
+
NOT for: standard call queues/hunt groups (use configure-features) or
|
|
8
|
+
full Contact Center queues/agents (use contact-center skill — CX Essentials is
|
|
9
|
+
a Calling add-on, not WxCC).
|
|
10
|
+
allowed-tools: Read, Grep, Glob, Bash
|
|
11
|
+
argument-hint: [feature-type]
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Configure Customer Assist Workflow
|
|
15
|
+
|
|
16
|
+
**Checkpoint — do NOT proceed until you can answer these:**
|
|
17
|
+
1. How do you list Customer Assist call queues? (Answer: `wxcli call-queue list --has-cx-essentials true` — they are hidden from the default `call-queue list` output.)
|
|
18
|
+
2. What is the workaround for the supervisor delete bug? (Answer: `delete-supervisors-config-1` returns 204 but the supervisor persists. Instead, use `update-supervisors` with `action: DELETE` on each agent — removing the last agent auto-removes the supervisor.)
|
|
19
|
+
|
|
20
|
+
If you cannot answer both, you skipped reading this skill. Go back and read it.
|
|
21
|
+
|
|
22
|
+
## Step 1: Load references
|
|
23
|
+
|
|
24
|
+
1. Read `docs/reference/call-features-additional.md` — Customer Assist data models, screen pop, wrap-up reasons, queue recording, available agents
|
|
25
|
+
2. Read `docs/reference/location-recording-advanced.md` — Supervisors data models, API methods, key behaviors
|
|
26
|
+
|
|
27
|
+
**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 customer-assist --help` for CX queue management — and note CX queues require `--has-cx-essentials true` on `call-queue` commands or they vanish from listings, known issue #7). 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.
|
|
28
|
+
|
|
29
|
+
## Step 2: Verify auth token
|
|
30
|
+
|
|
31
|
+
Before any API calls, confirm the user has a working auth token:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
wxcli whoami
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
If this fails, stop and resolve authentication first (`wxcli configure`). Required scopes:
|
|
38
|
+
|
|
39
|
+
| Operation | Read Scope | Write Scope |
|
|
40
|
+
|-----------|-----------|-------------|
|
|
41
|
+
| Screen pop, wrap-up, agents, supervisors | `spark-admin:telephony_config_read` | `spark-admin:telephony_config_write` |
|
|
42
|
+
| Queue call recording | `spark-admin:people_read` | `spark-admin:people_write` |
|
|
43
|
+
|
|
44
|
+
## Step 3: Identify which feature(s) to configure
|
|
45
|
+
|
|
46
|
+
Ask the user which feature they want to configure. Present this decision matrix if they are unsure:
|
|
47
|
+
|
|
48
|
+
| Need | Feature | CLI Group |
|
|
49
|
+
|------|---------|-----------|
|
|
50
|
+
| Pop a CRM/ticketing URL when agent receives a queued call | **Screen Pop** | `wxcli customer-assist` |
|
|
51
|
+
| Post-call categorization codes for agents | **Wrap-Up Reasons** | `wxcli customer-assist` |
|
|
52
|
+
| Record calls on a queue for QA/compliance/training | **Queue Call Recording** | `wxcli customer-assist` |
|
|
53
|
+
| Assign supervisors to monitor/coach/barge agents | **Supervisors** | `wxcli call-queue` |
|
|
54
|
+
| List agents with or without Customer Assist licensing | **Available Agents** | `wxcli customer-assist` |
|
|
55
|
+
|
|
56
|
+
## Step 4: Check prerequisites
|
|
57
|
+
|
|
58
|
+
Before configuring any feature, verify these exist:
|
|
59
|
+
|
|
60
|
+
### 4a. Location exists
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
wxcli locations list --output json
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 4b. Customer Assist queue exists
|
|
67
|
+
|
|
68
|
+
All Customer Assist features are per-queue configurations. **Customer Assist queues are separate from regular queues** — they do not appear in the default `call-queue list` output.
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# List Customer Assist queues (MUST use --has-cx-essentials true)
|
|
72
|
+
wxcli call-queue list --has-cx-essentials true --output json
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
If no Customer Assist queue exists, create one. **Customer Assist queues require `callPolicies` via `--json-body`:**
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
wxcli call-queue create LOCATION_ID --name "Queue Name" --has-cx-essentials true \
|
|
79
|
+
--json-body '{"name":"Queue Name","extension":"XXXX","callPolicies":{"policy":"SIMULTANEOUS"}}'
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
> **IMPORTANT:** A regular queue (created without `--has-cx-essentials true`) will return error 28018 on all Customer Assist endpoints. The queue must be created with the `--has-cx-essentials true` flag. The `callPolicies` field is mandatory for Customer Assist queues but not for regular queues.
|
|
83
|
+
|
|
84
|
+
### 4c. Customer Assist licensing
|
|
85
|
+
|
|
86
|
+
Confirm agents have Customer Assist licenses:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
wxcli customer-assist list-available-agents LOCATION_ID --has-cx-essentials true
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
If no agents are returned, Customer Assist licenses must be assigned first (use `manage-licensing` skill).
|
|
93
|
+
|
|
94
|
+
### 4d. Feature-specific prerequisites
|
|
95
|
+
|
|
96
|
+
| Feature | Additional Prerequisites |
|
|
97
|
+
|---------|------------------------|
|
|
98
|
+
| **Screen Pop** | Call queue must exist. No additional requirements. |
|
|
99
|
+
| **Wrap-Up Reasons** | Call queue must exist. Org-level reasons must be created before queue assignment. |
|
|
100
|
+
| **Queue Call Recording** | Call queue must exist. Recording vendor must be configured at org/location level (see `wxcli call-recording`). Requires `spark-admin:people_read`/`people_write` scopes (different from other Customer Assist features). |
|
|
101
|
+
| **Supervisors** | At least one agent must be assigned when creating. Supervisor must be a calling-enabled user. |
|
|
102
|
+
| **Available Agents** | Location must exist. |
|
|
103
|
+
|
|
104
|
+
## Step 5: Gather configuration and present deployment plan -- [SHOW BEFORE EXECUTING]
|
|
105
|
+
|
|
106
|
+
Based on the selected feature, collect the required parameters from the user. **Always present the plan before executing.**
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
### Screen Pop
|
|
111
|
+
|
|
112
|
+
Collect from user:
|
|
113
|
+
|
|
114
|
+
| Parameter | Required | Notes |
|
|
115
|
+
|-----------|:--------:|-------|
|
|
116
|
+
| Location ID | Yes | Positional argument |
|
|
117
|
+
| Queue ID | Yes | Positional argument |
|
|
118
|
+
| Enabled | Yes | `--enabled` / `--no-enabled` |
|
|
119
|
+
| Screen pop URL | Yes (if enabling) | CRM or ticketing system URL |
|
|
120
|
+
| Desktop label | No | Label for the config |
|
|
121
|
+
| Query params | No | Requires `--json-body` (not available as explicit flags) |
|
|
122
|
+
|
|
123
|
+
CLI commands:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# View current screen pop config
|
|
127
|
+
wxcli customer-assist show-screen-pop LOCATION_ID QUEUE_ID -o json
|
|
128
|
+
|
|
129
|
+
# Simple: enable with URL
|
|
130
|
+
wxcli customer-assist update-screen-pop LOCATION_ID QUEUE_ID \
|
|
131
|
+
--enabled --screen-pop-url "https://crm.example.com/lookup"
|
|
132
|
+
|
|
133
|
+
# Full: enable with URL, label, and query params (requires --json-body)
|
|
134
|
+
wxcli customer-assist update-screen-pop LOCATION_ID QUEUE_ID --json-body '{
|
|
135
|
+
"enabled": true,
|
|
136
|
+
"screenPopUrl": "https://crm.example.com/lookup",
|
|
137
|
+
"desktopLabel": "Customer Lookup",
|
|
138
|
+
"queryParams": {"caller_id": "{{callerNumber}}", "queue": "{{queueName}}"}
|
|
139
|
+
}'
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
> **NOTE:** Query parameters (`queryParams`) are only available via `--json-body`. The `--screen-pop-url`, `--enabled`, and `--desktop-label` flags cover the simple case. Use `--json-body` for the full configuration including query params.
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
### Wrap-Up Reasons
|
|
147
|
+
|
|
148
|
+
Wrap-up reasons are a two-level configuration: org-level reasons, then per-queue assignment.
|
|
149
|
+
|
|
150
|
+
**Org-level parameter table:**
|
|
151
|
+
|
|
152
|
+
| Parameter | Required | Notes |
|
|
153
|
+
|-----------|:--------:|-------|
|
|
154
|
+
| Name | Yes | `--name` flag |
|
|
155
|
+
| Description | No | `--description` flag |
|
|
156
|
+
| Queues | No | List of queue IDs — requires `--json-body` (not available as explicit flag) |
|
|
157
|
+
| Assign all queues | No | `--assign-all-queues-enabled` flag |
|
|
158
|
+
|
|
159
|
+
**Queue-level parameter table:**
|
|
160
|
+
|
|
161
|
+
| Parameter | Required | Notes |
|
|
162
|
+
|-----------|:--------:|-------|
|
|
163
|
+
| Location ID | Yes | Positional argument |
|
|
164
|
+
| Queue ID | Yes | Positional argument |
|
|
165
|
+
| Wrap-up timer enabled | No | `--wrapup-timer-enabled` / `--no-wrapup-timer-enabled` |
|
|
166
|
+
| Wrap-up timer (seconds) | No | `--wrapup-timer` (default 60) |
|
|
167
|
+
| Default wrap-up reason ID | No | `--default-wrapup-reason-id` |
|
|
168
|
+
| Wrap-up reasons list | No | List of reason IDs — requires `--json-body` |
|
|
169
|
+
|
|
170
|
+
CLI commands:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
# --- Org-level reason management ---
|
|
174
|
+
|
|
175
|
+
# List all wrap-up reasons
|
|
176
|
+
wxcli customer-assist list
|
|
177
|
+
|
|
178
|
+
# Create a reason (simple — assign to queues later)
|
|
179
|
+
wxcli customer-assist create --name "Issue Resolved" --description "Customer issue resolved on the call"
|
|
180
|
+
|
|
181
|
+
# Create a reason AND assign to specific queues (requires --json-body)
|
|
182
|
+
wxcli customer-assist create --json-body '{
|
|
183
|
+
"name": "Issue Resolved",
|
|
184
|
+
"description": "Customer issue resolved on the call",
|
|
185
|
+
"queues": ["QUEUE_ID_1", "QUEUE_ID_2"]
|
|
186
|
+
}'
|
|
187
|
+
|
|
188
|
+
# Validate a reason name before creating
|
|
189
|
+
wxcli customer-assist validate-wrap-up --name "Issue Resolved"
|
|
190
|
+
|
|
191
|
+
# Show reason details (includes assigned queues)
|
|
192
|
+
wxcli customer-assist show REASON_ID -o json
|
|
193
|
+
|
|
194
|
+
# Update a reason (incremental queue assignment)
|
|
195
|
+
wxcli customer-assist update REASON_ID --json-body '{
|
|
196
|
+
"queuesToAssign": ["QUEUE_ID_3"],
|
|
197
|
+
"queuesToUnassign": ["QUEUE_ID_1"]
|
|
198
|
+
}'
|
|
199
|
+
|
|
200
|
+
# List queues not yet assigned to a reason
|
|
201
|
+
wxcli customer-assist list-available-queues REASON_ID
|
|
202
|
+
|
|
203
|
+
# Delete a reason
|
|
204
|
+
wxcli customer-assist delete REASON_ID --force
|
|
205
|
+
|
|
206
|
+
# --- Per-queue wrap-up settings ---
|
|
207
|
+
|
|
208
|
+
# View queue wrap-up settings
|
|
209
|
+
wxcli customer-assist list-settings LOCATION_ID QUEUE_ID -o json
|
|
210
|
+
|
|
211
|
+
# Update queue wrap-up timer and assign reasons
|
|
212
|
+
wxcli customer-assist update-settings LOCATION_ID QUEUE_ID --json-body '{
|
|
213
|
+
"wrapupTimerEnabled": true,
|
|
214
|
+
"wrapupTimer": 60,
|
|
215
|
+
"wrapupReasons": ["REASON_ID_1", "REASON_ID_2"],
|
|
216
|
+
"defaultWrapupReasonId": "REASON_ID_1"
|
|
217
|
+
}'
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
> **NOTE:** The `queues` array on `create` and the `wrapupReasons` array on `update-settings` require `--json-body`. The CLI flags only cover scalar fields (`--name`, `--description`, `--wrapup-timer-enabled`, `--wrapup-timer`). For queue assignment at creation time, use `--json-body`.
|
|
221
|
+
|
|
222
|
+
> **NOTE:** Queue assignment on `update` is incremental — use `queuesToAssign` and `queuesToUnassign`, not a full replacement list.
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
### Queue Call Recording
|
|
227
|
+
|
|
228
|
+
Collect from user:
|
|
229
|
+
|
|
230
|
+
| Parameter | Required | Notes |
|
|
231
|
+
|-----------|:--------:|-------|
|
|
232
|
+
| Location ID | Yes | Positional argument |
|
|
233
|
+
| Queue ID | Yes | Positional argument |
|
|
234
|
+
|
|
235
|
+
`wxcli customer-assist show-queue-recording` / `update-queue-recording` do NOT exist — there is no matching API operation in the generated CLI. Use the CX queue itself:
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
# View the CX queue payload — inspect for recording fields (see note below)
|
|
239
|
+
wxcli call-queue show LOCATION_ID QUEUE_ID --has-cx-essentials true -o json
|
|
240
|
+
|
|
241
|
+
# Apply changes via --json-body, using field names found in the show output
|
|
242
|
+
wxcli call-queue update LOCATION_ID QUEUE_ID --json-body '{...}'
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
> **NOTE:** Whether the CX queue payload carries queue-level recording fields is UNVERIFIED — the test org has zero Customer Assist queues to confirm against. Inspect the `call-queue show ... --has-cx-essentials true -o json` output for a recording-related block. If none is present, call recording is instead configured at the org/location level (`wxcli call-recording show`) or per-agent (see `manage-call-settings` skill).
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
### Supervisors
|
|
250
|
+
|
|
251
|
+
Supervisor commands live under `wxcli call-queue`, not `wxcli customer-assist`. **All commands must include `--has-cx-essentials true` when working with Customer Assist supervisors** (without it, commands default to CX Basic).
|
|
252
|
+
|
|
253
|
+
Collect from user (for create):
|
|
254
|
+
|
|
255
|
+
| Parameter | Required | Notes |
|
|
256
|
+
|-----------|:--------:|-------|
|
|
257
|
+
| Supervisor person ID | Yes | `--id` flag — the person's ID (not a separate supervisor entity ID); must be a calling-enabled user |
|
|
258
|
+
| Agents | Yes | List of agent IDs — requires `--json-body` |
|
|
259
|
+
| Has Customer Assist | Yes (for Customer Assist) | `--has-cx-essentials true` |
|
|
260
|
+
|
|
261
|
+
CLI commands:
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
# --- Discovery ---
|
|
265
|
+
|
|
266
|
+
# List all Customer Assist supervisors
|
|
267
|
+
wxcli call-queue list-supervisors --has-cx-essentials true
|
|
268
|
+
|
|
269
|
+
# List available supervisors (not yet assigned)
|
|
270
|
+
wxcli call-queue list-available-supervisors --has-cx-essentials true
|
|
271
|
+
|
|
272
|
+
# List available agents for supervisor assignment
|
|
273
|
+
wxcli call-queue list-available-agents-supervisors --has-cx-essentials true
|
|
274
|
+
|
|
275
|
+
# --- Create ---
|
|
276
|
+
|
|
277
|
+
# Create a supervisor with agents (--id is required AND must be in --json-body)
|
|
278
|
+
wxcli call-queue create-supervisors --has-cx-essentials true \
|
|
279
|
+
--id SUPERVISOR_PERSON_ID --json-body '{"id": "SUPERVISOR_PERSON_ID", "agents": [{"id": "AGENT_ID_1"}, {"id": "AGENT_ID_2"}]}'
|
|
280
|
+
|
|
281
|
+
# --- Read ---
|
|
282
|
+
|
|
283
|
+
# Show supervisor's assigned agents
|
|
284
|
+
wxcli call-queue show-supervisors SUPERVISOR_ID --has-cx-essentials true -o json
|
|
285
|
+
|
|
286
|
+
# --- Update ---
|
|
287
|
+
|
|
288
|
+
# Add/remove agents (incremental)
|
|
289
|
+
wxcli call-queue update-supervisors SUPERVISOR_ID --has-cx-essentials true --json-body '{
|
|
290
|
+
"agents": [
|
|
291
|
+
{"id": "AGENT_ID_3", "action": "ADD"},
|
|
292
|
+
{"id": "AGENT_ID_1", "action": "DELETE"}
|
|
293
|
+
]
|
|
294
|
+
}'
|
|
295
|
+
|
|
296
|
+
# --- Delete ---
|
|
297
|
+
|
|
298
|
+
# Delete a specific supervisor
|
|
299
|
+
wxcli call-queue delete-supervisors-config-1 SUPERVISOR_ID --has-cx-essentials true --force
|
|
300
|
+
|
|
301
|
+
# Delete supervisors in bulk
|
|
302
|
+
wxcli call-queue delete-supervisors-config --has-cx-essentials true --force
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
> **WARNING:** `delete-supervisors-config --force` without specifying IDs may remove **all supervisors in the org**. Always confirm scope before executing. Omitting `--force` triggers a confirmation prompt.
|
|
306
|
+
|
|
307
|
+
> **NOTE:** `SUPERVISOR_ID` in these commands is the supervisor's **person ID**, not a separate supervisor entity ID. Use `wxcli call-queue list-supervisors --has-cx-essentials true` to find supervisor person IDs.
|
|
308
|
+
|
|
309
|
+
> **NOTE:** Runtime supervisor capabilities (silent monitor, whisper coach, barge in, take over) activate automatically once the supervisor-agent relationship is configured. No additional API setup is needed — these are built into the Webex app.
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
### Available Agents
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
# List all agents at a location
|
|
317
|
+
wxcli customer-assist list-available-agents LOCATION_ID
|
|
318
|
+
|
|
319
|
+
# List only agents with Customer Assist (Customer Assist) license
|
|
320
|
+
wxcli customer-assist list-available-agents LOCATION_ID --has-cx-essentials true
|
|
321
|
+
|
|
322
|
+
# List only agents with CX Basic license
|
|
323
|
+
wxcli customer-assist list-available-agents LOCATION_ID --has-cx-essentials false
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
### Deployment Plan Template
|
|
329
|
+
|
|
330
|
+
```
|
|
331
|
+
DEPLOYMENT PLAN
|
|
332
|
+
===============
|
|
333
|
+
Feature: Customer Assist — [sub-feature]
|
|
334
|
+
Location: [name] ([location_id])
|
|
335
|
+
Queue: [queue_name] ([queue_id])
|
|
336
|
+
|
|
337
|
+
Configuration:
|
|
338
|
+
[Feature-specific settings listed here]
|
|
339
|
+
|
|
340
|
+
Prerequisites verified:
|
|
341
|
+
✓ Location exists
|
|
342
|
+
✓ Call queue exists
|
|
343
|
+
✓ Customer Assist licenses assigned ([N] agents)
|
|
344
|
+
✓ [Feature-specific prereqs]
|
|
345
|
+
|
|
346
|
+
Commands to execute:
|
|
347
|
+
wxcli customer-assist [command] ...
|
|
348
|
+
|
|
349
|
+
Proceed? (yes/no)
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
**Wait for user confirmation before executing.**
|
|
353
|
+
|
|
354
|
+
## Step 6: Execute via wxcli
|
|
355
|
+
|
|
356
|
+
Run commands sequentially. Handle errors explicitly:
|
|
357
|
+
- **400 with code 28018**: Customer Assist is not enabled on this queue — create the queue with `--has-cx-essentials true` or use a Customer Assist queue (see Step 4b)
|
|
358
|
+
- **401/403**: Token expired or insufficient scopes — run `wxcli configure`
|
|
359
|
+
- **409**: Name or resource conflict — ask user for alternate
|
|
360
|
+
- **400**: Validation error — read the error message and fix the parameter
|
|
361
|
+
- **400 with code 25008**: Missing required field — use `--json-body` for full control
|
|
362
|
+
- **400 with code 4003 / "Target user not authorized"**: Endpoint requires user-level OAuth, not admin token
|
|
363
|
+
- **404 with code 4008**: Target user needs a Webex Calling license
|
|
364
|
+
- **405 with code 25409**: Workspace requires Professional license
|
|
365
|
+
|
|
366
|
+
## Step 7: Verify creation
|
|
367
|
+
|
|
368
|
+
After configuration, fetch the details back and confirm:
|
|
369
|
+
|
|
370
|
+
```bash
|
|
371
|
+
# Verify screen pop
|
|
372
|
+
wxcli customer-assist show-screen-pop LOCATION_ID QUEUE_ID -o json
|
|
373
|
+
|
|
374
|
+
# Verify wrap-up reasons (org-level)
|
|
375
|
+
wxcli customer-assist list -o json
|
|
376
|
+
wxcli customer-assist show REASON_ID -o json
|
|
377
|
+
|
|
378
|
+
# Verify wrap-up settings (per-queue)
|
|
379
|
+
wxcli customer-assist list-settings LOCATION_ID QUEUE_ID -o json
|
|
380
|
+
|
|
381
|
+
# Verify queue recording (inspect payload for recording fields — see Queue Call Recording note above)
|
|
382
|
+
wxcli call-queue show LOCATION_ID QUEUE_ID --has-cx-essentials true -o json
|
|
383
|
+
|
|
384
|
+
# Verify supervisors
|
|
385
|
+
wxcli call-queue list-supervisors --has-cx-essentials true -o json
|
|
386
|
+
wxcli call-queue show-supervisors SUPERVISOR_ID --has-cx-essentials true -o json
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
## Step 8: Report results
|
|
390
|
+
|
|
391
|
+
Present the configuration results:
|
|
392
|
+
|
|
393
|
+
```
|
|
394
|
+
CUSTOMER ASSIST CONFIGURED
|
|
395
|
+
===========================
|
|
396
|
+
Feature: [sub-feature]
|
|
397
|
+
Queue: [queue_name]
|
|
398
|
+
Location: [location_name]
|
|
399
|
+
|
|
400
|
+
Configuration applied:
|
|
401
|
+
[Feature-specific summary]
|
|
402
|
+
|
|
403
|
+
Verification:
|
|
404
|
+
✓ [Feature] confirmed via read-back
|
|
405
|
+
|
|
406
|
+
Next steps:
|
|
407
|
+
- [Feature-specific next steps]
|
|
408
|
+
- [e.g., "Assign more agents to supervisor via update-supervisors"]
|
|
409
|
+
- [e.g., "Configure additional queues with the same wrap-up reasons"]
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
---
|
|
413
|
+
|
|
414
|
+
## Critical Rules
|
|
415
|
+
|
|
416
|
+
1. **All Customer Assist features require a Customer Assist queue.** Screen pop, queue recording, and wrap-up reasons are per-queue configurations. The queue must be created with `--has-cx-essentials true` — a regular queue returns error 28018. Use `wxcli call-queue list --has-cx-essentials true` to find existing Customer Assist queues (they are hidden from the default `call-queue list`).
|
|
417
|
+
2. **Always show the deployment plan** (Step 5) and wait for user confirmation before executing.
|
|
418
|
+
3. **Always pass `--has-cx-essentials true` on supervisor commands.** Without it, commands default to CX Basic supervisors. This applies to `list-supervisors`, `create-supervisors`, `show-supervisors`, `update-supervisors`, `list-available-supervisors`, and `list-available-agents-supervisors`.
|
|
419
|
+
4. **Supervisor commands live under `wxcli call-queue`, not `wxcli customer-assist`.** The supervisor API base path (`/telephony/config/supervisors`) was grouped with call queues in the OpenAPI spec. The `cx-essentials` group handles wrap-up reasons, screen pop, queue recording, and available agents.
|
|
420
|
+
5. **A supervisor must have at least one agent** when created via `create-supervisors`.
|
|
421
|
+
6. **`delete-supervisors-config --force` can remove ALL supervisors in the org.** The bulk delete endpoint has a `delete_all` option. Always confirm scope before executing.
|
|
422
|
+
7. **Queue call recording requires different scopes.** Queue recording uses `spark-admin:people_read` / `spark-admin:people_write`, while all other Customer Assist features use `spark-admin:telephony_config_read` / `spark-admin:telephony_config_write`.
|
|
423
|
+
8. **Wrap-up reason queue assignment is incremental.** Use `queuesToAssign` and `queuesToUnassign` on update — not a full replacement list.
|
|
424
|
+
9. **`show-supervisors` returns the supervisor's assigned agents, not the supervisor's own details.** The response is a list of agents, not supervisor metadata.
|
|
425
|
+
10. **Per-queue features need both `location_id` and `queue_id`.** Screen pop, queue recording, and wrap-up settings are scoped to a specific queue within a specific location.
|
|
426
|
+
11. **`queryParams` on screen pop requires `--json-body`.** The `--screen-pop-url`, `--enabled`, and `--desktop-label` flags cover the simple case. For query parameters (passing caller data to the CRM URL), use `--json-body`.
|
|
427
|
+
12. **`queues` array on wrap-up reason create requires `--json-body`.** To assign a reason to specific queues on creation, use `--json-body`. Alternatively, create the reason first, then assign queues via `update`.
|
|
428
|
+
13. **Runtime supervisor capabilities are automatic.** Silent monitor, whisper coach, barge in, and take over activate once the supervisor-agent relationship is configured. No additional API setup is needed.
|
|
429
|
+
14. **Recording vendor must be configured first.** Queue call recording depends on an org-level or location-level recording vendor configuration. Check with `wxcli call-recording show -o json` before enabling queue recording.
|
|
430
|
+
15. **Customer Assist queues are hidden from default `call-queue list`.** You must pass `--has-cx-essentials true` to see them. Without the flag, only regular (non-Customer Assist) queues are returned.
|
|
431
|
+
16. **Queue recording schema is UNVERIFIED.** Earlier versions of this skill asserted nested recording objects (`notification`, `repeat`, `startStopAnnouncement`) in the queue payload — that schema came from a fabricated example tied to commands that never existed (2026-07-01 audit). Inspect a real CX queue payload (`wxcli call-queue show LOCATION_ID QUEUE_ID --has-cx-essentials true -o json`) before building any `--json-body`; if no recording fields appear, recording is org/location-level (`call-recording show`) or per-agent (manage-call-settings skill).
|
|
432
|
+
17. **`create-supervisors` requires `id` in both `--id` flag and `--json-body`.** The `--id` flag is a required CLI option. When using `--json-body`, include `"id"` in the JSON body too, since `--json-body` overrides flag-built body fields.
|
|
433
|
+
18. **To remove a Customer Assist supervisor, remove all their agents first.** The DELETE endpoint (`delete-supervisors-config-1`) returns 204 but the supervisor may persist. Instead, use `update-supervisors` with `action: DELETE` on each agent. When the last agent is removed, the supervisor is automatically deleted.
|
|
434
|
+
19. **Customer Assist queue creation requires `callPolicies`.** Unlike regular queues, CX queues require the `callPolicies` field (e.g., `{"policy":"SIMULTANEOUS"}`). This must be passed via `--json-body` since it's not available as a CLI flag.
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
## Context Compaction Recovery
|
|
439
|
+
|
|
440
|
+
If context compacts mid-execution, recover by:
|
|
441
|
+
1. Read the deployment plan from `docs/plans/` to recover what was planned
|
|
442
|
+
2. Check what's already been configured: run the relevant `show` / `list` commands
|
|
443
|
+
3. Resume from the first incomplete step
|