Skip to content

Allianz phone and Salesforce console

Status: Current | Last reviewed: 2026-10-12

The Vanguard Allianz agents are connected to the DevSDO Allianz Salesforce app and the dccdev Amazon Connect number +1 833-799-5477. Insurance records remain synthetic. This configuration does not change the Macau deployment.

Producer 4873 to human Copilot 4870

The separate producer number +1 866-898-5617 now uses voice agent 4873 v7, startup workflow 1932 v5, synchronous handoff workflow 1933 v4, and the existing customer whisper for Copilot 4870. The numbered menu below remains a separate configuration.

  1. Startup initializes the actual Case and Voice Task, then upserts Allianz_Workspace__c using its unique Case_Key__c. An existing workspace's context, draft, receipt and revision survive this step.
  2. The existing send_case_summary tool now invokes workflow 1933 synchronously. Its Case state, verification status and policy lookup result are bound by runtime tool logic and hidden from the model's input schema. It saves the actual summary, checks that the policy belongs to the Case Contact's Producer, and commits Case verification/policy/conversation plus workspace context in one Salesforce Composite transaction. It never preconfirms illustration assumptions or resets the human's draft.
  3. end_session receives the workflow's captured return attributes. Connect routes onward only for session_escalated=true; a normal goodbye disconnects.
  4. Allianz - Producer Support transfers to TrueServe DevSDO Salesforce Inbound (0685b70d-3245-4a2d-a19b-a95546816192). That flow invokes the existing trueserve-devsdo-scv-inbound relay to prepare the VoiceCall and explicitly execute its SCV omniFlow operation before queueing.
  5. The connector carries validated SalesforceFields and the actual case_id into the precreated VoiceCall. TrueServe_DevSDO_Inbound v9 resolves VoiceCall.DCC_CaseId__c, links the Case, sets its actual conversation ID and requests the focused Case screen pop. It does not create workspaces or set verification/policy fields. Missing Case or popup errors retain queue routing.

The SCV contact-center allowlist includes this producer number in routing.additionalPhoneNumbers; its original primary number remains configured. The previously direct-to-queue producer return path did not invoke Omni. The previous Omni configuration also used a fixed Case and a policy number with leading whitespace. Neither remains in the deployed routing path.

Incoming caller name and summary

Workflow 1933 resolves CustomerName, CustomerRecordId and CustomerOrganization from the actual Case's Contact and Account. The native SCV contact receives the person's name and Contact ID; this lookup does not verify the caller. For David Chen's Case, the organization remains Chen Financial Group, and the caller display is David Chen.

The Allianz-only trusrv-vanguard-allianz-salesforce-fields Lambda prefers that Contact name over the existing sfdc-DCC_Caller_Name__c fallback. It limits DCC_Summary__c and DCC_Caller_Name__c to their Salesforce Text(255) capacity, with an ellipsis for truncated preview text. The full summary remains in the original contact attributes and Case workspace. The October 12 failing call sent 293 characters into the summary field; its VoiceCall had a null summary. The mapper now returns a 255-character preview for that same input.

The maintained Lambda source is producer-salesforce-fields.py; its deployment package contains that file as lambda_function.py, with handler lambda_function.lambda_handler. Back up the deployed package and configuration, check RevisionId before replacing code, and verify the resulting code hash and invocation output. A caller-display correction requires only this Lambda and the two affected nodes in workflow 1933; do not rerun the full installer or republish agents, startup, Omni, or unrelated contact flows for it.

Contact 56a7ca41-47a4-486d-b9fe-a282b01af09d reached a representative and opened Case 00023309. Its voice transcript requested an immediate representative without verification, so the hidden contract details were expected. Copilot 4870 stored transcripts but withheld policy guidance for the unverified Case. The installed Agent Assist completed its embed-ready handshake in an ordinary fresh browser, but enabling third-party cookie restrictions reproduced a loading failure: exchange returned 302, both session cookies were blocked, and the iframe returned 401 without reporting ready. Surface-app now partitions both HTTPS session cookies. The same restricted-browser check then returned 200 and reported ready. The affected user's browser settings are not known; this establishes a reproducible failure and its correction. Caller display, embed readiness and policy authorization remain separate checks. The native handset's reported “Speed Dial” label still requires a live check with the new Contact identity.

The Salesforce integration is TrueServe Dev SDO (f28f65a9-0598-47df-8d08-77f7282a8f09), API 62.0. Composite subrequest URLs must use that same API version. Its run-as user needs the existing Allianz_Service_Console permissions. If fields remain invisible after access is granted, refresh only this integration's cached OAuth token; the October 12 test required a fresh session before the new field permissions became visible.

Maintained scripts in apps/ai-manager/scripts/allianz-demo/:

  • handoff-install.ts prepare: revision-check and publish the workflows, then stage agent 4873. publish-agent requires passing native verification and an unchanged draft before preflight/publication.
  • handoff-verify.py: initialize isolated Cases, exercise verified/unverified native handoffs, and verify idempotency and preservation of request state.
  • handoff-salesforce.py: stage the routing-only Flow from a fresh live backup. Retrieve and compare the live Flow before deploying to preserve concurrent edits.
  • handoff-connect.py: stage the producer return branch; publish checks drift and verifies AWS readback. It preserves startup, caller selection and whisper.
  • handoff-scv-verify.mjs: exercise SCRT VoiceCall creation and the real Omni Flow, then clear/close its synthetic routing record.
  • handoff-ui-verify.ts: open the persisted Case in the installed DCC app and verify that its policy loads without the missing-policy widget.

Use .devcontainer/scripts/with-env.sh for the native workflow and SCV scripts. Private snapshots, deployment results and test evidence are under .local-data/allianz-handoff/. October 12 automated checks passed for native verified/unverified persistence, retries, SCV queue resolution, Case linkage and the installed Case page. On October 12, the user reported that the live Case popup is working, completing the outstanding screen-pop acceptance check. The deployed AWS relay also passed a call to the live connector and its Connect read path; the live contact-center settings returned the updated number allowlist.

Call and supervision routing

The ElevenLabs Samantha recording says, “Thanks for calling Allianz. Press 1 for Beneficiary Support. Press 2 for Producer Support.” Synthesis uses “AH-lee-ahnz.” The uploaded prompt is mono, 8 kHz, G.711 mu-law WAV.

  • 1: Target the personal queue of Connect user erigolden@deloitte.com. On answer, the customer whisper starts Kinesis Video Streams in both audio directions and invokes the Allianz session-start alias for Copilot 4446. A Copilot startup failure allows the human call to continue.
  • 2: Transfer through the existing Vanguard Chime Voice Connector to pipeline-4444, the producer voice agent. A normal return ends the contact.
  • The menu retries once after an invalid or missing choice. Transfer errors play an unavailable message and end the call.
  • Workflow 1847 publishes HITL_Escalation__e to DevSDO and finishes. Record_Properties__c.RecordType is Allianz_Support. The active Process_HITL_Escalation Salesforce flow branches only those requests to Allianz Specialist Support. The queue's sole member is erigolden@trueserve.devsdo.
  • The Case's right-hand specialist chat uses agent 4445, bound to Related_Conversation_Id__c. Its injection returns a human question or decision to the live voice conversation. The workflow has no response/wait node. Approval alone is not a completed illustration submission.

Salesforce retains Erik's existing TrueServeContactCenter BYO SCV Call Center and Vanguard translator. Do not add the Amazon-native SCV create-VoiceCall Lambda: this org uses the existing TrueServe adapter. The shared Connect routing profile is unchanged; the inbound flow targets Erik's personal queue.

Producer Preview caller identity

The separate Allianz - Producer Support flow b566a161-89fa-4e6c-b509-97610bf1aa19 routes to published voice agent 4873. It is the flow selected in the shared Preview link for 4873:draft; Telephony uses the published agent behind the Connect flow, not that open draft. The numbered menu and pipeline-4444 route above remain a separate flow.

For Salesforce transfer testing, the DCCDev Connect integration maps this Preview flow to contact center 04vDW0000000AkAYAU and DNIS +18668985617. Enter ANI and leave DNIS blank. Studio validates the destination before AWS call creation and binds the resolved numbers to the returned contact ID. The SCV relay uses that authorized binding when a browser contact has no native phone endpoints. See Preview routing. The October 12 failed contact 76c448ea-7c9a-4372-b6c4-eadfc4e4e90b reached the correct inbound flow but was rejected by the old native-endpoint-only number check. Its Case/context had saved successfully; no human queue or Copilot session was started.

On October 9, the browser start API returned HTTP 200, but the producer flow failed its Voice Connector transfer because $.CustomerEndpoint.Address resolved to an empty FromUser. For example, contact c6b2ae90-99bf-4760-be03-3fdc97a269f0 started at 12:37:57 UTC and ended two seconds later with CONTACT_FLOW_DISCONNECT. Browser contacts created by StartWebRTCContact have no native phone ANI. Adding a Preview variable cannot override that Connect system field.

At 12:40:58 UTC, producer-connect-preview.py --apply published a correction to this producer flow only. Before every producer transfer, it selects:

  1. $.CustomerEndpoint.Address when it starts with +.
  2. Otherwise $.Attributes.ani when it starts with +.
  3. Otherwise the literal SIP identity anonymous.

The result is stored in trueserveCallerId, and VoiceConnector.FromUser now reads $.Attributes.trueserveCallerId. Native phone identity takes precedence over a supplied attribute. Preview already validates and normalizes entered ANI; this source-selection check is not an identity-verification gate. No synthetic phone number is assigned to blank Preview calls.

The patch preserves agent 4873, the Voice Connector, existing prompts, return path, queue, whisper and telephone associations. It reads the live flow, rejects an unexpected transfer configuration, saves a private backup and proposed JSON, then checks for concurrent changes before publication and verifies the readback. Running it without --apply only prepares the plan. Do not rerun the older connect-flow.py --apply to repair this separate flow.

Live browser verification used the shared Preview configuration:

Check Evidence Result
Blank ANI Contact 8b01d2c1-8ea6-4425-ae3b-5d3b54c57ba8, conversation 0dded4b0-e1ea-5232-9831-336f25139b58 Agent 4873 greeted the caller; trueserveCallerId=anonymous; browser audio stayed connected until the test hung up
Explicit test ANI Contact 392a1bf9-fd43-44f1-9f7b-db538542df56, conversation 68c8a5d2-63c9-5f63-a1cc-9c0770f6c505 +12025550123 reached Connect and the AI session; caller speech was transcribed and the agent replied
Actual end-session return Subsequent live contact 64e29a0b-59c1-4a2b-82f2-4c8e793ff19e at 12:42:15 UTC Attribute write succeeded, transfer returned Success at 12:42:43 UTC, then Connect played “Coming out of agent studio agent” and entered the IVR menu

Both controlled browser samples received nonzero audio with zero reported inbound packet loss. Five caller-routing tests and focused Python lint pass; the existing ten ARI attribute-writer tests also pass. The native phone branch is covered by routing tests, not a new PSTN call.

Remaining agent behavior: in the explicit-ANI sample the agent announced a human transfer but did not invoke end_session before the test hung up after 55 seconds. Do not count that sample as successful handback. The separate live contact above did invoke the tool and verifies the actual return mechanism. The current flow returns to its marker and menu; it does not automatically select a human queue based on session_escalated.

End-session contact attributes

For Connect calls, ARI writes user-defined contact attributes using the initial contact ID before hanging up the AI's SIP leg. The names are flat, with no X-Session-End- prefix:

Tool input Connect attribute Flow reference
reason reason, such as representative_requested $.Attributes.reason
session_escalated session_escalated, string "true" or "false" $.Attributes.session_escalated
params.summary summary $.Attributes.summary
Another params entry Its key, sanitized and stringified $.Attributes.<key>

Contact 64e29a0b-59c1-4a2b-82f2-4c8e793ff19e contains reason=representative_requested, session_escalated=true, and a summary stating that the caller requested a representative before verification. The initial session_escalated=unresolved is replaced only when the tool supplies its final value. A spoken transfer promise alone does not write these attributes. Direct Preview has no Connect contact to update.

Private flow snapshots, browser screenshots, media counters and AWS readbacks are under .local-data/allianz-connect-return/. Neither the Preview API nor its request schema changed, so no API specification regeneration is required.

Producer startup preparation

The producer flow starts the published agent's Start Conversation workflow before playing a recorded welcome. The callout returns after durable acceptance; Salesforce initialization continues while the audio plays. On AI startup, the same initial Connect contact ID joins that operation and reuses its result. A pending, failed or expired result never triggers a second synchronous create. The native release is agent 4873 v6 and workflow 1932 v2.

The recording uses agent 4873's ElevenLabs voice ZoiZ8fuDWInAcwPXaVeq and eleven_v4_turbo, with “AH-lee-ahnz” in the synthesis text:

Thanks for calling Allianz producer support. We're locating your records based on the number you're calling from. This will take just a moment.

The generated audio lasts 7.36 seconds and is uploaded as mono 8 kHz G.711 mu-law WAV. The AI greeting is “Hi David! How can I help you today?” The older menu recording and the beneficiary path remain separate.

The dedicated Lambda is trusrv-vanguard-allianz-startup:live, pinned to version 1. Its prompt is e0fa2d46-1b8a-476b-8378-0a008053ffb6. The October 10 synthetic qualification measured 605 ms for AWS acceptance and 122 ms for the lifecycle join after the 7.36-second welcome lead. Initialization had completed, and a repeat join returned the identical result from exactly one workflow run. This measures preparation and result retrieval; it does not include Connect media setup or the agent's first generated audio.

The first qualification exposed output mappings that assumed a nested code-node result. Version 2 returns the initializer's persisted vars._allianz_sf_* fields directly. The earlier run and its interaction remain in history; it was not replayed after the workflow revision changed.

The workflow runs the existing Salesforce initializer and returns _allianz_sf_state plus its linked identifier/status fields. initiate_case now retrieves that state without a network call. Summary submission, native authentication and policy-access checks retain their existing behavior. Administrative caller lookup does not verify identity.

The inspected flow had subsequently configured both nonblank caller branches to the fixed demo number ending 3123. This change preserves that override, the anonymous branch, menu, queue, return path and phone associations. The Lambda uses the resolved trueserveCallerId, exactly as the Voice Connector does, so the early request and runtime join have identical caller fingerprints.

Reproduction scripts:

  • producer-startup.ts inspect saves the reviewed native configuration.
  • producer-startup.ts record generates audio from the published voice settings.
  • producer-startup.ts install publishes the start workflow and revised agent through native APIs and creates a server-held, expiring startup token.
  • producer-startup-connect.py --provision creates the dedicated versioned Lambda, exact-instance permission, Connect association and uploaded prompt.
  • producer-startup-qualify.py invokes that Lambda with a synthetic contact, allows the measured welcome lead, joins through the native lifecycle helper, and checks that retrying returns the same result from one workflow run. It creates a synthetic demonstration interaction but no phone call or message.
  • producer-startup-connect.py --apply checks the reviewed flow for concurrent changes, publishes the two added blocks and verifies readback.

The Lambda uses the existing private VPC path to Vanguard. Its endpoint and token are server-owned configuration, never contact attributes. Configuration, before/after snapshots, audio and qualification receipts remain under .local-data/allianz-startup/; secrets must not enter source or flow exports. The dedicated API token expires January 8, 2027; rotate it through the normal token controls and publish a new Lambda version before that date. See shared preparation semantics.

Salesforce pages and trusted context

sfdc/allianz-demo contains the app-scoped Case and Voice Call pages, three-column template, caller context, specialist request summary, official Allianz static assets, context Apex/Flow and permissions. Maintained SCV components are staged under unique Allianz names by salesforce.py. The user's app logo and Omni utility are preserved.

The Voice Call page resolves its live Copilot using VendorCallKey. It does not start another chat agent. The Case page shows the related live transcript and a separate supervisor chat. Both use the Vanguard connection and Allianz surface brand 89e91d54-281e-4244-8da0-41636b4de0cf.

AllianzContextController reads the actual current record with user permissions. A related Contact takes precedence; fallback phone matching must be unique. ANI matching never verifies identity. Supervisor policy context may be read from the request's explicit Policy: line; that also does not grant verification.

For a beneficiary call, the representative records Allianz_Policy_Number__c and Allianz_Verified__c through Update verified context. The TrueServe_Context_Allianz Flow supplies JSON recordContext to native host events. allianz_claim_context_sfdc receives the bound HostContext and requires the actual JSON boolean recordContext.verified === true. Strings, caller assertions and model-supplied arguments do not unlock the synthetic policy data. Removing verification replaces the financial card with the verification state.

The beneficiary card catalog is 1.0.1, with native scoped CSS, loaded Allianz Neo fonts and SVG logo. Unknown or unverified policy states hide private fields.

Deployed resources

Resource Identifier
Connect instance, us-east-1 9156b961-eb34-4d3a-92ad-f770d8f8b282
Reused inbound flow b211bb3c-5872-43b9-8d33-b397c96f5882
Separate producer Preview flow, voice agent 4873 b566a161-89fa-4e6c-b509-97610bf1aa19
Phone resource 5944c0f8-5a44-4b0e-8364-273857dd8ffd
Customer whisper 0c7c8716-6596-440e-8d73-a4570e4f67bf
Recorded prompt da1dbede-77d7-4225-8501-408f8d40add8
Session-start function alias trusrv-dev-orch-connect-session-start:allianz-vanguard, version 5
Allianz app 06mDW000000Fij3YAC
Allianz Case record type 012DW000003rwCNYAY
Specialist queue 00GDW000005xrbW2AQ
Presence status Allianz_Available, label Allianz - Available
Permission set Allianz_Service_Console, assigned to Erik
Connect availability integration ec667d5f-cb9c-4423-a6d1-0626d1c9ef72

The retired Triwest-benifits-coverage-Complete-agent-main-flow was renamed and reused as Allianz - Beneficiary and Producer Support. No new telephone number was claimed. The initial September deployment added only the customer whisper; the separate producer flow is described above. Published JSON exports are under apps/connect-session-start-lambda/examples/allianz/.

Reproduction and checks

Task scripts live in apps/ai-manager/scripts/allianz-demo/:

Script Purpose
ivr-recording.ts Generate the greeting using the tenant ElevenLabs integration
connect-flow.py Inspect, or explicitly --apply, the authorized Connect resources
producer-connect-preview.py Prepare or apply the caller-identity correction to the separate producer flow while preserving its existing routing
salesforce.py Generate Salesforce metadata and stage maintained wrappers
salesforce-claim-context.ts Bind the Copilot facts worker to Salesforce host context
publish-connect.ts Publish native agents/workflow and atomic CCaaS availability
salesforce-supervision-test.ts Real event → exact queue → Salesforce browser chat → voice audio
salesforce-context-test.ts Real host updates, strict verification, unknown policy and revocation; --salesforce checks the actual Voice Call page
surface-catalog-test.ts assist publish Build, browser-check and publish the beneficiary catalog
preview-test.ts copilot latency-warm Paced stereo speech → approved Copilot cards

Run TypeScript scripts with the repository's with-env.sh and ai-manager tsx. AWS tooling normally uses AWS MCP. In this session its host role lacked Connect administration access; connect-flow.py used the existing authorized dccdev SDK profile. Credentials and before-change snapshots remain in private local storage, never source.

Connect CreatePrompt requires an S3 source in the Connect region, or a URL generated by GetPromptFile. An arbitrary S3 presigned URL is not interchangeable. The installed recording uses s3://trueserve-custom-prompts/connect/allianz/prompts/allianz-welcome.wav.

Explicitly deploy the routing Flow with Active status and verify its active version afterward. A successful metadata deployment with Draft status leaves the previous queue behavior running. Assert PendingServiceRouting.QueueId, not merely Case creation. Native agent publication must include the Connect availability integration; do not write the allow-list table directly.

The audio test must keep its 20 ms input stream running while Salesforce and browser operations execute. Use asynchronous subprocesses and check AudioClock.check(); a synchronous Salesforce CLI command can stop simulated audio and falsely appear to be a silent voice-agent failure.

Private evidence is in .local-data/allianz-demo/. The September 30 warm published-Copilot run produced 12/12 expected cards, median 399 ms and sample p95 541 ms after approximate acoustic speech end. These timings exclude Kinesis transport and browser paint. Native browser checks confirm loaded fonts, logo, hidden unverified fields and no overflow at 320 px.

The completed Salesforce supervisor test created an Allianz Case and verified its exact queue in 4,040 ms, then typed into the real Case-page chat and received the spoken question in 4,471 ms. The audio stream remained paced (maximum harness lateness 6.2 ms). Synthetic Cases were closed and moved out of their queues to cancel pending test offers. Salesforce rejects direct deletion of queue-based Pending Service Routing records. Six native host-context checks passed in 762–794 ms: unverified, verified, string-valued verification rejected, restored, revoked and unknown policy. 31 Apex tests passed, including unique/ambiguous caller context, explicit verification, request-policy display and maintained surface resolution.

The actual Salesforce Voice Call page also passed: Save context → visible verified policy card took 1,938 ms, including the Salesforce write, context Flow, runtime and browser paint. Clearing the checkbox and saving removed the financial fields. The temporary Voice Call was deleted afterward. The form disables Save during its current write; tests wait for the saved verification badge before making the next edit.

Focused script TypeScript checking and lint passed (lint retains advisory any warnings). Three Connect graph checks and five compiled workflow checks passed. These do not replace the real phone acceptance check.

Final acceptance requires a real call with Erik logged into the Connect adapter and Allianz - Available in Omni. Verify the offer, accepted SCV Voice Call, matching VendorCallKey/Copilot session, both transcript channels and live cards. The automated tests do not establish that PSTN-to-headset path.

See the operator walkthrough and agent runbook.