Voice conversations use the same conversation workspace as chat and email.
When a conversation has active realtime media, CXP shows a Realtime media
panel in the right rail. The Softphone is hidden until your browser joins the
voice room. Once joining starts, the global conversation center in the top bar
shows the browser-owned call. The selected conversation shows contextual call
controls inline, while the global center keeps the same call available as you
move between conversations and other CXP pages.
After a widget Voice call ends, the customer can continue the same Chat.
Sending another message keeps the ended call inactive. If the conversation is
eligible for automatic resolution, its existing inactivity policy applies;
repeated call-end notifications do not extend its cleanup deadline.
Your browser has microphone permission when joining a call.
You have been admitted to the active call, or you are the assigned agent
handling the customer’s active chat when they add an eligible phone call.
You must have permission to participate. Assignment alone does not let you
join another agent’s call.
The conversation has an active joinable voice session.
Your network allows the configured voice media connection.
For an outbound phone call, the conversation must also be Open, assigned
directly to you, and linked to a Contact with a valid primary phone number. Your
administrator must enable outbound voice and at least one calling number. The
available choices may be provisioned tenant numbers or external caller IDs that
an administrator has already confirmed with the Crescendo/telephony operator as
authorized by the configured outbound carrier and configured with the required
voice policy.
To call the Contact from an existing conversation:
Open the conversation and review its history.
In Public reply, open the channel selector and choose Phone call.
In the right-rail Softphone, review the Contact name and primary phone. If
more than one calling number is available, choose one from Calling number.
Select Place call.
To leave phone-call setup, select Cancel beside Place call. Your previous
composer and unsent draft return with the editor focused. Cancel is also available
while calling options load or fail; you do not need an active Chat. If the previous
channel is no longer available, CXP opens Internal note and preserves the
original draft. Cancel sends no message and makes no call request. Once a call is
starting or active, use Disconnect. If the UI returns to Place call after
a failure, Cancel is available again; it does not resolve an earlier uncertain call.Choosing Phone call only opens preparation in the existing right-rail
Softphone. CXP does not dial or create a call interaction until you select
Place call. With one enabled calling number, no selector is shown. With more
than one, Place call remains disabled until you choose. After initiation,
Place call changes immediately to the sole Disconnect control while the
Softphone moves through Connecting, Calling, and Connected. Mute and Hold become
available after Connected. The initial outbound flow does not require a separate
Join Call step. An admitted participant who later needs to reconnect uses
the normal call controls.If you disconnect while an outbound call is connecting, delayed setup replies
do not reopen the ended attempt in CXP. A call with an uncertain provider result
still shows Call status unknown and the duplicate-call warning below.Outbound calls do not automatically change the conversation status. If the
conversation is Pending, Resolved, or Closed, move or reopen it to Open
before calling. A later manual status change remains authoritative while the
call continues.Each admitted attempt appears once in the conversation history with an explicit
Outbound direction. The customer and agent transcript appears when
available. Recording playback appears only when a recording was produced and
your tenant policy permits it.
If an attempt ends as Call status unknown, the customer may already be receiving that call. Placing another call creates a new explicit attempt and can produce a duplicate
call. CXP never redials that attempt automatically.
If you see Call is starting. Try again shortly., wait for audio to become
ready before trying Join Call again. The call can appear in the conversation
while its audio is still being prepared.Delayed connection updates do not, by themselves, end an incoming call. Once
audio setup finishes, the call can proceed to the greeting. Confirmed caller
hangups still cancel unfinished calls, including calls that use live translation.Open the conversation and use Join Call in the lower-right action area of
the Realtime media panel, where Disconnect appears after connection.
The panel shows the Contact and participating agents. Chat and Voice icons beside
each participant show which active media are connected; focus or hover an icon
for its text status. Before connection, the panel is the only voice-control
surface and an unconnected Softphone is not displayed.Join Call reconnects your existing participation. It does not add an observer
to someone else’s call. Use the normal Take Over action when the conversation
is available for you to handle.If you are already handling chat and the same customer phones in, use Join
Call on that conversation. You do not need to take over the conversation
again. CXP checks that the incoming call is still available, adds you to that
call, then connects your microphone. Your chat and assignment stay unchanged.
This applies to a new incoming phone call with no other human handling it, not
re-entry into a call you previously left.If CXP cannot confirm the Join request’s result, refresh the conversation before
trying again. If participation was confirmed but the browser connection failed,
use Join Call to reconnect. Neither failure ends your chat.Joining or rejoining stays Connecting until your microphone audio is
published. If it fails, the panel explains whether microphone permission, a
missing input device, publication, or connection needs attention. Follow that
message, then retry with Join Call when it remains available. The initial
Place call outbound connection is unchanged.If your microphone connects but expected caller audio is still missing after
10 seconds, the call remains connected with a warning. The warning clears if
caller audio arrives. Disconnect leaves your active Chat and Voice; it is
not a voice-only retry. After disconnecting, use Join Call only if it is
still offered.For an eligible combined Chat + voice widget assignment, accepting the
assignment automatically joins the current single-room voice session. CXP does
not join an ended or stale room. Other voice flows continue to show the
explicit Softphone join action when required.Live translation uses explicit Join Call in Realtime media after you accept
the assignment and the translation connection is ready. Speak in your configured
agent language after joining; accepting the assignment alone does not connect
your microphone to the translated call.
Customers can start voice after you accept their widget Chat, then stop and
restart voice while keeping Chat open, including when live translation is
enabled. Each new call prepares its audio connection before Join Call becomes
available. Accepting Chat does not connect your microphone.Customers can select End in the widget’s audio controls while voice is still
starting. Audio stops locally, and the voice session finishes cleanup without
leaving an active call. If they select Start again before cleanup finishes,
the audio controls close without connecting. Wait briefly, then select Start
again; restarting is not automatic. Chat stays open.If a customer is already using voice when they request a human, their voice
session stays open while they wait for acceptance. Join after the translation
connection is ready. If the assigned agent changes before joining, follow the
updated conversation state; the customer may need to start a fresh voice session
once the new agent is ready. An agent without configured translation languages
uses the supported ordinary voice connection instead.If that browser connection fails after acceptance, the conversation remains
assigned to you and CXP reports the voice failure separately. Use Join Call
to retry.Before joining, CXP verifies the current conversation state. If you already
participate in another active voice call, the request is rejected and the
panel refreshes so you can try again after leaving the other call.
The forthcoming Conference action adds an eligible agent to the existing
call and all active Chat interactions. A supported Voice-only call can also
invite an external endpoint. Assignment stays unchanged. Disconnect leaves
your participation; an ordinary phone conference ends when fewer than two people
or phone endpoints remain. Customer media icons reflect the customer’s own
participation. The picker will keep call controls accessible while you search
Online colleagues by name or team. Connected channel icons use green circles;
picker dots and words show availability separately. See Conference for the workflow,
customer indicators and Widget call behavior.
While you are viewing the call’s conversation, use the inline controls in
Realtime media to:
Mute or unmute yourself.
Hold or resume when supported. A connected, admitted agent with the required
permissions can use these controls even when another agent is assigned.
Disconnect the active realtime media you handle.
After you navigate away, use the global conversation center’s live call status or
conversation row to return directly to the call’s conversation and its controls.
While a call connects, the same inline control surface is
already in place; its controls become available without moving Disconnect when
the connection completes. The minimized call pill never includes Disconnect, keeping
the destructive action away from the expansion control.Switching or closing conversation tabs does not disconnect the browser-owned
call. The associated conversation tab remains marked while the call is active.
If the call moves to another conversation, its navigation follows that
conversation without reconnecting your microphone.
The server-projected conversation state remains the authority for whether Join
or lifecycle Disconnect actions are available.If an outbound Disconnect fails, the panel shows Disconnect failed and keeps
the same Disconnect button available to retry. The panel can remain visible
after the call’s timeline entry ends while disconnection is still being
confirmed. Retrying does not start another call or disconnect a newer connection.
After you accept an incoming phone call and connect through live translation,
Disconnect ends both voice legs when you are the last participating agent.
The customer’s call ends and the enquiry stays Open. If another agent is
participating or joining, the call continues.This applies whether you accept the call before or after its two translation
rooms are created.
Voice activity can appear in the conversation timeline as transcript rows and call recording entries. Transcript rows help agents follow context during and after the call.When recording playback is available, use it for review and quality checks according to your tenant policies.
Live-translated calls can provide separate Customer view and Agent view
recordings after hangup when recording is enabled.
When the same conversation has active Chat and Voice interactions, the
Realtime media panel shows both icons on the relevant participants. Use its
single Disconnect action to leave your Chats and your local Voice connection.
Disconnect starts immediately, without a confirmation dialog. A Chat ends when you leave its last agent membership,
unless another agent is still participating in its linked widget call. In that
case the widget stays open so the customer’s call continues. Customer text
remains in the conversation for that agent to read and answer verbally; sending
a text reply still requires Chat participation. When the linked call ends,
Chat ends too unless an agent has joined Chat meanwhile. Other
agents stay connected, and assignment stays unchanged. A failed effect can be
retried without disconnecting a newer connection. A call connected in another
tab or device must be disconnected there.
That does not prevent you from disconnecting Chat in this tab. Closing a browser
tab alone does not remove your Chat membership.
The two effects settle independently. If one fails, CXP reports the failed
medium and refreshes the panel without hiding the successful result.When the last agent leaves a widget call, the widget sends the confirmed
agent-left notice before closing the Chat connection. This also applies to
translated calls and Conference calls. Each agent’s departure appears once;
an earlier agent leaving does not close a call that another agent continues.
Widget Voice after an established Chat — Coming soon
When the customer adds Voice, each eligible agent already participating in the
Widget Chat receives call access and sees Join Call. Select it to connect
your audio. This works for one agent or several Conference participants and does
not depend on the conversation’s assignment.Access counts toward your Voice workload before audio connects. Disconnect
also cancels that access if you have not joined yet. A connected call in another
browser still uses its own Disconnect control. If you were busy when Voice began,
try Join Call after leaving the other call. The remaining Chat agent can also
join a new Voice segment after the customer stops and restarts it.See Voice added after Chat
for Conference behavior. Production availability of this correction is not yet
verified; existing Join and Disconnect controls keep their placement.
An AI Assistant answers each new voice interaction first, gathers context, and can hand off to a human when needed. A handoff completed for an earlier chat or call does not suppress the handoff tools for the new interaction. During handoff, CXP keeps the conversation as the source of truth so the agent sees customer context, transcript information, and AI summary data in the workspace.
If an earlier call still appears to block your work, Place call or Take
Over can check and finish a previous disconnection before evaluating your new
request. The new action proceeds only if its normal permissions and call checks
pass. If the check cannot finish, retry the action later. Check again only
refreshes availability; it does not start a call or repair a connection.If Take Over connects Chat but not Voice, that Chat connection remains valid.
You may need to select Take Over again after the previous Voice connection has
been checked; the first action does not silently repeat itself.If you cannot join:
Confirm the conversation still has an active voice session.
Confirm you are a participant in the active call and have the required
permissions. Being the assignee alone is not enough.
Leave any other active voice call before retrying Join Call.
Check browser microphone permissions.
Refresh the conversation if the call state changed recently.
Ask an administrator to confirm phone and routing configuration.
For outbound calls, confirm the conversation is Open and assigned directly to
you, and ask an administrator to confirm the tenant switch and calling number.
Select Transfer beside the conversation’s media controls to hand your active
Chat and Voice participation to another agent. Completion is automatic after
acceptance and readiness. External Transfer supports Open, Voice-only conversations.
See Transfer a live conversation for assignment rules,
connection feedback and returning through a new Conference invitation.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Crescendo CXP Documentation","colors":{"primary":"#16A34A","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/cxp/qzLutHilHYGEIkc7/logo/light.png?fit=max\u0026auto=format\u0026n=qzLutHilHYGEIkc7\u0026q=85\u0026s=b5082c07055ff79d37dc82b1c6db1a7e","dark":"https://mintcdn.com/cxp/qzLutHilHYGEIkc7/logo/dark.png?fit=max\u0026auto=format\u0026n=qzLutHilHYGEIkc7\u0026q=85\u0026s=b5a325a6618a3c137af6e72c952ed497"},"favicon":"https://mintcdn.com/cxp/QVAK8SdzA-wez6wK/favicon.png?fit=max\u0026auto=format\u0026n=QVAK8SdzA-wez6wK\u0026q=85\u0026s=cc300816020149618ec0fbcf1e11742a","navbar":{"links":[{"href":"mailto:support@crescendo.ai","label":"Support"}]},"footer":{"socials":{"linkedin":"https://linkedin.com/company/crescendocx"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Crescendo","icon":"house","href":"https://www.crescendo.ai"},{"anchor":"Support","icon":"life-ring","href":"mailto:support@crescendo.ai"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cxp","hasAudioNarration":false,"actualSubdomain":"cxp","customDomains":["docs.cxp.crescendo.ai"],"gitSource":{"type":"github","owner":"enegelai","repo":"cxm","deployBranch":"main","contentDirectory":"public/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"9c99f9ea-2d11-445a-a110-ead9904cd66e","liveDeploymentHistoryId":"6ae58d1bb1d87e83eee5f742","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae58d1bb1d87e83eee5f742"},"entitlements":{"AI_CHAT":{"status":"ENABLED"}},"buildId":"6ae58d1bb1d87e83eee5f742","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"CXP","count":32},{"language":"default","tag":"Capabilities","count":21},{"language":"default","tag":"Admin guide","count":10},{"language":"default","tag":"Conversations","count":10},{"language":"default","tag":"Developers","count":10},{"language":"default","tag":"Agent guide","count":7},{"language":"default","tag":"Work with external contacts","count":6},{"language":"default","tag":"Scenarios","count":6},{"language":"default","tag":"API reference","count":6},{"language":"default","tag":"Analyze support","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"agent/voice-and-softphone","slug":"/agent/voice-and-softphone","pageMetadata":{"title":"Use voice and Softphone","description":"Join live voice conversations and understand how voice sessions appear in CXP.","href":"/agent/voice-and-softphone"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Join live voice conversations and understand how voice sessions appear in CXP.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,OptimizedImage,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`use-voice-and-softphone`,children:`Use voice and Softphone`}),`\n`,_jsxs(_components.p,{children:[`Voice conversations use the same conversation workspace as chat and email.\nWhen a conversation has active realtime media, CXP shows a `,_jsx(_components.strong,{children:`Realtime media`}),`\npanel in the right rail. The Softphone is hidden until your browser joins the\nvoice room. Once joining starts, the global conversation center in the top bar\nshows the browser-owned call. The selected conversation shows contextual call\ncontrols inline, while the global center keeps the same call available as you\nmove between conversations and other CXP pages.`]}),`\n`,_jsx(Heading,{level:`2`,id:`continue-chat-after-a-widget-call`,children:`Continue Chat after a widget call`}),`\n`,_jsx(_components.p,{children:`After a widget Voice call ends, the customer can continue the same Chat.\nSending another message keeps the ended call inactive. If the conversation is\neligible for automatic resolution, its existing inactivity policy applies;\nrepeated call-end notifications do not extend its cleanup deadline.`}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsx(_components.p,{children:`Before using voice:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Your browser has microphone permission when joining a call.`}),`\n`,_jsx(_components.li,{children:`You have been admitted to the active call, or you are the assigned agent\nhandling the customer’s active chat when they add an eligible phone call.\nYou must have permission to participate. Assignment alone does not let you\njoin another agent’s call.`}),`\n`,_jsx(_components.li,{children:`The conversation has an active joinable voice session.`}),`\n`,_jsx(_components.li,{children:`Your network allows the configured voice media connection.`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`For an outbound phone call, the conversation must also be `,_jsx(_components.strong,{children:`Open`}),`, assigned\ndirectly to you, and linked to a Contact with a valid primary phone number. Your\nadministrator must enable outbound voice and at least one calling number. The\navailable choices may be provisioned tenant numbers or external caller IDs that\nan administrator has already confirmed with the Crescendo/telephony operator as\nauthorized by the configured outbound carrier and configured with the required\nvoice policy.`]}),`\n`,_jsx(Heading,{level:`2`,id:`place-an-outbound-phone-call`,children:`Place an outbound phone call`}),`\n`,_jsx(_components.p,{children:`To call the Contact from an existing conversation:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Open the conversation and review its history.`}),`\n`,_jsxs(_components.li,{children:[`In `,_jsx(_components.strong,{children:`Public reply`}),`, open the channel selector and choose `,_jsx(_components.strong,{children:`Phone call`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`In the right-rail Softphone, review the Contact name and primary phone. If\nmore than one calling number is available, choose one from `,_jsx(_components.strong,{children:`Calling number`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Select `,_jsx(_components.strong,{children:`Place call`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`To leave phone-call setup, select `,_jsx(_components.strong,{children:`Cancel`}),` beside `,_jsx(_components.strong,{children:`Place call`}),`. Your previous\ncomposer and unsent draft return with the editor focused. Cancel is also available\nwhile calling options load or fail; you do not need an active Chat. If the previous\nchannel is no longer available, CXP opens `,_jsx(_components.strong,{children:`Internal note`}),` and preserves the\noriginal draft. Cancel sends no message and makes no call request. Once a call is\nstarting or active, use `,_jsx(_components.strong,{children:`Disconnect`}),`. If the UI returns to `,_jsx(_components.strong,{children:`Place call`}),` after\na failure, Cancel is available again; it does not resolve an earlier uncertain call.`]}),`\n`,_jsxs(_components.p,{children:[`Choosing `,_jsx(_components.strong,{children:`Phone call`}),` only opens preparation in the existing right-rail\nSoftphone. CXP does not dial or create a call interaction until you select\n`,_jsx(_components.strong,{children:`Place call`}),`. With one enabled calling number, no selector is shown. With more\nthan one, `,_jsx(_components.strong,{children:`Place call`}),` remains disabled until you choose. After initiation,\n`,_jsx(_components.strong,{children:`Place call`}),` changes immediately to the sole `,_jsx(_components.strong,{children:`Disconnect`}),` control while the\nSoftphone moves through Connecting, Calling, and Connected. Mute and Hold become\navailable after Connected. The initial outbound flow does not require a separate\n`,_jsx(_components.strong,{children:`Join Call`}),` step. An admitted participant who later needs to reconnect uses\nthe normal call controls.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/cxp/1doLN1LQ4puCFz9_/assets/screenshots/outbound-phone-call-preparation.png?fit=max\u0026auto=format\u0026n=1doLN1LQ4puCFz9_\u0026q=85\u0026s=fd97672c5af7e0f614d0df888a67e191`,alt:`CXP outbound phone-call preparation in the right-rail Softphone`,\"data-og-width\":`359`,width:`359`,\"data-og-height\":`170`,height:`170`,\"data-path\":`assets/screenshots/outbound-phone-call-preparation.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/cxp/1doLN1LQ4puCFz9_/assets/screenshots/outbound-phone-call-preparation.png?w=280\u0026fit=max\u0026auto=format\u0026n=1doLN1LQ4puCFz9_\u0026q=85\u0026s=bdbd2c5dac8750f79b12f99fddee9dcd 280w, https://mintcdn.com/cxp/1doLN1LQ4puCFz9_/assets/screenshots/outbound-phone-call-preparation.png?w=560\u0026fit=max\u0026auto=format\u0026n=1doLN1LQ4puCFz9_\u0026q=85\u0026s=8d8a30d1214152144e3098d30bd5f664 560w, https://mintcdn.com/cxp/1doLN1LQ4puCFz9_/assets/screenshots/outbound-phone-call-preparation.png?w=840\u0026fit=max\u0026auto=format\u0026n=1doLN1LQ4puCFz9_\u0026q=85\u0026s=5fe84d47a5c8f115f86c4359ecbf5461 840w, https://mintcdn.com/cxp/1doLN1LQ4puCFz9_/assets/screenshots/outbound-phone-call-preparation.png?w=1100\u0026fit=max\u0026auto=format\u0026n=1doLN1LQ4puCFz9_\u0026q=85\u0026s=0d007b4a9786dbb6b526e1a7d97f7e01 1100w, https://mintcdn.com/cxp/1doLN1LQ4puCFz9_/assets/screenshots/outbound-phone-call-preparation.png?w=1650\u0026fit=max\u0026auto=format\u0026n=1doLN1LQ4puCFz9_\u0026q=85\u0026s=dd3474131feb744d2ab7475806fc3952 1650w, https://mintcdn.com/cxp/1doLN1LQ4puCFz9_/assets/screenshots/outbound-phone-call-preparation.png?w=2500\u0026fit=max\u0026auto=format\u0026n=1doLN1LQ4puCFz9_\u0026q=85\u0026s=44f069446346d2f78079acf63188d80a 2500w`}),`\n`,_jsxs(_components.p,{children:[`If you disconnect while an outbound call is connecting, delayed setup replies\ndo not reopen the ended attempt in CXP. A call with an uncertain provider result\nstill shows `,_jsx(_components.strong,{children:`Call status unknown`}),` and the duplicate-call warning below.`]}),`\n`,_jsxs(_components.p,{children:[`Outbound calls do not automatically change the conversation status. If the\nconversation is Pending, Resolved, or Closed, move or reopen it to `,_jsx(_components.strong,{children:`Open`}),`\nbefore calling. A later manual status change remains authoritative while the\ncall continues.`]}),`\n`,_jsxs(_components.p,{children:[`Each admitted attempt appears once in the conversation history with an explicit\n`,_jsx(_components.strong,{children:`Outbound`}),` direction. The customer and agent transcript appears when\navailable. Recording playback appears only when a recording was produced and\nyour tenant policy permits it.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`If an attempt ends as `,_jsx(_components.strong,{children:`Call status unknown`}),`, the customer may already be receiving that call. Placing another call creates a new explicit attempt and can produce a duplicate\ncall. CXP never redials that attempt automatically.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`join-a-voice-session`,children:`Join a voice session`}),`\n`,_jsxs(_components.p,{children:[`If you see `,_jsx(_components.strong,{children:`Call is starting. Try again shortly.`}),`, wait for audio to become\nready before trying `,_jsx(_components.strong,{children:`Join Call`}),` again. The call can appear in the conversation\nwhile its audio is still being prepared.`]}),`\n`,_jsx(_components.p,{children:`Delayed connection updates do not, by themselves, end an incoming call. Once\naudio setup finishes, the call can proceed to the greeting. Confirmed caller\nhangups still cancel unfinished calls, including calls that use live translation.`}),`\n`,_jsxs(_components.p,{children:[`Open the conversation and use `,_jsx(_components.strong,{children:`Join Call`}),` in the lower-right action area of\nthe `,_jsx(_components.strong,{children:`Realtime media`}),` panel, where `,_jsx(_components.strong,{children:`Disconnect`}),` appears after connection.\nThe panel shows the Contact and participating agents. Chat and Voice icons beside\neach participant show which active media are connected; focus or hover an icon\nfor its text status. Before connection, the panel is the only voice-control\nsurface and an unconnected Softphone is not displayed.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Join Call`}),` reconnects your existing participation. It does not add an observer\nto someone else’s call. Use the normal `,_jsx(_components.strong,{children:`Take Over`}),` action when the conversation\nis available for you to handle.`]}),`\n`,_jsxs(_components.p,{children:[`If you are already handling chat and the same customer phones in, use `,_jsx(_components.strong,{children:`Join\nCall`}),` on that conversation. You do not need to take over the conversation\nagain. CXP checks that the incoming call is still available, adds you to that\ncall, then connects your microphone. Your chat and assignment stay unchanged.\nThis applies to a new incoming phone call with no other human handling it, not\nre-entry into a call you previously left.`]}),`\n`,_jsxs(_components.p,{children:[`If CXP cannot confirm the Join request’s result, refresh the conversation before\ntrying again. If participation was confirmed but the browser connection failed,\nuse `,_jsx(_components.strong,{children:`Join Call`}),` to reconnect. Neither failure ends your chat.`]}),`\n`,_jsxs(_components.p,{children:[`Joining or rejoining stays `,_jsx(_components.strong,{children:`Connecting`}),` until your microphone audio is\npublished. If it fails, the panel explains whether microphone permission, a\nmissing input device, publication, or connection needs attention. Follow that\nmessage, then retry with `,_jsx(_components.strong,{children:`Join Call`}),` when it remains available. The initial\n`,_jsx(_components.strong,{children:`Place call`}),` outbound connection is unchanged.`]}),`\n`,_jsxs(_components.p,{children:[`If your microphone connects but expected caller audio is still missing after\n10 seconds, the call remains connected with a warning. The warning clears if\ncaller audio arrives. `,_jsx(_components.strong,{children:`Disconnect`}),` leaves your active Chat and Voice; it is\nnot a voice-only retry. After disconnecting, use `,_jsx(_components.strong,{children:`Join Call`}),` only if it is\nstill offered.`]}),`\n`,_jsxs(_components.p,{children:[`For an eligible combined `,_jsx(_components.strong,{children:`Chat + voice`}),` widget assignment, accepting the\nassignment automatically joins the current single-room voice session. CXP does\nnot join an ended or stale room. Other voice flows continue to show the\nexplicit Softphone join action when required.`]}),`\n`,_jsxs(_components.p,{children:[`Live translation uses explicit `,_jsx(_components.strong,{children:`Join Call`}),` in Realtime media after you accept\nthe assignment and the translation connection is ready. Speak in your configured\nagent language after joining; accepting the assignment alone does not connect\nyour microphone to the translated call.`]}),`\n`,_jsx(Heading,{level:`3`,id:`start-or-restart-widget-voice-after-chat-handoff`,children:`Start or restart widget voice after Chat handoff`}),`\n`,_jsxs(_components.p,{children:[`Customers can start voice after you accept their widget Chat, then stop and\nrestart voice while keeping Chat open, including when live translation is\nenabled. Each new call prepares its audio connection before `,_jsx(_components.strong,{children:`Join Call`}),` becomes\navailable. Accepting Chat does not connect your microphone.`]}),`\n`,_jsxs(_components.p,{children:[`Customers can select `,_jsx(_components.strong,{children:`End`}),` in the widget’s audio controls while voice is still\nstarting. Audio stops locally, and the voice session finishes cleanup without\nleaving an active call. If they select Start again before cleanup finishes,\nthe audio controls close without connecting. Wait briefly, then select Start\nagain; restarting is not automatic. Chat stays open.`]}),`\n`,_jsx(_components.p,{children:`If a customer is already using voice when they request a human, their voice\nsession stays open while they wait for acceptance. Join after the translation\nconnection is ready. If the assigned agent changes before joining, follow the\nupdated conversation state; the customer may need to start a fresh voice session\nonce the new agent is ready. An agent without configured translation languages\nuses the supported ordinary voice connection instead.`}),`\n`,_jsxs(_components.p,{children:[`If that browser connection fails after acceptance, the conversation remains\nassigned to you and CXP reports the voice failure separately. Use `,_jsx(_components.strong,{children:`Join Call`}),`\nto retry.`]}),`\n`,_jsx(_components.p,{children:`Before joining, CXP verifies the current conversation state. If you already\nparticipate in another active voice call, the request is rejected and the\npanel refreshes so you can try again after leaving the other call.`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/cxp/ncVDIpXKSeey49GP/assets/screenshots/realtime-media-voice.png?fit=max\u0026auto=format\u0026n=ncVDIpXKSeey49GP\u0026q=85\u0026s=8c0d21d85a3492c2e8f948d0add6ae2f`,alt:`CXP voice conversation with the Realtime media panel and Join Call control`,\"data-og-width\":`1630`,width:`1630`,\"data-og-height\":`1132`,height:`1132`,\"data-path\":`assets/screenshots/realtime-media-voice.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/cxp/ncVDIpXKSeey49GP/assets/screenshots/realtime-media-voice.png?w=280\u0026fit=max\u0026auto=format\u0026n=ncVDIpXKSeey49GP\u0026q=85\u0026s=7b77a2accfcc15e2e0f64cc05e41d8b1 280w, https://mintcdn.com/cxp/ncVDIpXKSeey49GP/assets/screenshots/realtime-media-voice.png?w=560\u0026fit=max\u0026auto=format\u0026n=ncVDIpXKSeey49GP\u0026q=85\u0026s=26a4bef8f6867fd8f056b74cf2c63a0c 560w, https://mintcdn.com/cxp/ncVDIpXKSeey49GP/assets/screenshots/realtime-media-voice.png?w=840\u0026fit=max\u0026auto=format\u0026n=ncVDIpXKSeey49GP\u0026q=85\u0026s=b4adfa50b74ae515a33e985a76232b1d 840w, https://mintcdn.com/cxp/ncVDIpXKSeey49GP/assets/screenshots/realtime-media-voice.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ncVDIpXKSeey49GP\u0026q=85\u0026s=5de258aff72c3f563a93c50c72241d0e 1100w, https://mintcdn.com/cxp/ncVDIpXKSeey49GP/assets/screenshots/realtime-media-voice.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ncVDIpXKSeey49GP\u0026q=85\u0026s=cdfcabf73096365f63a21de82410a47b 1650w, https://mintcdn.com/cxp/ncVDIpXKSeey49GP/assets/screenshots/realtime-media-voice.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ncVDIpXKSeey49GP\u0026q=85\u0026s=b076ce6c73282e2a97b45a89f824970d 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`add-another-participant-—-coming-soon`,children:`Add another participant — Coming soon`}),`\n`,_jsxs(_components.p,{children:[`The forthcoming `,_jsx(_components.strong,{children:`Conference`}),` action adds an eligible agent to the existing\ncall and all active Chat interactions. A supported Voice-only call can also\ninvite an external endpoint. Assignment stays unchanged. `,_jsx(_components.strong,{children:`Disconnect`}),` leaves\nyour participation; an ordinary phone conference ends when fewer than two people\nor phone endpoints remain. Customer media icons reflect the customer’s own\nparticipation. The picker will keep call controls accessible while you search\nOnline colleagues by name or team. Connected channel icons use green circles;\npicker dots and words show availability separately. See `,_jsx(_components.a,{href:`/capabilities/conference`,children:`Conference`}),` for the workflow,\ncustomer indicators and Widget call behavior.`]}),`\n`,_jsx(Heading,{level:`2`,id:`in-call-controls`,children:`In-call controls`}),`\n`,_jsxs(_components.p,{children:[`While you are viewing the call’s conversation, use the inline controls in\n`,_jsx(_components.strong,{children:`Realtime media`}),` to:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Mute or unmute yourself.`}),`\n`,_jsx(_components.li,{children:`Hold or resume when supported. A connected, admitted agent with the required\npermissions can use these controls even when another agent is assigned.`}),`\n`,_jsx(_components.li,{children:`Disconnect the active realtime media you handle.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`After you navigate away, use the global conversation center’s live call status or\nconversation row to return directly to the call’s conversation and its controls.\nWhile a call connects, the same inline control surface is\nalready in place; its controls become available without moving Disconnect when\nthe connection completes. The minimized call pill never includes Disconnect, keeping\nthe destructive action away from the expansion control.`}),`\n`,_jsx(_components.p,{children:`Switching or closing conversation tabs does not disconnect the browser-owned\ncall. The associated conversation tab remains marked while the call is active.\nIf the call moves to another conversation, its navigation follows that\nconversation without reconnecting your microphone.\nThe server-projected conversation state remains the authority for whether Join\nor lifecycle Disconnect actions are available.`}),`\n`,_jsxs(_components.p,{children:[`If an outbound Disconnect fails, the panel shows `,_jsx(_components.strong,{children:`Disconnect failed`}),` and keeps\nthe same `,_jsx(_components.strong,{children:`Disconnect`}),` button available to retry. The panel can remain visible\nafter the call’s timeline entry ends while disconnection is still being\nconfirmed. Retrying does not start another call or disconnect a newer connection.`]}),`\n`,_jsx(Heading,{level:`2`,id:`end-a-translated-inbound-phone-call`,children:`End a translated inbound phone call`}),`\n`,_jsxs(_components.p,{children:[`After you accept an incoming phone call and connect through live translation,\n`,_jsx(_components.strong,{children:`Disconnect`}),` ends both voice legs when you are the last participating agent.\nThe customer’s call ends and the enquiry stays `,_jsx(_components.strong,{children:`Open`}),`. If another agent is\nparticipating or joining, the call continues.`]}),`\n`,_jsx(_components.p,{children:`This applies whether you accept the call before or after its two translation\nrooms are created.`}),`\n`,_jsx(Heading,{level:`2`,id:`voice-transcript-and-recordings`,children:`Voice transcript and recordings`}),`\n`,_jsx(_components.p,{children:`Voice activity can appear in the conversation timeline as transcript rows and call recording entries. Transcript rows help agents follow context during and after the call.`}),`\n`,_jsxs(_components.p,{children:[`When recording playback is available, use it for review and quality checks according to your tenant policies.\nLive-translated calls can provide separate `,_jsx(_components.strong,{children:`Customer view`}),` and `,_jsx(_components.strong,{children:`Agent view`}),`\nrecordings after hangup when recording is enabled.`]}),`\n`,_jsx(Heading,{level:`2`,id:`handle-chat-and-voice-together`,children:`Handle chat and voice together`}),`\n`,_jsxs(_components.p,{children:[`When the same conversation has active Chat and Voice interactions, the\n`,_jsx(_components.strong,{children:`Realtime media`}),` panel shows both icons on the relevant participants. Use its\nsingle `,_jsx(_components.strong,{children:`Disconnect`}),` action to leave your Chats and your local Voice connection.\nDisconnect starts immediately, without a confirmation dialog. A Chat ends when you leave its last agent membership,\nunless another agent is still participating in its linked widget call. In that\ncase the widget stays open so the customer’s call continues. Customer text\nremains in the conversation for that agent to read and answer verbally; sending\na text reply still requires Chat participation. When the linked call ends,\nChat ends too unless an agent has joined Chat meanwhile. Other\nagents stay connected, and assignment stays unchanged. A failed effect can be\nretried without disconnecting a newer connection. A call connected in another\ntab or device must be disconnected there.\nThat does not prevent you from disconnecting Chat in this tab. Closing a browser\ntab alone does not remove your Chat membership.\nThe two effects settle independently. If one fails, CXP reports the failed\nmedium and refreshes the panel without hiding the successful result.`]}),`\n`,_jsx(_components.p,{children:`When the last agent leaves a widget call, the widget sends the confirmed\nagent-left notice before closing the Chat connection. This also applies to\ntranslated calls and Conference calls. Each agent’s departure appears once;\nan earlier agent leaving does not close a call that another agent continues.`}),`\n`,_jsx(Heading,{level:`3`,id:`widget-voice-after-an-established-chat-—-coming-soon`,children:`Widget Voice after an established Chat — Coming soon`}),`\n`,_jsxs(_components.p,{children:[`When the customer adds Voice, each eligible agent already participating in the\nWidget Chat receives call access and sees `,_jsx(_components.strong,{children:`Join Call`}),`. Select it to connect\nyour audio. This works for one agent or several Conference participants and does\nnot depend on the conversation’s assignment.`]}),`\n`,_jsxs(_components.p,{children:[`Access counts toward your Voice workload before audio connects. `,_jsx(_components.strong,{children:`Disconnect`}),`\nalso cancels that access if you have not joined yet. A connected call in another\nbrowser still uses its own Disconnect control. If you were busy when Voice began,\ntry `,_jsx(_components.strong,{children:`Join Call`}),` after leaving the other call. The remaining Chat agent can also\njoin a new Voice segment after the customer stops and restarts it.`]}),`\n`,_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/capabilities/conference#when-the-customer-adds-voice-after-chat`,children:`Voice added after Chat`}),`\nfor Conference behavior. Production availability of this correction is not yet\nverified; existing Join and Disconnect controls keep their placement.`]}),`\n`,_jsx(Heading,{level:`2`,id:`ai-and-human-handoff`,children:`AI and human handoff`}),`\n`,_jsx(_components.p,{children:`An AI Assistant answers each new voice interaction first, gathers context, and can hand off to a human when needed. A handoff completed for an earlier chat or call does not suppress the handoff tools for the new interaction. During handoff, CXP keeps the conversation as the source of truth so the agent sees customer context, transcript information, and AI summary data in the workspace.`}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(_components.p,{children:[`If an earlier call still appears to block your work, `,_jsx(_components.strong,{children:`Place call`}),` or `,_jsx(_components.strong,{children:`Take\nOver`}),` can check and finish a previous disconnection before evaluating your new\nrequest. The new action proceeds only if its normal permissions and call checks\npass. If the check cannot finish, retry the action later. `,_jsx(_components.strong,{children:`Check again`}),` only\nrefreshes availability; it does not start a call or repair a connection.`]}),`\n`,_jsx(_components.p,{children:`If Take Over connects Chat but not Voice, that Chat connection remains valid.\nYou may need to select Take Over again after the previous Voice connection has\nbeen checked; the first action does not silently repeat itself.`}),`\n`,_jsx(_components.p,{children:`If you cannot join:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Confirm the conversation still has an active voice session.`}),`\n`,_jsx(_components.li,{children:`Confirm you are a participant in the active call and have the required\npermissions. Being the assignee alone is not enough.`}),`\n`,_jsxs(_components.li,{children:[`Leave any other active voice call before retrying `,_jsx(_components.strong,{children:`Join Call`}),`.`]}),`\n`,_jsx(_components.li,{children:`Check browser microphone permissions.`}),`\n`,_jsx(_components.li,{children:`Refresh the conversation if the call state changed recently.`}),`\n`,_jsx(_components.li,{children:`Ask an administrator to confirm phone and routing configuration.`}),`\n`,_jsx(_components.li,{children:`For outbound calls, confirm the conversation is Open and assigned directly to\nyou, and ask an administrator to confirm the tenant switch and calling number.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`transfer-your-participation`,children:`Transfer your participation`}),`\n`,_jsxs(_components.p,{children:[`Select `,_jsx(_components.strong,{children:`Transfer`}),` beside the conversation’s media controls to hand your active\nChat and Voice participation to another agent. Completion is automatic after\nacceptance and readiness. External Transfer supports Open, Voice-only conversations.\nSee `,_jsx(_components.a,{href:`/capabilities/transfer`,children:`Transfer a live conversation`}),` for assignment rules,\nconnection feedback and returning through a new Conference invitation.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Use voice and Softphone","description":"Join live voice conversations and understand how voice sessions appear in CXP.","href":"/agent/voice-and-softphone"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Use voice and Softphone","slug":"use-voice-and-softphone","depth":1,"children":[]},{"title":"Continue Chat after a widget call","slug":"continue-chat-after-a-widget-call","depth":2,"children":[]},{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Place an outbound phone call","slug":"place-an-outbound-phone-call","depth":2,"children":[]},{"title":"Join a voice session","slug":"join-a-voice-session","depth":2,"children":[{"title":"Start or restart widget voice after Chat handoff","slug":"start-or-restart-widget-voice-after-chat-handoff","depth":3,"children":[]}]},{"title":"Add another participant — Coming soon","slug":"add-another-participant-—-coming-soon","depth":2,"children":[]},{"title":"In-call controls","slug":"in-call-controls","depth":2,"children":[]},{"title":"End a translated inbound phone call","slug":"end-a-translated-inbound-phone-call","depth":2,"children":[]},{"title":"Voice transcript and recordings","slug":"voice-transcript-and-recordings","depth":2,"children":[]},{"title":"Handle chat and voice together","slug":"handle-chat-and-voice-together","depth":2,"children":[{"title":"Widget Voice after an established Chat — Coming soon","slug":"widget-voice-after-an-established-chat-—-coming-soon","depth":3,"children":[]}]},{"title":"AI and human handoff","slug":"ai-and-human-handoff","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]},{"title":"Transfer your participation","slug":"transfer-your-participation","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/cxp/20b71f9a0fdf1b75/cxm-docs-password-gate.js"],"subdomain":"cxp","siteName":"Crescendo CXP Documentation","title":"Use voice and Softphone - Crescendo CXP Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-30T00:06:43.718Z","originalFileLocation":"agent/voice-and-softphone.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Join live voice conversations and understand how voice sessions appear in CXP.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Crescendo CXP Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cxp/e3U7VDbNZMZP9uh7/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/cxp/e3U7VDbNZMZP9uh7/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cxp/e3U7VDbNZMZP9uh7/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cxp/e3U7VDbNZMZP9uh7/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cxp/e3U7VDbNZMZP9uh7/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cxp/e3U7VDbNZMZP9uh7/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cxp/e3U7VDbNZMZP9uh7/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cxp/e3U7VDbNZMZP9uh7/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cxp/e3U7VDbNZMZP9uh7/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Use voice and Softphone - Crescendo CXP Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Join live voice conversations and understand how voice sessions appear in CXP.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Crescendo CXP Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.cxp.crescendo.ai/agent/voice-and-softphone\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cxp.mintlify.app/_mintlify/api/og/v2?division=Agent+guide\u0026amp;title=Use+voice+and+Softphone\u0026amp;description=Join+live+voice+conversations+and+understand+how+voice+sessions+appear+in+CXP.\u0026amp;theme=db8a1c43495fbccdeaa0a9b9\u0026amp;signature=542b499c3284e8daf53d935ab3401878674865c3bd281db0088aa9c08817c67d\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Use voice and Softphone - Crescendo CXP Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Join live voice conversations and understand how voice sessions appear in CXP.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cxp.mintlify.app/_mintlify/api/og/v2?division=Agent+guide\u0026amp;title=Use+voice+and+Softphone\u0026amp;description=Join+live+voice+conversations+and+understand+how+voice+sessions+appear+in+CXP.\u0026amp;theme=db8a1c43495fbccdeaa0a9b9\u0026amp;signature=542b499c3284e8daf53d935ab3401878674865c3bd281db0088aa9c08817c67d\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/cxp/e3U7VDbNZMZP9uh7/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Crescendo CXP Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16A34A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.cxp.crescendo.ai/agent/voice-and-softphone\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/agent/voice-and-softphone.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.cxp.crescendo.ai/#organization\",\"name\":\"Crescendo CXP Documentation\",\"url\":\"https://docs.cxp.crescendo.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cxp/qzLutHilHYGEIkc7/logo/light.png?fit=max\u0026auto=format\u0026n=qzLutHilHYGEIkc7\u0026q=85\u0026s=b5082c07055ff79d37dc82b1c6db1a7e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.cxp.crescendo.ai#website\",\"name\":\"Crescendo CXP Documentation\",\"url\":\"https://docs.cxp.crescendo.ai\",\"publisher\":{\"@id\":\"https://docs.cxp.crescendo.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.cxp.crescendo.ai/agent/voice-and-softphone#webpage\",\"url\":\"https://docs.cxp.crescendo.ai/agent/voice-and-softphone\",\"name\":\"Use voice and Softphone\",\"description\":\"Join live voice conversations and understand how voice sessions appear in CXP.\",\"dateModified\":\"2026-10-30T00:06:43.718Z\",\"isPartOf\":{\"@id\":\"https://docs.cxp.crescendo.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.cxp.crescendo.ai/agent/voice-and-softphone#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.cxp.crescendo.ai/agent/voice-and-softphone#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Agent guide\",\"item\":\"https://docs.cxp.crescendo.ai/agent/conversations\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Use voice and Softphone\",\"item\":\"https://docs.cxp.crescendo.ai/agent/voice-and-softphone\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.cxp.crescendo.ai/agent/voice-and-softphone#article\",\"headline\":\"Use voice and Softphone\",\"name\":\"Use voice and Softphone\",\"description\":\"Join live voice conversations and understand how voice sessions appear in CXP.\",\"url\":\"https://docs.cxp.crescendo.ai/agent/voice-and-softphone\",\"mainEntityOfPage\":{\"@id\":\"https://docs.cxp.crescendo.ai/agent/voice-and-softphone#webpage\"},\"dateModified\":\"2026-10-30T00:06:43.718Z\",\"publisher\":{\"@id\":\"https://docs.cxp.crescendo.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.cxp.crescendo.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Crescendo CXP Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Crescendo CXP Documentation","nav":{"global":{"anchors":[{"anchor":"Crescendo","icon":"house","href":"https://www.crescendo.ai"},{"anchor":"Support","icon":"life-ring","href":"mailto:support@crescendo.ai"}]},"tabs":[{"tab":"CXP","groups":[{"group":"Getting started","pages":[{"title":"Crescendo CXP documentation","href":""},{"title":"CXP overview","href":"/getting-started/overview"},{"title":"Sign in and navigate","href":"/getting-started/sign-in-and-navigation"},{"title":"Connect CXP to ChatGPT and Codex","href":"/developers/connect-chatgpt-codex"}]},{"group":"Agent guide","pages":[{"title":"Work conversations","href":"/agent/conversations"},{"title":"Accept routed work","href":"/agent/routed-work"},{"title":"Reply to email conversations","description":"Use CXP to reply to assigned email conversations, manage recipients, and understand delivery status.","href":"/agent/email-replies"},{"title":"Use voice and Softphone","href":"/agent/voice-and-softphone"},{"title":"Use Agent Assist","description":"Ask Agent Assist for internal help and review suggested actions before applying them.","href":"/agent/agent-assist"},{"title":"Work with contacts and organizations","href":"/agent/contacts-and-organizations"},{"title":"Search and reporting","href":"/agent/search-and-analytics"}]},{"group":"Admin guide","pages":[{"title":"Users and roles","href":"/admin/users-and-roles"},{"title":"Concierge Agents","href":"/admin/concierge-agents"},{"title":"Teams, routing, and categories","href":"/admin/teams-routing-and-categories"},{"title":"Chat, Social, and Slack Management","href":"/admin/chat-management"},{"title":"Email Management","href":"/admin/email-management"},{"title":"Phone Management","href":"/admin/phone-management"},{"title":"Music Management","href":"/admin/music-management"},{"title":"Knowledge Base management","href":"/admin/knowledge-base-management"},{"title":"Statuses, tags, and custom fields","href":"/admin/statuses-tags-and-custom-fields"},{"title":"Views","href":"/admin/views"}]},{"group":"Scenarios","pages":[{"title":"Handle a routed chat","href":"/scenarios/handle-routed-chat"},{"title":"Handle an inbound email","href":"/scenarios/handle-inbound-email"},{"title":"Create a manual conversation","href":"/scenarios/create-manual-conversation"},{"title":"Configure an email channel","href":"/scenarios/configure-email-channel"},{"title":"Configure team routing","href":"/scenarios/configure-team-routing"},{"title":"Configure Agent Assist","href":"/scenarios/configure-agent-assist"}]},{"group":"Reference","pages":[{"title":"CXP concepts","href":"/reference/concepts"},{"title":"Conversation statuses","href":"/reference/conversation-statuses"},{"title":"Roles and permissions","href":"/reference/roles-and-permissions"},{"title":"Channels and interactions","href":"/reference/channels-and-interactions"},{"title":"Current limitations","href":"/reference/limitations"}]}]},{"tab":"Capabilities","pages":[{"title":"Capabilities","href":"/capabilities"}]},{"tab":"Developers","pages":[{"title":"Developers","href":"/developers/api-overview"}]},{"tab":"What's new","pages":[{"title":"What's new","href":"/whats-new"}]}]},"basePath":"","title":"Use voice and Softphone - Crescendo CXP Documentation","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-BG6oD64b.js","lightbox-handle-r17bVUz3.js"]}