Test your voice agents using text instead of phone calls. 10x faster and 90% cheaper - ideal for workflow validation, regression testing, and CI/CD pipelines.Use voice testing for ASR/TTS validation and final production checks.
From sidebar, go to Agent → Configuration → Provider, select ElevenLabs
Under Integration Settings, enter your External Assistant ID and ElevenLabs API Key
Click Save Changes
2
Run Tests
Go to Evaluator page, select scenarios and click on Run button.
In the Configure Run dialog, select ElevenLabs under Chat connections and click Run
Greyed out connection options have not been configured in Agent Settings yet — set them up there to enable them.
3
View Results
Results appear in the dashboard with conversation transcript, metric evaluations, and function calls.
Retell chat runs work out of the box with just a voice agent configured — Cekura automatically clones a temporary chat agent from your voice agent for each run. Optionally, you can point chat runs at a dedicated chat agent.
1
(Optional) Create a Dedicated Chat Agent in Retell
If you want chat runs to target a specific chat agent:
Log in to Retell dashboard
Navigate to your voice agent
Click “Copy as chat agent”
Copy the Agent ID of the new chat agent
Note: When no chat agent ID is configured, Cekura clones a temporary chat agent from the voice agent automatically for each run.
2
Configure in Cekura
Go to Agent Settings → Configuration → Provider, select Retell
Under Integration Settings, enter the External Assistant ID of your Retell voice agent and your Retell API Key
Optionally, enter the chat agent ID if you created one in the previous step
Click Save Changes
3
Run Tests
Go to Evaluator page and select scenarios
In the Configure Run dialog, select Retell under Chat connections and click Run
Greyed out connection options have not been configured in Agent Settings yet — set them up there to enable them.
1
Configure Chat Provider
Go to Agent Settings → Configuration → Provider, select VAPI
Under Integration Settings, enter your External Assistant ID and VAPI Auth API Key
Click Save Changes
2
Run Tests
Go to Evaluator page and select scenarios
In the Configure Run dialog, select VAPI under Chat connections and click Run
Greyed out connection options have not been configured in Agent Settings yet — set them up there to enable them.
LiveKit Chat runs against the same LiveKit agent you test over voice. It requires the Cekura SDK in the agent, which switches the session to text mode automatically. See LiveKit Tracing.
1
Integrate the Cekura SDK
Follow the LiveKit Tracing setup so the agent reports transcripts and handles text mode.
2
Configure in Cekura
Go to Agent Settings → Configuration → Provider, select LiveKit and fill in the LiveKit credentials
Enable Tracing and the WebRTC connection
Under Chat connections, enable LiveKit Chat and click Save Changes
3
Run Tests
Go to Evaluator page and select scenarios
In the Configure Run dialog, select LiveKit under Chat connections and click Run
Pipecat Chat runs against the same Pipecat Cloud deployment that serves voice. Text runs still generate some TTS usage on the bot’s replies; integrate the Cekura SDK to run the session fully in text. See Pipecat Tracing.
1
Integrate the Cekura SDK (recommended)
Follow the Pipecat Tracing setup so the session runs fully in text.
2
Configure in Cekura
Go to Agent Settings → Configuration → Provider, select Pipecat
Under Integration Settings, enter the Pipecat API Key and Pipecat Agent Name
Under Chat connections, enable Pipecat Chat and click Save Changes
3
Run Tests
Go to Evaluator page and select scenarios
In the Configure Run dialog, select Pipecat Chat under Chat connections and click Run
Mock tools are not available for Pipecat Chat runs.
For voice Personas, automatic configuration, outbound calls, and mock tools, see the Bland AI integration guide.
Update your OpenAI API key in main.py before starting the server.
Authentication:When Cekura connects to your WebSocket server, it includes the following headers in the handshake request:
Header
Description
X-VOCERA-SECRET
The Websocket Secret you configured in your agent’s Custom Chatbot Settings. Cekura sends this exact value on every connection so your server can verify the request came from Cekura.
X-VOCERA-SCENARIO-ID
The ID of the scenario being tested.
X-VOCERA-RESULT-ID
The result ID for this test run.
X-VOCERA-RUN-ID
The run ID for this test execution.
Any custom headers configured in your agent’s WebSocket header settings are also included.To authenticate incoming connections, validate the X-VOCERA-SECRET header against the secret you configured in your agent’s Custom Chatbot Settings:
# The same value you saved as "Websocket Secret" in Agent Settings → Chatbot IntegrationsWEBSOCKET_SECRET = "your-configured-websocket-secret"async def handle_websocket(websocket, path): secret = websocket.request_headers.get("X-VOCERA-SECRET") if secret != WEBSOCKET_SECRET: await websocket.close(1008, "Unauthorized") return # Handle messages...
WebSocket Message Format:Messages your server sends to Cekura (your agent’s messages):Regular message:
{ "content": "Hello! How can I help you today?"}
Message with metadata:
{ "content": "Hello! How can I help you today?", "metadata": { "customer_id": "cust_123", "session_type": "support" }}
Metadata-only message (no conversation response triggered):
{ "content": "Goodbye, have a great day!", "type": "end_call"}
To end the conversation from your server, send a message with "type": "end_call". Cekura will finalize the session on receipt. This is the same message format Cekura uses when it initiates the end — either side can send it.
Messages Cekura sends to your server (testing agent messages):Regular message:
{ "content": "I'd like to book an appointment for tomorrow"}
When your server receives a message with "type": "end_call", the conversation is ending. Your server can handle cleanup and connection closure gracefully.
Conversation Finalization & Timeouts:Either side can end the conversation. Cekura sends {"type": "end_call"} to your server and waits 1 second before closing the connection — your server does not need to close the connection itself. To end the conversation from your side, simply close the WebSocket connection; Cekura treats an unexpected close as the main agent ending the call.Cekura closes the connection after 5 minutes without a content message. It also sends a WebSocket ping every 30 seconds and considers the connection dropped if no pong is received within 10 seconds. Ping/pong are handled automatically at the WebSocket protocol layer by most libraries, so no explicit handling is required in your application code.
2
Expose Server
For local development, use ngrok:
ngrok http 127.0.0.1:8765
Convert the https:// URL to wss:// for WebSocket connection.
3
Configure in Cekura
Go to Agent Settings → Configuration → Connection → Chat Connection → WebSocket
Enter your WebSocket URL (starting with wss://)
Enter WebSocket Secret (Optional) — any string you choose. Cekura will send this value on every connection in the X-VOCERA-SECRET header so your server can authenticate the request. Use the Update button to change it later.
Click Save Changes
The Websocket Secret is a value you choose. Keep the same value in your WebSocket server so it can validate the X-VOCERA-SECRET header. See the Authentication subsection under Set Up WebSocket Server above for a code example.
4
Run Tests
Go to Evaluator page and select scenarios
In the Configure Run dialog, select Websocket under Chat connections and click Run
Greyed out connection options have not been configured in Agent Settings yet — set them up there to enable them.
When test profile is attached on your Evaluator and run it as WebSocket Chat, any fields in the test profile starting with X- are automatically sent as HTTP headers to your WebSocket server during connection establishment. This allows your server to receive user context before the conversation begins.Example Test Profile:
async def handle_connection(websocket, path): headers = websocket.request_headers customer_id = headers.get('X-Customer-ID') account_tier = headers.get('X-Account-Tier') # Pre-load customer data before conversation starts customer_data = await fetch_customer(customer_id) # Customize behavior based on tier if account_tier == 'premium': enable_priority_support() # Now handle the conversation...
Only fields starting with X- are sent as headers. Other fields remain available for use in evaluator instructions via template variables like {{test_profile.name}}.
Use Cases:
Pre-load customer/user data before conversation starts
Route to specific handlers based on account tier or customer type
Your WebSocket server can attach metadata to a run by including a metadata field in any message sent to Cekura. Metadata is useful for passing contextual information like internal IDs, environment details, or customer attributes that you want associated with the test run.Sending metadata with a message:
{ "content": "Hello! How can I help you today?", "metadata": { "customer_id": "cust_123", "session_type": "support" }}
Sending metadata without a message:You can send a metadata-only message (no role or content) at any point during the conversation. This attaches the metadata to the run without triggering a response from the testing agent:
Each runs[].id in the response is a conversation to drive. timeout is the overall run lifetime in seconds (defaults to your project setting, max 3600).
2
Wait until the run is ready
Poll the run until its status is in_progress (it opens once capacity is available). Stop if it reaches completed, failed, timeout or cancelled first — the run ended before it opened, so there is nothing to drive:
curl --request GET \ --url https://api.cekura.ai/test_framework/v1/runs/<run_id>/ \ --header 'X-CEKURA-API-KEY: <api-key>'
Then fetch the opening as turn 0 — GET /runs/<run_id>/chat/0/ returns the scenario’s opening line in message (the simulated user speaks first), or null when you speak first.
3
Submit a turn
Send your agent’s latest message. The reply is generated in the background, so this returns a turn_id to poll.
curl --request POST \ --url https://api.cekura.ai/test_framework/v1/runs/<run_id>/chat/ \ --header 'X-CEKURA-API-KEY: <api-key>' \ --header 'Content-Type: application/json' \ --data '{ "content": "Hello! How can I help you today?" }'
Submitting a new turn while the previous one is still generating interrupts it — the older turn becomes dropped but its message is kept, and the new reply answers all messages received since the last reply.
4
Poll for the reply
Poll the turn until status is ready; the reply is in message. Feed it to your agent and submit the next turn. Repeat until ended is true.
curl --request GET \ --url https://api.cekura.ai/test_framework/v1/runs/<run_id>/chat/<turn_id>/ \ --header 'X-CEKURA-API-KEY: <api-key>'
{ "run_id": 987, "result_id": 654, "turn_id": 1, "status": "ready", "message": "Hi! I'd like to check the status of my order.", "ended": false, "ended_reason": null }
Statuses: generating (keep polling), ready (reply in message), dropped (interrupted by a newer turn — its message is kept and the newer reply answers it), error (submit again). Turns stay pollable after the run finishes.
5
Finish (optional)
End explicitly to score it right away; otherwise it finalizes when the simulated user ends the chat or timeout elapses.
Trigger chat simulations programmatically for any supported provider.For complete API documentation including authentication, request parameters, response format, and code examples in multiple languages, see:Run Evaluator Text API Reference
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Cekura","colors":{"primary":"#8184FF","light":"#A6A7EA","dark":"#8184FF"},"favicon":"https://mintcdn.com/vocera/-ehbdLduj39oRXOg/logo/favicon.png?fit=max\u0026auto=format\u0026n=-ehbdLduj39oRXOg\u0026q=85\u0026s=e32d4e5dc1d57d5e2b2fc594b73f0bb2","logo":{"light":"https://mintcdn.com/vocera/NnWFOccGgHKr48PP/logo/logo-dark.svg?fit=max\u0026auto=format\u0026n=NnWFOccGgHKr48PP\u0026q=85\u0026s=fe825439de9afd1d121723398224f0fe","dark":"https://mintcdn.com/vocera/NnWFOccGgHKr48PP/logo/light.svg?fit=max\u0026auto=format\u0026n=NnWFOccGgHKr48PP\u0026q=85\u0026s=f71dda7aa2212d127512fb4e6b40961a"},"navbar":{"links":[{"label":"Support","href":"mailto:support@cekura.ai"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.cekura.ai"}},"footer":{"socials":{"x":"https://x.com/CekuraAI","linkedin":"https://www.linkedin.com/company/cekuraai"}},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"vocera","hasAudioNarration":false,"actualSubdomain":"vocera","customDomains":["docs.cekura.ai"],"gitSource":{"type":"github","owner":"cekura-ai","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae5ac0dc23d1566bdfadf80","collectionId":"b07b1e2a-1fd5-4e4a-b4ca-f5dd5bee9ed6","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae5ac0dc23d1566bdfadf80"},"feedback":{"edits":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae5ac0dc23d1566bdfadf80","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"API Reference","count":412},{"language":"default","tag":"Documentation","count":106},{"language":"default","tag":"Evaluators","count":64},{"language":"default","tag":"Guides","count":40},{"language":"default","tag":"Metrics","count":37},{"language":"default","tag":"Others","count":35},{"language":"default","tag":"Integrations","count":27},{"language":"default","tag":"Testing","count":23},{"language":"default","tag":"Key Concepts","count":19},{"language":"default","tag":"Advanced","count":18}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#navbar img{height:36px}.dark #sidebar-group img{background-color:transparent!important}#content-container::before{content:\"\";position:fixed;top:-190px;right:0;width:40%;height:124%;opacity:.4;background-repeat:no-repeat;background-image:url(/images/bg-dark.png)}"}],"page":{"pagePath":"documentation/integrations/chat-testing","slug":"/documentation/integrations/chat-testing","pageMetadata":{"title":"Chat-Based Testing","sidebarTitle":"Chat Testing","icon":"message-lines","iconType":"regular","description":"Test your voice agents faster and cheaper using text-based simulation","href":"/documentation/integrations/chat-testing"},"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: \"Test your voice agents faster and cheaper using text-based simulation\"\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];const CopyPageButton=()=>{if(typeof window!==`undefined`){setTimeout(function(){if(document.getElementById(`ck-tools`))return;var anchor=document.getElementById(`content-area`)||document.querySelector(`.mdx-content`);if(!anchor)return;if(!document.getElementById(`ck-style`)){var s=document.createElement(`style`);s.id=`ck-style`;s.textContent=`#ck-tools{position:absolute;top:6px;right:0;z-index:100;font-family:inherit;}`+`.ck-row{display:inline-flex;align-items:stretch;border:1px solid rgba(0,0,0,0.15);border-radius:8px;overflow:hidden;background:#fff;}`+`:root.dark .ck-row{background:rgba(255,255,255,0.06);border-color:rgba(255,255,255,0.12);}`+`.ck-btn{padding:5px 12px;border:none;background:none;cursor:pointer;font-size:13px;font-weight:500;font-family:inherit;color:#374151;}`+`:root.dark .ck-btn{color:#d1d5db;}`+`.ck-btn:hover{background:rgba(0,0,0,0.04);}`+`:root.dark .ck-btn:hover{background:rgba(255,255,255,0.06);}`+`.ck-chevron{padding:5px 8px;border:none;background:none;cursor:pointer;font-size:14px;font-family:inherit;color:#374151;}`+`:root.dark .ck-chevron{color:#d1d5db;}`+`.ck-chevron:hover{background:rgba(0,0,0,0.04);}`+`:root.dark .ck-chevron:hover{background:rgba(255,255,255,0.06);}`+`.ck-divider{width:1px;background:rgba(0,0,0,0.12);flex-shrink:0;}`+`:root.dark .ck-divider{background:rgba(255,255,255,0.12);}`+`.ck-dd{position:absolute;top:calc(100% + 4px);right:0;min-width:180px;background:#fff;border:1px solid rgba(0,0,0,0.12);border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,0.1);padding:4px;display:none;z-index:200;}`+`:root.dark .ck-dd{background:#1f2937;border-color:rgba(255,255,255,0.1);box-shadow:0 4px 16px rgba(0,0,0,0.35);}`+`.ck-item{display:block;width:100%;padding:7px 12px;border:none;background:none;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit;text-align:left;color:#374151;}`+`:root.dark .ck-item{color:#d1d5db;}`+`.ck-item:hover{background:rgba(0,0,0,0.05);}`+`:root.dark .ck-item:hover{background:rgba(255,255,255,0.07);}`;document.head.appendChild(s)}var wrap=document.createElement(`div`);wrap.id=`ck-tools`;var row=document.createElement(`div`);row.className=`ck-row`;var mainBtn=document.createElement(`button`);mainBtn.className=`ck-btn`;mainBtn.textContent=`Copy page`;var divider=document.createElement(`span`);divider.className=`ck-divider`;var chevron=document.createElement(`button`);chevron.className=`ck-chevron`;chevron.textContent=`▾`;var dd=document.createElement(`div`);dd.className=`ck-dd`;function closeDD(){dd.style.display=`none`}function openDD(){dd.style.display=`block`}chevron.onclick=function(e){e.stopPropagation();if(dd.style.display===`block`){closeDD()}else{openDD()}};document.addEventListener(`click`,function(e){if(!e.target.closest(`#ck-tools`)){closeDD()}});document.addEventListener(`keydown`,function(e){if(e.key===`Escape`){closeDD()}});function makeItem(label,fn){var b=document.createElement(`button`);b.className=`ck-item`;b.textContent=label;b.onclick=function(){fn();closeDD()};return b}function getMarkdown(){var walk=function(node){if(!node)return``;if(node.nodeType===3)return node.textContent||``;if(node.nodeType!==1)return``;var tag=node.tagName.toLowerCase();var skip=[`script`,`style`,`svg`,`noscript`,`button`,`iframe`];if(skip.indexOf(tag)!==-1)return``;if(node.id===`ck-tools`)return``;var ch=Array.from(node.childNodes).map(walk).join(``);if(tag===`h1`)return`\n# `+ch.trim()+`\n\n`;if(tag===`h2`)return`\n## `+ch.trim()+`\n\n`;if(tag===`h3`)return`\n### `+ch.trim()+`\n\n`;if(tag===`p`)return`\n`+ch.trim()+`\n\n`;if(tag===`pre`)return\"\\n```\\n\"+node.textContent.trim()+`\n\\`\\`\\`\n\n`;if(tag===`li`)return`- `+ch.trim()+`\n`;if(tag===`code`)return\"`\"+ch.trim()+\"`\";return ch};var content=document.querySelector(`.mdx-content`)||document.getElementById(`content-area`)||document.body;return walk(content).replace(/\\n\\n\\n+/g,`\n\n`).trim()}function copyMd(){var md=getMarkdown();navigator.clipboard.writeText(md).then(function(){mainBtn.textContent=`Copied!`;setTimeout(function(){mainBtn.textContent=`Copy page`},2e3)})}function viewMd(){var md=getMarkdown();var safe=md.split(`\u0026`).join(`\u0026amp;`).split(`\u003c`).join(`\u0026lt;`).split(`>`).join(`\u0026gt;`);var html=`\u003c!DOCTYPE html>\u003chtml>\u003chead>\u003cmeta charset=\"utf-8\">\u003cstyle>body{font-family:monospace;max-width:860px;margin:40px auto;padding:0 24px;line-height:1.7;white-space:pre-wrap;word-wrap:break-word}\u003c/style>\u003c/head>\u003cbody>`+safe+`\u003c/body>\u003c/html>`;window.open(URL.createObjectURL(new Blob([html],{type:`text/html`})),`_blank`)}function openClaude(){var prompt=`Can you read this Cekura docs page `+window.location.href+` so I can ask you questions?`;window.open(`https://claude.ai/new?q=`+encodeURIComponent(prompt),`_blank`)}mainBtn.onclick=copyMd;dd.appendChild(makeItem(`Copy page`,copyMd));dd.appendChild(makeItem(`View as Markdown`,viewMd));dd.appendChild(makeItem(`Open in Claude`,openClaude));row.appendChild(mainBtn);row.appendChild(divider);row.appendChild(chevron);wrap.appendChild(row);wrap.appendChild(dd);anchor.style.position=`relative`;anchor.insertBefore(wrap,anchor.firstChild)},50)}return null};function _createMdxContent(props){const _components={a:`a`,blockquote:`blockquote`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,CodeBlock,Heading,Info,Note,OptimizedImage,Step,Steps,Tab,Table,Tabs,Tip,_MdxComponentBoundary}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsxs(_Fragment,{children:[_jsx(_MdxComponentBoundary,{name:`CopyPageButton`,children:_jsx(CopyPageButton,{})}),`\n`,_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsx(_components.p,{children:`Test your voice agents using text instead of phone calls. 10x faster and 90% cheaper - ideal for workflow validation, regression testing, and CI/CD pipelines.`}),`\n`,_jsx(_components.p,{children:`Use voice testing for ASR/TTS validation and final production checks.`}),`\n`,_jsx(Heading,{level:`2`,id:`supported-providers`,children:`Supported Providers`}),`\n`,_jsxs(Tabs,{children:[_jsx(Tab,{title:`ElevenLabs`,id:`elevenlabs`,children:_jsxs(Steps,{children:[_jsxs(Step,{title:`Configure Chat Provider`,children:[_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`From sidebar, go to Agent → Configuration → Provider, select `,_jsx(_components.strong,{children:`ElevenLabs`})]}),`\n`,_jsxs(_components.li,{children:[`Under Integration Settings, enter your `,_jsx(_components.strong,{children:`External Assistant ID`}),` and `,_jsx(_components.strong,{children:`ElevenLabs API Key`})]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Save Changes`})]}),`\n`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/elevenlabs/agent-settings.png?fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=137691791557d09190dd54835cd2f55c`,alt:`ElevenLabs agent settings`,\"data-og-width\":`1371`,width:`1371`,\"data-og-height\":`912`,height:`912`,\"data-path\":`images/elevenlabs/agent-settings.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/elevenlabs/agent-settings.png?w=280\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=b826e3119f70d525e32a8807f7f2092e 280w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/elevenlabs/agent-settings.png?w=560\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=c536f854dd874b4239ac91ca5eb31c65 560w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/elevenlabs/agent-settings.png?w=840\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=e978fc4f42794ed4525c753c550a2e2c 840w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/elevenlabs/agent-settings.png?w=1100\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=79c4d66b54ba231e1a0efe7a5c24a4f6 1100w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/elevenlabs/agent-settings.png?w=1650\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=73c81b87be866ff2c5694574468ef3e1 1650w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/elevenlabs/agent-settings.png?w=2500\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=2dcd26820c7689e4db671236b3cc926f 2500w`})]}),_jsxs(Step,{title:`Run Tests`,children:[_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.strong,{children:`Evaluator`}),` page, select scenarios and click on `,_jsx(_components.strong,{children:`Run`}),` button.`]}),`\n`,_jsxs(_components.li,{children:[`In the `,_jsx(_components.strong,{children:`Configure Run`}),` dialog, select `,_jsx(_components.strong,{children:`ElevenLabs`}),` under Chat connections and click `,_jsx(_components.strong,{children:`Run`})]}),`\n`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/elevenlabs/run-tests-chat.png?fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=3c6ac388c7065af039964431d5be622f`,alt:`Run ElevenLabs chat tests`,\"data-og-width\":`538`,width:`538`,\"data-og-height\":`620`,height:`620`,\"data-path\":`images/elevenlabs/run-tests-chat.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/elevenlabs/run-tests-chat.png?w=280\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=58bf7e254b1d45f0249c0301ad032952 280w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/elevenlabs/run-tests-chat.png?w=560\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=aa41571a0b2dffdf5348f8785383caf2 560w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/elevenlabs/run-tests-chat.png?w=840\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=5eee43ba1d8b4473e6e6b21c9520f7d0 840w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/elevenlabs/run-tests-chat.png?w=1100\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=411019a022c04fea12779dc1881e1810 1100w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/elevenlabs/run-tests-chat.png?w=1650\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=284c5459fbae78c718b9c43b14360725 1650w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/elevenlabs/run-tests-chat.png?w=2500\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=a0fdab438ef4d05f22b95309869cacb6 2500w`}),_jsx(Note,{children:`Greyed out connection options have not been configured in Agent Settings yet — set them up there to enable them.`})]}),_jsx(Step,{title:`View Results`,children:_jsx(_components.p,{children:`Results appear in the dashboard with conversation transcript, metric evaluations, and function calls.`})})]})}),_jsxs(Tab,{title:`Retell`,id:`retell`,children:[_jsx(_components.p,{children:`Retell chat runs work out of the box with just a voice agent configured — Cekura automatically clones a temporary chat agent from your voice agent for each run. Optionally, you can point chat runs at a dedicated chat agent.`}),_jsxs(Steps,{children:[_jsxs(Step,{title:`(Optional) Create a Dedicated Chat Agent in Retell`,children:[_jsx(_components.p,{children:`If you want chat runs to target a specific chat agent:`}),_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Log in to Retell dashboard`}),`\n`,_jsx(_components.li,{children:`Navigate to your voice agent`}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`“Copy as chat agent”`})]}),`\n`,_jsxs(_components.li,{children:[`Copy the `,_jsx(_components.strong,{children:`Agent ID`}),` of the new chat agent`]}),`\n`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/vocera/0qUBoVrpw7JFRD7H/images/retell_convert_to_chat_agent.png?fit=max\u0026auto=format\u0026n=0qUBoVrpw7JFRD7H\u0026q=85\u0026s=1307ee43df4daa23a47899cbd89abecd`,alt:`Convert Retell agent to chat mode`,\"data-og-width\":`494`,width:`494`,\"data-og-height\":`397`,height:`397`,\"data-path\":`images/retell_convert_to_chat_agent.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/vocera/0qUBoVrpw7JFRD7H/images/retell_convert_to_chat_agent.png?w=280\u0026fit=max\u0026auto=format\u0026n=0qUBoVrpw7JFRD7H\u0026q=85\u0026s=494f0ac4f0f49661eee578bf32a02ea2 280w, https://mintcdn.com/vocera/0qUBoVrpw7JFRD7H/images/retell_convert_to_chat_agent.png?w=560\u0026fit=max\u0026auto=format\u0026n=0qUBoVrpw7JFRD7H\u0026q=85\u0026s=4a5a891469c5089e5d9d013fc38a6d7f 560w, https://mintcdn.com/vocera/0qUBoVrpw7JFRD7H/images/retell_convert_to_chat_agent.png?w=840\u0026fit=max\u0026auto=format\u0026n=0qUBoVrpw7JFRD7H\u0026q=85\u0026s=d84843475176b71d0c7f3c1e9ae27170 840w, https://mintcdn.com/vocera/0qUBoVrpw7JFRD7H/images/retell_convert_to_chat_agent.png?w=1100\u0026fit=max\u0026auto=format\u0026n=0qUBoVrpw7JFRD7H\u0026q=85\u0026s=8b9cdc53b4ea5fe156383444902fa690 1100w, https://mintcdn.com/vocera/0qUBoVrpw7JFRD7H/images/retell_convert_to_chat_agent.png?w=1650\u0026fit=max\u0026auto=format\u0026n=0qUBoVrpw7JFRD7H\u0026q=85\u0026s=2e3cfe7a50ea7927187be47494e3bb97 1650w, https://mintcdn.com/vocera/0qUBoVrpw7JFRD7H/images/retell_convert_to_chat_agent.png?w=2500\u0026fit=max\u0026auto=format\u0026n=0qUBoVrpw7JFRD7H\u0026q=85\u0026s=fd4a3072e9bd71f626fc1a494f54547e 2500w`}),_jsxs(_components.blockquote,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Note:`}),` When no chat agent ID is configured, Cekura clones a temporary chat agent from the voice agent automatically for each run.`]}),`\n`]})]}),_jsxs(Step,{title:`Configure in Cekura`,children:[_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.strong,{children:`Agent Settings`}),` → `,_jsx(_components.strong,{children:`Configuration`}),` → `,_jsx(_components.strong,{children:`Provider`}),`, select `,_jsx(_components.strong,{children:`Retell`})]}),`\n`,_jsxs(_components.li,{children:[`Under `,_jsx(_components.strong,{children:`Integration Settings`}),`, enter the `,_jsx(_components.strong,{children:`External Assistant ID`}),` of your Retell voice agent and your `,_jsx(_components.strong,{children:`Retell API Key`})]}),`\n`,_jsx(_components.li,{children:`Optionally, enter the chat agent ID if you created one in the previous step`}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Save Changes`})]}),`\n`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/retell/agent-settings.png?fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=1de1364c79a7808222f0770f21102eaf`,alt:`Retell agent settings`,\"data-og-width\":`1402`,width:`1402`,\"data-og-height\":`915`,height:`915`,\"data-path\":`images/retell/agent-settings.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/retell/agent-settings.png?w=280\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=de64b6f05c239f052dc56751734deeb6 280w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/retell/agent-settings.png?w=560\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=dfe1426a630babd8d169e017c7cb4fe0 560w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/retell/agent-settings.png?w=840\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=b1ccb669e24dd16b7303c4d03d052d56 840w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/retell/agent-settings.png?w=1100\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=60f469e2cedcb3aeb43b1eee7e4a6646 1100w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/retell/agent-settings.png?w=1650\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=4c560e1cda3ea229ab9b3cd5414684e1 1650w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/retell/agent-settings.png?w=2500\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=37cc32c5ba6ec7b15aa61d35d3f0e18c 2500w`})]}),_jsxs(Step,{title:`Run Tests`,children:[_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.strong,{children:`Evaluator`}),` page and select scenarios`]}),`\n`,_jsxs(_components.li,{children:[`In the `,_jsx(_components.strong,{children:`Configure Run`}),` dialog, select `,_jsx(_components.strong,{children:`Retell`}),` under Chat connections and click `,_jsx(_components.strong,{children:`Run`})]}),`\n`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/retell/configure-run-chat.png?fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=40b3740049003f131513c3a9b0153a73`,alt:`Configure Run dialog with Retell chat connection selected`,\"data-og-width\":`538`,width:`538`,\"data-og-height\":`615`,height:`615`,\"data-path\":`images/retell/configure-run-chat.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/retell/configure-run-chat.png?w=280\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=24dd7617505d3a76c453e749e6a405e6 280w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/retell/configure-run-chat.png?w=560\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=aa1b28716be8da07726c2fe8d39aeb93 560w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/retell/configure-run-chat.png?w=840\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=8edb5552c77f3fd5e09d430e78d29973 840w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/retell/configure-run-chat.png?w=1100\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=a1f28e3c66ee2a3cc5c89e4a2e99fd79 1100w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/retell/configure-run-chat.png?w=1650\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=038cc6c33055f7c18884f5c45278d84a 1650w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/retell/configure-run-chat.png?w=2500\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=702145138c0837af1d32ccee5b4a3fff 2500w`}),_jsx(Note,{children:`Greyed out connection options have not been configured in Agent Settings yet — set them up there to enable them.`})]})]})]}),_jsx(Tab,{title:`Vapi`,id:`vapi`,children:_jsxs(Steps,{children:[_jsxs(Step,{title:`Configure Chat Provider`,children:[_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.strong,{children:`Agent Settings`}),` → `,_jsx(_components.strong,{children:`Configuration`}),` → `,_jsx(_components.strong,{children:`Provider`}),`, select `,_jsx(_components.strong,{children:`VAPI`})]}),`\n`,_jsxs(_components.li,{children:[`Under `,_jsx(_components.strong,{children:`Integration Settings`}),`, enter your `,_jsx(_components.strong,{children:`External Assistant ID`}),` and `,_jsx(_components.strong,{children:`VAPI Auth API Key`})]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Save Changes`})]}),`\n`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/vapi/agent-settings.png?fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=4f7d709f640a47f3db13b1da487e16e5`,alt:`VAPI agent settings`,\"data-og-width\":`1285`,width:`1285`,\"data-og-height\":`861`,height:`861`,\"data-path\":`images/vapi/agent-settings.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/vapi/agent-settings.png?w=280\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=9e7166663a3682144fd6bd9789613c28 280w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/vapi/agent-settings.png?w=560\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=d1f9b7b910d53f66c86b7581d5eeade5 560w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/vapi/agent-settings.png?w=840\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=03b98cc63daf43f5596b6353d492995a 840w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/vapi/agent-settings.png?w=1100\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=a1a9c9940a5794d99ca09ceb1aa66595 1100w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/vapi/agent-settings.png?w=1650\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=c1f3b40799b1f824fee5b5766881276f 1650w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/vapi/agent-settings.png?w=2500\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=249c640e2bc0b1002c8ed5439e8283a4 2500w`})]}),_jsxs(Step,{title:`Run Tests`,children:[_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.strong,{children:`Evaluator`}),` page and select scenarios`]}),`\n`,_jsxs(_components.li,{children:[`In the `,_jsx(_components.strong,{children:`Configure Run`}),` dialog, select `,_jsx(_components.strong,{children:`VAPI`}),` under Chat connections and click `,_jsx(_components.strong,{children:`Run`})]}),`\n`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/vapi/configure-run-chat.png?fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=99fe4bfd2b3bb88ab651e709768a278b`,alt:`Configure Run dialog with VAPI chat connection selected`,\"data-og-width\":`548`,width:`548`,\"data-og-height\":`618`,height:`618`,\"data-path\":`images/vapi/configure-run-chat.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/vapi/configure-run-chat.png?w=280\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=26cd2cc7ea7655034bf1ccdb766cf4fb 280w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/vapi/configure-run-chat.png?w=560\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=6d59be59c8b8188e15f81529717d2003 560w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/vapi/configure-run-chat.png?w=840\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=7b7d8ac99cb57a687445b0eee89487e7 840w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/vapi/configure-run-chat.png?w=1100\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=631451aa7adfc18f379c87b01d4612da 1100w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/vapi/configure-run-chat.png?w=1650\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=219ca423a76e66f231473893a54f8f7f 1650w, https://mintcdn.com/vocera/jgU_15-26qRVL6Rl/images/vapi/configure-run-chat.png?w=2500\u0026fit=max\u0026auto=format\u0026n=jgU_15-26qRVL6Rl\u0026q=85\u0026s=735139e85e4814171b99656a3ac35799 2500w`}),_jsx(Note,{children:`Greyed out connection options have not been configured in Agent Settings yet — set them up there to enable them.`})]})]})}),_jsxs(Tab,{title:`LiveKit`,id:`livekit`,children:[_jsx(Info,{children:_jsxs(_components.p,{children:[`LiveKit Chat runs against the same LiveKit agent you test over voice. It requires the Cekura SDK in the agent, which switches the session to text mode automatically. See `,_jsx(_components.a,{href:`/documentation/integrations/livekit/tracing#automatic-chat-mode-support`,children:`LiveKit Tracing`}),`.`]})}),_jsxs(Steps,{children:[_jsx(Step,{title:`Integrate the Cekura SDK`,children:_jsxs(_components.p,{children:[`Follow the `,_jsx(_components.a,{href:`/documentation/integrations/livekit/tracing`,children:`LiveKit Tracing`}),` setup so the agent reports transcripts and handles text mode.`]})}),_jsx(Step,{title:`Configure in Cekura`,children:_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.strong,{children:`Agent Settings`}),` → `,_jsx(_components.strong,{children:`Configuration`}),` → `,_jsx(_components.strong,{children:`Provider`}),`, select `,_jsx(_components.strong,{children:`LiveKit`}),` and fill in the LiveKit credentials`]}),`\n`,_jsxs(_components.li,{children:[`Enable `,_jsx(_components.strong,{children:`Tracing`}),` and the `,_jsx(_components.strong,{children:`WebRTC`}),` connection`]}),`\n`,_jsxs(_components.li,{children:[`Under `,_jsx(_components.strong,{children:`Chat connections`}),`, enable `,_jsx(_components.strong,{children:`LiveKit Chat`}),` and click `,_jsx(_components.strong,{children:`Save Changes`})]}),`\n`]})}),_jsx(Step,{title:`Run Tests`,children:_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.strong,{children:`Evaluator`}),` page and select scenarios`]}),`\n`,_jsxs(_components.li,{children:[`In the `,_jsx(_components.strong,{children:`Configure Run`}),` dialog, select `,_jsx(_components.strong,{children:`LiveKit`}),` under Chat connections and click `,_jsx(_components.strong,{children:`Run`})]}),`\n`]})})]})]}),_jsxs(Tab,{title:`Pipecat`,id:`pipecat`,children:[_jsx(Info,{children:_jsxs(_components.p,{children:[`Pipecat Chat runs against the same Pipecat Cloud deployment that serves voice. Text runs still generate some TTS usage on the bot’s replies; integrate the Cekura SDK to run the session fully in text. See `,_jsx(_components.a,{href:`/documentation/integrations/pipecat/tracing#automatic-chat-mode-support`,children:`Pipecat Tracing`}),`.`]})}),_jsxs(Steps,{children:[_jsx(Step,{title:`Integrate the Cekura SDK (recommended)`,children:_jsxs(_components.p,{children:[`Follow the `,_jsx(_components.a,{href:`/documentation/integrations/pipecat/tracing`,children:`Pipecat Tracing`}),` setup so the session runs fully in text.`]})}),_jsxs(Step,{title:`Configure in Cekura`,children:[_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.strong,{children:`Agent Settings`}),` → `,_jsx(_components.strong,{children:`Configuration`}),` → `,_jsx(_components.strong,{children:`Provider`}),`, select `,_jsx(_components.strong,{children:`Pipecat`})]}),`\n`,_jsxs(_components.li,{children:[`Under `,_jsx(_components.strong,{children:`Integration Settings`}),`, enter the `,_jsx(_components.strong,{children:`Pipecat API Key`}),` and `,_jsx(_components.strong,{children:`Pipecat Agent Name`})]}),`\n`,_jsxs(_components.li,{children:[`Under `,_jsx(_components.strong,{children:`Chat connections`}),`, enable `,_jsx(_components.strong,{children:`Pipecat Chat`}),` and click `,_jsx(_components.strong,{children:`Save Changes`})]}),`\n`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/vocera/NKR4FAtFNzYi8KiC/images/pipecat/chat-agent-settings.png?fit=max\u0026auto=format\u0026n=NKR4FAtFNzYi8KiC\u0026q=85\u0026s=2bac885856fc7b8599c4e7618124aa2e`,alt:`Pipecat Chat connection in Cekura agent settings`,\"data-og-width\":`418`,width:`418`,\"data-og-height\":`549`,height:`549`,\"data-path\":`images/pipecat/chat-agent-settings.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/vocera/NKR4FAtFNzYi8KiC/images/pipecat/chat-agent-settings.png?w=280\u0026fit=max\u0026auto=format\u0026n=NKR4FAtFNzYi8KiC\u0026q=85\u0026s=a7f7a6377c016c0ce96568a9f7bab5b8 280w, https://mintcdn.com/vocera/NKR4FAtFNzYi8KiC/images/pipecat/chat-agent-settings.png?w=560\u0026fit=max\u0026auto=format\u0026n=NKR4FAtFNzYi8KiC\u0026q=85\u0026s=52beb274a298159658a2396ed22e4e6a 560w, https://mintcdn.com/vocera/NKR4FAtFNzYi8KiC/images/pipecat/chat-agent-settings.png?w=840\u0026fit=max\u0026auto=format\u0026n=NKR4FAtFNzYi8KiC\u0026q=85\u0026s=5275475245564842dbdbca017add881d 840w, https://mintcdn.com/vocera/NKR4FAtFNzYi8KiC/images/pipecat/chat-agent-settings.png?w=1100\u0026fit=max\u0026auto=format\u0026n=NKR4FAtFNzYi8KiC\u0026q=85\u0026s=a3486ff99794209a6b87574942efbd25 1100w, https://mintcdn.com/vocera/NKR4FAtFNzYi8KiC/images/pipecat/chat-agent-settings.png?w=1650\u0026fit=max\u0026auto=format\u0026n=NKR4FAtFNzYi8KiC\u0026q=85\u0026s=5fd24a01bbe52327bbb2c530545fa6ec 1650w, https://mintcdn.com/vocera/NKR4FAtFNzYi8KiC/images/pipecat/chat-agent-settings.png?w=2500\u0026fit=max\u0026auto=format\u0026n=NKR4FAtFNzYi8KiC\u0026q=85\u0026s=f7a31014ebc76ff893b558b62ef1756b 2500w`})]}),_jsxs(Step,{title:`Run Tests`,children:[_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.strong,{children:`Evaluator`}),` page and select scenarios`]}),`\n`,_jsxs(_components.li,{children:[`In the `,_jsx(_components.strong,{children:`Configure Run`}),` dialog, select `,_jsx(_components.strong,{children:`Pipecat Chat`}),` under Chat connections and click `,_jsx(_components.strong,{children:`Run`})]}),`\n`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/vocera/NKR4FAtFNzYi8KiC/images/pipecat/configure-run-chat.png?fit=max\u0026auto=format\u0026n=NKR4FAtFNzYi8KiC\u0026q=85\u0026s=0ca67d455aa146b92ce637372eb940b6`,alt:`Configure Run dialog with Pipecat Chat selected`,\"data-og-width\":`515`,width:`515`,\"data-og-height\":`617`,height:`617`,\"data-path\":`images/pipecat/configure-run-chat.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/vocera/NKR4FAtFNzYi8KiC/images/pipecat/configure-run-chat.png?w=280\u0026fit=max\u0026auto=format\u0026n=NKR4FAtFNzYi8KiC\u0026q=85\u0026s=d0ec32ddb7735c42a0e0e6b2477c132c 280w, https://mintcdn.com/vocera/NKR4FAtFNzYi8KiC/images/pipecat/configure-run-chat.png?w=560\u0026fit=max\u0026auto=format\u0026n=NKR4FAtFNzYi8KiC\u0026q=85\u0026s=52d57b6556c9d22a6bbe77eea8d79d49 560w, https://mintcdn.com/vocera/NKR4FAtFNzYi8KiC/images/pipecat/configure-run-chat.png?w=840\u0026fit=max\u0026auto=format\u0026n=NKR4FAtFNzYi8KiC\u0026q=85\u0026s=418db2f13e8ec87b1d2cf42b3b172b0f 840w, https://mintcdn.com/vocera/NKR4FAtFNzYi8KiC/images/pipecat/configure-run-chat.png?w=1100\u0026fit=max\u0026auto=format\u0026n=NKR4FAtFNzYi8KiC\u0026q=85\u0026s=6ac23b3410581056b440693ed7fad7ef 1100w, https://mintcdn.com/vocera/NKR4FAtFNzYi8KiC/images/pipecat/configure-run-chat.png?w=1650\u0026fit=max\u0026auto=format\u0026n=NKR4FAtFNzYi8KiC\u0026q=85\u0026s=483368ac6690f09bfcadc1cc07ca8822 1650w, https://mintcdn.com/vocera/NKR4FAtFNzYi8KiC/images/pipecat/configure-run-chat.png?w=2500\u0026fit=max\u0026auto=format\u0026n=NKR4FAtFNzYi8KiC\u0026q=85\u0026s=8081c40a291b7e5072bb1eb6088a0ee0 2500w`}),_jsx(Note,{children:`Mock tools are not available for Pipecat Chat runs.`})]})]})]}),_jsxs(Tab,{title:`Bland`,id:`bland`,children:[_jsx(Info,{children:_jsxs(_components.p,{children:[`For voice Personas, automatic configuration, outbound calls, and mock tools, see the `,_jsx(_components.a,{href:`/documentation/integrations/bland`,children:`Bland AI integration guide`}),`.`]})}),_jsxs(Steps,{children:[_jsxs(Step,{title:`Create Pathway in Bland`,children:[_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Log in to `,_jsx(_components.a,{href:`https://app.bland.ai`,children:`Bland dashboard`})]}),`\n`,_jsxs(_components.li,{children:[`Navigate to `,_jsx(_components.strong,{children:`Conversational Pathways`})]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`“Create Pathway”`}),` or duplicate a template`]}),`\n`,_jsx(_components.li,{children:`Build your conversation flow using nodes and edges`}),`\n`,_jsx(_components.li,{children:`Test and publish your pathway`}),`\n`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/vocera/9qsLBwLhx8NMedHo/images/bland_chat/create_pathway.png?fit=max\u0026auto=format\u0026n=9qsLBwLhx8NMedHo\u0026q=85\u0026s=605822349a47967556d8e205a4bc4908`,alt:`Create Bland pathway`,\"data-og-width\":`1432`,width:`1432`,\"data-og-height\":`425`,height:`425`,\"data-path\":`images/bland_chat/create_pathway.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/vocera/9qsLBwLhx8NMedHo/images/bland_chat/create_pathway.png?w=280\u0026fit=max\u0026auto=format\u0026n=9qsLBwLhx8NMedHo\u0026q=85\u0026s=592c128d64d1f5fae448c50e4abbf4cd 280w, https://mintcdn.com/vocera/9qsLBwLhx8NMedHo/images/bland_chat/create_pathway.png?w=560\u0026fit=max\u0026auto=format\u0026n=9qsLBwLhx8NMedHo\u0026q=85\u0026s=53d3423de62f354f239fe1658c30a8bc 560w, https://mintcdn.com/vocera/9qsLBwLhx8NMedHo/images/bland_chat/create_pathway.png?w=840\u0026fit=max\u0026auto=format\u0026n=9qsLBwLhx8NMedHo\u0026q=85\u0026s=3d62937d82f0f91f7c0d68c09af9c55e 840w, https://mintcdn.com/vocera/9qsLBwLhx8NMedHo/images/bland_chat/create_pathway.png?w=1100\u0026fit=max\u0026auto=format\u0026n=9qsLBwLhx8NMedHo\u0026q=85\u0026s=0c1285f552bc95914ca608f3b9b5eca6 1100w, https://mintcdn.com/vocera/9qsLBwLhx8NMedHo/images/bland_chat/create_pathway.png?w=1650\u0026fit=max\u0026auto=format\u0026n=9qsLBwLhx8NMedHo\u0026q=85\u0026s=c3daf80db8c5af5fdaef2f7988e39e66 1650w, https://mintcdn.com/vocera/9qsLBwLhx8NMedHo/images/bland_chat/create_pathway.png?w=2500\u0026fit=max\u0026auto=format\u0026n=9qsLBwLhx8NMedHo\u0026q=85\u0026s=8497ae0db55381a8e6bfd629d966efb5 2500w`})]}),_jsxs(Step,{title:`Get Pathway ID`,children:[_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`In Bland dashboard, open your pathway`}),`\n`,_jsxs(_components.li,{children:[`Copy the `,_jsx(_components.strong,{children:`Pathway ID`}),` from the URL or pathway settings`]}),`\n`,_jsxs(_components.li,{children:[`Format: UUID like `,_jsx(_components.code,{children:`9d404c1b-6a23-4426-953a-a52c392ff8f1`})]}),`\n`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/vocera/9qsLBwLhx8NMedHo/images/bland_chat/copy_pathway_id.png?fit=max\u0026auto=format\u0026n=9qsLBwLhx8NMedHo\u0026q=85\u0026s=e9b03521ecb53ab9b49a43ac9e7ee310`,alt:`Copy Bland pathway ID`,\"data-og-width\":`1238`,width:`1238`,\"data-og-height\":`692`,height:`692`,\"data-path\":`images/bland_chat/copy_pathway_id.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/vocera/9qsLBwLhx8NMedHo/images/bland_chat/copy_pathway_id.png?w=280\u0026fit=max\u0026auto=format\u0026n=9qsLBwLhx8NMedHo\u0026q=85\u0026s=9fa7696023e4c48fabc65999af1bf0e8 280w, https://mintcdn.com/vocera/9qsLBwLhx8NMedHo/images/bland_chat/copy_pathway_id.png?w=560\u0026fit=max\u0026auto=format\u0026n=9qsLBwLhx8NMedHo\u0026q=85\u0026s=f693f29f86db379ecbdad983f1774db0 560w, https://mintcdn.com/vocera/9qsLBwLhx8NMedHo/images/bland_chat/copy_pathway_id.png?w=840\u0026fit=max\u0026auto=format\u0026n=9qsLBwLhx8NMedHo\u0026q=85\u0026s=bacf95386eabd8c83f9eeb6c6b5053e3 840w, https://mintcdn.com/vocera/9qsLBwLhx8NMedHo/images/bland_chat/copy_pathway_id.png?w=1100\u0026fit=max\u0026auto=format\u0026n=9qsLBwLhx8NMedHo\u0026q=85\u0026s=92d85b011aab490c1d95d416d3d83261 1100w, https://mintcdn.com/vocera/9qsLBwLhx8NMedHo/images/bland_chat/copy_pathway_id.png?w=1650\u0026fit=max\u0026auto=format\u0026n=9qsLBwLhx8NMedHo\u0026q=85\u0026s=7da0ff043045f1e7bb9c5e12833ea92b 1650w, https://mintcdn.com/vocera/9qsLBwLhx8NMedHo/images/bland_chat/copy_pathway_id.png?w=2500\u0026fit=max\u0026auto=format\u0026n=9qsLBwLhx8NMedHo\u0026q=85\u0026s=29a7f052697b956b6f33354f5e2a2a99 2500w`})]}),_jsxs(Step,{title:`Configure in Cekura`,children:[_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.strong,{children:`Agent Settings`}),` → `,_jsx(_components.strong,{children:`Configuration`}),` → `,_jsx(_components.strong,{children:`Provider`}),`, select `,_jsx(_components.strong,{children:`Bland AI`})]}),`\n`,_jsxs(_components.li,{children:[`Under `,_jsx(_components.strong,{children:`Integration Settings`}),`, enter the `,_jsx(_components.strong,{children:`External Assistant ID`}),` (your Pathway ID) and `,_jsx(_components.strong,{children:`Bland API Key`})]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Save Changes`})]}),`\n`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/bland/agent-settings.png?fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=215df8e0a6670b8eeb1293a5609e0c1a`,alt:`Bland AI agent settings in Cekura`,\"data-og-width\":`1420`,width:`1420`,\"data-og-height\":`913`,height:`913`,\"data-path\":`images/bland/agent-settings.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/bland/agent-settings.png?w=280\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=9253f7d09fe40a26c89d5265a3a36d41 280w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/bland/agent-settings.png?w=560\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=39add70562a83bd71d4bba5fd9721688 560w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/bland/agent-settings.png?w=840\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=daa7cb7ccc1880e2f0faeebd8f517337 840w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/bland/agent-settings.png?w=1100\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=3cfbfff82d5ed57e6e4d69b0f5758659 1100w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/bland/agent-settings.png?w=1650\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=a800616b111f2335ff27d4b7693bb5bf 1650w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/bland/agent-settings.png?w=2500\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=c0e57908f9f2f46a60d0a2c7d7f99938 2500w`})]}),_jsxs(Step,{title:`Run Tests`,children:[_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.strong,{children:`Evaluator`}),` page and select scenarios`]}),`\n`,_jsxs(_components.li,{children:[`In the `,_jsx(_components.strong,{children:`Configure Run`}),` dialog, select `,_jsx(_components.strong,{children:`Bland`}),` under Chat connections and click `,_jsx(_components.strong,{children:`Run`})]}),`\n`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/bland/configure-run-chat.png?fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=2c1517c4aa22a82334888a51cfa8979c`,alt:`Configure Run dialog with Bland chat connection selected`,\"data-og-width\":`538`,width:`538`,\"data-og-height\":`617`,height:`617`,\"data-path\":`images/bland/configure-run-chat.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/bland/configure-run-chat.png?w=280\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=de5a18169b288a2bb6516489b8a9c353 280w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/bland/configure-run-chat.png?w=560\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=260300ff13ac700a74b8c6d2aa7a3cd8 560w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/bland/configure-run-chat.png?w=840\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=770ce12aa57a547389a19576313cb561 840w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/bland/configure-run-chat.png?w=1100\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=41401d47ed056afe87f6a2d7ea914f32 1100w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/bland/configure-run-chat.png?w=1650\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=685ea9c73650c7acdeb4ed2fde7b976f 1650w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/bland/configure-run-chat.png?w=2500\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=780a0cd2894791e9b68b51369428a80c 2500w`}),_jsx(Note,{children:`Greyed out connection options have not been configured in Agent Settings yet — set them up there to enable them.`})]})]})]}),_jsxs(Tab,{title:`Custom WebSocket`,id:`custom-websocket`,\"data-child-heading-ids\":`[\"test-profile-headers\",\"metadata\"]`,children:[_jsxs(Steps,{children:[_jsxs(Step,{title:`Set Up WebSocket Server`,children:[_jsx(_components.p,{children:`Use the example implementation or build your own:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`git`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` clone`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://github.com/vocera-ai/llm-websocket-server-example.git`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`cd`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` llm-websocket-server-example`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`python3`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -m`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` venv`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` .venv`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`source`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` .venv/bin/activate`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pip`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -r`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` requirements.txt`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`python`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` main.py`})]}),`\n`]})})}),_jsx(Info,{children:_jsxs(_components.p,{children:[`Update your OpenAI API key in `,_jsx(_components.code,{children:`main.py`}),` before starting the server.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Authentication:`})}),_jsx(_components.p,{children:`When Cekura connects to your WebSocket server, it includes the following headers in the handshake request:`}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Header`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`X-VOCERA-SECRET`})}),_jsx(_components.td,{children:`The Websocket Secret you configured in your agent’s Custom Chatbot Settings. Cekura sends this exact value on every connection so your server can verify the request came from Cekura.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`X-VOCERA-SCENARIO-ID`})}),_jsx(_components.td,{children:`The ID of the scenario being tested.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`X-VOCERA-RESULT-ID`})}),_jsx(_components.td,{children:`The result ID for this test run.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`X-VOCERA-RUN-ID`})}),_jsx(_components.td,{children:`The run ID for this test execution.`})]})]})]}),_jsx(_components.p,{children:`Any custom headers configured in your agent’s WebSocket header settings are also included.`}),_jsxs(_components.p,{children:[`To authenticate incoming connections, validate the `,_jsx(_components.code,{children:`X-VOCERA-SECRET`}),` header against the secret you configured in your agent’s Custom Chatbot Settings:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# The same value you saved as \"Websocket Secret\" in Agent Settings → Chatbot Integrations`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`WEBSOCKET_SECRET`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"your-configured-websocket-secret\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` handle_websocket`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`websocket`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`path`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`):`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` secret `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` websocket.request_headers.get(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"X-VOCERA-SECRET\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` secret `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` WEBSOCKET_SECRET`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` websocket.close(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1008`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Unauthorized\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Handle messages...`})}),`\n`]})})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`WebSocket Message Format:`})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Messages your server sends to Cekura`}),` (your agent’s messages):`]}),_jsx(_components.p,{children:`Regular message:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"content\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Hello! How can I help you today?\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(_components.p,{children:`Message with metadata:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"content\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Hello! How can I help you today?\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"metadata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"customer_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"cust_123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"session_type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"support\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(_components.p,{children:`Metadata-only message (no conversation response triggered):`}),_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"metadata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"internal_call_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"abc-123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"region\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"us-west-2\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(_components.p,{children:`Function call:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"role\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Function Call\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"call_abc123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"get_weather\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"arguments\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"{`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`location`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`New York`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`}\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(_components.p,{children:`Function call result:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"role\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Function Call Result\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"call_abc123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"result\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"{`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`temperature`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`: 72, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`unit`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`fahrenheit`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`}\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(_components.p,{children:`End call (server-initiated session end):`}),_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"content\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Goodbye, have a great day!\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"end_call\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(Info,{children:_jsxs(_components.p,{children:[`To end the conversation from your server, send a message with `,_jsx(_components.code,{children:`\"type\": \"end_call\"`}),`. Cekura will finalize the session on receipt. This is the same message format Cekura uses when it initiates the end — either side can send it.`]})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Messages Cekura sends to your server`}),` (testing agent messages):`]}),_jsx(_components.p,{children:`Regular message:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"content\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"I'd like to book an appointment for tomorrow\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(_components.p,{children:`End call message:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"content\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Thank you, goodbye!\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"end_call\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(Info,{children:_jsxs(_components.p,{children:[`When your server receives a message with `,_jsx(_components.code,{children:`\"type\": \"end_call\"`}),`, the conversation is ending. Your server can handle cleanup and connection closure gracefully.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Conversation Finalization \u0026 Timeouts:`})}),_jsxs(_components.p,{children:[`Either side can end the conversation. Cekura sends `,_jsx(_components.code,{children:`{\"type\": \"end_call\"}`}),` to your server and waits 1 second before closing the connection — your server does not need to close the connection itself. To end the conversation from your side, simply close the WebSocket connection; Cekura treats an unexpected close as the main agent ending the call.`]}),_jsx(_components.p,{children:`Cekura closes the connection after 5 minutes without a content message. It also sends a WebSocket ping every 30 seconds and considers the connection dropped if no pong is received within 10 seconds. Ping/pong are handled automatically at the WebSocket protocol layer by most libraries, so no explicit handling is required in your application code.`})]}),_jsxs(Step,{title:`Expose Server`,children:[_jsx(_components.p,{children:`For local development, use ngrok:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`ngrok`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` http`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 127.0.0.1:8765`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Convert the `,_jsx(_components.code,{children:`https://`}),` URL to `,_jsx(_components.code,{children:`wss://`}),` for WebSocket connection.`]})]}),_jsxs(Step,{title:`Configure in Cekura`,children:[_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.strong,{children:`Agent Settings`}),` → `,_jsx(_components.strong,{children:`Configuration`}),` → `,_jsx(_components.strong,{children:`Connection`}),` → `,_jsx(_components.strong,{children:`Chat Connection`}),` → `,_jsx(_components.strong,{children:`WebSocket`})]}),`\n`,_jsxs(_components.li,{children:[`Enter your `,_jsx(_components.strong,{children:`WebSocket URL`}),` (starting with `,_jsx(_components.code,{children:`wss://`}),`)`]}),`\n`,_jsxs(_components.li,{children:[`Enter `,_jsx(_components.strong,{children:`WebSocket Secret`}),` (Optional) — any string you choose. Cekura will send this value on every connection in the `,_jsx(_components.code,{children:`X-VOCERA-SECRET`}),` header so your server can authenticate the request. Use the `,_jsx(_components.strong,{children:`Update`}),` button to change it later.`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Save Changes`})]}),`\n`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/Agent_Setup_Guide/websocket.png?fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=6da80c4b34615bd317a150d04e3408fb`,alt:`Custom WebSocket configuration`,\"data-og-width\":`633`,width:`633`,\"data-og-height\":`245`,height:`245`,\"data-path\":`images/Agent_Setup_Guide/websocket.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/Agent_Setup_Guide/websocket.png?w=280\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=16b06674cf56bc51b3165578a35971df 280w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/Agent_Setup_Guide/websocket.png?w=560\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=205497b352994057f57aa2c874b0f067 560w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/Agent_Setup_Guide/websocket.png?w=840\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=485b956930eae0defbe1bce729e2a430 840w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/Agent_Setup_Guide/websocket.png?w=1100\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=0efcc1f5d4e27b5f6bfbe74306cb6895 1100w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/Agent_Setup_Guide/websocket.png?w=1650\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=43553054476b0f834059578d91f0e79c 1650w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/Agent_Setup_Guide/websocket.png?w=2500\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=95578313015d80d8e1dd09741ac1a1f9 2500w`}),_jsx(Note,{children:_jsxs(_components.p,{children:[`The Websocket Secret is a value `,_jsx(_components.strong,{children:`you`}),` choose. Keep the same value in your WebSocket server so it can validate the `,_jsx(_components.code,{children:`X-VOCERA-SECRET`}),` header. See the `,_jsx(_components.strong,{children:`Authentication`}),` subsection under `,_jsx(_components.strong,{children:`Set Up WebSocket Server`}),` above for a code example.`]})})]}),_jsxs(Step,{title:`Run Tests`,children:[_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.strong,{children:`Evaluator`}),` page and select scenarios`]}),`\n`,_jsxs(_components.li,{children:[`In the `,_jsx(_components.strong,{children:`Configure Run`}),` dialog, select `,_jsx(_components.strong,{children:`Websocket`}),` under Chat connections and click `,_jsx(_components.strong,{children:`Run`})]}),`\n`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/custom-websocket/configure-run-chat.png?fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=1a4892d6fc88abceb4fa833a7e822922`,alt:`Configure Run dialog with Websocket chat connection selected`,\"data-og-width\":`540`,width:`540`,\"data-og-height\":`620`,height:`620`,\"data-path\":`images/custom-websocket/configure-run-chat.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/custom-websocket/configure-run-chat.png?w=280\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=cfee1bb5edd23ce6410aae9d6626577f 280w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/custom-websocket/configure-run-chat.png?w=560\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=a20411dd03dd9bc0919dddbf7c56e9dc 560w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/custom-websocket/configure-run-chat.png?w=840\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=0dda86fc281bb28d4621d4cc7e843104 840w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/custom-websocket/configure-run-chat.png?w=1100\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=c8f551ece54f3872e7718f608bf6379e 1100w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/custom-websocket/configure-run-chat.png?w=1650\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=4c9ef92c3990edef0bd08994f92ac96a 1650w, https://mintcdn.com/vocera/TwfRd5EQeiW9Y10g/images/custom-websocket/configure-run-chat.png?w=2500\u0026fit=max\u0026auto=format\u0026n=TwfRd5EQeiW9Y10g\u0026q=85\u0026s=83d734a4c925688b1f21bcdc9d2a9aa9 2500w`}),_jsx(Note,{children:`Greyed out connection options have not been configured in Agent Settings yet — set them up there to enable them.`})]})]}),_jsx(Heading,{level:`3`,id:`test-profile-headers`,children:`Test Profile Headers`}),_jsxs(_components.p,{children:[`When test profile is attached on your Evaluator and run it as WebSocket Chat, any fields in the test profile starting with `,_jsx(_components.code,{children:`X-`}),` are automatically sent as HTTP headers to your WebSocket server during connection establishment. This allows your server to receive user context before the conversation begins.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Example Test Profile:`})}),_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Sarah Johnson\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"email\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"sarah.j@email.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"X-Customer-ID\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"CUST-98765\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"X-Account-Tier\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"premium\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Headers Your Server Receives:`})}),_jsx(CodeBlock,{numberOfLines:`7`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`X-Customer-ID: CUST-98765`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`X-Account-Tier: premium`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`X-VOCERA-SECRET: \u003cyour-configured-websocket-secret>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`X-VOCERA-RUN-ID: \u003crun-id>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`X-VOCERA-SCENARIO-ID: \u003cscenario-id>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`X-VOCERA-RESULT-ID: \u003cresult-id>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Python WebSocket Server Example:`})}),_jsx(CodeBlock,{filename:``,numberOfLines:`14`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`14`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` handle_connection`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`websocket`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`path`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`):`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` headers `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` websocket.request_headers`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` customer_id `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` headers.get(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'X-Customer-ID'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` account_tier `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` headers.get(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'X-Account-Tier'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Pre-load customer data before conversation starts`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` customer_data `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` fetch_customer(customer_id)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Customize behavior based on tier`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` account_tier `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`==`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'premium'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` enable_priority_support()`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Now handle the conversation...`})}),`\n`]})})}),_jsx(Info,{children:_jsxs(_components.p,{children:[`Only fields starting with `,_jsx(_components.code,{children:`X-`}),` are sent as headers. Other fields remain available for use in evaluator instructions via template variables like `,_jsx(_components.code,{children:`{{test_profile.name}}`}),`.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Use Cases:`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Pre-load customer/user data before conversation starts`}),`\n`,_jsx(_components.li,{children:`Route to specific handlers based on account tier or customer type`}),`\n`,_jsx(_components.li,{children:`Initialize session context with user preferences`}),`\n`]}),_jsx(Heading,{level:`3`,id:`metadata`,children:`Metadata`}),_jsxs(_components.p,{children:[`Your WebSocket server can attach metadata to a run by including a `,_jsx(_components.code,{children:`metadata`}),` field in any message sent to Cekura. Metadata is useful for passing contextual information like internal IDs, environment details, or customer attributes that you want associated with the test run.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Sending metadata with a message:`})}),_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"content\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Hello! How can I help you today?\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"metadata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"customer_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"cust_123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"session_type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"support\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Sending metadata without a message:`})}),_jsxs(_components.p,{children:[`You can send a metadata-only message (no `,_jsx(_components.code,{children:`role`}),` or `,_jsx(_components.code,{children:`content`}),`) at any point during the conversation. This attaches the metadata to the run without triggering a response from the testing agent:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"metadata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"internal_call_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"abc-123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"region\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"us-west-2\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Behavior:`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Metadata must be a JSON object. Non-object values are ignored.`}),`\n`,_jsxs(_components.li,{children:[`Metadata is merged across messages using `,_jsx(_components.strong,{children:`last-write-wins`}),` — if you send the same key in multiple messages, the latest value is kept.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Python example:`})}),_jsx(CodeBlock,{filename:``,numberOfLines:`23`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`23`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` json`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` handle_connection`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`websocket`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`path`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`):`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Send metadata at the start of the conversation`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` websocket.send(json.dumps({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"metadata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"internal_session_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"sess_abc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"environment\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"staging\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }))`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` message `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`in`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` websocket:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` data `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` json.loads(message)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` response `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` generate_response(data[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"content\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`])`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Send response with additional metadata`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` websocket.send(json.dumps({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"content\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: response,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"metadata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"model_used\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"gpt-4o\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"response_latency_ms\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`342`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }))`})}),`\n`]})})})]}),_jsx(Tab,{title:`API Chat`,id:`api-chat`,children:_jsxs(Steps,{children:[_jsxs(Step,{title:`Start the run`,children:[_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.cekura.ai/test_framework/v1/scenarios/run_scenarios_api_chat/`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'X-CEKURA-API-KEY: \u003capi-key>'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Content-Type: application/json'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{ \"agent_id\": 123, \"scenarios\": [456], \"frequency\": 1, \"timeout\": 1800 }'`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Each `,_jsx(_components.code,{children:`runs[].id`}),` in the response is a conversation to drive. `,_jsx(_components.code,{children:`timeout`}),` is the overall run lifetime in seconds (defaults to your project setting, max 3600).`]})]}),_jsxs(Step,{title:`Wait until the run is ready`,children:[_jsxs(_components.p,{children:[`Poll the run until its `,_jsx(_components.code,{children:`status`}),` is `,_jsx(_components.code,{children:`in_progress`}),` (it opens once capacity is available). Stop if it reaches `,_jsx(_components.code,{children:`completed`}),`, `,_jsx(_components.code,{children:`failed`}),`, `,_jsx(_components.code,{children:`timeout`}),` or `,_jsx(_components.code,{children:`cancelled`}),` first — the run ended before it opened, so there is nothing to drive:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` GET`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.cekura.ai/test_framework/v1/runs/`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`run_i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'X-CEKURA-API-KEY: \u003capi-key>'`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Then fetch the opening as turn 0 — `,_jsx(_components.code,{children:`GET /runs/\u003crun_id>/chat/0/`}),` returns the scenario’s opening line in `,_jsx(_components.code,{children:`message`}),` (the simulated user speaks first), or `,_jsx(_components.code,{children:`null`}),` when you speak first.`]})]}),_jsxs(Step,{title:`Submit a turn`,children:[_jsxs(_components.p,{children:[`Send your agent’s latest message. The reply is generated in the background, so this returns a `,_jsx(_components.code,{children:`turn_id`}),` to poll.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.cekura.ai/test_framework/v1/runs/`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`run_i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/chat/`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'X-CEKURA-API-KEY: \u003capi-key>'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Content-Type: application/json'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{ \"content\": \"Hello! How can I help you today?\" }'`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{ `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"run_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`987`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"result_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`654`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"turn_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"generating\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})]}),`\n`]})})}),_jsx(Info,{children:_jsxs(_components.p,{children:[`Submitting a new turn while the previous one is still generating interrupts it — the older turn becomes `,_jsx(_components.code,{children:`dropped`}),` but its message is kept, and the new reply answers all messages received since the last reply.`]})})]}),_jsxs(Step,{title:`Poll for the reply`,children:[_jsxs(_components.p,{children:[`Poll the turn until `,_jsx(_components.code,{children:`status`}),` is `,_jsx(_components.code,{children:`ready`}),`; the reply is in `,_jsx(_components.code,{children:`message`}),`. Feed it to your agent and submit the next turn. Repeat until `,_jsx(_components.code,{children:`ended`}),` is `,_jsx(_components.code,{children:`true`}),`.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` GET`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.cekura.ai/test_framework/v1/runs/`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`run_i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/chat/`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`turn_i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'X-CEKURA-API-KEY: \u003capi-key>'`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{ `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"run_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`987`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"result_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`654`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"turn_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ready\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Hi! I'd like to check the status of my order.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"ended\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"ended_reason\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Statuses: `,_jsx(_components.code,{children:`generating`}),` (keep polling), `,_jsx(_components.code,{children:`ready`}),` (reply in `,_jsx(_components.code,{children:`message`}),`), `,_jsx(_components.code,{children:`dropped`}),` (interrupted by a newer turn — its message is kept and the newer reply answers it), `,_jsx(_components.code,{children:`error`}),` (submit again). Turns stay pollable after the run finishes.`]})]}),_jsxs(Step,{title:`Finish (optional)`,children:[_jsxs(_components.p,{children:[`End explicitly to score it right away; otherwise it finalizes when the simulated user ends the chat or `,_jsx(_components.code,{children:`timeout`}),` elapses.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.cekura.ai/test_framework/v1/runs/`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`run_i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/end-chat/`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'X-CEKURA-API-KEY: \u003capi-key>'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Content-Type: application/json'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{ \"reason\": \"client-finished\" }'`})]}),`\n`]})})}),_jsx(_components.p,{children:`Results appear in the dashboard with the full transcript and metrics, like any other run.`})]})]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`trigger-simulations-using-the-api`,children:`Trigger Simulations Using the API`}),`\n`,_jsx(_components.p,{children:`Trigger chat simulations programmatically for any supported provider.`}),`\n`,_jsx(_components.p,{children:`For complete API documentation including authentication, request parameters, response format, and code examples in multiple languages, see:`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:_jsx(_components.a,{href:`/api-reference/test_framework/run-evaluator-text`,children:`Run Evaluator Text API Reference`})})}),`\n`,_jsx(Heading,{level:`3`,id:`quick-example`,children:`Quick Example`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.cekura.ai/test_framework/v1/scenarios/run_scenarios_text/`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'X-CEKURA-API-KEY: \u003capi-key>'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Content-Type: application/json'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"agent_id\": 123,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"scenarios\": [456, 789],`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"frequency\": 1,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"name\": \"Chat Test Run\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(AccordionGroup,{children:[_jsxs(Accordion,{title:`Error: \"Chat provider not configured\"`,id:`error-chat-provider-not-configured`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Solution:`})}),_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Go to Agent Settings → Chatbot Integrations`}),`\n`,_jsx(_components.li,{children:`Select a provider (ElevenLabs, Retell, Vapi, or Custom)`}),`\n`,_jsx(_components.li,{children:`Enter required configuration (Assistant ID or WebSocket URL)`}),`\n`,_jsx(_components.li,{children:`Save and retry`}),`\n`]})]}),_jsxs(Accordion,{title:`Tests timing out`,id:`tests-timing-out`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Common causes:`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Incorrect Assistant/Agent ID`}),`\n`,_jsx(_components.li,{children:`Custom WebSocket server not accessible`}),`\n`,_jsx(_components.li,{children:`Agent disabled or unpublished`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Debug steps:`})}),_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Verify your ID is correct`}),`\n`,_jsx(_components.li,{children:`For Custom: check server is running and URL is accessible`}),`\n`,_jsx(_components.li,{children:`Test provider’s API directly`}),`\n`,_jsx(_components.li,{children:`Check Cekura dashboard for error details`}),`\n`]})]}),_jsxs(Accordion,{title:`Cannot find \"Run as Text\" button`,id:`cannot-find-run-as-text-button`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Checklist:`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`✅ Chat provider configured in Agent Settings`}),`\n`,_jsx(_components.li,{children:`✅ On Evaluator page (not Calls/Runs)`}),`\n`,_jsx(_components.li,{children:`✅ At least one scenario selected`}),`\n`]}),_jsx(_components.p,{children:`Button appears next to “Run Tests” in Evaluator header. Refresh page if not visible.`})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`tips`,children:`Tips`}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Use chat tests for rapid iteration and CI/CD. Run voice tests on critical scenarios before production deployment.`})}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Tag scenarios as “critical” or “smoke-test” to run targeted test suites in your pipeline.`})}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next Steps`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/documentation/guides/testing-agents/suggested-testing-approach`,children:`Suggested Testing Approach`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/documentation/guides/github-actions-ci-cd`,children:`GitHub Actions CI/CD`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/documentation/guides/cronjob`,children:`CronJobs`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/documentation/key-concepts/metrics/custom-metrics`,children:`Custom Metrics`})}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Need help? Contact `,_jsx(_components.a,{href:`mailto:support@cekura.ai`,children:`support@cekura.ai`})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{CopyPageButton,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":"Chat-Based Testing","sidebarTitle":"Chat Testing","icon":"message-lines","iconType":"regular","description":"Test your voice agents faster and cheaper using text-based simulation","href":"/documentation/integrations/chat-testing"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[153,5217,"null;function _creat"]]},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"Supported Providers","slug":"supported-providers","depth":2,"children":[{"title":"Test Profile Headers","slug":"test-profile-headers","depth":3,"children":[],"tabId":"custom-websocket"},{"title":"Metadata","slug":"metadata","depth":3,"children":[],"tabId":"custom-websocket"}]},{"title":"Trigger Simulations Using the API","slug":"trigger-simulations-using-the-api","depth":2,"children":[{"title":"Quick Example","slug":"quick-example","depth":3,"children":[]}]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]},{"title":"Tips","slug":"tips","depth":2,"children":[]},{"title":"Next Steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/vocera/b06c8fbedf65997d/old-api-docs.js"],"subdomain":"vocera","siteName":"Cekura","title":"Chat-Based Testing - Cekura","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-27T13:29:54.542Z","originalFileLocation":"documentation/integrations/chat-testing.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=\"Test your voice agents faster and cheaper using text-based simulation\">\u003cmeta data-mint-head name=\"application-name\" content=\"Cekura\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/vocera/YLwQi89HOY9MYteg/_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/vocera/YLwQi89HOY9MYteg/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/vocera/YLwQi89HOY9MYteg/_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/vocera/YLwQi89HOY9MYteg/_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/vocera/YLwQi89HOY9MYteg/_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/vocera/YLwQi89HOY9MYteg/_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/vocera/YLwQi89HOY9MYteg/_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/vocera/YLwQi89HOY9MYteg/_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/vocera/YLwQi89HOY9MYteg/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Chat-Based Testing - Cekura\">\u003cmeta data-mint-head property=\"og:description\" content=\"Test your voice agents faster and cheaper using text-based simulation\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Cekura\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.cekura.ai/documentation/integrations/chat-testing\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://vocera.mintlify.app/_mintlify/api/og/v2?division=Integrations\u0026amp;title=Chat-Based+Testing\u0026amp;description=Test+your+voice+agents+faster+and+cheaper+using+text-based+simulation\u0026amp;theme=799cf4f496cc6ad08a57f778\u0026amp;signature=57a5613d18de73b82bb83f5279a09a4352c74d033bd310c8f5cdb4c6ccd05075\">\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=\"Chat-Based Testing - Cekura\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Test your voice agents faster and cheaper using text-based simulation\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://vocera.mintlify.app/_mintlify/api/og/v2?division=Integrations\u0026amp;title=Chat-Based+Testing\u0026amp;description=Test+your+voice+agents+faster+and+cheaper+using+text-based+simulation\u0026amp;theme=799cf4f496cc6ad08a57f778\u0026amp;signature=57a5613d18de73b82bb83f5279a09a4352c74d033bd310c8f5cdb4c6ccd05075\">\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/vocera/YLwQi89HOY9MYteg/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Cekura\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#8184FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.cekura.ai/documentation/integrations/chat-testing\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/documentation/integrations/chat-testing.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.cekura.ai/#organization\",\"name\":\"Cekura\",\"url\":\"https://docs.cekura.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/vocera/NnWFOccGgHKr48PP/logo/logo-dark.svg?fit=max\u0026auto=format\u0026n=NnWFOccGgHKr48PP\u0026q=85\u0026s=fe825439de9afd1d121723398224f0fe\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.cekura.ai#website\",\"name\":\"Cekura\",\"url\":\"https://docs.cekura.ai\",\"publisher\":{\"@id\":\"https://docs.cekura.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.cekura.ai/documentation/integrations/chat-testing#webpage\",\"url\":\"https://docs.cekura.ai/documentation/integrations/chat-testing\",\"name\":\"Chat-Based Testing\",\"description\":\"Test your voice agents faster and cheaper using text-based simulation\",\"dateModified\":\"2026-10-27T13:29:54.542Z\",\"isPartOf\":{\"@id\":\"https://docs.cekura.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.cekura.ai/documentation/integrations/chat-testing#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.cekura.ai/documentation/integrations/chat-testing#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Integrations\",\"item\":\"https://docs.cekura.ai/documentation/integrations/retell/testing\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Chat-Based Testing\",\"item\":\"https://docs.cekura.ai/documentation/integrations/chat-testing\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.cekura.ai/documentation/integrations/chat-testing#article\",\"headline\":\"Chat-Based Testing\",\"name\":\"Chat-Based Testing\",\"description\":\"Test your voice agents faster and cheaper using text-based simulation\",\"url\":\"https://docs.cekura.ai/documentation/integrations/chat-testing\",\"mainEntityOfPage\":{\"@id\":\"https://docs.cekura.ai/documentation/integrations/chat-testing#webpage\"},\"dateModified\":\"2026-10-27T13:29:54.542Z\",\"publisher\":{\"@id\":\"https://docs.cekura.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.cekura.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Cekura\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Cekura","nav":{"global":null,"tabs":[{"tab":"Documentation","groups":[{"group":"Get Started","pages":[{"title":"Introduction","sidebarTitle":"Introduction","icon":"book-open","iconType":"regular","href":"/documentation/introduction"},{"title":"Video Tutorials","sidebarTitle":"Video Tutorials","icon":"video","iconType":"regular","href":"/documentation/video_tutorials"}]},{"group":"Key Concepts","pages":[{"group":"Agents","icon":"robot","pages":[{"title":"Overview","sidebarTitle":"Agent Overview","icon":"robot","iconType":"regular","href":"/documentation/key-concepts/agents/overview"},{"title":"Agent Setup Guide","sidebarTitle":"Setup Guide","icon":"file-lines","iconType":"regular","href":"/documentation/key-concepts/agents/Agent_Setup_Guide"}]},{"group":"Evaluators","icon":"chart-candlestick","pages":[{"title":"Overview","sidebarTitle":"Evaluator Overview","icon":"flask-vial","iconType":"regular","href":"/documentation/key-concepts/evaluators/overview"},{"title":"Structured Tests","sidebarTitle":"Structured Tests","icon":"code-branch","iconType":"regular","href":"/documentation/key-concepts/evaluators/conditional-actions"},{"title":"Personality","sidebarTitle":"Personality","icon":"user-gear","iconType":"regular","href":"/documentation/key-concepts/evaluators/personality"},{"title":"Test Profile","sidebarTitle":"Test Profile","icon":"id-card","iconType":"regular","href":"/documentation/key-concepts/evaluators/test-profile"},{"title":"Mock Tools","sidebarTitle":"Mock Tools","icon":"wrench","iconType":"regular","href":"/documentation/key-concepts/evaluators/mock-tools"},{"title":"Dynamic Variables","sidebarTitle":"Dynamic Variables","icon":"code","iconType":"regular","href":"/documentation/key-concepts/evaluators/dynamic-variables"},{"group":"Phone Numbers","icon":"phone","pages":[{"title":"Import Twilio Phone Numbers","sidebarTitle":"Twilio","icon":"phone","iconType":"regular","href":"/documentation/key-concepts/phone-numbers/twilio"},{"title":"Import Plivo Phone Numbers","sidebarTitle":"Plivo","icon":"phone","iconType":"regular","href":"/documentation/key-concepts/phone-numbers/plivo"}]}]},{"group":"Metrics","icon":"database","pages":[{"title":"Overview","sidebarTitle":"Metrics Overview","icon":"chart-line","iconType":"solid","href":"/documentation/key-concepts/metrics/overview"},{"title":"Pre-Defined Metrics","sidebarTitle":"Pre-Defined Metrics","icon":"list-check","iconType":"solid","href":"/documentation/key-concepts/metrics/pre-defined-metrics"},{"title":"Output Types of Metric","sidebarTitle":"Output Types of Metric","icon":"sliders","iconType":"regular","href":"/documentation/key-concepts/metrics/output-types-of-metric"},{"title":"LLM Judge Metric","sidebarTitle":"LLM Judge Metric","icon":"brain","iconType":"solid","href":"/documentation/key-concepts/metrics/llm-judge-metric"},{"title":"Build a Metric with AI","sidebarTitle":"Build with AI","icon":"wand-magic-sparkles","iconType":"solid","href":"/documentation/key-concepts/metrics/build-with-ai"},{"title":"Metric Variables","sidebarTitle":"Available Variables","icon":"brackets-curly","iconType":"solid","href":"/documentation/key-concepts/metrics/metric-variables"},{"title":"Python Metric","sidebarTitle":"Python Metric","icon":"code","iconType":"solid","href":"/documentation/key-concepts/metrics/python-metric"},{"title":"Rubric Configuration","sidebarTitle":"Rubric Configuration","icon":"clipboard-check","iconType":"regular","href":"/documentation/key-concepts/metrics/rubric"},{"title":"Metric Sampling","sidebarTitle":"Metric Sampling","icon":"percent","iconType":"solid","href":"/documentation/key-concepts/metrics/sampling"}]}]},{"group":"Guides","pages":[{"title":"Organizing Projects, Agents \u0026 Evaluators","sidebarTitle":"Organizing Your Workspace","icon":"folder-tree","iconType":"regular","href":"/documentation/guides/organizing-projects"},{"group":"Testing","icon":"flask","pages":[{"title":"Overview","sidebarTitle":"Testing Overview","icon":"vial","iconType":"regular","href":"/documentation/guides/testing-agents/overview"},{"title":"Infrastructure Suite","sidebarTitle":"Infrastructure Suite","icon":"server","iconType":"regular","href":"/documentation/guides/testing-agents/infrastructure-suite"},{"title":"Suggested Testing Approach","sidebarTitle":"Testing Approach","icon":"clipboard-list","iconType":"regular","href":"/documentation/guides/testing-agents/suggested-testing-approach"},{"title":"Testing Knowledge Base Accuracy","sidebarTitle":"Knowledge Base Testing","icon":"book-open","iconType":"regular","href":"/documentation/guides/testing-agents/knowledge-base-testing"},{"title":"Testing Inbound Agents","sidebarTitle":"Testing Inbound Agents","icon":"phone-arrow-down-left","iconType":"regular","href":"/documentation/guides/testing-agents/inbound-auto-call"},{"title":"Testing Outbound Calls","sidebarTitle":"Outbound Calls","icon":"phone-arrow-up-right","iconType":"regular","href":"/documentation/guides/testing-agents/outbound-evaluators"},{"title":"Auto Outbound Calls","sidebarTitle":"Auto Outbound Calls","icon":"phone-volume","iconType":"regular","href":"/documentation/guides/testing-agents/outbound-auto-call"},{"title":"Load Testing","sidebarTitle":"Load Testing","icon":"gauge-high","iconType":"regular","href":"/documentation/guides/testing-agents/load-testing"},{"title":"A/B Testing","sidebarTitle":"A/B Testing","icon":"code-compare","iconType":"regular","href":"/documentation/guides/testing-agents/ab-testing"},{"title":"Multilingual Testing","sidebarTitle":"Multilingual Testing","icon":"language","iconType":"regular","href":"/documentation/guides/testing-agents/multilingual-testing"},{"title":"Accent Testing","sidebarTitle":"Accent Testing","icon":"microphone","iconType":"regular","href":"/documentation/guides/testing-agents/accent-testing"},{"title":"Tool Call Testing","sidebarTitle":"Tool Call Testing","icon":"wrench","iconType":"regular","href":"/documentation/guides/testing-agents/tool-call-testing"},{"title":"SMS During Call","sidebarTitle":"SMS During Call","icon":"message","iconType":"regular","href":"/documentation/guides/testing-agents/sms-during-call"},{"title":"WhatsApp Testing","sidebarTitle":"WhatsApp Testing","icon":"whatsapp","iconType":"brands","href":"/documentation/guides/testing-agents/whatsapp-testing"},{"title":"Email Testing","sidebarTitle":"Email Testing","icon":"envelope","href":"/documentation/guides/testing-agents/email-testing"},{"title":"DTMF Testing","sidebarTitle":"DTMF Testing","icon":"phone-office","iconType":"regular","href":"/documentation/guides/testing-agents/dtmf-testing"},{"title":"Red Teaming","sidebarTitle":"Red Teaming","icon":"shield-halved","iconType":"regular","href":"/documentation/red-teaming/multi-turn"},{"title":"Tests as Code","sidebarTitle":"Tests as Code","icon":"file-code","iconType":"regular","href":"/documentation/guides/testing-agents/tests-as-code"},{"title":"Result Statuses and Gating","sidebarTitle":"Result Statuses and Gating","icon":"traffic-light","href":"/documentation/guides/testing-agents/result-statuses"},{"title":"GitHub Actions Tutorial","sidebarTitle":"GitHub Actions Tutorial","icon":"github","iconType":"duotone","href":"/documentation/guides/github-actions-ci-cd"},{"title":"GitLab CI/CD Tutorial","sidebarTitle":"GitLab CI/CD Tutorial","icon":"gitlab","iconType":"brands","href":"/documentation/guides/gitlab-ci-cd"},{"title":"Bitbucket Pipelines Tutorial","sidebarTitle":"Bitbucket Pipelines Tutorial","icon":"bitbucket","iconType":"brands","href":"/documentation/guides/bitbucket-pipelines-ci-cd"},{"title":"Cron Job","sidebarTitle":"Cron Job","icon":"clock","iconType":"regular","href":"/documentation/guides/cronjob"}]},{"group":"Observability","icon":"square-poll-vertical","pages":[{"title":"Custom Observability","sidebarTitle":"Custom Observability","icon":"eye","iconType":"regular","href":"/documentation/guides/observability/custom"},{"title":"Dynamic Agent Description","sidebarTitle":"Dynamic Description","icon":"wand-magic-sparkles","iconType":"regular","href":"/documentation/guides/observability/dynamic-prompting"},{"title":"PII Redaction","sidebarTitle":"PII Redaction","icon":"shield-halved","iconType":"regular","href":"/documentation/guides/observability/pii-redaction"},{"title":"Client-Side Redaction","sidebarTitle":"Client-Side Redaction","icon":"eraser","iconType":"regular","href":"/documentation/guides/observability/client-side-redaction"},{"title":"Failure-Mode Insights","sidebarTitle":"Insights","icon":"lightbulb","iconType":"regular","href":"/documentation/guides/observability/insights"},{"title":"Deep Research","sidebarTitle":"Deep Research","icon":"microscope","iconType":"regular","href":"/documentation/guides/observability/deep-research"},{"title":"OpenTelemetry Traces","sidebarTitle":"OpenTelemetry Traces","icon":"chart-waterfall","iconType":"regular","href":"/documentation/guides/observability/tracing"},{"title":"Alerts","sidebarTitle":"Alerts","icon":"bell","iconType":"regular","href":"/documentation/guides/observability/alerts"},{"title":"Dashboards","sidebarTitle":"Dashboards","icon":"chart-mixed","iconType":"regular","href":"/documentation/guides/dashboards"}]},{"group":"Metrics","icon":"chart-line","pages":[{"title":"Building High-Fidelity Metrics","sidebarTitle":"Creating Good Metrics","icon":"chart-line","iconType":"regular","href":"/documentation/guides/creating-good-metric"},{"title":"Metric Lab","sidebarTitle":"Metric Lab","icon":"flask","iconType":"regular","href":"/documentation/guides/metric-lab"},{"title":"Schedule Metric Optimiser Runs","sidebarTitle":"Auto-optimise Metrics","icon":"wand-magic-sparkles","iconType":"regular","href":"/documentation/guides/auto-optimise-metrics-schedule"}]},{"group":"Optimize Agent","icon":"wand-magic-sparkles","pages":[{"title":"Optimize Agent","sidebarTitle":"Optimize Agent","icon":"wand-magic-sparkles","iconType":"regular","href":"/documentation/guides/optimize-agent"}]},{"group":"Cekura for Agents","icon":"robot","pages":[{"title":"Cekura Agent","sidebarTitle":"Cekura Agent","icon":"sparkles","iconType":"regular","href":"/documentation/guides/cekura-agent"},{"title":"Agent Integration","sidebarTitle":"Agent Integration","icon":"robot","iconType":"solid","href":"/documentation/guides/agent-integration"},{"title":"AGENTS.md Template","sidebarTitle":"AGENTS.md Template","icon":"file-code","iconType":"solid","href":"/documentation/guides/agents-md-template"}]}]},{"group":"Integrations","pages":[{"group":"Retell","icon":"/logo/retell_icon1.svg","pages":[{"title":"Testing","sidebarTitle":"Retell Testing","icon":"flask-vial","iconType":"regular","href":"/documentation/integrations/retell/testing"},{"title":"Observability","sidebarTitle":"Retell Observability","icon":"chart-pie","iconType":"regular","href":"/documentation/integrations/retell/observability"}]},{"group":"VAPI","icon":"/logo/vapi_icon1.svg","pages":[{"title":"Testing","sidebarTitle":"VAPI Testing","icon":"vial-circle-check","iconType":"regular","href":"/documentation/integrations/vapi/testing"},{"title":"Observability","sidebarTitle":"VAPI Observability","icon":"chart-network","iconType":"regular","href":"/documentation/integrations/vapi/observability"}]},{"group":"ElevenLabs","icon":"/logo/elevenlabs_icon1.svg","pages":[{"title":"ElevenLabs","sidebarTitle":"ElevenLabs Testing","icon":"robot","iconType":"regular","href":"/documentation/integrations/elevenlabs/testing"},{"title":"Observability","sidebarTitle":"ElevenLabs Observability","icon":"chart-column","iconType":"regular","href":"/documentation/integrations/elevenlabs/observability"}]},{"title":"Websocket Simulations","sidebarTitle":"Websocket Simulations","icon":"waveform-lines","iconType":"regular","href":"/documentation/integrations/websocket-chirp"},{"title":"Agora Simulations","sidebarTitle":"Agora","icon":"tower-broadcast","iconType":"regular","href":"/documentation/integrations/agora"},{"group":"LiveKit","icon":"/logo/livekit_icon1.svg","pages":[{"title":"LiveKit (Automated)","sidebarTitle":"LiveKit Automated","icon":"robot","iconType":"regular","href":"/documentation/integrations/livekit/testing"},{"title":"LiveKit Tracing","sidebarTitle":"LiveKit Tracing","icon":"radar","iconType":"regular","href":"/documentation/integrations/livekit/tracing"},{"title":"Agent Dispatch Reliability","sidebarTitle":"Dispatch Reliability","icon":"shield-check","iconType":"regular","href":"/documentation/integrations/livekit/reliability"},{"title":"LiveKit (Manual)","sidebarTitle":"LiveKit Manual","icon":"hand-pointer","iconType":"regular","href":"/documentation/integrations/livekit-integration"}]},{"group":"Pipecat","icon":"/logo/pipecat_icon1.svg","pages":[{"title":"Pipecat Automated Testing","sidebarTitle":"Pipecat Automated","icon":"robot","iconType":"regular","href":"/documentation/integrations/pipecat/automated"},{"title":"Pipecat Manual Testing","sidebarTitle":"Pipecat Manual","icon":"hand-pointer","iconType":"regular","href":"/documentation/integrations/pipecat/manual"},{"title":"Pipecat Tracing","sidebarTitle":"Pipecat Tracing","icon":"radar","iconType":"regular","href":"/documentation/integrations/pipecat/tracing"}]},{"title":"Bland AI Integration","sidebarTitle":"Bland AI","icon":"https://mintlify.s3.us-west-1.amazonaws.com/vocera/logo/bland_icon1.svg","href":"/documentation/integrations/bland"},{"title":"Genesys Cloud Integration","sidebarTitle":"Genesys","icon":"https://mintlify.s3.us-west-1.amazonaws.com/vocera/logo/genesys_icon1.svg","href":"/documentation/integrations/genesys"},{"title":"Kore.ai Integration","sidebarTitle":"Kore.ai","icon":"https://mintlify.s3.us-west-1.amazonaws.com/vocera/logo/koreai_icon1.svg","href":"/documentation/integrations/koreai"},{"title":"Cisco Webex Integration","sidebarTitle":"Cisco Webex","icon":"https://mintlify.s3.us-west-1.amazonaws.com/vocera/images/providers/cisco.svg","href":"/documentation/integrations/cisco-webex"},{"title":"Agentforce Integration","sidebarTitle":"Agentforce","icon":"https://mintlify.s3.us-west-1.amazonaws.com/vocera/images/providers/agentforce.svg","href":"/documentation/integrations/agentforce"},{"title":"Amazon Connect Integration","sidebarTitle":"Amazon Connect","icon":"https://mintlify.s3.us-west-1.amazonaws.com/vocera/images/providers/amazon-connect.svg","href":"/documentation/integrations/amazon-connect"},{"title":"Gemini Enterprise CX Integration","sidebarTitle":"Gemini Enterprise CX","icon":"https://mintlify.s3.us-west-1.amazonaws.com/vocera/logo/gemini_cx_icon1.svg","href":"/documentation/integrations/gemini-cx"},{"title":"AssemblyAI Integration","sidebarTitle":"AssemblyAI","icon":"https://mintlify.s3.us-west-1.amazonaws.com/vocera/images/providers/assemblyai.svg","href":"/documentation/integrations/assemblyai"},{"title":"Smallest AI Integration","sidebarTitle":"Smallest AI","icon":"https://mintlify.s3.us-west-1.amazonaws.com/vocera/images/providers/smallest.svg","href":"/documentation/integrations/smallest"},{"title":"SIP Calls","sidebarTitle":"SIP Calls","icon":"phone-volume","iconType":"regular","href":"/documentation/integrations/sip-integration"},{"title":"Custom Integration","sidebarTitle":"Custom Integration","icon":"plug","iconType":"regular","description":"Learn how to send call transcripts from your own backend system to Cekura using webhooks for simulation testing and observability.","href":"/documentation/integrations/custom-integration"},{"title":"Chat-Based Testing","sidebarTitle":"Chat Testing","icon":"message-lines","iconType":"regular","href":"/documentation/integrations/chat-testing"}]},{"group":"Advanced","pages":[{"title":"Enterprise Setup","sidebarTitle":"Enterprise Setup","icon":"building","iconType":"regular","description":"Role-Based Access Control and API key management for enterprise deployments","href":"/documentation/advanced/enterprise-setup"},{"title":"Two-Factor Authentication","sidebarTitle":"Two-Factor Authentication","icon":"shield-check","iconType":"regular","href":"/documentation/advanced/two-factor-authentication"},{"title":"IP Whitelisting","sidebarTitle":"IP Whitelisting","icon":"shield-check","iconType":"regular","href":"/documentation/advanced/ip-whitelisting"},{"title":"Low Credits Alerts","sidebarTitle":"Low Credits Alerts","icon":"bell","iconType":"regular","href":"/documentation/advanced/credit-alerts"},{"title":"Transcript Format","sidebarTitle":"Transcript Format","icon":"file-code","iconType":"regular","href":"/documentation/advanced/transcript-format"},{"title":"Webhook Format","icon":"webhook","iconType":"regular","href":"/documentation/advanced/webhook-format"},{"title":"Creating Custom Personalities","icon":"user-cog","iconType":"regular","href":"/documentation/advanced/creating-custom-personalities"},{"title":"Knowledge Base Connectors","icon":"database","iconType":"regular","href":"/documentation/advanced/knowledge-base-connectors"},{"title":"IVR and Voicemail","sidebarTitle":"IVR \u0026 Voicemail","icon":"phone-volume","iconType":"regular","href":"/documentation/advanced/ivr-voicemail"},{"title":"Call End Reasons","sidebarTitle":"Call End Reasons","icon":"phone-xmark","iconType":"regular","href":"/documentation/advanced/call-end-reasons"},{"title":"Prompting Examples","sidebarTitle":"Prompting Examples","icon":"message-code","iconType":"regular","href":"/documentation/guides/prompting"},{"group":"Dashboard Embedding","icon":"diagram-project","pages":[{"title":"Overview Embedding (Deprecated)","sidebarTitle":"Overview Embedding","icon":"window","iconType":"regular","href":"/documentation/embed/overview-embedding"},{"title":"Calls Embedding (Deprecated)","sidebarTitle":"Calls Embedding","icon":"phone-volume","iconType":"regular","href":"/documentation/embed/calls-embedding"},{"title":"Result Embedding (Deprecated)","sidebarTitle":"Result Embedding","icon":"chart-simple","iconType":"regular","href":"/documentation/embed/result-embedding"},{"group":"Generate Token","icon":"package-plus","pages":[{"title":"Generating Embed Token (Deprecated)","sidebarTitle":"Generate Token","icon":"key","iconType":"regular","href":"/documentation/embed/generate-token"},{"title":"Refreshing Expired Token (Deprecated)","sidebarTitle":"Refresh Token","icon":"rotate","iconType":"regular","href":"/documentation/embed/refreshing-expired-token"}]}]},{"title":"Changelog","sidebarTitle":"Changelog","icon":"clock-rotate-left","url":"https://www.cekura.ai/changelog","href":"/documentation/advanced/changelog"},{"title":null,"href":"/documentation/FAQ"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/observability/send-calls"}]},{"tab":"MCP \u0026 Skills","pages":[{"title":"MCP \u0026 Skills","href":"/mcp/overview"}]},{"tab":"CLI \u0026 SDK","pages":[{"title":"CLI \u0026 SDK","href":"/cli-sdk/overview"}]}]},"basePath":"","title":"Chat-Based Testing - Cekura","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-BG6oD64b.js","lightbox-handle-r17bVUz3.js"]}