{"componentChunkName":"component---src-templates-tree-layout-js","path":"/tutorials/Channel_Integration_Tutorials/BYOVoiceAdapter/","result":{"data":{"content":{"frontmatter":{"title":"Bring Your Own Voice Adapter","description":"Out-of-the-box, the current virtual agent oftphone supports Twilio as a voice provider. Under the Bring Your Own Resource model, the partner can choose to bring their own voice provider. This document maps out instructions for the parther to write their own adapaters for interactions between the new voice provider and the virtual agent phone, similar to what Expedia has for Twilio, along with the Twilio Client Wrapper library.","show_cards":null},"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/BYOVoiceAdapter/","current":"BYOVoiceAdapter","parent":"Channel_Integration_Tutorials","root":"tutorials"},"html":"<h2 id=\"write-your-own-voice-adapter\" style=\"position:relative;\"><a href=\"#write-your-own-voice-adapter\" aria-label=\"write your own voice adapter permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Write Your Own Voice Adapter</h2>\n<p>Partner need to execute following steps to integrate their voice adapter with platform - </p>\n<h3 id=\"1-create-voice-provider-resource\" style=\"position:relative;\"><a href=\"#1-create-voice-provider-resource\" aria-label=\"1 create voice provider resource permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. Create Voice Provider Resource</h3>\n<p>First, register voice provider with voice adapter urls by creating an instance of voice provider resource under CCaaS Partner Id</p>\n<p><strong>Request:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\">POST /partners/{{CCaaS-Partner-ID}}/voiceproviders\n<span class=\"token header-name keyword\">Host:</span> {{BASE_URL}}\n<span class=\"token header-name keyword\">Content-Type:</span> application/json\n<span class=\"token header-name keyword\">Authorization:</span> Basic {{Client-ID}}:{{Secret}}\n<span class=\"token header-name keyword\">x-resource-template-version:</span> {{template-version}}\n\n{\n  \"name\": \"unique name of voice provider\",\n  \"accept_call_url\": \"adapter url to accept call from softphone\",\n  \"end_call_url\": \"adapter url to end call from softphone\",\n  \"hold_call_url\": \"adapter url to hold call from softphone\",\n  \"resume_call_url\": \"adapter url to resume call from softphone\",\n  \"mute_call_url\": \"adapter url to mute call from softphone\",\n  \"unmute_call_url\": \"adapter url to unmute call from softphone\",\n  \"access_token_url\": \"adapter url to generate token for voice provider client\"\n}</code></pre></div>\n<p>The HTTP response should provide you the id of the new voice provider resource created.</p>\n<p><strong>Response:</strong> </p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"394e3814-7562-4f25-a854-2b74e91ad15a\"</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h3 id=\"2-associate-voice-provider-with-phone-number\" style=\"position:relative;\"><a href=\"#2-associate-voice-provider-with-phone-number\" aria-label=\"2 associate voice provider with phone number permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. Associate Voice Provider with Phone Number</h3>\n<p>Next, associate existing Toll Free Number (TFN) with voice provider resource created above. This is required to identify voice adapter url handling the calls received by a TFN.   </p>\n<p><strong>Request:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\">POST /partners/{{CCaaS-Partner-ID}}/phonenumbers/{{Phone-Number-ID}}\n<span class=\"token header-name keyword\">Host:</span> {{BASE_URL}}\n<span class=\"token header-name keyword\">Content-Type:</span> application/json\n<span class=\"token header-name keyword\">Authorization:</span> Basic {{Client-ID}}:{{Secret}}\n<span class=\"token header-name keyword\">x-resource-template-version:</span> {{template-version}}\n\n{\n  \"voice_provider_id_resource_uri\": \"/partners/{{CCaaS-Partner-ID}}/voiceproviders/{{Voice-Provider-ID}}\"\n}</code></pre></div>\n<h3 id=\"3-create-channel-resource\" style=\"position:relative;\"><a href=\"#3-create-channel-resource\" aria-label=\"3 create channel resource permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. Create Channel Resource</h3>\n<p>A channel is an application client through which end-users can send and receive messages with other Participants over a Conversation.</p>\n<p>Learn to create your custom channel to process Conversation Events in the tutorial describing <a href=\"https://cp.expedia.com/docs/tutorials/conversation_api/SettingUpChannels/\">how to set up a Channel</a>.</p>\n<h3 id=\"4-webhook\" style=\"position:relative;\"><a href=\"#4-webhook\" aria-label=\"4 webhook permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. Webhook</h3>\n<p>A Conversation Event is a callback to a webhook endpoint on voice adapter notifying that an action has occurred. Events occur when a Participant has joined or left a Conversation; a Participant sent a Conversation Message; a Participant closed a Conversation, etc.</p>\n<p>To learn more about Conversation Events, see the <a href=\"https://cp.expedia.com/docs/api-references/04-conversation-protocol/#tag/Conversation-Events\">Conversation webhook events</a></p>\n<h3 id=\"4-apis\" style=\"position:relative;\"><a href=\"#4-apis\" aria-label=\"4 apis permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. APIs</h3>\n<p>Following APIs of voice adapter are consume by softphone for different purposes like accept inbound call, hold participant, remove participant, etc. </p>\n<h4 id=\"1-accept-call\" style=\"position:relative;\"><a href=\"#1-accept-call\" aria-label=\"1 accept call permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. Accept Call</h4>\n<p>Softphone calls this api when agent receives a request to accept inbound call. Once operation is successful, adapter is expected to publish kafka event PARTICIPANT<em>CALL</em>INITIATED for agent participant.</p>\n<p><strong>Request:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\"><span class=\"token header-name keyword\">Method:</span> POST\n<span class=\"token header-name keyword\">Content-Type:</span> application/json<span class=\"token application-json\">\n\n<span class=\"token punctuation\">{</span>\n  <span class=\"token string\">\"conversationId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"5a974dd7-475a-41c0-a027-bfdf09627b13\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token string\">\"author\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token string\">\"userName\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"testAgent\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"participantId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"4a70a876-bf90-4360-92c3-0edd7463c691\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">}</span> \n<span class=\"token punctuation\">}</span></span></code></pre></div>\n<p><strong>Response:</strong> </p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"status\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Success\"</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h4 id=\"2-end-call\" style=\"position:relative;\"><a href=\"#2-end-call\" aria-label=\"2 end call permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. End Call</h4>\n<p>Softphone calls this api when agent clicks on end call button to terminate call of all participants or to end their call only. Once operation is successful, adapter is expected to publish kafka event PARTICIPANT<em>CALL</em>COMPLETED for agent participant.</p>\n<p><strong>Request:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\"><span class=\"token header-name keyword\">Method:</span> POST\n<span class=\"token header-name keyword\">Content-Type:</span> application/json<span class=\"token application-json\">\n\n<span class=\"token punctuation\">{</span>\n  <span class=\"token string\">\"conversationId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"5a974dd7-475a-41c0-a027-bfdf09627b13\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token string\">\"removeAllParticipants\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span><span class=\"token punctuation\">,</span>\n  <span class=\"token string\">\"participantId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"6e312815-2d32-409b-9c57-f9e79e7baf49\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token string\">\"author\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token string\">\"userName\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"testAgent\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"participantId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"4a70a876-bf90-4360-92c3-0edd7463c691\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">}</span> \n<span class=\"token punctuation\">}</span></span></code></pre></div>\n<p><strong>Response:</strong> </p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"status\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Success\"</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h4 id=\"3-hold-call\" style=\"position:relative;\"><a href=\"#3-hold-call\" aria-label=\"3 hold call permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. Hold Call</h4>\n<p>Softphone calls this api when agent clicks on hold call on one of active participants of call.</p>\n<p><strong>Request:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\"><span class=\"token header-name keyword\">Method:</span> POST\n<span class=\"token header-name keyword\">Content-Type:</span> application/json<span class=\"token application-json\">\n\n<span class=\"token punctuation\">{</span>\n  <span class=\"token string\">\"conversationId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"5a974dd7-475a-41c0-a027-bfdf09627b13\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token string\">\"participantId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"6e312815-2d32-409b-9c57-f9e79e7baf49\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token string\">\"author\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token string\">\"userName\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"testAgent\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"participantId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"4a70a876-bf90-4360-92c3-0edd7463c691\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">}</span> \n<span class=\"token punctuation\">}</span></span></code></pre></div>\n<p><strong>Response:</strong> </p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"status\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Success\"</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h4 id=\"4-resume-call\" style=\"position:relative;\"><a href=\"#4-resume-call\" aria-label=\"4 resume call permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. Resume Call</h4>\n<p>Softphone calls this api when agent clicks on resume call on a participant who is already on hold.</p>\n<p><strong>Request:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\"><span class=\"token header-name keyword\">Method:</span> POST\n<span class=\"token header-name keyword\">Content-Type:</span> application/json<span class=\"token application-json\">\n\n<span class=\"token punctuation\">{</span>\n  <span class=\"token string\">\"conversationId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"5a974dd7-475a-41c0-a027-bfdf09627b13\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token string\">\"participantId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"6e312815-2d32-409b-9c57-f9e79e7baf49\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token string\">\"author\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token string\">\"userName\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"testAgent\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"participantId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"4a70a876-bf90-4360-92c3-0edd7463c691\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">}</span> \n<span class=\"token punctuation\">}</span></span></code></pre></div>\n<p><strong>Response:</strong> </p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"status\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Success\"</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h4 id=\"5-generate-token-for-voice-provider-client\" style=\"position:relative;\"><a href=\"#5-generate-token-for-voice-provider-client\" aria-label=\"5 generate token for voice provider client permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>5. Generate Token for voice provider client</h4>\n<p>To initialize voice provider client, it needs a JWT token to authenticate and authorize softphone with voice provider. </p>\n<p><strong>Request:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\"><span class=\"token header-name keyword\">Method:</span> POST\n<span class=\"token header-name keyword\">Content-Type:</span> application/json<span class=\"token application-json\">\n\n<span class=\"token punctuation\">{</span>\n  <span class=\"token string\">\"agentLogonName\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"testAgent\"</span>\n<span class=\"token punctuation\">}</span></span></code></pre></div>\n<p><strong>Response:</strong> </p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"token\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"dasdgdfhfhgjnguhk\"</span>\n<span class=\"token punctuation\">}</span></code></pre></div>","tableOfContents":"<ul>\n<li><a href=\"/docs/tutorials/Channel_Integration_Tutorials/BYOVoiceAdapter/#write-your-own-voice-adapter\">Write Your Own Voice Adapter</a></li>\n</ul>"},"documents":{"edges":[{"node":{"fields":{"slug":"/tutorials/getting_started/","current":"getting_started","parent":"tutorials","root":"tutorials"},"frontmatter":{"title":"Getting Started","description":"Getting Started guides for partners to quickly setup their contact center."}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Intelligent_Contact_Distribution/Getting_started_with_intelligent_contact_distribution_API/","current":"Getting_started_with_intelligent_contact_distribution_API","parent":"Intelligent_Contact_Distribution","root":"tutorials"},"frontmatter":{"title":"Getting Started with Intelligent Contact Distribution API","description":"This tutorial shows how to set up Intelligent Contact Distribution to route a conversation to the optimal contact."}}},{"node":{"fields":{"slug":"/tutorials/WorkForce_Management_Tutorials/Workforce_Management_Integration/","current":"Workforce_Management_Integration","parent":"WorkForce_Management_Tutorials","root":"tutorials"},"frontmatter":{"title":"Workforce Management Integration","description":"Learn to configure and map Human Agent Forecast data for better Workforce tracking and adherence calculations."}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/Integrating CCaaS and Salesforce/","current":"Integrating CCaaS and Salesforce","parent":"Channel_Integration_Tutorials","root":"tutorials"},"frontmatter":{"title":"Integrating CCaaS and Salesforce","description":null}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Intelligent_Contact_Distribution/ICD_Channel_Throttling_Rule_Configuration/","current":"ICD_Channel_Throttling_Rule_Configuration","parent":"Intelligent_Contact_Distribution","root":"tutorials"},"frontmatter":{"title":"ICD Channel Throttling Rule Configuration","description":null}}},{"node":{"fields":{"slug":"/tutorials/IAM_Tutorials/LoggingIntoOkta/","current":"LoggingIntoOkta","parent":"IAM_Tutorials","root":"tutorials"},"frontmatter":{"title":"Logging in using Okta","description":"This is from James Thomas Confluence page"}}},{"node":{"fields":{"slug":"/tutorials/IAM_Tutorials/Provisioning Users and RBAC/","current":"Provisioning Users and RBAC","parent":"IAM_Tutorials","root":"tutorials"},"frontmatter":{"title":"Provisioning Users and RBAC","description":null}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Intelligent_Contact_Distribution/ICD_HoursOfOperation_Rule_Configuration/","current":"ICD_HoursOfOperation_Rule_Configuration","parent":"Intelligent_Contact_Distribution","root":"tutorials"},"frontmatter":{"title":"ICD Hours of Operation Rule Configuration","description":null}}},{"node":{"fields":{"slug":"/Applications/Analytics_Console/Roles_and_Permissions/","current":"Roles_and_Permissions","parent":"Analytics_Console","root":"Analytics_Console"},"frontmatter":{"title":"Accessing Analytic Data","description":"Gain access to analytic reports based on platform-defined roles and permissions."}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Voice_Configuration/","current":"Voice_Configuration","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Voice Configuration","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Define_Rules_Policies/","current":"Define_Rules_Policies","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Define Rules and Policies","description":null}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Intelligent_Contact_Distribution/","current":"Intelligent_Contact_Distribution","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Setting up Intelligent Contact Distribution","description":"This tutorial shows how to configure Intelligent Contact Distribution API"}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/hours_of_operation/","current":"hours_of_operation","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Hours of Operation","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/queue_treatment/","current":"queue_treatment","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Queue Treatment","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Queue_and_Queue_Group/","current":"Queue_and_Queue_Group","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Queues and Queue Groups","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/agent_activity_groups/","current":"agent_activity_groups","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Agent Activity Groups","description":null}}},{"node":{"fields":{"slug":"/tutorials/WorkForce_Management_Tutorials/Workforce_Optimization_Dashboards/","current":"Workforce_Optimization_Dashboards","parent":"WorkForce_Management_Tutorials","root":"tutorials"},"frontmatter":{"title":"Workforce Optimization Data Visualization","description":"Learn how to access and compare real-time and historical reports on agent activity, queues, and queue groups."}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Quick_start_VNext/","current":"Quick_start_VNext","parent":"Voyager_Next","root":"Voyager_Next"},"frontmatter":{"title":"Getting Started","description":null}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Intelligent_Contact_Distribution/ICD_QueueWaitTime_Rule_Configuration/","current":"ICD_QueueWaitTime_Rule_Configuration","parent":"Intelligent_Contact_Distribution","root":"tutorials"},"frontmatter":{"title":"ICD Queue Wait Time Rule Configuration","description":null}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Features/Chat_Features/","current":"Chat_Features","parent":"Features","root":"Voyager_Next"},"frontmatter":{"title":"Chat Features","description":null}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Setup_Analytics_Reporting/","current":"Setup_Analytics_Reporting","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Setup Analytics and Reporting","description":null}}},{"node":{"fields":{"slug":"/Applications/ContactCenterManagement/","current":"ContactCenterManagement","parent":"Applications","root":"ContactCenterManagement"},"frontmatter":{"title":"Contact Center Management","description":"Welcome to the Contact Center Management"}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Features/Voice_Features/","current":"Voice_Features","parent":"Features","root":"Voyager_Next"},"frontmatter":{"title":"Voice Features","description":null}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Accessing_EG_Data_Lake/","current":"Accessing_EG_Data_Lake","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Getting Started with EG Data Lake","description":"Use EG Data Lake to access and stitch together data from varied domains such as Booking, Marketing, Commerce, User, Supply, and Partner."}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Getting_started_with_User_Context_service/","current":"Getting_started_with_User_Context_service","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Getting Started with User Context Service","description":"Learn about the User Context Service and the powerful concepts behind the GraphQL data query language."}}},{"node":{"fields":{"slug":"/capabilities/Contact_Center_Management/","current":"Contact_Center_Management","parent":"capabilities","root":"capabilities"},"frontmatter":{"title":"Contact Center Management Console","description":"Self-service management of the workforce and experiences."}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/","current":"Agent_Experience_Console_Tutorials","parent":"tutorials","root":"tutorials"},"frontmatter":{"title":"Agent Experience and Contact Center Management Console (CCM Console)","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Define_Rules_Policies/create_hoo_template/","current":"create_hoo_template","parent":"Define_Rules_Policies","root":"tutorials"},"frontmatter":{"title":"Create a HOO Template","description":"Create a HOO Template"}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/CoreConversationMetrics/","current":"CoreConversationMetrics","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Core Conversation Metrics","description":"Learn about basic concepts, entities, and processes concerning Core conversation metrics."}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Features/Email_Features/","current":"Email_Features","parent":"Features","root":"Voyager_Next"},"frontmatter":{"title":"Email Features","description":null}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Features/Service_Requests/","current":"Service_Requests","parent":"Features","root":"Voyager_Next"},"frontmatter":{"title":"Service request features","description":null}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Features/history_features/","current":"history_features","parent":"Features","root":"Voyager_Next"},"frontmatter":{"title":"History Features","description":null}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Features/knowledge_base_features/","current":"knowledge_base_features","parent":"Features","root":"Voyager_Next"},"frontmatter":{"title":"Knowledge Base Integration","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/","current":"Data_Intelligence","parent":"capabilities","root":"capabilities"},"frontmatter":{"title":"Data Intelligence","description":"Provides conversation content, data & insights, intelligent contact, distribution, data pipeline and EGDP and dData integration."}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Intelligent_Contact_Distribution_API/","current":"Intelligent_Contact_Distribution_API","parent":"Data_Intelligence","root":"capabilities"},"frontmatter":{"title":"Intelligent Contact Distribution API","description":null}}},{"node":{"fields":{"slug":"/capabilities/IAM/Resource_Sharing_Across_Partner/","current":"Resource_Sharing_Across_Partner","parent":"IAM","root":"capabilities"},"frontmatter":{"title":"Resource Sharing Across Partners","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Define_Rules_Policies/create_policies/","current":"create_policies","parent":"Define_Rules_Policies","root":"tutorials"},"frontmatter":{"title":"Create Policies","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Define_Rules_Policies/create_routing_templates/","current":"create_routing_templates","parent":"Define_Rules_Policies","root":"tutorials"},"frontmatter":{"title":"Create a Routing Template","description":"Create a Routing Template"}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/","current":"Data_Intelligence_Tutorials","parent":"tutorials","root":"tutorials"},"frontmatter":{"title":"Data Intelligence Tutorials","description":null}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Build_Customize_Reports/","current":"Build_Customize_Reports","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Build and Customise Reports","description":"Learn how to build and manage your own dashboard reports, then save them for future access."}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Customization_VNext/","current":"Customization_VNext","parent":"Voyager_Next","root":"Voyager_Next"},"frontmatter":{"title":"Voyager NEXT Customization","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/UserContextService/","current":"UserContextService","parent":"Data_Intelligence","root":"capabilities"},"frontmatter":{"title":"User Context Service","description":null}}},{"node":{"fields":{"slug":"/capabilities/IAM/RBAC_Resources/","current":"RBAC_Resources","parent":"IAM","root":"capabilities"},"frontmatter":{"title":"RBAC Resource","description":null}}},{"node":{"fields":{"slug":"/capabilities/Workforce_Optimization/","current":"Workforce_Optimization","parent":"capabilities","root":"capabilities"},"frontmatter":{"title":"Workforce Optimization","description":"Improve performance and utilization of Agents & Contact Centers using real-time and historical data to pinpoint areas of excellence and improvement, replicate successful interactions, and identify crucial feedback."}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Define_Rules_Policies/create_qwt_template/","current":"create_qwt_template","parent":"Define_Rules_Policies","root":"tutorials"},"frontmatter":{"title":"Create a Queue Wait Time Template","description":"Create a Queue Wait Time Template"}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Conversation_Data_Concepts/","current":"Conversation_Data_Concepts","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Conversation Data Concepts","description":"Learn about basic concepts, entities, and processes concerning Conversation data."}}},{"node":{"fields":{"slug":"/tutorials/WorkForce_Management_Tutorials/","current":"WorkForce_Management_Tutorials","parent":"tutorials","root":"tutorials"},"frontmatter":{"title":"Workforce Management Tutorials","description":"This section contains the tutorials for the Workforce Management capability."}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Features/Virtual_Agent_Assistant_in_Voyager_Next/","current":"Virtual_Agent_Assistant_in_Voyager_Next","parent":"Features","root":"Voyager_Next"},"frontmatter":{"title":"Virtual Agent Assistant in Voyager Next","description":null}}},{"node":{"fields":{"slug":"/capabilities/Channel_Integration/voice/recording_transcription/","current":"recording_transcription","parent":"voice","root":"capabilities"},"frontmatter":{"title":"Recording & Transcription","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/EGDP_Conversation_Domain_Data/","current":"EGDP_Conversation_Domain_Data","parent":"Data_Intelligence","root":"capabilities"},"frontmatter":{"title":"Data Lake","description":null}}},{"node":{"fields":{"slug":"/capabilities/IAM/Tool_Access/","current":"Tool_Access","parent":"IAM","root":"capabilities"},"frontmatter":{"title":"Tool Access","description":null}}},{"node":{"fields":{"slug":"/capabilities/Smart_Omni_Channel_Routing/","current":"Smart_Omni_Channel_Routing","parent":"capabilities","root":"capabilities"},"frontmatter":{"title":"Smart Omni-Channel Routing","description":"Smart Omni-Channel Routing is a suite of skills and applications, that connects customer to the most suitable human Agent with full context of customer's unresolved intent, on any of the platform supported channel. (uad-2620)"}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Define_Rules_Policies/create_throttling_template/","current":"create_throttling_template","parent":"Define_Rules_Policies","root":"tutorials"},"frontmatter":{"title":"Create a Throttling Template","description":"Create a Throttling Template"}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/agent_managment/","current":"agent_managment","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Agent Management","description":"Learn how to create, update, and deactivate agents and groups."}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/Conversation_Data_Visualization/Conversation/","current":"Conversation","parent":"Conversation_Data_Visualization","root":"tutorials"},"frontmatter":{"title":"Conversation Scenarios","description":null}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Conversation/","current":"Conversation","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Conversation Scenarios","description":"Learn to access and manage common scenarios for analyzing Conversation data."}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Getting_started_with_Platform_Data_API/","current":"Getting_started_with_Platform_Data_API","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Getting Started with Platform Data API","description":"Learn about Platform Data API and the powerful concepts behind the GraphQL data query language."}}},{"node":{"fields":{"slug":"/tutorials/SmartOmniChannelRouting_Tutorials/","current":"SmartOmniChannelRouting_Tutorials","parent":"tutorials","root":"tutorials"},"frontmatter":{"title":"Smart-Omni-Channel-Routing Tutorials","description":"This section contains the tutorials for the SOCR capability."}}},{"node":{"fields":{"slug":"/Applications/Analytics_Console/Dashboard_and_Reports/","current":"Dashboard_and_Reports","parent":"Analytics_Console","root":"Analytics_Console"},"frontmatter":{"title":"Dashboard and Reports","description":"Dashboards"}}},{"node":{"fields":{"slug":"/capabilities/Channel_Integration/voice/voice_adapter/","current":"voice_adapter","parent":"voice","root":"capabilities"},"frontmatter":{"title":"Voice providers and adapters","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/PlatformDataAPI/","current":"PlatformDataAPI","parent":"Data_Intelligence","root":"capabilities"},"frontmatter":{"title":"Platform Data API","description":"Data API provides the capability to programmatically access the conversation platform data."}}},{"node":{"fields":{"slug":"/capabilities/IAM/Agent_Roles/","current":"Agent_Roles","parent":"IAM","root":"capabilities"},"frontmatter":{"title":"Built-in Agent Roles","description":null}}},{"node":{"fields":{"slug":"/capabilities/IAM/Login_Details/","current":"Login_Details","parent":"IAM","root":"capabilities"},"frontmatter":{"title":"Login Details","description":null}}},{"node":{"fields":{"slug":"/capabilities/Omni_Channel_Agent_Tool/","current":"Omni_Channel_Agent_Tool","parent":"capabilities","root":"capabilities"},"frontmatter":{"title":"Omni-Channel Agent Tool","description":"Agent tool that provides a component based, intuitive interface across multiple conversation channels"}}},{"node":{"fields":{"slug":"/capabilities/Workforce_Optimization/Workforce_Management/","current":"Workforce_Management","parent":"Workforce_Optimization","root":"capabilities"},"frontmatter":{"title":"Workforce Management","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Define_Rules_Policies/create_rule_types/","current":"create_rule_types","parent":"Define_Rules_Policies","root":"tutorials"},"frontmatter":{"title":"Create Rule Types","description":"Creating Rule Types for Business Rules and Policies"}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Voice_Configuration/Create_Voice_Entry_Points/","current":"Create_Voice_Entry_Points","parent":"Voice_Configuration","root":"tutorials"},"frontmatter":{"title":"Voice Entry Points","description":null}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/","current":"Channel_Integration_Tutorials","parent":"tutorials","root":"tutorials"},"frontmatter":{"title":"Voice and Chat Channel Integration Tutorials","description":"This section houses the tutorials for the Channel Integration capability."}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/Conversation_Data_Visualization/Message/","current":"Message","parent":"Conversation_Data_Visualization","root":"tutorials"},"frontmatter":{"title":"Message Scenarios","description":null}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Interacting_with_GraphQL/","current":"Interacting_with_GraphQL","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Interacting with GraphQL","description":"This tutorial provides a short introduction to GraphQL terminology and explains how to interact with GraphQL-based APIs."}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Skills_Tasks/","current":"Skills_Tasks","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Skills and Tasks Scenarios","description":"This tutorial describes how Skills and Tasks relate to Business Functions. It then provides a few sample scenarios to illustrate their use."}}},{"node":{"fields":{"slug":"/tutorials/SmartOmniChannelRouting_Tutorials/queue_management_wait_time/","current":"queue_management_wait_time","parent":"SmartOmniChannelRouting_Tutorials","root":"tutorials"},"frontmatter":{"title":"Queue and Queue Management","description":null}}},{"node":{"fields":{"slug":"/Applications/Analytics_Console/Adhoc_Analysis/","current":"Adhoc_Analysis","parent":"Analytics_Console","root":"Analytics_Console"},"frontmatter":{"title":"Ad hoc Analysis","description":"Ad hoc Analysis"}}},{"node":{"fields":{"slug":"/Applications/Analytics_Console/Reporting_Features/","current":"Reporting_Features","parent":"Analytics_Console","root":"Analytics_Console"},"frontmatter":{"title":"Reporting Features","description":"Reporting Features"}}},{"node":{"fields":{"slug":"/capabilities/Channel_Integration/","current":"Channel_Integration","parent":"capabilities","root":"capabilities"},"frontmatter":{"title":"Channel Integration","description":"Conversations can happen across different channels like voice or chat. Channel Integration provides partners different ways to configure or build integration of different channels and tools with the platform"}}},{"node":{"fields":{"slug":"/capabilities/Channel_Integration/chat/","current":"chat","parent":"Channel_Integration","root":"capabilities"},"frontmatter":{"title":"Chat Channel Integration","description":null}}},{"node":{"fields":{"slug":"/capabilities/Channel_Integration/voice/softphone/","current":"softphone","parent":"voice","root":"capabilities"},"frontmatter":{"title":"Softphone","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Data_Visualization/","current":"Data_Visualization","parent":"Data_Intelligence","root":"capabilities"},"frontmatter":{"title":"Data Visualization","description":"configuration tool"}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Service_Experience_Metrics_Suite/","current":"Service_Experience_Metrics_Suite","parent":"Data_Intelligence","root":"capabilities"},"frontmatter":{"title":"Service Experience Metric Suite","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Service_Experience_Metrics_Suite/Detractor_Likelihood/","current":"Detractor_Likelihood","parent":"Service_Experience_Metrics_Suite","root":"capabilities"},"frontmatter":{"title":"Detractor Likelihood","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Service_Experience_Metrics_Suite/Repeat_Contact_Likelihood/","current":"Repeat_Contact_Likelihood","parent":"Service_Experience_Metrics_Suite","root":"capabilities"},"frontmatter":{"title":"Repeat Contact Likelihood","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Service_Experience_Metrics_Suite/Repeat_Purchase_Likelihood/","current":"Repeat_Purchase_Likelihood","parent":"Service_Experience_Metrics_Suite","root":"capabilities"},"frontmatter":{"title":"Repeat Purchase Likelihood","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Service_Experience_Metrics_Suite/Repeat_Purchase_Likelihood/What-If_Tool/","current":"What-If_Tool","parent":"Repeat_Purchase_Likelihood","root":"capabilities"},"frontmatter":{"title":"What-If Tool","description":null}}},{"node":{"fields":{"slug":"/capabilities/IAM/Configuration_Roles/","current":"Configuration_Roles","parent":"IAM","root":"capabilities"},"frontmatter":{"title":"Built-in Configuration Roles","description":null}}},{"node":{"fields":{"slug":"/capabilities/Workforce_Optimization/Agent_Presence/","current":"Agent_Presence","parent":"Workforce_Optimization","root":"capabilities"},"frontmatter":{"title":"Agent Presence","description":"reviewed by ED team cpce-90294"}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Define_Rules_Policies/create_rules/","current":"create_rules","parent":"Define_Rules_Policies","root":"tutorials"},"frontmatter":{"title":"Create Rules","description":"Create Rules"}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Voice_Configuration/Create_Voice_Experience_Templates/","current":"Create_Voice_Experience_Templates","parent":"Voice_Configuration","root":"tutorials"},"frontmatter":{"title":"Voice Experience Templates","description":null}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/BYOVoiceProviderClientLibAdapter/","current":"BYOVoiceProviderClientLibAdapter","parent":"Channel_Integration_Tutorials","root":"tutorials"},"frontmatter":{"title":"Bring Your Own Voice Provider Client Library Adapter","description":null}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/BringYourOwnVoiceProvider/BYOVoiceProviderClientLibAdapter/","current":"BYOVoiceProviderClientLibAdapter","parent":"BringYourOwnVoiceProvider","root":"tutorials"},"frontmatter":{"title":"Bring Your Own Voice Provider Client Library Adapter","description":null}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/Conversation_Data_Visualization/Participant_Session/","current":"Participant_Session","parent":"Conversation_Data_Visualization","root":"tutorials"},"frontmatter":{"title":"Participant Session Scenarios","description":null}}},{"node":{"fields":{"slug":"/tutorials/IAM_Tutorials/","current":"IAM_Tutorials","parent":"tutorials","root":"tutorials"},"frontmatter":{"title":"Agent Identity and Access Management Tutorials","description":"This section houses the tutorials for the IAM capability."}}},{"node":{"fields":{"slug":"/","current":"","parent":"","root":""},"frontmatter":{"title":"Home","description":"Providing conversational capabilities to any partner application over voice, text and social channels"}}},{"node":{"fields":{"slug":"/Applications/Analytics_Console/","current":"Analytics_Console","parent":"Applications","root":"Analytics_Console"},"frontmatter":{"title":"Analytics Console","description":"Analytics Console-One Stop Solution for all Reporting Needs."}}},{"node":{"fields":{"slug":"/Applications/Softphone/","current":"Softphone","parent":"Applications","root":"Softphone"},"frontmatter":{"title":"Softphone","description":"Setup agents to receive or make phone calls and perform call controls."}}},{"node":{"fields":{"slug":"/Applications/Softphone/Agent_Connectivity_Management/","current":"Agent_Connectivity_Management","parent":"Softphone","root":"Softphone"},"frontmatter":{"title":"Agent Connectivity Management","description":"Detect the network connectivity of the agent in softphone."}}},{"node":{"fields":{"slug":"/Applications/Softphone/Automated_CLI/","current":"Automated_CLI","parent":"Softphone","root":"Softphone"},"frontmatter":{"title":"Automated CLI","description":"Detect country and hence caller line interface (CLI) candidates for outbound number."}}},{"node":{"fields":{"slug":"/Applications/Softphone/Automated_State_Change/","current":"Automated_State_Change","parent":"Softphone","root":"Softphone"},"frontmatter":{"title":"Automated State Management","description":"Automated the State change behavior in Softphone for some states"}}},{"node":{"fields":{"slug":"/Applications/Softphone/Call_Source/","current":"Call_Source","parent":"Softphone","root":"Softphone"},"frontmatter":{"title":"Call Source","description":"Call Source is visible to the agent to get the context of an inbound call."}}},{"node":{"fields":{"slug":"/Applications/Softphone/ClickToCall_CLI_Integration/","current":"ClickToCall_CLI_Integration","parent":"Softphone","root":"Softphone"},"frontmatter":{"title":"ClickToCall and Caller ID Integration","description":"Setup agents to be able to select CLI when making calls through CRM tool."}}},{"node":{"fields":{"slug":"/Applications/Softphone/Softphone_Config/","current":"Softphone_Config","parent":"Softphone","root":"Softphone"},"frontmatter":{"title":"Softphone Configuration","description":null}}},{"node":{"fields":{"slug":"/Applications/Softphone/Softphone_Transfers/","current":"Softphone_Transfers","parent":"Softphone","root":"Softphone"},"frontmatter":{"title":"Softphone Transfers","description":"Transfer of calls by CP Queue Agents to other Participants."}}},{"node":{"fields":{"slug":"/Applications/Softphone/Supervisor_Bargein/","current":"Supervisor_Bargein","parent":"Softphone","root":"Softphone"},"frontmatter":{"title":"Supervisor Functionalities","description":null}}},{"node":{"fields":{"slug":"/Applications/Softphone/WhisperAnnouncement/","current":"WhisperAnnouncement","parent":"Softphone","root":"Softphone"},"frontmatter":{"title":"Whisper Announcement","description":"Play whisper announcement on inbound call"}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/","current":"Voyager_Next","parent":"Applications","root":"Voyager_Next"},"frontmatter":{"title":"Voyager Next","description":"“Out-of-box\" configurable Agent Tool for travel agents"}}},{"node":{"fields":{"slug":"/capabilities/Channel_Integration/voice/","current":"voice","parent":"Channel_Integration","root":"capabilities"},"frontmatter":{"title":"Voice Channel Integration","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Data_Dictionary/","current":"Data_Dictionary","parent":"Data_Intelligence","root":"capabilities"},"frontmatter":{"title":"Data Dictionary","description":"Information related to EG Data Platform concepts, agent interactions, workforce management (WFM) and workforce optimization."}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Data_Dictionary/Conversation_Data/","current":"Conversation_Data","parent":"Data_Dictionary","root":"capabilities"},"frontmatter":{"title":"Conversation Data","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Data_Dictionary/Repeat_Purchase_Likelihood_Data/","current":"Repeat_Purchase_Likelihood_Data","parent":"Data_Dictionary","root":"capabilities"},"frontmatter":{"title":"Repeat Purchase Likelihood Data","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Data_Dictionary/Rules_Business_Objects_Reporting/","current":"Rules_Business_Objects_Reporting","parent":"Data_Dictionary","root":"capabilities"},"frontmatter":{"title":"Rules Business Objects Reporting","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Data_Dictionary/Service_Case_Data/","current":"Service_Case_Data","parent":"Data_Dictionary","root":"capabilities"},"frontmatter":{"title":"Service Case Data","description":null}}},{"node":{"fields":{"slug":"/capabilities/Forecasting/Forecast_Overview/","current":"Forecast_Overview","parent":"Forecasting","root":"capabilities"},"frontmatter":{"title":"Agent Capacity Forecast","description":null}}},{"node":{"fields":{"slug":"/capabilities/IAM/","current":"IAM","parent":"capabilities","root":"capabilities"},"frontmatter":{"title":"Identity and Access Management","description":"CP Front End services enables Role-Based Access Control for all CP resources."}}},{"node":{"fields":{"slug":"/capabilities/Smart_Omni_Channel_Routing/Callback/","current":"Callback","parent":"Smart_Omni_Channel_Routing","root":"capabilities"},"frontmatter":{"title":"Callback","description":"Description of what a callback means."}}},{"node":{"fields":{"slug":"/capabilities/Smart_Omni_Channel_Routing/ICD/","current":"ICD","parent":"Smart_Omni_Channel_Routing","root":"capabilities"},"frontmatter":{"title":"Intelligent Contact Distribution (ICD)","description":"Description of what ICD does."}}},{"node":{"fields":{"slug":"/capabilities/Smart_Omni_Channel_Routing/Queue_Treatment/","current":"Queue_Treatment","parent":"Smart_Omni_Channel_Routing","root":"capabilities"},"frontmatter":{"title":"Queue Treatment","description":"Description of what queue treatment is to a customer"}}},{"node":{"fields":{"slug":"/capabilities/Smart_Omni_Channel_Routing/Realtime_Insights/","current":"Realtime_Insights","parent":"Smart_Omni_Channel_Routing","root":"capabilities"},"frontmatter":{"title":"Realtime Insights","description":"Description of various agent states."}}},{"node":{"fields":{"slug":"/capabilities/Smart_Omni_Channel_Routing/Routing_Configuration/","current":"Routing_Configuration","parent":"Smart_Omni_Channel_Routing","root":"capabilities"},"frontmatter":{"title":"Routing Configuration","description":"Description of routing configuration rules"}}},{"node":{"fields":{"slug":"/capabilities/Smart_Omni_Channel_Routing/Routing_Conversation_To_Agent/","current":"Routing_Conversation_To_Agent","parent":"Smart_Omni_Channel_Routing","root":"capabilities"},"frontmatter":{"title":"Routing Conversation To Agent","description":"Describes metrics that route a conversation to an agent."}}},{"node":{"fields":{"slug":"/capabilities/Workforce_Optimization/Agent_Evaluation/","current":"Agent_Evaluation","parent":"Workforce_Optimization","root":"capabilities"},"frontmatter":{"title":"Agent Evaluation","description":"Reviewed by ED team cpce-90295"}}},{"node":{"fields":{"slug":"/capabilities/Workforce_Optimization/Agent_Evaluation/Voice_Recording/","current":"Voice_Recording","parent":"Agent_Evaluation","root":"capabilities"},"frontmatter":{"title":"Voice Recording System","description":"cpce-90296"}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Define_Rules_Policies/create_outdial/","current":"create_outdial","parent":"Define_Rules_Policies","root":"tutorials"},"frontmatter":{"title":"Create an Outdial template","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Voice_Configuration/Bulk_Upload_Entry_Points/","current":"Bulk_Upload_Entry_Points","parent":"Voice_Configuration","root":"tutorials"},"frontmatter":{"title":"Bulk Upload Voice Entry Point","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/console_users/","current":"console_users","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Console User Management","description":"The Contact Center Management Console is used to securely manage Human Agents and Contact Cetners via an easy to use Admin Console. This sections deals with initial setup and ongoing management, via a single point or Console"}}},{"node":{"fields":{"slug":"/tutorials/CCaaS_Skills_Tutorials/","current":"CCaaS_Skills_Tutorials","parent":"tutorials","root":"tutorials"},"frontmatter":{"title":"Configure your own Skills Tutorials","description":"This section houses the tutorials for the Virtual Agent Skills section."}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/BYOVoiceAdapter/","current":"BYOVoiceAdapter","parent":"Channel_Integration_Tutorials","root":"tutorials"},"frontmatter":{"title":"Bring Your Own Voice Adapter","description":"Out-of-the-box, the current virtual agent oftphone supports Twilio as a voice provider. Under the Bring Your Own Resource model, the partner can choose to bring their own voice provider. This document maps out instructions for the parther to write their own adapaters for interactions between the new voice provider and the virtual agent phone, similar to what Expedia has for Twilio, along with the Twilio Client Wrapper library."}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/BringYourOwnVoiceProvider/","current":"BringYourOwnVoiceProvider","parent":"Channel_Integration_Tutorials","root":"tutorials"},"frontmatter":{"title":"Bring Your Own Voice Provider","description":null}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/BringYourOwnVoiceProvider/BYOVoiceAdapter/","current":"BYOVoiceAdapter","parent":"BringYourOwnVoiceProvider","root":"tutorials"},"frontmatter":{"title":"Bring Your Own Voice Adapter","description":null}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/Conversation_Data_Visualization/","current":"Conversation_Data_Visualization","parent":"Channel_Integration_Tutorials","root":"tutorials"},"frontmatter":{"title":"Conversation Data Visualization","description":"Quickly generate graphical representations of data to answer many common questions."}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/Conversation_Data_Visualization/Skills_Tasks/","current":"Skills_Tasks","parent":"Conversation_Data_Visualization","root":"tutorials"},"frontmatter":{"title":"Skills and Tasks Scenarios","description":null}}},{"node":{"fields":{"slug":"/tutorials/SmartOmniChannelRouting_Tutorials/Provisioning Users and RBAC/","current":"Provisioning Users and RBAC","parent":"SmartOmniChannelRouting_Tutorials","root":"tutorials"},"frontmatter":{"title":"Provisioning Users and RBAC","description":null}}},{"node":{"fields":{"slug":"/Applications/","current":"Applications","parent":null,"root":null},"frontmatter":{"title":"Applications","description":null}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Features/","current":"Features","parent":"Voyager_Next","root":"Voyager_Next"},"frontmatter":{"title":"Features","description":"Learn about available features in Voyager Next, and how they can help your agents."}}},{"node":{"fields":{"slug":"/api-references/","current":"api-references","parent":null,"root":null},"frontmatter":{"title":"API","description":"Contact Center API References"}}},{"node":{"fields":{"slug":"/capabilities/","current":"capabilities","parent":null,"root":"capabilities"},"frontmatter":{"title":"Capabilities","description":"Contact Center as a Service Capabilities"}}},{"node":{"fields":{"slug":"/tutorials/","current":"tutorials","parent":null,"root":"tutorials"},"frontmatter":{"title":"Tutorials","description":"List of all updated tutorials for each capability"}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/DataTag_Management/","current":"DataTag_Management","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Data Tag Management","description":"Learn how to view, create and update data tags and data tag groups for your contact center"}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/agent_tool_configuration/","current":"agent_tool_configuration","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Agent Tool Configuration","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/business_locations/","current":"business_locations","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Business Locations","description":null}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/Phone_Number_Assignment_Guide/","current":"Phone_Number_Assignment_Guide","parent":"Channel_Integration_Tutorials","root":"tutorials"},"frontmatter":{"title":"Phone Number Assignment Guide","description":null}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/ccaas_channel_setup_for_agent_tools/","current":"ccaas_channel_setup_for_agent_tools","parent":"Channel_Integration_Tutorials","root":"tutorials"},"frontmatter":{"title":"CCaaS Channel Setup for Agent Tools","description":null}}},{"node":{"fields":{"slug":"/tutorials/IAM_Tutorials/role_management/","current":"role_management","parent":"IAM_Tutorials","root":"tutorials"},"frontmatter":{"title":"Role Management","description":"James Thomas Confluence page role management tab"}}}]}},"pageContext":{"slug":"/tutorials/Channel_Integration_Tutorials/BYOVoiceAdapter/"}},"staticQueryHashes":["2152644321","3128451518","3235971795","685961757"]}