feat(cc): add campaign preview#684
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c3cda98967
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
This pull request is automatically being deployed by Amplify Hosting (learn more). |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9a2feebe73
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 003596fba6
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| const globalVariablesRef = useRef(latestGlobalVariables); | ||
| if (latestGlobalVariables.length > 0) { | ||
| globalVariablesRef.current = latestGlobalVariables; | ||
| } |
There was a problem hiding this comment.
Reset campaign CAD when a new preview contact arrives
When Skip/Remove advances the same campaign task to another contact and the SDK update omits or empties callAssociatedData, this ref never clears because it only writes non-empty values. The component already detects new contacts via timeoutTimestamp below, but GlobalVariablesPanel will keep showing the previous contact's global variables on the next preview; reset/key the ref when the offer changes, and mirror the same fix in the popover path.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 97c2c9dd1a
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| // The agent has joined the telephony reservation but hasn't accepted the | ||
| // campaign preview yet (Accept/Skip/Remove buttons still showing). | ||
| // CallControl should only render after the preview is explicitly accepted. | ||
| if (task && this.isCampaignPreview(task) && task.data.interaction.state === 'new') return; |
There was a problem hiding this comment.
Honor accepted campaign IDs when selecting current task
When a campaign preview accept is confirmed via handleCampaignPreviewReservation, this change records the interaction in acceptedCampaignIds and immediately refreshes the task list, but this guard still rejects any campaign snapshot whose interaction.state is still 'new'. In that transient accepted-but-not-yet-state-updated case, the accepted preview is never assigned to currentTask, so CallControl/CallControlCAD stay hidden until another SDK update arrives; use the accepted-campaign set here as well before treating the preview as pending.
Useful? React with 👍 / 👎.
| }; | ||
|
|
||
| const CampaignTaskWithMetrics = withMetrics(CampaignTask, 'CampaignTask'); | ||
| export default CampaignTaskWithMetrics; |
There was a problem hiding this comment.
Should we wrap this with ErrorBoundary too? The other task components all have it and if something blows up in here it'd take down the whole TaskList.
There was a problem hiding this comment.
i added an ErrorBoundary to where CampaignTask is rendered
| @@ -648,6 +741,36 @@ class StoreWrapper implements IStoreWrapper { | |||
| this.refreshTaskList(); | |||
| }; | |||
|
|
|||
There was a problem hiding this comment.
nit: event is untyped here — should be ITask like the other handlers.
There was a problem hiding this comment.
should be resolved
| setIsAcceptClicked(true); | ||
| setHandleTimestamp(Date.now()); | ||
| disableAllButtons(); | ||
| logger?.info('CC-Widgets: CampaignTask: Auto-accept UI state set, awaiting backend', { |
There was a problem hiding this comment.
nit: This useState is way down here after a bunch of useEffects. Easy to miss — mind moving it up with the rest of the state declarations?
There was a problem hiding this comment.
there isn't a useState down here
97c2c9d to
e8a783a
Compare
COMPLETES #https://jira-eng-sjc12.cisco.com/jira/browse/CAI-7660 and https://jira-eng-sjc12.cisco.com/jira/browse/CAI-7662
This pull request addresses
Adds the UI for the campaign preview functionality
by making the following changes
creates new components for campaign preview
creates global variable component to share between call control cad and campaign components
makes changes to call control cad to render campaign preview ui
adds campaign preview to task list only when flag is enabled
Figma: https://www.figma.com/design/JvnDPHRIXlvZEiSSCBwtjk/WxCC-6242---Preview-Campaign?node-id=6473-173114&m=dev
Vidcast: https://app.vidcast.io/share/72f03823-417d-4417-8a5a-35032943f3d3
Change Type
The following scenarios were tested
The testing is done with the amplify link
< ENUMERATE TESTS PERFORMED, WHETHER MANUAL OR AUTOMATED >
Can accept campaign previews
Can skip campaign previews
Can remove campaign previews
Can disable skip/remove buttons based on campaign settings
Campaign auto action fires when campaign times out
The GAI Coding Policy And Copyright Annotation Best Practices
Checklist before merging
Make sure to have followed the contributing guidelines before submitting.