Multi session tests - #5099
Conversation
Co-authored-by: robstax <robert.stachofsky@gmail.com> Co-authored-by: rstachof <rstachof@cisco.com> Co-authored-by: Coread <coread@cisco.com> Co-authored-by: László Vadász <maxinteger@gmail.com> Co-authored-by: chrisadubois <chdubois@cisco.com> Co-authored-by: Kesava Krishnan Madavan <mkesavan13@gmail.com> Co-authored-by: Kacper Waśniowski <kacp.was@gmail.com> Co-authored-by: Edmond Vujići <67634227+edvujic@users.noreply.github.com> Co-authored-by: Sreekanth Narayanan <131740035+sreenara@users.noreply.github.com> Co-authored-by: Peter Cole <55573154+peter7cole@users.noreply.github.com> Co-authored-by: rsarika <95286093+rsarika@users.noreply.github.com> Co-authored-by: akulakum <74420487+akulakum@users.noreply.github.com> Co-authored-by: Kesari3008 <65543166+Kesari3008@users.noreply.github.com> Co-authored-by: Bharath Balan <62698609+bhabalan@users.noreply.github.com> Co-authored-by: Marcin <marcin.bazyl@gmail.com> Co-authored-by: Bryce Tham <brycetham@users.noreply.github.com> Co-authored-by: shivani1211 <shivaniyadav1211@gmail.com> Co-authored-by: mickelr <121160648+mickelr@users.noreply.github.com>
Co-authored-by: Priya <pkesari@cisco.com> Co-authored-by: robstax <robert.stachofsky@gmail.com> Co-authored-by: rstachof <rstachof@cisco.com> Co-authored-by: Coread <coread@cisco.com> Co-authored-by: László Vadász <maxinteger@gmail.com> Co-authored-by: chrisadubois <chdubois@cisco.com> Co-authored-by: Kesava Krishnan Madavan <mkesavan13@gmail.com> Co-authored-by: Kacper Waśniowski <kacp.was@gmail.com> Co-authored-by: Edmond Vujići <67634227+edvujic@users.noreply.github.com> Co-authored-by: Sreekanth Narayanan <131740035+sreenara@users.noreply.github.com> Co-authored-by: Peter Cole <55573154+peter7cole@users.noreply.github.com> Co-authored-by: rsarika <95286093+rsarika@users.noreply.github.com> Co-authored-by: akulakum <74420487+akulakum@users.noreply.github.com> Co-authored-by: Kesari3008 <65543166+Kesari3008@users.noreply.github.com> Co-authored-by: Bharath Balan <62698609+bhabalan@users.noreply.github.com> Co-authored-by: Marcin <marcin.bazyl@gmail.com> Co-authored-by: Bryce Tham <brycetham@users.noreply.github.com> Co-authored-by: shivani1211 <shivaniyadav1211@gmail.com> Co-authored-by: mickelr <121160648+mickelr@users.noreply.github.com>
Co-authored-by: robstax <robert.stachofsky@gmail.com> Co-authored-by: rstachof <rstachof@cisco.com> Co-authored-by: Coread <coread@cisco.com> Co-authored-by: László Vadász <maxinteger@gmail.com> Co-authored-by: chrisadubois <chdubois@cisco.com> Co-authored-by: Kesava Krishnan Madavan <mkesavan13@gmail.com> Co-authored-by: Kacper Waśniowski <kacp.was@gmail.com> Co-authored-by: Edmond Vujići <67634227+edvujic@users.noreply.github.com> Co-authored-by: Sreekanth Narayanan <131740035+sreenara@users.noreply.github.com> Co-authored-by: Peter Cole <55573154+peter7cole@users.noreply.github.com> Co-authored-by: rsarika <95286093+rsarika@users.noreply.github.com> Co-authored-by: akulakum <74420487+akulakum@users.noreply.github.com> Co-authored-by: Kesari3008 <65543166+Kesari3008@users.noreply.github.com> Co-authored-by: Bharath Balan <62698609+bhabalan@users.noreply.github.com> Co-authored-by: Marcin <marcin.bazyl@gmail.com> Co-authored-by: Bryce Tham <brycetham@users.noreply.github.com> Co-authored-by: shivani1211 <shivaniyadav1211@gmail.com> Co-authored-by: mickelr <121160648+mickelr@users.noreply.github.com> Co-authored-by: Jordan Rowan <86778628+jor-row@users.noreply.github.com> Co-authored-by: Anna Tsukanova <38460776+antsukanova@users.noreply.github.com> Co-authored-by: John Soter <john.soter@outlook.com> Co-authored-by: jsoter <jsoter@cisco.com> Co-authored-by: Arun Ganeshan <arungane@cisco.com> Co-authored-by: Rajesh Kumar <131742425+rarajes2@users.noreply.github.com> Co-authored-by: Shreyas Sharma <72344404+Shreyas281299@users.noreply.github.com> Co-authored-by: Stan Wang <stanjiawang@gmail.com> Co-authored-by: Stan Wang <stawang2@cisco.com> Co-authored-by: honghli <honghli@cisco.com> Co-authored-by: JudyZhu <120536178+JudyZhuHz@users.noreply.github.com> Co-authored-by: jiwang7 <133743423+jiwang7@users.noreply.github.com>
# Conflicts: # docs/samples/contact-center/app.js # docs/samples/contact-center/index.html # package.json # packages/@webex/contact-center/README.md # packages/@webex/contact-center/babel.config.js # packages/@webex/contact-center/package.json # packages/@webex/contact-center/src/cc.ts # packages/@webex/contact-center/src/constants.ts # packages/@webex/contact-center/src/index.ts # packages/@webex/contact-center/src/logger-proxy.ts # packages/@webex/contact-center/src/metrics/behavioral-events.ts # packages/@webex/contact-center/src/metrics/constants.ts # packages/@webex/contact-center/src/services/config/constants.ts # packages/@webex/contact-center/src/services/config/index.ts # packages/@webex/contact-center/src/services/config/types.ts # packages/@webex/contact-center/src/services/core/GlobalTypes.ts # packages/@webex/contact-center/src/services/core/Utils.ts # packages/@webex/contact-center/src/services/core/aqm-reqs.ts # packages/@webex/contact-center/src/services/core/websocket/WebSocketManager.ts # packages/@webex/contact-center/src/services/task/TaskManager.ts # packages/@webex/contact-center/src/services/task/constants.ts # packages/@webex/contact-center/src/services/task/index.ts # packages/@webex/contact-center/src/services/task/types.ts # packages/@webex/contact-center/src/types.ts # packages/@webex/contact-center/test/unit/spec/cc.ts # packages/@webex/contact-center/test/unit/spec/services/config/index.ts # packages/@webex/contact-center/test/unit/spec/services/core/Utils.ts # packages/@webex/contact-center/test/unit/spec/services/task/TaskManager.ts # packages/@webex/contact-center/test/unit/spec/services/task/index.ts # packages/@webex/contact-center/typedoc.md # packages/@webex/internal-plugin-metrics/package.json # packages/@webex/internal-plugin-metrics/src/call-diagnostic/call-diagnostic-metrics.ts # packages/@webex/internal-plugin-metrics/src/new-metrics.ts # packages/@webex/internal-plugin-metrics/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts # packages/@webex/internal-plugin-metrics/test/unit/spec/new-metrics.ts # packages/@webex/internal-plugin-voicea/src/constants.ts # packages/@webex/internal-plugin-voicea/src/voicea.ts # packages/@webex/internal-plugin-voicea/test/unit/spec/voicea.js # packages/@webex/media-helpers/package.json # packages/@webex/plugin-meetings/package.json # packages/@webex/plugin-meetings/src/config.ts # packages/@webex/plugin-meetings/src/constants.ts # packages/@webex/plugin-meetings/src/locus-info/index.ts # packages/@webex/plugin-meetings/src/media/index.ts # packages/@webex/plugin-meetings/src/media/properties.ts # packages/@webex/plugin-meetings/src/meeting/in-meeting-actions.ts # packages/@webex/plugin-meetings/src/meeting/index.ts # packages/@webex/plugin-meetings/src/meetings/index.ts # packages/@webex/plugin-meetings/src/member/index.ts # packages/@webex/plugin-meetings/src/member/util.ts # packages/@webex/plugin-meetings/src/members/index.ts # packages/@webex/plugin-meetings/src/members/request.ts # packages/@webex/plugin-meetings/src/members/util.ts # packages/@webex/plugin-meetings/src/reachability/index.ts # packages/@webex/plugin-meetings/test/unit/spec/locus-info/index.js # packages/@webex/plugin-meetings/test/unit/spec/media/index.ts # packages/@webex/plugin-meetings/test/unit/spec/meeting/brbState.ts # packages/@webex/plugin-meetings/test/unit/spec/meeting/in-meeting-actions.ts # packages/@webex/plugin-meetings/test/unit/spec/meeting/index.js # packages/@webex/plugin-meetings/test/unit/spec/meetings/index.js # packages/@webex/plugin-meetings/test/unit/spec/members/index.js # packages/@webex/plugin-meetings/test/unit/spec/members/request.js # packages/@webex/plugin-meetings/test/unit/spec/members/utils.js # packages/@webex/plugin-meetings/test/unit/spec/reachability/index.ts # packages/calling/package.json # yarn.lock
Co-authored-by: xiaoyang <13363075304@163.com> Co-authored-by: rsarika <95286093+rsarika@users.noreply.github.com> Co-authored-by: Rajesh Kumar <131742425+rarajes2@users.noreply.github.com> Co-authored-by: akulakum <74420487+akulakum@users.noreply.github.com> Co-authored-by: Marcin <marcin.bazyl@gmail.com> Co-authored-by: Lisa Smith <82507773+lismith2-cisco@users.noreply.github.com> Co-authored-by: Shreyas Sharma <72344404+Shreyas281299@users.noreply.github.com> Co-authored-by: Ravi Chandra Sekhar Sarika <rsarika@cisco.com> Co-authored-by: Kesari3008 <65543166+Kesari3008@users.noreply.github.com> Co-authored-by: WeijuanShao <weijusha@cisco.com> Co-authored-by: sokn-sys <58249052+sokn-sys@users.noreply.github.com> Co-authored-by: CormacGCisco <cogeragh@cisco.com> Co-authored-by: Coread <coread@cisco.com> Co-authored-by: junhao3268 <142187938+junhao3268@users.noreply.github.com> Co-authored-by: mickelr <121160648+mickelr@users.noreply.github.com> Co-authored-by: vskygk <49182080+vskygk@users.noreply.github.com> Co-authored-by: vicwan <vicwan@cisco.com> Co-authored-by: JudyZhu <120536178+JudyZhuHz@users.noreply.github.com> Co-authored-by: chrisadubois <chdubois@cisco.com> Co-authored-by: venky-mediboina <91044509+venky-mediboina@users.noreply.github.com> Co-authored-by: Bharath Balan <62698609+bhabalan@users.noreply.github.com> Co-authored-by: Hem Dutt <hdutt@cisco.com> Co-authored-by: Hem Dutt <hemdutt.developer@gmail.com>
Co-authored-by: arungane <arungane@cisco.com>
webex#4721) Co-authored-by: Rankush Kumar <rankkuma+cisco@cisco.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Rankush Kumar <rankkuma+cisco@cisco.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…ex#4734) Co-authored-by: Rankush Kumar <rankkuma+cisco@cisco.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…x#4735) Co-authored-by: Rankush Kumar <rankkuma+cisco@cisco.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…ex#4730) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…bex#4728) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
webex#4731) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…ebex#4729) Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com> Co-authored-by: Priya <pkesari@cisco.com> Co-authored-by: Kesari3008 <65543166+Kesari3008@users.noreply.github.com>
Add automated SDD documentation drift detection tooling: - /spec-drift: full scan command for validating all ai-docs against source code - /spec-drift-changed: incremental scan for changed files only - Pre-commit hook to block commits when ai-docs drift is unverified Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Shreyas Sharma <shreyassharma9912@gmail.com> Co-authored-by: Kesava Krishnan Madavan <mkesavan13@gmail.com> Co-authored-by: ciscoRankush <119413473+ciscoRankush@users.noreply.github.com> Co-authored-by: Rankush Kumar <rankkuma+cisco@cisco.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Shreyas Sharma <72344404+Shreyas281299@users.noreply.github.com>
…ebex#4722) Co-authored-by: Rankush Kumar <rankkuma+cisco@cisco.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Shreyas Sharma <72344404+Shreyas281299@users.noreply.github.com>
…it hook (webex#4761) Co-authored-by: ciscoRankush <ciscoRankush@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Rankush Kumar <rankkuma+cisco@cisco.com>
…ebex#4763) Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
…#4762) Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Kesava Krishnan Madavan <mkesavan13@gmail.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
webex#4810) Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
… customer disconnect and consult failures with guard protection (webex#4841)
…lure in Multi-Login (webex#4850)
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
…ebex#4805) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Rankush Kumar <rankkuma+cisco@cisco.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: akulakum <74420487+akulakum@users.noreply.github.com> Co-authored-by: Akula Uday <akulakum@cisco.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5ffc748c79
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if (stateMachineEvent) { | ||
| task.sendStateMachineEvent(stateMachineEvent); |
There was a problem hiding this comment.
Gate WebRTC task incoming until the call exists
When loginOption is BROWSER and the telephony AgentContactReserved event arrives before LINE_EVENTS.INCOMING_CALL, this unconditional state-machine send emits TASK_INCOMING immediately. The previous path waited for this.call before emitting; now an agent can accept while WebCallingService.call is still unset, and answerCall() only logs and returns, so the UI records a successful accept without answering the actual call. Keep the old gate or defer TASK_INCOMING to handleIncomingWebCall for WebRTC tasks.
Useful? React with 👍 / 👎.
| ); | ||
| this.mobiusClusters = [mobiusObject.serviceUrls[0].baseUrl]; | ||
| } | ||
| this.mobiusClusters = this.webex.internal.services.getMobiusClusters(); |
There was a problem hiding this comment.
Restore Mobius cluster fallback for legacy services
In deployments backed by the legacy services object without _hostCatalog, getMobiusClusters() returns an empty array; the previous constructor explicitly fell back to _services. With an empty array, getMobiusServers() either skips regional discovery and creates a Line with no primaryMobiusUris, or in the default path dereferences this.mobiusClusters[0].host, blocking CallingClient.init(). Preserve the old _services/default fallback before relying on this helper.
Useful? React with 👍 / 👎.
| async handleMessage(message: HashTreeMessage, debugText?: string): Promise<void> { | ||
| // todo |
There was a problem hiding this comment.
Implement hash-tree parsing before routing events to it
For meetings that set hashTreeParser (join/get-loci responses with dataSets or LLM locus.state_message), LocusInfo.parse() no longer handles the classic locus path and calls handleMessage() instead. Since handleMessage() is a no-op and never calls locusInfoUpdateCallback, participant/self/media updates from hash-tree events are silently dropped for those meetings. Keep the classic handling path or leave hash-tree routing disabled until the parser is implemented.
Useful? React with 👍 / 👎.
| private requestRealTimeTranscripts(eventType: string, interactionId: string): void { | ||
| const action = TRANSCRIPT_EVENT_MAP[eventType]; | ||
| if (!action || !this.apiAIAssistant) return; | ||
| if (this.configFlags?.aiFeature?.realtimeTranscripts?.enable === false) return; |
There was a problem hiding this comment.
Require realtime transcript flag before sending events
When aiFeature or realtimeTranscripts is absent for tenants that do not have the feature, this guard only skips the explicit false case, so every mapped task event still calls ApiAIAssistant.sendEvent() and produces failed AI-assistant requests. This is inconsistent with cc.ts, which only opens the RTD websocket when enable is true, and with fetchHistoricTranscripts(), which rejects unless the flag is true. Require enable === true before sending transcript start/stop events.
Useful? React with 👍 / 👎.
|
This pull request is automatically being deployed by Amplify Hosting (learn more). |
COMPLETES #< INSERT LINK TO ISSUE >
This pull request addresses
< DESCRIBE THE CONTEXT OF THE ISSUE >
by making the following changes
< DESCRIBE YOUR CHANGES >
Change Type
The following scenarios were tested
< ENUMERATE TESTS PERFORMED, WHETHER MANUAL OR AUTOMATED >
The GAI Coding Policy And Copyright Annotation Best Practices
I certified that
Make sure to have followed the contributing guidelines before submitting.