This guide shows how to send audio notifications using voice calls. You can play recorded audio when the call recipient answers or use text-to-speech, as we show here, combining static text with dynamic information that Plivo gets from a variable.You can use voice notification for use cases such as:
Order notification
Booking status
Delivery status
Flight cancellation/rescheduling
Two-factor authentication/one-time password
New offer notification
Account balance notification
Implement voice notification either by using our PHLO visual workflow builder or our APIs and XML documents. Follow the instructions in one of the tabs below.
Using XML
Here’s how to use Plivo APIs and XML to implement voice notifications.
Plivo requests an answer URL when the call is answered (step 4) and expects the file at that address to hold a valid XML response from the application with instructions on how to handle the call. To see how this works, you can use https://s3.amazonaws.com/static.plivo.com/notification.xml as an answer URL to test your first outgoing call. The file contains this XML code:
<Response><Speak>Congratulations, your order was successfully placed</Speak></Response>
This code instructs Plivo to say, “Congratulations, your order was successfully placed” to the call recipient. You can find the entire list of valid Plivo XML verbs in our XML Reference documentation.
To get started, you need a Plivo account — sign up with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to set up a Node.js development environment.
Create a voice notification application in Node.js
Create a file called Makecall.js and paste into it this code.
var plivo = require('plivo');(function main() { 'use strict'; var client = new plivo.Client("<auth_id>","<auth_token>"); client.calls.create( "<caller_id>", // from "<destination_number>", // to "https://s3.amazonaws.com/static.plivo.com/notification.xml", // answer url { answerMethod: "GET", }, ).then(function (response) { console.log(response); }, function (err) { console.error(err); });})();
Replace the auth placeholders with your authentication credentials from the Plivo console. Replace the phone number placeholders with actual phone numbers in E.164 format (for example, +12025551234).
Note:
We recommend that you store your credentials in the auth_id and auth_token environment variables, to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use process.env to store environment variables and fetch them while initializing the client.
This guide shows how to send audio notifications using voice calls. You can play recorded audio when the call recipient answers or use text-to-speech, as we show here, combining static text with dynamic information that Plivo gets from a variable.You can use voice notification for use cases such as:
Order notification
Booking status
Delivery status
Flight cancellation/rescheduling
Two-factor authentication/one-time password
New offer notification
Account balance notification
Implement voice notification either by using our PHLO visual workflow builder or our APIs and XML documents. Follow the instructions in one of the tabs below.
Using XML
Here’s how to use Plivo APIs and XML to implement voice notifications.
Plivo requests an answer URL when the call is answered (step 4) and expects the file at that address to hold a valid XML response from the application with instructions on how to handle the call. To see how this works, you can use https://s3.amazonaws.com/static.plivo.com/notification.xml as an answer URL to test your first outgoing call. The file contains this XML code:
<Response><Speak>Congratulations, your order was successfully placed</Speak></Response>
This code instructs Plivo to say, “Congratulations, your order was successfully placed” to the call recipient. You can find the entire list of valid Plivo XML verbs in our XML Reference documentation.
To get started, you need a Plivo account — sign up with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to set up a Ruby development environment.
Replace the auth placeholders with your authentication credentials from the Plivo console. Replace the phone number placeholders with actual phone numbers in E.164 format (for example, +12025551234).
Note:
We recommend that you store your credentials in the auth_id and auth_token environment variables, to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use ENV to store environment variables and fetch them when initializing the client.
This guide shows how to send audio notifications using voice calls. You can play recorded audio when the call recipient answers or use text-to-speech, as we show here, combining static text with dynamic information that Plivo gets from a variable.You can use voice notification for use cases such as:
Order notification
Booking status
Delivery status
Flight cancellation/rescheduling
Two-factor authentication/one-time password
New offer notification
Account balance notification
Implement voice notification either by using our PHLO visual workflow builder or our APIs and XML documents. Follow the instructions in one of the tabs below.
Using XML
Here’s how to use Plivo APIs and XML to implement voice notifications.
Plivo requests an answer URL when the call is answered (step 4) and expects the file at that address to hold a valid XML response from the application with instructions on how to handle the call. To see how this works, you can use https://s3.amazonaws.com/static.plivo.com/notification.xml as an answer URL to test your first outgoing call. The file contains this XML code:
<Response><Speak>Congratulations, your order was successfully placed</Speak></Response>
This code instructs Plivo to say, “Congratulations, your order was successfully placed” to the call recipient. You can find the entire list of valid Plivo XML verbs in our XML Reference documentation.
To get started, you need a Plivo account — sign up with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to set up a Python development environment.
Replace the auth placeholders with your authentication credentials from the Plivo console. Replace the phone number placeholders with actual phone numbers in E.164 format (for example, +12025551234).
Note:
We recommend that you store your credentials in the auth_id and auth_token environment variables, to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use the os module (os.environ) to store environment variables and fetch them when initializing the client.
This guide shows how to send audio notifications using voice calls. You can play recorded audio when the call recipient answers or use text-to-speech, as we show here, combining static text with dynamic information that Plivo gets from a variable.You can use voice notification for use cases such as:
Order notification
Booking status
Delivery status
Flight cancellation/rescheduling
Two-factor authentication/one-time password
New offer notification
Account balance notification
Implement voice notification either by using our PHLO visual workflow builder or our APIs and XML documents. Follow the instructions in one of the tabs below.
Using XML
Here’s how to use Plivo APIs and XML to implement voice notifications.
Plivo requests an answer URL when the call is answered (step 4) and expects the file at that address to hold a valid XML response from the application with instructions on how to handle the call. To see how this works, you can use https://s3.amazonaws.com/static.plivo.com/notification.xml as an answer URL to test your first outgoing call. The file contains this XML code:
<Response><Speak>Congratulations, your order was successfully placed</Speak></Response>
This code instructs Plivo to say, “Congratulations, your order was successfully placed” to the call recipient. You can find the entire list of valid Plivo XML verbs in our XML Reference documentation.
To get started, you need a Plivo account — sign up with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to set up a PHP development environment.
Replace the auth placeholders with your authentication credentials from the Plivo console. Replace the phone number placeholders with actual phone numbers in E.164 format (for example, +12025551234).
Note:
We recommend that you store your credentials in the auth_id and auth_token environment variables, to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use the $_ENV or putenv/getenv functions to store environment variables and fetch them when initializing the client.
This guide shows how to send audio notifications using voice calls. You can play recorded audio when the call recipient answers or use text-to-speech, as we show here, combining static text with dynamic information that Plivo gets from a variable.You can use voice notification for use cases such as:
Order notification
Booking status
Delivery status
Flight cancellation/rescheduling
Two-factor authentication/one-time password
New offer notification
Account balance notification
Implement voice notification either by using our PHLO visual workflow builder or our APIs and XML documents. Follow the instructions in one of the tabs below.
Using XML
Here’s how to use Plivo APIs and XML to implement voice notifications.
Plivo requests an answer URL when the call is answered (step 4) and expects the file at that address to hold a valid XML response from the application with instructions on how to handle the call. To see how this works, you can use https://s3.amazonaws.com/static.plivo.com/notification.xml as an answer URL to test your first outgoing call. The file contains this XML code:
<Response><Speak>Congratulations, your order was successfully placed</Speak></Response>
This code instructs Plivo to say, “Congratulations, your order was successfully placed” to the call recipient. You can find the entire list of valid Plivo XML verbs in our XML Reference documentation.
To get started, you need a Plivo account — sign up with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to set up a Dotnet development environment.
In Visual Studio, open the file in the CS project called Program.cs and paste into it this code.
using System;using System.Collections.Generic;using Plivo;namespace testplivo{ class Program { static void Main(string[] args) { var api = new PlivoApi("<auth_id>","<auth_token>"); var response = api.Call.Create( to: new List<String> { "<destination_number>" }, from: "<caller_id>", answerMethod: "GET", answerUrl: "https://s3.amazonaws.com/static.plivo.com/notification.xml" ); Console.WriteLine(response); } }}
Replace the auth placeholders with your authentication credentials from the Plivo console. Replace the phone number placeholders with actual phone numbers in E.164 format (for example, +12025551234).
Note:
We recommend that you store your credentials in the auth_id and auth_token environment variables, to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use the <a href="https://docs.microsoft.com/en-us/dotnet/api/system.environment.setenvironmentvariable?view=netcore-3.1" rel="nofollow">Environment.SetEnvironmentVariable</a> method to store environment variables and <a href="https://docs.microsoft.com/en-us/dotnet/api/system.environment.getenvironmentvariable?view=netcore-3.1" rel="nofollow">Environment.GetEnvironmentVariable</a> to fetch them when initializing the client.
This guide shows how to send audio notifications using voice calls. You can play recorded audio when the call recipient answers or use text-to-speech, as we show here, combining static text with dynamic information that Plivo gets from a variable.You can use voice notification for use cases such as:
Order notification
Booking status
Delivery status
Flight cancellation/rescheduling
Two-factor authentication/one-time password
New offer notification
Account balance notification
Implement voice notification either by using our PHLO visual workflow builder or our APIs and XML documents. Follow the instructions in one of the tabs below.
Using XML
Here’s how to use Plivo APIs and XML to implement voice notifications.
Plivo requests an answer URL when the call is answered (step 4) and expects the file at that address to hold a valid XML response from the application with instructions on how to handle the call. To see how this works, you can use https://s3.amazonaws.com/static.plivo.com/notification.xml as an answer URL to test your first outgoing call. The file contains this XML code:
<Response><Speak>Congratulations, your order was successfully placed</Speak></Response>
This code instructs Plivo to say, “Congratulations, your order was successfully placed” to the call recipient. You can find the entire list of valid Plivo XML verbs in our XML Reference documentation.
To get started, you need a Plivo account — sign up with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to set up a Java development environment.
Replace the auth placeholders with your authentication credentials from the Plivo console. Replace the phone number placeholders with actual phone numbers in E.164 format (for example, +12025551234).
Note:
We recommend that you store your credentials in the auth_id and auth_token environment variables, to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use <a rel="nofollow" href="https://docs.oracle.com/javase/tutorial/essential/environment/env.html">System.getenv()</a> to store environment variables and retrieve them when initializing the client.
This guide shows how to send audio notifications using voice calls. You can play recorded audio when the call recipient answers or use text-to-speech, as we show here, combining static text with dynamic information that Plivo gets from a variable.You can use voice notification for use cases such as:
Order notification
Booking status
Delivery status
Flight cancellation/rescheduling
Two-factor authentication/one-time password
New offer notification
Account balance notification
Implement voice notification either by using our PHLO visual workflow builder or our APIs and XML documents. Follow the instructions in one of the tabs below.
Using XML
Here’s how to use Plivo APIs and XML to implement voice notifications.
Plivo requests an answer URL when the call is answered (step 4) and expects the file at that address to hold a valid XML response from the application with instructions on how to handle the call. To see how this works, you can use https://s3.amazonaws.com/static.plivo.com/notification.xml as an answer URL to test your first outgoing call. The file contains this XML code:
<Response><Speak>Congratulations, your order was successfully placed</Speak></Response>
This code instructs Plivo to say, “Congratulations, your order was successfully placed” to the call recipient. You can find the entire list of valid Plivo XML verbs in our XML Reference documentation.
To get started, you need a Plivo account — sign up with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to set up a Go development environment.
Replace the auth placeholders with your authentication credentials from the Plivo console. Replace the phone number placeholders with actual phone numbers in E.164 format (for example, +12025551234).
Note:
We recommend that you store your credentials in the auth_id and auth_token environment variables, to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use the os.Setenv and os.Getenv functions to store environment variables and fetch them when initializing the client.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Plivo","colors":{"primary":"#323dfe","light":"#5b6bff","dark":"#2830cc"},"logo":{"light":"https://mintcdn.com/plivo/nlRVupwxTfmW2fPy/logo/newlogodark.svg?fit=max\u0026auto=format\u0026n=nlRVupwxTfmW2fPy\u0026q=85\u0026s=60816eb957f6b8962ef15eddde76449a","dark":"https://mintcdn.com/plivo/nlRVupwxTfmW2fPy/logo/newlogolight.svg?fit=max\u0026auto=format\u0026n=nlRVupwxTfmW2fPy\u0026q=85\u0026s=27bd82e8f16bad829a0536c7a8fa9374","href":"https://www.plivo.com/"},"favicon":"https://mintcdn.com/plivo/dmvKeqcj6my-kDvH/favicon.svg?fit=max\u0026auto=format\u0026n=dmvKeqcj6my-kDvH\u0026q=85\u0026s=1416a3d8d3d1f8f94fb88979b6b327e9","background":{"decoration":"grid"},"navbar":{"links":[{"href":"https://support.plivo.com/hc/en-us","label":"Support"},{"href":"https://cx.plivo.com/home","label":"Console"},{"href":"https://cx.plivo.com/signup","label":"Sign Up"}]},"footer":{"socials":{"x":"https://twitter.com/plivo","github":"https://github.com/plivo","linkedin":"https://www.linkedin.com/company/plivo-inc","facebook":"https://fb.com/plivo"}},"fonts":{"family":"Inter"},"icons":{"library":"lucide"},"integrations":{"ga4":{"measurementId":"G-YLW0ZWN2T7"},"posthog":{"apiKey":"phc_5ISIYiMfoaGh9TVGt9ydU6g91tlKvvj1qrDIcC4vKGP","apiHost":"https://f.plivo.com"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"plivo","hasAudioNarration":false,"actualSubdomain":"plivo","customDomains":["plivo.com"],"gitSource":{"type":"github","owner":"plivo-dev","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ada0d89b052f87fe57ecc7d","collectionId":"aab34c57-2955-491f-9bfc-225c783e9a94","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ada0d89b052f87fe57ecc7d"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ada0d89b052f87fe57ecc7d","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"Programmable APIs","count":284},{"language":"default","tag":"Voice API","count":91},{"language":"default","tag":"Concepts","count":64},{"language":"default","tag":"Messaging API","count":61},{"language":"default","tag":"Integrations","count":44},{"language":"default","tag":"All integrations","count":43},{"language":"default","tag":"API Reference","count":42},{"language":"default","tag":"SIP Trunking","count":38},{"language":"default","tag":"Audio Streaming","count":30},{"language":"default","tag":"Voice Tutorials","count":28}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"styles.css","content":"/* cyrillic-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwhsk.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxTcwhsk.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxPcwhsk.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx_cwhsk.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwhsk.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwhsk.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxTcwhsk.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxPcwhsk.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx_cwhsk.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwhsk.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwhsk.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxTcwhsk.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxPcwhsk.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx_cwhsk.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwhsk.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Sora';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/sora/v17/xMQ9uFFYT72X5wkB_18qmnndmSdSnh2BAfO5mnuyOo1lfiQwWa-xsaQ.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Sora';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/sora/v17/xMQ9uFFYT72X5wkB_18qmnndmSdSnh2BAfO5mnuyOo1lfiQwV6-x.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Sora';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/sora/v17/xMQ9uFFYT72X5wkB_18qmnndmSdSnh2BAfO5mnuyOo1lfiQwWa-xsaQ.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Sora';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/sora/v17/xMQ9uFFYT72X5wkB_18qmnndmSdSnh2BAfO5mnuyOo1lfiQwV6-x.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Sora';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/sora/v17/xMQ9uFFYT72X5wkB_18qmnndmSdSnh2BAfO5mnuyOo1lfiQwWa-xsaQ.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Sora';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/sora/v17/xMQ9uFFYT72X5wkB_18qmnndmSdSnh2BAfO5mnuyOo1lfiQwV6-x.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Sora';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/sora/v17/xMQ9uFFYT72X5wkB_18qmnndmSdSnh2BAfO5mnuyOo1lfiQwWa-xsaQ.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Sora';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/sora/v17/xMQ9uFFYT72X5wkB_18qmnndmSdSnh2BAfO5mnuyOo1lfiQwV6-x.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n@keyframes dcon-scroll{to{transform:translateX(-240px)}}@keyframes dcon-ping{0%{opacity:.8;transform:scale(1)}75%,to{opacity:0;transform:scale(2.2)}}:root{--plivo-blue:#323dfe;--plivo-blue-text:var(--plivo-blue);--plivo-font-mono:'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;--plivo-font-display:'Sora', ui-sans-serif, system-ui, sans-serif;--plivo-ink:rgba(0, 0, 0, 0.55)}.dark{--plivo-ink:rgba(255, 255, 255, 0.5);--plivo-blue-text:#6b7cff}.card,.prose *,[class*=rounded],blockquote,button,code,img,input,pre,table,td,th{border-radius:2px!important}.rounded-full,[class*=rounded-full],[style*=\"border-radius: 50%\"],[style*=\"border-radius:50%\"]{border-radius:9999px!important}code,kbd,pre{font-family:var(--plivo-font-mono)!important}h1,h2,h3,h4,h5,h6{letter-spacing:-.02em!important}main h1,main h2,main h3,main h4{font-weight:600!important}.card [class*=title],.card h2,.card h3,.nav-tabs-item,a[class*=nav-tabs],h1,h2,h3,h4,h5,h6{font-family:var(--plivo-font-display)!important}div:has(>.nav-tabs){height:2.25rem!important}.nav-tabs{gap:1.25rem!important}.nav-tabs-item{font-size:13px!important}.nav-tabs-item>div[class*=bg-primary]{background-color:var(--plivo-ink)!important}main h1::after{content:'';display:block;width:2.75rem;height:2px;margin-top:.75rem;background:var(--plivo-blue)}.prose>p:first-of-type+h2,nav[aria-label=Breadcrumb]{font-family:var(--plivo-font-mono)!important}.card{position:relative;transition:border-color 160ms ease,box-shadow 160ms ease,transform 120ms ease!important}.card::after,.card::before{content:'';position:absolute;width:11px;height:11px;pointer-events:none;transition:border-color 160ms ease;z-index:1}.card::before{top:6px;left:6px;border-left:1px solid var(--plivo-ink);border-top:1px solid var(--plivo-ink)}.card::after{right:6px;bottom:6px;border-right:1px solid var(--plivo-ink);border-bottom:1px solid var(--plivo-ink)}.card:hover{transform:translateY(1px)}.card:hover::after,.card:hover::before{border-color:var(--plivo-blue)}.card .card-icon,.card svg[class*=text-primary]{color:var(--plivo-blue)!important}.card [data-component-part=card-content]{font-size:.8rem!important;line-height:1.5!important;margin-top:.55rem!important}.prose pre,pre{border:0!important}.mdx-content a[href]:not([class*=not-prose]):not([class*=card]){text-decoration-line:underline!important;text-decoration-thickness:1px!important;text-underline-offset:2px!important}.mdx-content a[href]:not([class*=not-prose]):not([class*=card]),.mdx-content a[href]:not([class*=not-prose]):not([class*=card]):hover{color:inherit!important;text-decoration-color:currentColor!important;border-bottom:0!important}a.button,a[class*=bg-primary-]:not([class*=\"/\"]):not([class*=text-]),a[role=button],button.button{font-family:var(--plivo-font-mono)!important;letter-spacing:.06em}#sidebar a[class*=bg-primary],[class*=sidebar] a[class*=bg-primary]{background-color:color-mix(in srgb,var(--plivo-ink) 8%,transparent)!important;color:var(--plivo-blue-text)!important}#sidebar a.nav-anchor,#sidebar ul li a,#sidebar ul li button{padding-top:3px!important;padding-bottom:3px!important;font-size:13px!important;line-height:20px!important}#sidebar a.nav-anchor>div:first-child{padding:2px!important;background:0 0!important;box-shadow:none!important;border:0!important;color:inherit!important}#sidebar a.nav-anchor>div:first-child svg{color:inherit!important;background-color:currentColor!important}#sidebar a.nav-anchor:hover>div:first-child svg{background-color:currentColor!important}#sidebar .sidebar-group-header{margin-bottom:.4rem!important}#sidebar div:has(>.sidebar-group-header){margin-top:1rem!important}#table-of-contents a{padding-top:2px!important;padding-bottom:2px!important;font-size:13px!important;line-height:20px!important}#table-of-contents a[aria-current=location]{color:rgba(15,16,20,.95)!important;font-weight:700!important;text-shadow:none!important}.dark #table-of-contents a[aria-current=location]{color:rgba(255,255,255,.92)!important}#sidebar a:focus-visible,#sidebar button:focus-visible,#table-of-contents a:focus-visible,.card:focus-visible,.mdx-content a[href]:focus-visible,.nav-tabs-item:focus-visible,a.button:focus-visible,a[role=button]:focus-visible{outline:2px solid var(--plivo-blue-text)!important;outline-offset:2px!important;border-radius:2px}.dcon-frame::before{content:'';position:absolute;inset:-10px;pointer-events:none;opacity:.55;background-repeat:no-repeat;background-image:linear-gradient(var(--plivo-ink),var(--plivo-ink)),linear-gradient(var(--plivo-ink),var(--plivo-ink)),linear-gradient(var(--plivo-ink),var(--plivo-ink)),linear-gradient(var(--plivo-ink),var(--plivo-ink)),linear-gradient(var(--plivo-ink),var(--plivo-ink)),linear-gradient(var(--plivo-ink),var(--plivo-ink)),linear-gradient(var(--plivo-ink),var(--plivo-ink)),linear-gradient(var(--plivo-ink),var(--plivo-ink));background-size:12px 1px,1px 12px,12px 1px,1px 12px,12px 1px,1px 12px,12px 1px,1px 12px;background-position:left top,left top,right top,right top,left bottom,left bottom,right bottom,right bottom}.dcon{--dcon-ph:64%;position:relative;overflow:hidden;border:1px solid rgba(0,0,0,.14);border-radius:2px;background:#fff;box-shadow:0 1px 0 rgba(0,0,0,.02),0 30px 60px -30px rgba(0,0,0,.28);font-family:var(--plivo-font-mono)}.dark .dcon{border-color:rgba(255,255,255,.16);background:#0d0f16;box-shadow:0 1px 0 rgba(0,0,0,.2),0 30px 60px -30px rgba(0,0,0,.6)}.dcon__bar{display:flex;align-items:center;gap:8px;height:30px;padding:0 10px;border-bottom:1px solid rgba(0,0,0,.1);font-size:10px;letter-spacing:.08em;color:rgba(0,0,0,.55)}.dark .dcon__bar{color:rgba(255,255,255,.6)}.dcon__bar-name{flex:1}.dcon__bar-tag{color:var(--plivo-blue-text)}.dcon__led{position:relative;flex:none;width:6px;height:6px;border-radius:1px;background:var(--plivo-blue);box-shadow:0 0 6px rgba(50,61,254,.5)}.dcon__led::after{content:'';position:absolute;inset:-1px;border:1px solid var(--plivo-blue);border-radius:1px;animation:dcon-ping 2.4s cubic-bezier(0,0,.2,1) infinite}.dcon__scope{position:relative;height:120px;overflow:hidden;border-bottom:1px solid rgba(0,0,0,.1)}.dark .dcon__bar,.dark .dcon__scope{border-color:rgba(255,255,255,.12)}.dcon__scope::after,.dcon__scope::before{content:'';position:absolute;left:0;right:0}.dcon__scope::before{top:57px;height:1px;background:rgba(0,0,0,.1)}.dark .dcon__scope::before{background:rgba(255,255,255,.1)}.dcon__scope::after{bottom:0;height:14px;border-top:1px solid rgba(0,0,0,.08);background-image:repeating-linear-gradient(to right,rgba(0,0,0,.35) 0 1px,transparent 1px 28px),repeating-linear-gradient(to right,rgba(0,0,0,.16) 0 1px,transparent 1px 7px);background-size:100% 6px,100% 3px;background-repeat:no-repeat;background-position:0 0,0 0}.dark .dcon__scope::after{border-color:rgba(255,255,255,.08);background-image:repeating-linear-gradient(to right,rgba(255,255,255,.35) 0 1px,transparent 1px 28px),repeating-linear-gradient(to right,rgba(255,255,255,.16) 0 1px,transparent 1px 7px)}.dcon__litmask,.dcon__trace{position:absolute;left:0;top:8px;bottom:14px}.dcon__trace{width:calc(100% + 240px);background-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20240%2056'%3E%3Cg%20fill='%23111114'%20fill-opacity='0.32'%3E%3Crect%20x='0'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='3'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='6'%20y='18'%20width='2'%20height='20'/%3E%3Crect%20x='9'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='12'%20y='25'%20width='2'%20height='6'/%3E%3Crect%20x='15'%20y='12'%20width='2'%20height='32'/%3E%3Crect%20x='18'%20y='4'%20width='2'%20height='48'/%3E%3Crect%20x='21'%20y='3'%20width='2'%20height='50'/%3E%3Crect%20x='24'%20y='11'%20width='2'%20height='34'/%3E%3Crect%20x='27'%20y='23'%20width='2'%20height='10'/%3E%3Crect%20x='30'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='33'%20y='18'%20width='2'%20height='20'/%3E%3Crect%20x='36'%20y='20'%20width='2'%20height='16'/%3E%3Crect%20x='39'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='42'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='45'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='48'%20y='21'%20width='2'%20height='14'/%3E%3Crect%20x='51'%20y='11'%20width='2'%20height='34'/%3E%3Crect%20x='54'%20y='5'%20width='2'%20height='46'/%3E%3Crect%20x='57'%20y='6'%20width='2'%20height='44'/%3E%3Crect%20x='60'%20y='16'%20width='2'%20height='24'/%3E%3Crect%20x='63'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='66'%20y='14'%20width='2'%20height='28'/%3E%3Crect%20x='69'%20y='10'%20width='2'%20height='36'/%3E%3Crect%20x='72'%20y='13'%20width='2'%20height='30'/%3E%3Crect%20x='75'%20y='20'%20width='2'%20height='16'/%3E%3Crect%20x='78'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='81'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='84'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='87'%20y='15'%20width='2'%20height='26'/%3E%3Crect%20x='90'%20y='11'%20width='2'%20height='34'/%3E%3Crect%20x='93'%20y='14'%20width='2'%20height='28'/%3E%3Crect%20x='96'%20y='24'%20width='2'%20height='8'/%3E%3Crect%20x='99'%20y='18'%20width='2'%20height='20'/%3E%3Crect%20x='102'%20y='7'%20width='2'%20height='42'/%3E%3Crect%20x='105'%20y='4'%20width='2'%20height='48'/%3E%3Crect%20x='108'%20y='9'%20width='2'%20height='38'/%3E%3Crect%20x='111'%20y='19'%20width='2'%20height='18'/%3E%3Crect%20x='114'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='117'%20y='25'%20width='2'%20height='6'/%3E%3Crect%20x='120'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='123'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='126'%20y='18'%20width='2'%20height='20'/%3E%3Crect%20x='129'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='132'%20y='25'%20width='2'%20height='6'/%3E%3Crect%20x='135'%20y='12'%20width='2'%20height='32'/%3E%3Crect%20x='138'%20y='4'%20width='2'%20height='48'/%3E%3Crect%20x='141'%20y='3'%20width='2'%20height='50'/%3E%3Crect%20x='144'%20y='11'%20width='2'%20height='34'/%3E%3Crect%20x='147'%20y='23'%20width='2'%20height='10'/%3E%3Crect%20x='150'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='153'%20y='18'%20width='2'%20height='20'/%3E%3Crect%20x='156'%20y='20'%20width='2'%20height='16'/%3E%3Crect%20x='159'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='162'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='165'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='168'%20y='21'%20width='2'%20height='14'/%3E%3Crect%20x='171'%20y='11'%20width='2'%20height='34'/%3E%3Crect%20x='174'%20y='5'%20width='2'%20height='46'/%3E%3Crect%20x='177'%20y='6'%20width='2'%20height='44'/%3E%3Crect%20x='180'%20y='16'%20width='2'%20height='24'/%3E%3Crect%20x='183'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='186'%20y='14'%20width='2'%20height='28'/%3E%3Crect%20x='189'%20y='10'%20width='2'%20height='36'/%3E%3Crect%20x='192'%20y='13'%20width='2'%20height='30'/%3E%3Crect%20x='195'%20y='20'%20width='2'%20height='16'/%3E%3Crect%20x='198'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='201'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='204'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='207'%20y='15'%20width='2'%20height='26'/%3E%3Crect%20x='210'%20y='11'%20width='2'%20height='34'/%3E%3Crect%20x='213'%20y='14'%20width='2'%20height='28'/%3E%3Crect%20x='216'%20y='24'%20width='2'%20height='8'/%3E%3Crect%20x='219'%20y='18'%20width='2'%20height='20'/%3E%3Crect%20x='222'%20y='7'%20width='2'%20height='42'/%3E%3Crect%20x='225'%20y='4'%20width='2'%20height='48'/%3E%3Crect%20x='228'%20y='9'%20width='2'%20height='38'/%3E%3Crect%20x='231'%20y='19'%20width='2'%20height='18'/%3E%3Crect%20x='234'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='237'%20y='25'%20width='2'%20height='6'/%3E%3C/g%3E%3C/svg%3E\");background-repeat:repeat-x;background-position:0 50%;background-size:240px 56px;animation:dcon-scroll 16s linear infinite}.dark .dcon__trace{background-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20240%2056'%3E%3Cg%20fill='%23ffffff'%20fill-opacity='0.35'%3E%3Crect%20x='0'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='3'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='6'%20y='18'%20width='2'%20height='20'/%3E%3Crect%20x='9'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='12'%20y='25'%20width='2'%20height='6'/%3E%3Crect%20x='15'%20y='12'%20width='2'%20height='32'/%3E%3Crect%20x='18'%20y='4'%20width='2'%20height='48'/%3E%3Crect%20x='21'%20y='3'%20width='2'%20height='50'/%3E%3Crect%20x='24'%20y='11'%20width='2'%20height='34'/%3E%3Crect%20x='27'%20y='23'%20width='2'%20height='10'/%3E%3Crect%20x='30'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='33'%20y='18'%20width='2'%20height='20'/%3E%3Crect%20x='36'%20y='20'%20width='2'%20height='16'/%3E%3Crect%20x='39'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='42'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='45'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='48'%20y='21'%20width='2'%20height='14'/%3E%3Crect%20x='51'%20y='11'%20width='2'%20height='34'/%3E%3Crect%20x='54'%20y='5'%20width='2'%20height='46'/%3E%3Crect%20x='57'%20y='6'%20width='2'%20height='44'/%3E%3Crect%20x='60'%20y='16'%20width='2'%20height='24'/%3E%3Crect%20x='63'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='66'%20y='14'%20width='2'%20height='28'/%3E%3Crect%20x='69'%20y='10'%20width='2'%20height='36'/%3E%3Crect%20x='72'%20y='13'%20width='2'%20height='30'/%3E%3Crect%20x='75'%20y='20'%20width='2'%20height='16'/%3E%3Crect%20x='78'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='81'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='84'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='87'%20y='15'%20width='2'%20height='26'/%3E%3Crect%20x='90'%20y='11'%20width='2'%20height='34'/%3E%3Crect%20x='93'%20y='14'%20width='2'%20height='28'/%3E%3Crect%20x='96'%20y='24'%20width='2'%20height='8'/%3E%3Crect%20x='99'%20y='18'%20width='2'%20height='20'/%3E%3Crect%20x='102'%20y='7'%20width='2'%20height='42'/%3E%3Crect%20x='105'%20y='4'%20width='2'%20height='48'/%3E%3Crect%20x='108'%20y='9'%20width='2'%20height='38'/%3E%3Crect%20x='111'%20y='19'%20width='2'%20height='18'/%3E%3Crect%20x='114'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='117'%20y='25'%20width='2'%20height='6'/%3E%3Crect%20x='120'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='123'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='126'%20y='18'%20width='2'%20height='20'/%3E%3Crect%20x='129'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='132'%20y='25'%20width='2'%20height='6'/%3E%3Crect%20x='135'%20y='12'%20width='2'%20height='32'/%3E%3Crect%20x='138'%20y='4'%20width='2'%20height='48'/%3E%3Crect%20x='141'%20y='3'%20width='2'%20height='50'/%3E%3Crect%20x='144'%20y='11'%20width='2'%20height='34'/%3E%3Crect%20x='147'%20y='23'%20width='2'%20height='10'/%3E%3Crect%20x='150'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='153'%20y='18'%20width='2'%20height='20'/%3E%3Crect%20x='156'%20y='20'%20width='2'%20height='16'/%3E%3Crect%20x='159'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='162'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='165'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='168'%20y='21'%20width='2'%20height='14'/%3E%3Crect%20x='171'%20y='11'%20width='2'%20height='34'/%3E%3Crect%20x='174'%20y='5'%20width='2'%20height='46'/%3E%3Crect%20x='177'%20y='6'%20width='2'%20height='44'/%3E%3Crect%20x='180'%20y='16'%20width='2'%20height='24'/%3E%3Crect%20x='183'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='186'%20y='14'%20width='2'%20height='28'/%3E%3Crect%20x='189'%20y='10'%20width='2'%20height='36'/%3E%3Crect%20x='192'%20y='13'%20width='2'%20height='30'/%3E%3Crect%20x='195'%20y='20'%20width='2'%20height='16'/%3E%3Crect%20x='198'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='201'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='204'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='207'%20y='15'%20width='2'%20height='26'/%3E%3Crect%20x='210'%20y='11'%20width='2'%20height='34'/%3E%3Crect%20x='213'%20y='14'%20width='2'%20height='28'/%3E%3Crect%20x='216'%20y='24'%20width='2'%20height='8'/%3E%3Crect%20x='219'%20y='18'%20width='2'%20height='20'/%3E%3Crect%20x='222'%20y='7'%20width='2'%20height='42'/%3E%3Crect%20x='225'%20y='4'%20width='2'%20height='48'/%3E%3Crect%20x='228'%20y='9'%20width='2'%20height='38'/%3E%3Crect%20x='231'%20y='19'%20width='2'%20height='18'/%3E%3Crect%20x='234'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='237'%20y='25'%20width='2'%20height='6'/%3E%3C/g%3E%3C/svg%3E\")}.dcon__litmask{width:var(--dcon-ph);overflow:hidden}.dcon__litmask .dcon__trace{top:0;bottom:0}.dcon__trace.dcon__trace--lit{background-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20240%2056'%3E%3Cg%20fill='%23323dfe'%20fill-opacity='0.95'%3E%3Crect%20x='0'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='3'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='6'%20y='18'%20width='2'%20height='20'/%3E%3Crect%20x='9'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='12'%20y='25'%20width='2'%20height='6'/%3E%3Crect%20x='15'%20y='12'%20width='2'%20height='32'/%3E%3Crect%20x='18'%20y='4'%20width='2'%20height='48'/%3E%3Crect%20x='21'%20y='3'%20width='2'%20height='50'/%3E%3Crect%20x='24'%20y='11'%20width='2'%20height='34'/%3E%3Crect%20x='27'%20y='23'%20width='2'%20height='10'/%3E%3Crect%20x='30'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='33'%20y='18'%20width='2'%20height='20'/%3E%3Crect%20x='36'%20y='20'%20width='2'%20height='16'/%3E%3Crect%20x='39'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='42'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='45'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='48'%20y='21'%20width='2'%20height='14'/%3E%3Crect%20x='51'%20y='11'%20width='2'%20height='34'/%3E%3Crect%20x='54'%20y='5'%20width='2'%20height='46'/%3E%3Crect%20x='57'%20y='6'%20width='2'%20height='44'/%3E%3Crect%20x='60'%20y='16'%20width='2'%20height='24'/%3E%3Crect%20x='63'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='66'%20y='14'%20width='2'%20height='28'/%3E%3Crect%20x='69'%20y='10'%20width='2'%20height='36'/%3E%3Crect%20x='72'%20y='13'%20width='2'%20height='30'/%3E%3Crect%20x='75'%20y='20'%20width='2'%20height='16'/%3E%3Crect%20x='78'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='81'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='84'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='87'%20y='15'%20width='2'%20height='26'/%3E%3Crect%20x='90'%20y='11'%20width='2'%20height='34'/%3E%3Crect%20x='93'%20y='14'%20width='2'%20height='28'/%3E%3Crect%20x='96'%20y='24'%20width='2'%20height='8'/%3E%3Crect%20x='99'%20y='18'%20width='2'%20height='20'/%3E%3Crect%20x='102'%20y='7'%20width='2'%20height='42'/%3E%3Crect%20x='105'%20y='4'%20width='2'%20height='48'/%3E%3Crect%20x='108'%20y='9'%20width='2'%20height='38'/%3E%3Crect%20x='111'%20y='19'%20width='2'%20height='18'/%3E%3Crect%20x='114'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='117'%20y='25'%20width='2'%20height='6'/%3E%3Crect%20x='120'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='123'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='126'%20y='18'%20width='2'%20height='20'/%3E%3Crect%20x='129'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='132'%20y='25'%20width='2'%20height='6'/%3E%3Crect%20x='135'%20y='12'%20width='2'%20height='32'/%3E%3Crect%20x='138'%20y='4'%20width='2'%20height='48'/%3E%3Crect%20x='141'%20y='3'%20width='2'%20height='50'/%3E%3Crect%20x='144'%20y='11'%20width='2'%20height='34'/%3E%3Crect%20x='147'%20y='23'%20width='2'%20height='10'/%3E%3Crect%20x='150'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='153'%20y='18'%20width='2'%20height='20'/%3E%3Crect%20x='156'%20y='20'%20width='2'%20height='16'/%3E%3Crect%20x='159'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='162'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='165'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='168'%20y='21'%20width='2'%20height='14'/%3E%3Crect%20x='171'%20y='11'%20width='2'%20height='34'/%3E%3Crect%20x='174'%20y='5'%20width='2'%20height='46'/%3E%3Crect%20x='177'%20y='6'%20width='2'%20height='44'/%3E%3Crect%20x='180'%20y='16'%20width='2'%20height='24'/%3E%3Crect%20x='183'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='186'%20y='14'%20width='2'%20height='28'/%3E%3Crect%20x='189'%20y='10'%20width='2'%20height='36'/%3E%3Crect%20x='192'%20y='13'%20width='2'%20height='30'/%3E%3Crect%20x='195'%20y='20'%20width='2'%20height='16'/%3E%3Crect%20x='198'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='201'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='204'%20y='22'%20width='2'%20height='12'/%3E%3Crect%20x='207'%20y='15'%20width='2'%20height='26'/%3E%3Crect%20x='210'%20y='11'%20width='2'%20height='34'/%3E%3Crect%20x='213'%20y='14'%20width='2'%20height='28'/%3E%3Crect%20x='216'%20y='24'%20width='2'%20height='8'/%3E%3Crect%20x='219'%20y='18'%20width='2'%20height='20'/%3E%3Crect%20x='222'%20y='7'%20width='2'%20height='42'/%3E%3Crect%20x='225'%20y='4'%20width='2'%20height='48'/%3E%3Crect%20x='228'%20y='9'%20width='2'%20height='38'/%3E%3Crect%20x='231'%20y='19'%20width='2'%20height='18'/%3E%3Crect%20x='234'%20y='26'%20width='2'%20height='4'/%3E%3Crect%20x='237'%20y='25'%20width='2'%20height='6'/%3E%3C/g%3E%3C/svg%3E\")}.dcon__playhead{position:absolute;left:var(--dcon-ph);top:4px;bottom:14px;width:1px;background:var(--plivo-blue)}.dcon__playhead::before{content:'';position:absolute;top:-2px;left:-2px;width:5px;height:5px;border-radius:1px;background:inherit}.dcon__foot{display:flex;justify-content:space-between;align-items:center;height:24px;padding:0 10px;border-top:1px solid rgba(0,0,0,.1);font-size:10px;letter-spacing:.08em;color:rgba(0,0,0,.55);font-variant-numeric:tabular-nums}.dark .dcon__foot{border-color:rgba(255,255,255,.12);color:rgba(255,255,255,.6)}.dcon__foot-v{color:rgba(0,0,0,.6)}.dark .dcon__foot-v{color:rgba(255,255,255,.65)}@media (prefers-reduced-motion:reduce){.dcon__trace{animation:none}.dcon__led::after{display:none}}#content-container>span[class*=\"h-[64rem]\"]{display:none!important}*{scrollbar-width:thin;scrollbar-color:rgba(120,124,140,.35) transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:rgba(120,124,140,.32);border-radius:9999px}::-webkit-scrollbar-thumb:hover{background:rgba(120,124,140,.55)}::-webkit-scrollbar-corner{background:0 0}.dark *{scrollbar-color:rgba(180,186,204,.24) transparent}.dark ::-webkit-scrollbar-thumb{background:rgba(180,186,204,.22)}.dark ::-webkit-scrollbar-thumb:hover{background:rgba(180,186,204,.4)}#integrately-widget{width:40rem!important;margin:2rem auto!important;max-width:100%!important}:root{--sipflow-surface:#f8f8fa;--sipflow-node:#ffffff;--sipflow-border:#e3e4e8;--sipflow-border-strong:#c8cace;--sipflow-text:#09090b;--sipflow-muted:#67676f;--sipflow-accent-text:var(--plivo-blue-text)}.dark{--sipflow-surface:#111317;--sipflow-node:#0a0c0f;--sipflow-border:#272b38;--sipflow-border-strong:#40444f;--sipflow-text:#f4f4f5;--sipflow-muted:#a0a0a7}.sipflow{margin:1.75rem 0;border:1px solid var(--sipflow-border);background:var(--sipflow-surface);overflow:hidden;container-type:inline-size}.sipflow__head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.5rem .75rem;border-bottom:1px solid var(--sipflow-border);font-family:var(--plivo-font-mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--sipflow-muted)}.sipflow__head-right{display:inline-flex;align-items:center;gap:.4rem}.sipflow__led{width:5px;height:5px;flex:none;background:var(--plivo-blue);border-radius:1px!important}.sipflow .sipflow__body>li,.sipflow__body{margin:0!important;list-style:none!important}.sipflow__body{padding:1.25rem .75rem!important;display:flex;flex-direction:column}.sipflow .sipflow__body>li{display:contents;padding:0!important}.sipflow__body>li::marker{content:''}.sipflow__node,.sipflow__node-body{display:flex;align-items:center;min-width:0}.sipflow__node{flex:none;width:100%;max-width:26rem;margin:0 auto;justify-content:center;gap:.75rem;padding:.85rem 1rem;background:var(--sipflow-node);border:1px solid var(--sipflow-border-strong)}.sipflow__node-body{flex-direction:column;text-align:center;gap:.2rem}.sipflow__title{font-family:var(--plivo-font-mono);font-size:13px;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--sipflow-text)}.sipflow__sub{font-size:12px;line-height:1.5;color:var(--sipflow-muted)}.sipflow__chips{display:flex;flex-wrap:wrap;justify-content:center;gap:.3rem;margin-top:.4rem}.sipflow__chip{padding:.15rem .4rem;font-family:var(--plivo-font-mono);font-size:10px;letter-spacing:.06em;color:var(--sipflow-muted);border:1px solid var(--sipflow-border)}.sipflow__link{flex:none;position:relative;display:flex;flex-direction:column;align-items:center;padding:.4rem 0}.sipflow__rail{flex:none;width:1px;height:2.25rem;background:var(--sipflow-border-strong)}.sipflow__arrow{flex:none;width:6px;height:6px;margin:-5px 0 0;border-right:1px solid var(--sipflow-border-strong);border-bottom:1px solid var(--sipflow-border-strong);border-radius:0!important;transform:rotate(45deg)}.sipflow__arrow--back{margin:0 0 -5px;transform:rotate(225deg)}.sipflow__edge-label{position:absolute;top:50%;left:50%;margin-left:.6rem;transform:translateY(-50%);white-space:nowrap;font-family:var(--plivo-font-mono);font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.1em;color:var(--sipflow-accent-text)}.sipflow__link--bi .sipflow__rail{height:3rem}.sipflow__link--bi .sipflow__edge-label{transform:translateY(-150%)}.sipflow__edge-label--return{color:var(--sipflow-muted)}.sipflow__link--bi .sipflow__edge-label--return{transform:translateY(50%)}@container (min-width: 38rem){.sipflow:not(.sipflow--vertical) .sipflow__body{flex-direction:row;align-items:stretch;padding:1.5rem 1rem!important}.sipflow:not(.sipflow--vertical) .sipflow__node{flex:1 1 0;width:auto;max-width:none;margin:0}.sipflow:not(.sipflow--vertical) .sipflow__link{flex:0 0 5.5rem;flex-direction:row;align-items:center;padding:0 .35rem}.sipflow:not(.sipflow--vertical) .sipflow__link--bi .sipflow__rail,.sipflow:not(.sipflow--vertical) .sipflow__rail{flex:1;width:auto;height:1px}.sipflow:not(.sipflow--vertical) .sipflow__arrow{margin:0 0 0 -5px;transform:rotate(-45deg)}.sipflow:not(.sipflow--vertical) .sipflow__arrow--back{margin:0 -5px 0 0;transform:rotate(135deg)}.sipflow:not(.sipflow--vertical) .sipflow__edge-label,.sipflow:not(.sipflow--vertical) .sipflow__link--bi .sipflow__edge-label{top:auto;bottom:calc(50% + .5rem);left:50%;margin-left:0;transform:translateX(-50%)}.sipflow:not(.sipflow--vertical) .sipflow__edge-label--return,.sipflow:not(.sipflow--vertical) .sipflow__link--bi .sipflow__edge-label--return{top:calc(50% + .5rem);bottom:auto;transform:translateX(-50%)}}.alert,.notice-box{margin:1.25rem 0;padding:.75rem 1rem;border:1px solid color-mix(in srgb,var(--plivo-ink) 28%,transparent);border-left:2px solid var(--plivo-blue);background:color-mix(in srgb,var(--plivo-ink) 4%,transparent);font-size:.875rem;line-height:1.6}.alert strong:first-child,.notice-box strong:first-child{color:var(--plivo-blue-text)}#sidebar a.nav-anchor{margin-bottom:1px!important}.mdx-content h3,.mdx-content hr{margin-top:1.75rem!important;margin-bottom:1.75rem!important}.mdx-content h2{margin-top:2rem!important;margin-bottom:.75rem!important}.mdx-content h3{margin-bottom:.625rem!important}.mdx-content .code-block{margin-top:1rem!important;margin-bottom:1.25rem!important}.mdx-content li{margin-top:.25rem!important;margin-bottom:.25rem!important}.mdx-content ol,.mdx-content ul{margin-bottom:1rem!important}"}],"page":{"pagePath":"voice/use-cases/voice-notification","slug":"/voice/use-cases/voice-notification","pageMetadata":{"title":"Voice Notifications","sidebarTitle":"Voice Notification","description":"Send audio notifications via voice calls with text-to-speech or recordings","href":"/voice/use-cases/voice-notification"},"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: \"Send audio notifications via voice calls with text-to-speech or recordings\"\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{jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Frame,Heading,Note,OptimizedImage,Tab,Tabs}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);return _jsxs(Tabs,{children:[_jsxs(Tab,{title:`Node`,id:`node`,\"data-child-tab-ids\":`[\"using-xml\"]`,\"data-child-heading-ids\":`[\"overview\",\"how-it-works\",\"prerequisites\",\"create-a-voice-notification-application-in-node-js\",\"test\"]`,children:[_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),_jsx(_components.p,{children:`This guide shows how to send audio notifications using voice calls. You can play recorded audio when the call recipient answers or use text-to-speech, as we show here, combining static text with dynamic information that Plivo gets from a variable.`}),_jsx(_components.p,{children:`You can use voice notification for use cases such as:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Order notification`}),`\n`,_jsx(_components.li,{children:`Booking status`}),`\n`,_jsx(_components.li,{children:`Delivery status`}),`\n`,_jsx(_components.li,{children:`Flight cancellation/rescheduling`}),`\n`,_jsx(_components.li,{children:`Two-factor authentication/one-time password`}),`\n`,_jsx(_components.li,{children:`New offer notification`}),`\n`,_jsx(_components.li,{children:`Account balance notification`}),`\n`]}),_jsx(_components.p,{children:`Implement voice notification either by using our PHLO visual workflow builder or our APIs and XML documents. Follow the instructions in one of the tabs below.`}),_jsx(Tabs,{children:_jsxs(Tab,{title:`Using XML`,id:`using-xml`,\"data-child-heading-ids\":`[\"how-it-works\",\"prerequisites\",\"create-a-voice-notification-application-in-node-js\",\"test\"]`,children:[_jsx(_components.p,{children:`Here’s how to use Plivo APIs and XML to implement voice notifications.`}),_jsx(Heading,{level:`2`,id:`how-it-works`,children:`How it works`}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=f8b62e42991d9fd92d93eab071cb4124`,alt:`Outbound Call Flow`,\"data-og-width\":`1448`,width:`1448`,\"data-og-height\":`774`,height:`774`,\"data-path\":`images/outbound-calls.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=280\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=a2b4fd69ee3741644c19c3adb17151c5 280w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=560\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=74b27ba4a185426fc85941aa7d2660e2 560w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=840\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=958f53b22be768f554048056338e7e79 840w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=1100\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=e7bcafb51fac4505992d72a0deec1748 1100w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=1650\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=23697dbd8c51e8b014715e08c9beb3f7 1650w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=2500\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=48a3a2ccb39e9ecd7664aae9795383a8 2500w`})}),_jsxs(_components.p,{children:[`Plivo requests an answer URL when the call is answered (step 4) and expects the file at that address to hold a valid XML response from the application with instructions on how to handle the call. To see how this works, you can use `,_jsx(_components.a,{href:`https://s3.amazonaws.com/static.plivo.com/notification.xml`,children:`https://s3.amazonaws.com/static.plivo.com/notification.xml`}),` as an answer URL to test your first outgoing call. The file contains this XML code:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`xml`,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:`xml`,children:_jsxs(_components.code,{language:`xml`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Speak`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Congratulations, your order was successfully placed`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Speak`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`This code instructs Plivo to say, “Congratulations, your order was successfully placed” to the call recipient. You can find the entire list of valid Plivo XML verbs in our `,_jsx(_components.a,{href:`/voice/xml/overview/`,children:`XML Reference`}),` documentation.`]}),_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),_jsxs(_components.p,{children:[`To get started, you need a Plivo account — `,_jsx(_components.a,{href:`https://cx.plivo.com/signup`,children:`sign up`}),` with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to set up a Node.js development environment.`]}),_jsx(Heading,{level:`2`,id:`create-a-voice-notification-application-in-node-js`,children:`Create a voice notification application in Node.js`}),_jsxs(_components.p,{children:[`Create a file called `,_jsx(_components.code,{children:`Makecall.js`}),` and paste into it this code.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`19`,language:`javascript`,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:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`19`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`var`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` plivo`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` require`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'plivo'`}),_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:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` main`}),_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:` 'use strict'`}),_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\":`#569CD6`},children:` var`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` plivo`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cauth_id>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cauth_token>\"`}),_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\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`calls`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`create`}),_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:` \"\u003ccaller_id>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// from`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\u003cdestination_number>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// to`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://s3.amazonaws.com/static.plivo.com/notification.xml\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// answer url`})]}),`\n`,_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:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` answerMethod:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"GET\"`}),_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`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ).`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`then`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`response`}),_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\":`#9CDCFE`},children:` console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`response`}),_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:` }, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_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\":`#9CDCFE`},children:` console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_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`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`})();`})}),`\n`]})})}),_jsxs(_components.p,{children:[`Replace the auth placeholders with your authentication credentials from the `,_jsx(_components.a,{href:`https://cx.plivo.com/home`,children:`Plivo console`}),`. Replace the phone number placeholders with actual phone numbers in `,_jsx(_components.a,{href:`https://en.wikipedia.org/wiki/E.164`,children:`E.164 format`}),` (for example, +12025551234).`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(`strong`,{children:`Note:`}),`\nWe recommend that you store your credentials in the `,_jsx(_components.code,{children:`auth_id`}),` and `,_jsx(_components.code,{children:`auth_token`}),` environment variables, to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use `,_jsx(_components.code,{children:`process.env`}),` to store environment variables and fetch them while initializing the client.`]})}),_jsx(Heading,{level:`2`,id:`test`,children:`Test`}),_jsx(_components.p,{children:`Save the file and run it.`}),_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:`$`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` node`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Makecall.js`})]}),`\n`]})})})]})})]}),_jsxs(Tab,{title:`Ruby`,id:`ruby`,\"data-child-tab-ids\":`[\"using-xml-2\"]`,\"data-child-heading-ids\":`[\"overview-2\",\"how-it-works-2\",\"prerequisites-2\",\"create-a-voice-notification-application-in-ruby\",\"test-2\"]`,children:[_jsx(Heading,{level:`2`,id:`overview-2`,children:`Overview`}),_jsx(_components.p,{children:`This guide shows how to send audio notifications using voice calls. You can play recorded audio when the call recipient answers or use text-to-speech, as we show here, combining static text with dynamic information that Plivo gets from a variable.`}),_jsx(_components.p,{children:`You can use voice notification for use cases such as:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Order notification`}),`\n`,_jsx(_components.li,{children:`Booking status`}),`\n`,_jsx(_components.li,{children:`Delivery status`}),`\n`,_jsx(_components.li,{children:`Flight cancellation/rescheduling`}),`\n`,_jsx(_components.li,{children:`Two-factor authentication/one-time password`}),`\n`,_jsx(_components.li,{children:`New offer notification`}),`\n`,_jsx(_components.li,{children:`Account balance notification`}),`\n`]}),_jsx(_components.p,{children:`Implement voice notification either by using our PHLO visual workflow builder or our APIs and XML documents. Follow the instructions in one of the tabs below.`}),_jsx(Tabs,{children:_jsxs(Tab,{title:`Using XML`,id:`using-xml-2`,\"data-child-heading-ids\":`[\"how-it-works-2\",\"prerequisites-2\",\"create-a-voice-notification-application-in-ruby\",\"test-2\"]`,children:[_jsx(_components.p,{children:`Here’s how to use Plivo APIs and XML to implement voice notifications.`}),_jsx(Heading,{level:`2`,id:`how-it-works-2`,children:`How it works`}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=f8b62e42991d9fd92d93eab071cb4124`,alt:`Outbound Call Flow`,\"data-og-width\":`1448`,width:`1448`,\"data-og-height\":`774`,height:`774`,\"data-path\":`images/outbound-calls.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=280\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=a2b4fd69ee3741644c19c3adb17151c5 280w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=560\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=74b27ba4a185426fc85941aa7d2660e2 560w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=840\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=958f53b22be768f554048056338e7e79 840w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=1100\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=e7bcafb51fac4505992d72a0deec1748 1100w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=1650\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=23697dbd8c51e8b014715e08c9beb3f7 1650w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=2500\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=48a3a2ccb39e9ecd7664aae9795383a8 2500w`})}),_jsxs(_components.p,{children:[`Plivo requests an answer URL when the call is answered (step 4) and expects the file at that address to hold a valid XML response from the application with instructions on how to handle the call. To see how this works, you can use `,_jsx(_components.a,{href:`https://s3.amazonaws.com/static.plivo.com/notification.xml`,children:`https://s3.amazonaws.com/static.plivo.com/notification.xml`}),` as an answer URL to test your first outgoing call. The file contains this XML code:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`xml`,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:`xml`,children:_jsxs(_components.code,{language:`xml`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Speak`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Congratulations, your order was successfully placed`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Speak`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`This code instructs Plivo to say, “Congratulations, your order was successfully placed” to the call recipient. You can find the entire list of valid Plivo XML verbs in our `,_jsx(_components.a,{href:`/voice/xml/overview/`,children:`XML Reference`}),` documentation.`]}),_jsx(Heading,{level:`2`,id:`prerequisites-2`,children:`Prerequisites`}),_jsxs(_components.p,{children:[`To get started, you need a Plivo account — `,_jsx(_components.a,{href:`https://cx.plivo.com/signup`,children:`sign up`}),` with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to set up a Ruby development environment.`]}),_jsx(Heading,{level:`2`,id:`create-a-voice-notification-application-in-ruby`,children:`Create a voice notification application in Ruby`}),_jsxs(_components.p,{children:[`Create a file called `,_jsx(_components.code,{children:`make_call.rb`}),` and paste into it this code.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`18`,language:`ruby`,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:`ruby`,children:_jsxs(_components.code,{language:`ruby`,numberOfLines:`18`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`require`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'rubygems'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`require`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'plivo'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`include`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` Plivo`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`include`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` Plivo`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`::`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`Exceptions`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`api`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` RestClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`new`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cauth_id>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cauth_token>\"`}),_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:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`begin`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` api.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`calls`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`create`}),_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:` '\u003ccaller_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:` [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'\u003cdestination_number>'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'https://s3.amazonaws.com/static.plivo.com/notification.xml'`})}),`\n`,_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:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` puts`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` response`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`rescue`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` PlivoRESTError`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` => e`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` puts`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Exception: '`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` +`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` e.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`message`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`end`})}),`\n`]})})}),_jsxs(_components.p,{children:[`Replace the auth placeholders with your authentication credentials from the `,_jsx(_components.a,{href:`https://cx.plivo.com/home`,children:`Plivo console`}),`. Replace the phone number placeholders with actual phone numbers in `,_jsx(_components.a,{href:`https://en.wikipedia.org/wiki/E.164`,children:`E.164 format`}),` (for example, +12025551234).`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(`strong`,{children:`Note:`}),`\nWe recommend that you store your credentials in the `,_jsx(_components.code,{children:`auth_id`}),` and `,_jsx(_components.code,{children:`auth_token`}),` environment variables, to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use `,_jsx(_components.code,{children:`ENV`}),` to store environment variables and fetch them when initializing the client.`]})}),_jsx(Heading,{level:`2`,id:`test-2`,children:`Test`}),_jsx(_components.p,{children:`Save the file and run it.`}),_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:`$`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ruby`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` make_call.rb`})]}),`\n`]})})})]})})]}),_jsxs(Tab,{title:`Python`,id:`python`,\"data-child-tab-ids\":`[\"using-xml-3\"]`,\"data-child-heading-ids\":`[\"overview-3\",\"how-it-works-3\",\"prerequisites-3\",\"create-a-voice-notification-application-in-python\",\"test-3\"]`,children:[_jsx(Heading,{level:`2`,id:`overview-3`,children:`Overview`}),_jsx(_components.p,{children:`This guide shows how to send audio notifications using voice calls. You can play recorded audio when the call recipient answers or use text-to-speech, as we show here, combining static text with dynamic information that Plivo gets from a variable.`}),_jsx(_components.p,{children:`You can use voice notification for use cases such as:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Order notification`}),`\n`,_jsx(_components.li,{children:`Booking status`}),`\n`,_jsx(_components.li,{children:`Delivery status`}),`\n`,_jsx(_components.li,{children:`Flight cancellation/rescheduling`}),`\n`,_jsx(_components.li,{children:`Two-factor authentication/one-time password`}),`\n`,_jsx(_components.li,{children:`New offer notification`}),`\n`,_jsx(_components.li,{children:`Account balance notification`}),`\n`]}),_jsx(_components.p,{children:`Implement voice notification either by using our PHLO visual workflow builder or our APIs and XML documents. Follow the instructions in one of the tabs below.`}),_jsx(Tabs,{children:_jsxs(Tab,{title:`Using XML`,id:`using-xml-3`,\"data-child-heading-ids\":`[\"how-it-works-3\",\"prerequisites-3\",\"create-a-voice-notification-application-in-python\",\"test-3\"]`,children:[_jsx(_components.p,{children:`Here’s how to use Plivo APIs and XML to implement voice notifications.`}),_jsx(Heading,{level:`2`,id:`how-it-works-3`,children:`How it works`}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=f8b62e42991d9fd92d93eab071cb4124`,alt:`Outbound Call Flow`,\"data-og-width\":`1448`,width:`1448`,\"data-og-height\":`774`,height:`774`,\"data-path\":`images/outbound-calls.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=280\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=a2b4fd69ee3741644c19c3adb17151c5 280w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=560\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=74b27ba4a185426fc85941aa7d2660e2 560w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=840\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=958f53b22be768f554048056338e7e79 840w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=1100\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=e7bcafb51fac4505992d72a0deec1748 1100w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=1650\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=23697dbd8c51e8b014715e08c9beb3f7 1650w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=2500\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=48a3a2ccb39e9ecd7664aae9795383a8 2500w`})}),_jsxs(_components.p,{children:[`Plivo requests an answer URL when the call is answered (step 4) and expects the file at that address to hold a valid XML response from the application with instructions on how to handle the call. To see how this works, you can use `,_jsx(_components.a,{href:`https://s3.amazonaws.com/static.plivo.com/notification.xml`,children:`https://s3.amazonaws.com/static.plivo.com/notification.xml`}),` as an answer URL to test your first outgoing call. The file contains this XML code:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`xml`,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:`xml`,children:_jsxs(_components.code,{language:`xml`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Speak`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Congratulations, your order was successfully placed`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Speak`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`This code instructs Plivo to say, “Congratulations, your order was successfully placed” to the call recipient. You can find the entire list of valid Plivo XML verbs in our `,_jsx(_components.a,{href:`/voice/xml/overview/`,children:`XML Reference`}),` documentation.`]}),_jsx(Heading,{level:`2`,id:`prerequisites-3`,children:`Prerequisites`}),_jsxs(_components.p,{children:[`To get started, you need a Plivo account — `,_jsx(_components.a,{href:`https://cx.plivo.com/signup`,children:`sign up`}),` with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to set up a Python development environment.`]}),_jsx(Heading,{level:`2`,id:`create-a-voice-notification-application-in-python`,children:`Create a voice notification application in Python`}),_jsxs(_components.p,{children:[`Create a file called `,_jsx(_components.code,{children:`make_call.py`}),` and paste into it this code.`]}),_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:[_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:` plivo`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`client `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` plivo.RestClient(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'\u003cauth_id>'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'\u003cauth_token>'`}),_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:`response `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` client.calls.create(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` from_`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'\u003ccaller_id>'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` to_`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'\u003cdestination_number>'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` answer_url`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'https://s3.amazonaws.com/static.plivo.com/notification.xml'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` answer_method`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'GET'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, )`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(response)`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Replace the auth placeholders with your authentication credentials from the `,_jsx(_components.a,{href:`https://cx.plivo.com/home`,children:`Plivo console`}),`. Replace the phone number placeholders with actual phone numbers in `,_jsx(_components.a,{href:`https://en.wikipedia.org/wiki/E.164`,children:`E.164 format`}),` (for example, +12025551234).`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(`strong`,{children:`Note:`}),`\nWe recommend that you store your credentials in the `,_jsx(_components.code,{children:`auth_id`}),` and `,_jsx(_components.code,{children:`auth_token`}),` environment variables, to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use the os module (`,_jsx(_components.code,{children:`os.environ`}),`) to store environment variables and fetch them when initializing the client.`]})}),_jsx(Heading,{level:`2`,id:`test-3`,children:`Test`}),_jsx(_components.p,{children:`Save the file and run it.`}),_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:`$`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` python`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` make_call.py`})]}),`\n`]})})})]})})]}),_jsxs(Tab,{title:`PHP`,id:`php`,\"data-child-tab-ids\":`[\"using-xml-4\"]`,\"data-child-heading-ids\":`[\"overview-4\",\"how-it-works-4\",\"prerequisites-4\",\"create-a-voice-notification-application-in-php\",\"test-4\"]`,children:[_jsx(Heading,{level:`2`,id:`overview-4`,children:`Overview`}),_jsx(_components.p,{children:`This guide shows how to send audio notifications using voice calls. You can play recorded audio when the call recipient answers or use text-to-speech, as we show here, combining static text with dynamic information that Plivo gets from a variable.`}),_jsx(_components.p,{children:`You can use voice notification for use cases such as:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Order notification`}),`\n`,_jsx(_components.li,{children:`Booking status`}),`\n`,_jsx(_components.li,{children:`Delivery status`}),`\n`,_jsx(_components.li,{children:`Flight cancellation/rescheduling`}),`\n`,_jsx(_components.li,{children:`Two-factor authentication/one-time password`}),`\n`,_jsx(_components.li,{children:`New offer notification`}),`\n`,_jsx(_components.li,{children:`Account balance notification`}),`\n`]}),_jsx(_components.p,{children:`Implement voice notification either by using our PHLO visual workflow builder or our APIs and XML documents. Follow the instructions in one of the tabs below.`}),_jsx(Tabs,{children:_jsxs(Tab,{title:`Using XML`,id:`using-xml-4`,\"data-child-heading-ids\":`[\"how-it-works-4\",\"prerequisites-4\",\"create-a-voice-notification-application-in-php\",\"test-4\"]`,children:[_jsx(_components.p,{children:`Here’s how to use Plivo APIs and XML to implement voice notifications.`}),_jsx(Heading,{level:`2`,id:`how-it-works-4`,children:`How it works`}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=f8b62e42991d9fd92d93eab071cb4124`,alt:`Outbound Call Flow`,\"data-og-width\":`1448`,width:`1448`,\"data-og-height\":`774`,height:`774`,\"data-path\":`images/outbound-calls.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=280\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=a2b4fd69ee3741644c19c3adb17151c5 280w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=560\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=74b27ba4a185426fc85941aa7d2660e2 560w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=840\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=958f53b22be768f554048056338e7e79 840w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=1100\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=e7bcafb51fac4505992d72a0deec1748 1100w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=1650\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=23697dbd8c51e8b014715e08c9beb3f7 1650w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=2500\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=48a3a2ccb39e9ecd7664aae9795383a8 2500w`})}),_jsxs(_components.p,{children:[`Plivo requests an answer URL when the call is answered (step 4) and expects the file at that address to hold a valid XML response from the application with instructions on how to handle the call. To see how this works, you can use `,_jsx(_components.a,{href:`https://s3.amazonaws.com/static.plivo.com/notification.xml`,children:`https://s3.amazonaws.com/static.plivo.com/notification.xml`}),` as an answer URL to test your first outgoing call. The file contains this XML code:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`xml`,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:`xml`,children:_jsxs(_components.code,{language:`xml`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Speak`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Congratulations, your order was successfully placed`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Speak`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`This code instructs Plivo to say, “Congratulations, your order was successfully placed” to the call recipient. You can find the entire list of valid Plivo XML verbs in our `,_jsx(_components.a,{href:`/voice/xml/overview/`,children:`XML Reference`}),` documentation.`]}),_jsx(Heading,{level:`2`,id:`prerequisites-4`,children:`Prerequisites`}),_jsxs(_components.p,{children:[`To get started, you need a Plivo account — `,_jsx(_components.a,{href:`https://cx.plivo.com/signup`,children:`sign up`}),` with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to set up a PHP development environment.`]}),_jsx(Heading,{level:`2`,id:`create-a-voice-notification-application-in-php`,children:`Create a voice notification application in PHP`}),_jsxs(_components.p,{children:[`Create a file called `,_jsx(_components.code,{children:`MakeCall.php`}),` and paste into it this code:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`12`,language:`php`,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:`php`,children:_jsxs(_components.code,{language:`php`,numberOfLines:`12`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c?`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`php`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`require`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'vendor/autoload.php'`}),_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\":`#569CD6`},children:`use`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` Plivo\\\\`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`RestClient`}),_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:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$auth_id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\u003cauth_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\":`#9CDCFE`},children:`$auth_token`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\u003cauth_token>\"`}),_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\":`#9CDCFE`},children:`$p`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` RestClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$auth_id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$auth_token`}),_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:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $client`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`calls`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`create`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'\u003ccaller_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:` [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'\u003cdestination_number>'`}),_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:` 'https://s3.amazonaws.com/static.plivo.com/notification.xml'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`print_r`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Replace the auth placeholders with your authentication credentials from the `,_jsx(_components.a,{href:`https://cx.plivo.com/home`,children:`Plivo console`}),`. Replace the phone number placeholders with actual phone numbers in `,_jsx(_components.a,{href:`https://en.wikipedia.org/wiki/E.164`,children:`E.164 format`}),` (for example, +12025551234).`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(`strong`,{children:`Note:`}),`\nWe recommend that you store your credentials in the `,_jsx(_components.code,{children:`auth_id`}),` and `,_jsx(_components.code,{children:`auth_token`}),` environment variables, to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use the `,_jsx(_components.code,{children:`$_ENV`}),` or `,_jsx(_components.code,{children:`putenv/getenv`}),` functions to store environment variables and fetch them when initializing the client.`]})}),_jsx(Heading,{level:`2`,id:`test-4`,children:`Test`}),_jsx(_components.p,{children:`Save the file and run it.`}),_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:`$`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` php`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` MakeCall.php`})]}),`\n`]})})})]})})]}),_jsxs(Tab,{title:`.NET`,id:`net`,\"data-child-tab-ids\":`[\"using-xml-5\"]`,\"data-child-heading-ids\":`[\"overview-5\",\"how-it-works-5\",\"prerequisites-5\",\"create-a-voice-notification-application-in-c%23\",\"test-5\"]`,children:[_jsx(Heading,{level:`2`,id:`overview-5`,children:`Overview`}),_jsx(_components.p,{children:`This guide shows how to send audio notifications using voice calls. You can play recorded audio when the call recipient answers or use text-to-speech, as we show here, combining static text with dynamic information that Plivo gets from a variable.`}),_jsx(_components.p,{children:`You can use voice notification for use cases such as:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Order notification`}),`\n`,_jsx(_components.li,{children:`Booking status`}),`\n`,_jsx(_components.li,{children:`Delivery status`}),`\n`,_jsx(_components.li,{children:`Flight cancellation/rescheduling`}),`\n`,_jsx(_components.li,{children:`Two-factor authentication/one-time password`}),`\n`,_jsx(_components.li,{children:`New offer notification`}),`\n`,_jsx(_components.li,{children:`Account balance notification`}),`\n`]}),_jsx(_components.p,{children:`Implement voice notification either by using our PHLO visual workflow builder or our APIs and XML documents. Follow the instructions in one of the tabs below.`}),_jsx(Tabs,{children:_jsxs(Tab,{title:`Using XML`,id:`using-xml-5`,\"data-child-heading-ids\":`[\"how-it-works-5\",\"prerequisites-5\",\"create-a-voice-notification-application-in-c%23\",\"test-5\"]`,children:[_jsx(_components.p,{children:`Here’s how to use Plivo APIs and XML to implement voice notifications.`}),_jsx(Heading,{level:`2`,id:`how-it-works-5`,children:`How it works`}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=f8b62e42991d9fd92d93eab071cb4124`,alt:`Outbound Call Flow`,\"data-og-width\":`1448`,width:`1448`,\"data-og-height\":`774`,height:`774`,\"data-path\":`images/outbound-calls.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=280\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=a2b4fd69ee3741644c19c3adb17151c5 280w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=560\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=74b27ba4a185426fc85941aa7d2660e2 560w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=840\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=958f53b22be768f554048056338e7e79 840w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=1100\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=e7bcafb51fac4505992d72a0deec1748 1100w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=1650\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=23697dbd8c51e8b014715e08c9beb3f7 1650w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=2500\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=48a3a2ccb39e9ecd7664aae9795383a8 2500w`})}),_jsxs(_components.p,{children:[`Plivo requests an answer URL when the call is answered (step 4) and expects the file at that address to hold a valid XML response from the application with instructions on how to handle the call. To see how this works, you can use `,_jsx(_components.a,{href:`https://s3.amazonaws.com/static.plivo.com/notification.xml`,children:`https://s3.amazonaws.com/static.plivo.com/notification.xml`}),` as an answer URL to test your first outgoing call. The file contains this XML code:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`xml`,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:`xml`,children:_jsxs(_components.code,{language:`xml`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Speak`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Congratulations, your order was successfully placed`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Speak`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`This code instructs Plivo to say, “Congratulations, your order was successfully placed” to the call recipient. You can find the entire list of valid Plivo XML verbs in our `,_jsx(_components.a,{href:`/voice/xml/overview/`,children:`XML Reference`}),` documentation.`]}),_jsx(Heading,{level:`2`,id:`prerequisites-5`,children:`Prerequisites`}),_jsxs(_components.p,{children:[`To get started, you need a Plivo account — `,_jsx(_components.a,{href:`https://cx.plivo.com/signup`,children:`sign up`}),` with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to set up a Dotnet development environment.`]}),_jsx(Heading,{level:`2`,id:`create-a-voice-notification-application-in-c#`,children:`Create a voice notification application in C#`}),_jsxs(_components.p,{children:[`In Visual Studio, open the file in the CS project called `,_jsx(_components.code,{children:`Program.cs`}),` and paste into it this code.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`21`,language:`csharp`,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:`csharp`,children:_jsxs(_components.code,{language:`csharp`,numberOfLines:`21`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`using`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` System`}),_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:`using`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` System`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Collections`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Generic`}),_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:`using`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Plivo`}),_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\":`#569CD6`},children:`namespace`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` testplivo`})]}),`\n`,_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:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` class`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Program`})]}),`\n`,_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:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` static`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` void`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` Main`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[] `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`args`}),_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`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` var`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` api`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` PlivoApi`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cauth_id>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cauth_token>\"`}),_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\":`#569CD6`},children:` var`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` api`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Call`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Create`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` to`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`new`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` List`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`> { `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cdestination_number>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003ccaller_id>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` answerMethod`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"GET\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` answerUrl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://s3.amazonaws.com/static.plivo.com/notification.xml\"`})]}),`\n`,_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:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`WriteLine`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`response`}),_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`,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`]})})}),_jsxs(_components.p,{children:[`Replace the auth placeholders with your authentication credentials from the `,_jsx(_components.a,{href:`https://cx.plivo.com/home`,children:`Plivo console`}),`. Replace the phone number placeholders with actual phone numbers in `,_jsx(_components.a,{href:`https://en.wikipedia.org/wiki/E.164`,children:`E.164 format`}),` (for example, +12025551234).`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(`strong`,{children:`Note:`}),`\nWe recommend that you store your credentials in the `,_jsx(_components.code,{children:`auth_id`}),` and `,_jsx(_components.code,{children:`auth_token`}),` environment variables, to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use the `,_jsx(_components.code,{children:`\u003ca href=\"https://docs.microsoft.com/en-us/dotnet/api/system.environment.setenvironmentvariable?view=netcore-3.1\" rel=\"nofollow\">Environment.SetEnvironmentVariable\u003c/a>`}),` method to store environment variables and `,_jsx(_components.code,{children:`\u003ca href=\"https://docs.microsoft.com/en-us/dotnet/api/system.environment.getenvironmentvariable?view=netcore-3.1\" rel=\"nofollow\">Environment.GetEnvironmentVariable\u003c/a>`}),` to fetch them when initializing the client.`]})}),_jsx(Heading,{level:`2`,id:`test-5`,children:`Test`}),_jsx(_components.p,{children:`Save the file and run it.`}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/plivo/NFI9_HRHTMInDf93/images/build_app.jpg?fit=max\u0026auto=format\u0026n=NFI9_HRHTMInDf93\u0026q=85\u0026s=57ed7d2310aa904fb31a34ad205f863c`,alt:`Make outbound call`,\"data-og-width\":`1116`,width:`1116`,\"data-og-height\":`444`,height:`444`,\"data-path\":`images/build_app.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/plivo/NFI9_HRHTMInDf93/images/build_app.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=NFI9_HRHTMInDf93\u0026q=85\u0026s=39c578766ce3c719dd0eb717cfedcfea 280w, https://mintcdn.com/plivo/NFI9_HRHTMInDf93/images/build_app.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=NFI9_HRHTMInDf93\u0026q=85\u0026s=5923be85cabc91069e52e7d0489db8ce 560w, https://mintcdn.com/plivo/NFI9_HRHTMInDf93/images/build_app.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=NFI9_HRHTMInDf93\u0026q=85\u0026s=e05a7ea5a20437ece341682817ba80f8 840w, https://mintcdn.com/plivo/NFI9_HRHTMInDf93/images/build_app.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=NFI9_HRHTMInDf93\u0026q=85\u0026s=667b681e3be384a33deb4df8d5967588 1100w, https://mintcdn.com/plivo/NFI9_HRHTMInDf93/images/build_app.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=NFI9_HRHTMInDf93\u0026q=85\u0026s=616d9fd7cb7a323f85a5db1804b80727 1650w, https://mintcdn.com/plivo/NFI9_HRHTMInDf93/images/build_app.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=NFI9_HRHTMInDf93\u0026q=85\u0026s=c4afcbb674c8b424c0aefb45e6be249e 2500w`})})]})})]}),_jsxs(Tab,{title:`Java`,id:`java`,\"data-child-tab-ids\":`[\"using-xml-6\"]`,\"data-child-heading-ids\":`[\"overview-6\",\"how-it-works-6\",\"prerequisites-6\",\"create-a-voice-notification-application-in-java\",\"test-6\"]`,children:[_jsx(Heading,{level:`2`,id:`overview-6`,children:`Overview`}),_jsx(_components.p,{children:`This guide shows how to send audio notifications using voice calls. You can play recorded audio when the call recipient answers or use text-to-speech, as we show here, combining static text with dynamic information that Plivo gets from a variable.`}),_jsx(_components.p,{children:`You can use voice notification for use cases such as:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Order notification`}),`\n`,_jsx(_components.li,{children:`Booking status`}),`\n`,_jsx(_components.li,{children:`Delivery status`}),`\n`,_jsx(_components.li,{children:`Flight cancellation/rescheduling`}),`\n`,_jsx(_components.li,{children:`Two-factor authentication/one-time password`}),`\n`,_jsx(_components.li,{children:`New offer notification`}),`\n`,_jsx(_components.li,{children:`Account balance notification`}),`\n`]}),_jsx(_components.p,{children:`Implement voice notification either by using our PHLO visual workflow builder or our APIs and XML documents. Follow the instructions in one of the tabs below.`}),_jsx(Tabs,{children:_jsxs(Tab,{title:`Using XML`,id:`using-xml-6`,\"data-child-heading-ids\":`[\"how-it-works-6\",\"prerequisites-6\",\"create-a-voice-notification-application-in-java\",\"test-6\"]`,children:[_jsx(_components.p,{children:`Here’s how to use Plivo APIs and XML to implement voice notifications.`}),_jsx(Heading,{level:`2`,id:`how-it-works-6`,children:`How it works`}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=f8b62e42991d9fd92d93eab071cb4124`,alt:`Outbound Call Flow`,\"data-og-width\":`1448`,width:`1448`,\"data-og-height\":`774`,height:`774`,\"data-path\":`images/outbound-calls.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=280\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=a2b4fd69ee3741644c19c3adb17151c5 280w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=560\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=74b27ba4a185426fc85941aa7d2660e2 560w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=840\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=958f53b22be768f554048056338e7e79 840w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=1100\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=e7bcafb51fac4505992d72a0deec1748 1100w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=1650\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=23697dbd8c51e8b014715e08c9beb3f7 1650w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=2500\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=48a3a2ccb39e9ecd7664aae9795383a8 2500w`})}),_jsxs(_components.p,{children:[`Plivo requests an answer URL when the call is answered (step 4) and expects the file at that address to hold a valid XML response from the application with instructions on how to handle the call. To see how this works, you can use `,_jsx(_components.a,{href:`https://s3.amazonaws.com/static.plivo.com/notification.xml`,children:`https://s3.amazonaws.com/static.plivo.com/notification.xml`}),` as an answer URL to test your first outgoing call. The file contains this XML code:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`xml`,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:`xml`,children:_jsxs(_components.code,{language:`xml`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Speak`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Congratulations, your order was successfully placed`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Speak`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`This code instructs Plivo to say, “Congratulations, your order was successfully placed” to the call recipient. You can find the entire list of valid Plivo XML verbs in our `,_jsx(_components.a,{href:`/voice/xml/overview/`,children:`XML Reference`}),` documentation.`]}),_jsx(Heading,{level:`2`,id:`prerequisites-6`,children:`Prerequisites`}),_jsxs(_components.p,{children:[`To get started, you need a Plivo account — `,_jsx(_components.a,{href:`https://cx.plivo.com/signup`,children:`sign up`}),` with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to set up a Java development environment.`]}),_jsx(Heading,{level:`2`,id:`create-a-voice-notification-application-in-java`,children:`Create a voice notification application in Java`}),_jsxs(_components.p,{children:[`Create a Java class in the project `,_jsx(_components.code,{children:`MakeCall`}),` and paste into it this code.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`18`,language:`java`,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:`java`,children:_jsxs(_components.code,{language:`java`,numberOfLines:`18`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` java.io.IOException;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` java.util.Collections;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` com.plivo.api.Plivo;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` com.plivo.api.exceptions.PlivoRestException;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` com.plivo.api.models.call.Call;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` com.plivo.api.models.call.CallCreateResponse;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`class`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` MakeCall`}),_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\":`#569CD6`},children:` public`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` static`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#4EC9B0`},children:` void`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` main`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [] `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`args`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`throws`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:` IOException`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`PlivoRestException`}),_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\":`#9CDCFE`},children:` Plivo`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`init`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cauth_id>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cauth_token>\"`}),_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\":`#4EC9B0`},children:` CallCreateResponse`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Call`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`creator`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003ccaller_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\":`#9CDCFE`},children:` Collections`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`singletonList`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cdestination_number>\"`}),_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:` \"https://s3.amazonaws.com/static.plivo.com/notification.xml\"`}),_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:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`answerMethod`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"GET\"`}),_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:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`create`}),_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\":`#9CDCFE`},children:` System`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`out`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`println`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(response);`})]}),`\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`]})})}),_jsxs(_components.p,{children:[`Replace the auth placeholders with your authentication credentials from the `,_jsx(_components.a,{href:`https://cx.plivo.com/home`,children:`Plivo console`}),`. Replace the phone number placeholders with actual phone numbers in `,_jsx(_components.a,{href:`https://en.wikipedia.org/wiki/E.164`,children:`E.164 format`}),` (for example, +12025551234).`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(`strong`,{children:`Note:`}),`\nWe recommend that you store your credentials in the `,_jsx(_components.code,{children:`auth_id`}),` and `,_jsx(_components.code,{children:`auth_token`}),` environment variables, to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use `,_jsx(_components.code,{children:`\u003ca rel=\"nofollow\" href=\"https://docs.oracle.com/javase/tutorial/essential/environment/env.html\">System.getenv()\u003c/a>`}),` to store environment variables and retrieve them when initializing the client.`]})}),_jsx(Heading,{level:`2`,id:`test-6`,children:`Test`}),_jsx(_components.p,{children:`Save the file and run it.`}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/plivo/NFI9_HRHTMInDf93/images/build_app.jpg?fit=max\u0026auto=format\u0026n=NFI9_HRHTMInDf93\u0026q=85\u0026s=57ed7d2310aa904fb31a34ad205f863c`,alt:`Make outbound call`,\"data-og-width\":`1116`,width:`1116`,\"data-og-height\":`444`,height:`444`,\"data-path\":`images/build_app.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/plivo/NFI9_HRHTMInDf93/images/build_app.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=NFI9_HRHTMInDf93\u0026q=85\u0026s=39c578766ce3c719dd0eb717cfedcfea 280w, https://mintcdn.com/plivo/NFI9_HRHTMInDf93/images/build_app.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=NFI9_HRHTMInDf93\u0026q=85\u0026s=5923be85cabc91069e52e7d0489db8ce 560w, https://mintcdn.com/plivo/NFI9_HRHTMInDf93/images/build_app.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=NFI9_HRHTMInDf93\u0026q=85\u0026s=e05a7ea5a20437ece341682817ba80f8 840w, https://mintcdn.com/plivo/NFI9_HRHTMInDf93/images/build_app.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=NFI9_HRHTMInDf93\u0026q=85\u0026s=667b681e3be384a33deb4df8d5967588 1100w, https://mintcdn.com/plivo/NFI9_HRHTMInDf93/images/build_app.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=NFI9_HRHTMInDf93\u0026q=85\u0026s=616d9fd7cb7a323f85a5db1804b80727 1650w, https://mintcdn.com/plivo/NFI9_HRHTMInDf93/images/build_app.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=NFI9_HRHTMInDf93\u0026q=85\u0026s=c4afcbb674c8b424c0aefb45e6be249e 2500w`})})]})})]}),_jsxs(Tab,{title:`Go`,id:`go`,\"data-child-tab-ids\":`[\"using-xml-7\"]`,\"data-child-heading-ids\":`[\"overview-7\",\"how-it-works-7\",\"prerequisites-7\",\"create-a-voice-notification-application-in-go\",\"test-7\"]`,children:[_jsx(Heading,{level:`2`,id:`overview-7`,children:`Overview`}),_jsx(_components.p,{children:`This guide shows how to send audio notifications using voice calls. You can play recorded audio when the call recipient answers or use text-to-speech, as we show here, combining static text with dynamic information that Plivo gets from a variable.`}),_jsx(_components.p,{children:`You can use voice notification for use cases such as:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Order notification`}),`\n`,_jsx(_components.li,{children:`Booking status`}),`\n`,_jsx(_components.li,{children:`Delivery status`}),`\n`,_jsx(_components.li,{children:`Flight cancellation/rescheduling`}),`\n`,_jsx(_components.li,{children:`Two-factor authentication/one-time password`}),`\n`,_jsx(_components.li,{children:`New offer notification`}),`\n`,_jsx(_components.li,{children:`Account balance notification`}),`\n`]}),_jsx(_components.p,{children:`Implement voice notification either by using our PHLO visual workflow builder or our APIs and XML documents. Follow the instructions in one of the tabs below.`}),_jsx(Tabs,{children:_jsxs(Tab,{title:`Using XML`,id:`using-xml-7`,\"data-child-heading-ids\":`[\"how-it-works-7\",\"prerequisites-7\",\"create-a-voice-notification-application-in-go\",\"test-7\"]`,children:[_jsx(_components.p,{children:`Here’s how to use Plivo APIs and XML to implement voice notifications.`}),_jsx(Heading,{level:`2`,id:`how-it-works-7`,children:`How it works`}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=f8b62e42991d9fd92d93eab071cb4124`,alt:`Outbound Call Flow`,\"data-og-width\":`1448`,width:`1448`,\"data-og-height\":`774`,height:`774`,\"data-path\":`images/outbound-calls.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=280\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=a2b4fd69ee3741644c19c3adb17151c5 280w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=560\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=74b27ba4a185426fc85941aa7d2660e2 560w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=840\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=958f53b22be768f554048056338e7e79 840w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=1100\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=e7bcafb51fac4505992d72a0deec1748 1100w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=1650\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=23697dbd8c51e8b014715e08c9beb3f7 1650w, https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/outbound-calls.png?w=2500\u0026fit=max\u0026auto=format\u0026n=GjxgkWYDEc2_LVPj\u0026q=85\u0026s=48a3a2ccb39e9ecd7664aae9795383a8 2500w`})}),_jsxs(_components.p,{children:[`Plivo requests an answer URL when the call is answered (step 4) and expects the file at that address to hold a valid XML response from the application with instructions on how to handle the call. To see how this works, you can use `,_jsx(_components.a,{href:`https://s3.amazonaws.com/static.plivo.com/notification.xml`,children:`https://s3.amazonaws.com/static.plivo.com/notification.xml`}),` as an answer URL to test your first outgoing call. The file contains this XML code:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`xml`,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:`xml`,children:_jsxs(_components.code,{language:`xml`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Speak`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Congratulations, your order was successfully placed`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Speak`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`This code instructs Plivo to say, “Congratulations, your order was successfully placed” to the call recipient. You can find the entire list of valid Plivo XML verbs in our `,_jsx(_components.a,{href:`/voice/xml/overview/`,children:`XML Reference`}),` documentation.`]}),_jsx(Heading,{level:`2`,id:`prerequisites-7`,children:`Prerequisites`}),_jsxs(_components.p,{children:[`To get started, you need a Plivo account — `,_jsx(_components.a,{href:`https://cx.plivo.com/signup`,children:`sign up`}),` with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to set up a Go development environment.`]}),_jsx(Heading,{level:`2`,id:`create-a-voice-notification-application-in-go`,children:`Create a voice notification application in Go`}),_jsxs(_components.p,{children:[`Create a file called `,_jsx(_components.code,{children:`MakeCall.go`}),` and paste into it this code.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`25`,language:`go`,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:`go`,children:_jsxs(_components.code,{language:`go`,numberOfLines:`25`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`package`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` main`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#CE9178`},children:`fmt`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#CE9178`},children:`github.com/plivo/plivo-go/v7`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`func`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` main`}),_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\":`#9CDCFE`},children:`\tclient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` plivo`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`NewClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cauth_id>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cauth_token>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u0026`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`plivo`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`ClientOptions`}),_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:`\tif`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` nil`}),_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\":`#9CDCFE`},children:`\t\t\tfmt`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Error`}),_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:`\t\t\treturn`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\t\t}`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tresponse`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Calls`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Create`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`\t\tplivo`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`CallCreateParams`}),_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\":`#9CDCFE`},children:`\t\t\tFrom`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003ccaller_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\":`#9CDCFE`},children:`\t\t\tTo`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cdestination_number>\"`}),_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\":`#9CDCFE`},children:`\t\t\tAnswerURL`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://s3.amazonaws.com/static.plivo.com/notification.xml\"`}),_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\":`#9CDCFE`},children:`\t\t\tAnswerMethod`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"GET\"`}),_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:`\t\t},`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\t)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`\tif`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` nil`}),_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\":`#9CDCFE`},children:`\t\t\tfmt`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Error`}),_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:`\t\t\treturn`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\t\t}`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tfmt`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Printf`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Response: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#9CDCFE`},children:`%#v`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`response`}),_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`]})})}),_jsxs(_components.p,{children:[`Replace the auth placeholders with your authentication credentials from the `,_jsx(_components.a,{href:`https://cx.plivo.com/home`,children:`Plivo console`}),`. Replace the phone number placeholders with actual phone numbers in `,_jsx(_components.a,{href:`https://en.wikipedia.org/wiki/E.164`,children:`E.164 format`}),` (for example, +12025551234).`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(`strong`,{children:`Note:`}),`\nWe recommend that you store your credentials in the `,_jsx(_components.code,{children:`auth_id`}),` and `,_jsx(_components.code,{children:`auth_token`}),` environment variables, to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use the `,_jsx(_components.code,{children:`os.Setenv`}),` and `,_jsx(_components.code,{children:`os.Getenv`}),` functions to store environment variables and fetch them when initializing the client.`]})}),_jsx(Heading,{level:`2`,id:`test-7`,children:`Test`}),_jsx(_components.p,{children:`Save the file and run it.`}),_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:`go`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` MakeCall.go`})]}),`\n`]})})})]})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Voice Notifications","sidebarTitle":"Voice Notification","description":"Send audio notifications via voice calls with text-to-speech or recordings","href":"/voice/use-cases/voice-notification"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[],"tabId":"node"},{"title":"How it works","slug":"how-it-works","depth":2,"children":[],"tabId":"using-xml"},{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[],"tabId":"using-xml"},{"title":"Create a voice notification application in Node.js","slug":"create-a-voice-notification-application-in-node-js","depth":2,"children":[],"tabId":"using-xml"},{"title":"Test","slug":"test","depth":2,"children":[],"tabId":"using-xml"},{"title":"Overview","slug":"overview-2","depth":2,"children":[],"tabId":"ruby"},{"title":"How it works","slug":"how-it-works-2","depth":2,"children":[],"tabId":"using-xml-2"},{"title":"Prerequisites","slug":"prerequisites-2","depth":2,"children":[],"tabId":"using-xml-2"},{"title":"Create a voice notification application in Ruby","slug":"create-a-voice-notification-application-in-ruby","depth":2,"children":[],"tabId":"using-xml-2"},{"title":"Test","slug":"test-2","depth":2,"children":[],"tabId":"using-xml-2"},{"title":"Overview","slug":"overview-3","depth":2,"children":[],"tabId":"python"},{"title":"How it works","slug":"how-it-works-3","depth":2,"children":[],"tabId":"using-xml-3"},{"title":"Prerequisites","slug":"prerequisites-3","depth":2,"children":[],"tabId":"using-xml-3"},{"title":"Create a voice notification application in Python","slug":"create-a-voice-notification-application-in-python","depth":2,"children":[],"tabId":"using-xml-3"},{"title":"Test","slug":"test-3","depth":2,"children":[],"tabId":"using-xml-3"},{"title":"Overview","slug":"overview-4","depth":2,"children":[],"tabId":"php"},{"title":"How it works","slug":"how-it-works-4","depth":2,"children":[],"tabId":"using-xml-4"},{"title":"Prerequisites","slug":"prerequisites-4","depth":2,"children":[],"tabId":"using-xml-4"},{"title":"Create a voice notification application in PHP","slug":"create-a-voice-notification-application-in-php","depth":2,"children":[],"tabId":"using-xml-4"},{"title":"Test","slug":"test-4","depth":2,"children":[],"tabId":"using-xml-4"},{"title":"Overview","slug":"overview-5","depth":2,"children":[],"tabId":"net"},{"title":"How it works","slug":"how-it-works-5","depth":2,"children":[],"tabId":"using-xml-5"},{"title":"Prerequisites","slug":"prerequisites-5","depth":2,"children":[],"tabId":"using-xml-5"},{"title":"Create a voice notification application in C#","slug":"create-a-voice-notification-application-in-c#","depth":2,"children":[],"tabId":"using-xml-5"},{"title":"Test","slug":"test-5","depth":2,"children":[],"tabId":"using-xml-5"},{"title":"Overview","slug":"overview-6","depth":2,"children":[],"tabId":"java"},{"title":"How it works","slug":"how-it-works-6","depth":2,"children":[],"tabId":"using-xml-6"},{"title":"Prerequisites","slug":"prerequisites-6","depth":2,"children":[],"tabId":"using-xml-6"},{"title":"Create a voice notification application in Java","slug":"create-a-voice-notification-application-in-java","depth":2,"children":[],"tabId":"using-xml-6"},{"title":"Test","slug":"test-6","depth":2,"children":[],"tabId":"using-xml-6"},{"title":"Overview","slug":"overview-7","depth":2,"children":[],"tabId":"go"},{"title":"How it works","slug":"how-it-works-7","depth":2,"children":[],"tabId":"using-xml-7"},{"title":"Prerequisites","slug":"prerequisites-7","depth":2,"children":[],"tabId":"using-xml-7"},{"title":"Create a voice notification application in Go","slug":"create-a-voice-notification-application-in-go","depth":2,"children":[],"tabId":"using-xml-7"},{"title":"Test","slug":"test-7","depth":2,"children":[],"tabId":"using-xml-7"}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/plivo/65a712f3b49f9843/hubspot.js"],"subdomain":"plivo","siteName":"Plivo","title":"Voice Notifications - Plivo","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-10T04:14:35.390Z","originalFileLocation":"voice/use-cases/voice-notification.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=\"Send audio notifications via voice calls with text-to-speech or recordings\">\u003cmeta data-mint-head name=\"application-name\" content=\"Plivo\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/plivo/jE_tEXMmXghIL4xh/_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=\"/docs/mintlify-assets/_mintlify/favicons/plivo/jE_tEXMmXghIL4xh/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/plivo/jE_tEXMmXghIL4xh/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/plivo/jE_tEXMmXghIL4xh/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/plivo/jE_tEXMmXghIL4xh/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/plivo/jE_tEXMmXghIL4xh/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/plivo/jE_tEXMmXghIL4xh/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/plivo/jE_tEXMmXghIL4xh/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/plivo/jE_tEXMmXghIL4xh/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Voice Notifications - Plivo\">\u003cmeta data-mint-head property=\"og:description\" content=\"Send audio notifications via voice calls with text-to-speech or recordings\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Plivo\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://plivo.com/docs/voice/use-cases/voice-notification\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://plivo.mintlify.app/_mintlify/api/og/v2?division=Outbound+Calls\u0026amp;title=Voice+Notifications\u0026amp;description=Send+audio+notifications+via+voice+calls+with+text-to-speech+or+recordings\u0026amp;theme=0904848171be9743c76b0ea8\u0026amp;signature=843c5829681fec10cef56e3d3cae255d9d7a52b84ff8e1551dc9b63e4c6a3360\">\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=\"Voice Notifications - Plivo\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Send audio notifications via voice calls with text-to-speech or recordings\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://plivo.mintlify.app/_mintlify/api/og/v2?division=Outbound+Calls\u0026amp;title=Voice+Notifications\u0026amp;description=Send+audio+notifications+via+voice+calls+with+text-to-speech+or+recordings\u0026amp;theme=0904848171be9743c76b0ea8\u0026amp;signature=843c5829681fec10cef56e3d3cae255d9d7a52b84ff8e1551dc9b63e4c6a3360\">\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=\"/docs/mintlify-assets/_mintlify/favicons/plivo/jE_tEXMmXghIL4xh/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Plivo\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#323dfe\">\u003clink data-mint-head rel=\"canonical\" href=\"https://plivo.com/docs/voice/use-cases/voice-notification\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/voice/use-cases/voice-notification.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://plivo.com/#organization\",\"name\":\"Plivo\",\"url\":\"https://plivo.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/plivo/nlRVupwxTfmW2fPy/logo/newlogodark.svg?fit=max\u0026auto=format\u0026n=nlRVupwxTfmW2fPy\u0026q=85\u0026s=60816eb957f6b8962ef15eddde76449a\"}},{\"@type\":\"WebSite\",\"@id\":\"https://plivo.com/docs#website\",\"name\":\"Plivo\",\"url\":\"https://plivo.com/docs\",\"publisher\":{\"@id\":\"https://plivo.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://plivo.com/docs/voice/use-cases/voice-notification#webpage\",\"url\":\"https://plivo.com/docs/voice/use-cases/voice-notification\",\"name\":\"Voice Notifications\",\"description\":\"Send audio notifications via voice calls with text-to-speech or recordings\",\"dateModified\":\"2026-09-10T04:14:35.390Z\",\"isPartOf\":{\"@id\":\"https://plivo.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://plivo.com/docs/voice/use-cases/voice-notification#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://plivo.com/docs/voice/use-cases/voice-notification#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Voice Tutorials\",\"item\":\"https://plivo.com/docs/voice/use-cases/make-outbound-calls\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Outbound Calls\",\"item\":\"https://plivo.com/docs/voice/use-cases/make-outbound-calls\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Voice Notifications\",\"item\":\"https://plivo.com/docs/voice/use-cases/voice-notification\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://plivo.com/docs/voice/use-cases/voice-notification#article\",\"headline\":\"Voice Notifications\",\"name\":\"Voice Notifications\",\"description\":\"Send audio notifications via voice calls with text-to-speech or recordings\",\"url\":\"https://plivo.com/docs/voice/use-cases/voice-notification\",\"mainEntityOfPage\":{\"@id\":\"https://plivo.com/docs/voice/use-cases/voice-notification#webpage\"},\"dateModified\":\"2026-09-10T04:14:35.390Z\",\"publisher\":{\"@id\":\"https://plivo.com/#organization\"},\"isPartOf\":{\"@id\":\"https://plivo.com/docs#website\"}}]}\u003c/script>","siteName":"Plivo","nav":{"global":null,"tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/home"}]},{"tab":"SIP Trunking","pages":[{"title":"SIP Trunking","href":"/voice-agents/sip-trunking/overview"}]},{"tab":"Audio Streaming","pages":[{"title":"Audio Streaming","href":"/voice-agents/audio-streaming/overview"}]},{"tab":"Programmable APIs","anchors":[{"anchor":"Voice API","icon":"phone","groups":[{"group":"Getting Started","pages":[{"title":"Voice API Quickstart","href":"/voice/quickstart/quickstart"}]},{"group":"Concepts","pages":[{"group":"Core Concepts","pages":[{"title":"Overview","href":"/voice/concepts/overview"},{"title":"Features","href":"/voice/concepts/features"},{"title":"Terminology","href":"/voice/concepts/terminology"},{"title":"Account and feature limits","sidebarTitle":"Account Limits","href":"/voice/concepts/account-limits"}]},{"group":"Callbacks \u0026 Webhooks","pages":[{"title":"Voice callbacks","sidebarTitle":"Callbacks","href":"/voice/concepts/callbacks"},{"title":"Callback Configurations","href":"/voice/concepts/callback-configurations"},{"title":"Signature validation-V3","sidebarTitle":"Signature Validation","href":"/voice/concepts/signature-validation"}]},{"group":"Compliance (US)","pages":[{"title":"STIR/SHAKEN","href":"/voice/concepts/stir-shaken"},{"title":"Verified Caller ID","href":"/voice/concepts/verified-caller-id"},{"title":"Caller Reputation","href":"/voice/concepts/caller-reputation"}]},{"group":"Compliance (India)","pages":[{"title":"India Calling Regulations","href":"/voice/concepts/india-calling"},{"title":"India Number KYC","href":"/numbers/rent-india-numbers"},{"title":"140-Series Numbers","href":"/voice/concepts/140-series-provisioning"},{"title":"160-Series Numbers","href":"/voice/concepts/160-series-provisioning"},{"title":"UCC Management","href":"/voice/concepts/ucc-management"}]},{"group":"Security","pages":[{"title":"Geo Permissions","href":"/voice/concepts/geo-permissions"},{"title":"Firewall \u0026 Network Configuration","sidebarTitle":"Firewall \u0026 Network","href":"/voice/concepts/firewall-network-configuration"},{"title":"SIP Authentication","sidebarTitle":"SIP Authentication","href":"/voice/concepts/sip-authentication"}]},{"group":"Call Features","pages":[{"title":"Plivo SIP endpoints","sidebarTitle":"SIP endpoints","href":"/voice/concepts/sip-endpoint"},{"title":"Getting started with Speech Synthesis Markup Language (SSML)","sidebarTitle":"SSML","href":"/voice/concepts/ssml"},{"title":"Answering machine/voicemail detection","sidebarTitle":"Machine Detection","href":"/voice/concepts/machine-detection"},{"title":"Voice Alerts (New)","href":"/voice/concepts/voice-alerts"},{"title":"Carrier Failover","href":"/voice/concepts/carrier-failover"}]},{"group":"Analytics","pages":[{"title":"Call Insights","href":"/voice/call-insights"}]}]},{"group":"API Reference","pages":[{"title":"API Overview","href":"/voice/api/overview"},{"title":"Calls","href":"/voice/api/calls"},{"title":"Audio Streams","href":"/voice/api/audio-streams"},{"title":"Multiparty Calls","href":"/voice/api/multiparty-calls"},{"title":"Conferences","href":"/voice/api/conferences"},{"title":"Endpoints","href":"/voice/api/endpoints"},{"title":"Recordings","href":"/voice/api/recordings"},{"title":"Verified Caller IDs","href":"/voice/api/verified-caller-ids"}]},{"group":"XML Reference","pages":[{"title":"Overview","href":"/voice/xml/overview"},{"title":"Call Routing","href":"/voice/xml/routing"},{"title":"Input Collection","href":"/voice/xml/input"},{"title":"Audio Output","href":"/voice/xml/audio-output"},{"title":"Conference","href":"/voice/xml/conference"},{"title":"Multi-party Call","href":"/voice/xml/multiparty-call"},{"title":"Record","href":"/voice/xml/record"},{"title":"Audio Streaming","sidebarTitle":"Audio Streaming","href":"/voice/xml/audio-streaming"},{"title":"Build with an AI coding agent","sidebarTitle":"Build with an AI coding agent","href":"/voice/xml/ai-coding-agent"}]},{"group":"SDKs","pages":[{"group":"Browser SDK","pages":[{"title":"Plivo Browser SDK","sidebarTitle":"Overview","href":"/voice/sdk/browser/overview"},{"title":"JWT Authentication","sidebarTitle":"JWT Authentication","href":"/voice/sdk/browser/jwt-authentication"},{"title":"Browser SDK Reference","sidebarTitle":"SDK Reference","href":"/voice/sdk/browser/reference"},{"title":"Browser SDK Guides","sidebarTitle":"Guides","href":"/voice/sdk/browser/guides"}]},{"group":"Deprecated Mobile SDKs","pages":[{"title":"Mobile SDKs (Deprecated)","sidebarTitle":"Mobile SDKs","href":"/voice/client/androidios/overview"}]}]},{"group":"Troubleshooting","pages":[{"title":"Troubleshooting Call Failures","sidebarTitle":"Call Failures","href":"/voice/troubleshooting/call-failures"},{"title":"Hangup Causes","mode":"wide","href":"/voice/troubleshooting/hangup-causes"}]},{"group":"Voice Tutorials","pages":[{"group":"Outbound Calls","pages":[{"title":"Make Outbound Calls","sidebarTitle":"Make Outbound Calls","href":"/voice/use-cases/make-outbound-calls"},{"title":"Make Bulk Calls","href":"/voice/use-cases/make-bulk-calls"},{"title":"Click to Call","sidebarTitle":"Click-to-call","href":"/voice/use-cases/click-to-call"},{"title":"Voice Alerts","description":"Send automated voice call alerts with audio playback and keypress responses","href":"/voice/use-cases/voice-alerts"},{"title":"Voice Notifications","sidebarTitle":"Voice Notification","href":"/voice/use-cases/voice-notification"},{"title":"Voice Alerts/Notifications Broadcasting","sidebarTitle":"Voice Alerts Broadcasting","description":"Broadcast voice messages to multiple recipients at once","href":"/voice/use-cases/voice-broadcasting"},{"title":"Voice Surveys","sidebarTitle":"Voice Survey","href":"/voice/use-cases/voice-survey"},{"title":"Voice OTP","href":"/voice/use-cases/voice-otp"}]},{"group":"Inbound Calls","pages":[{"title":"Receive Incoming Calls","href":"/voice/use-cases/receive-incoming-calls"},{"title":"Screen Incoming Calls","href":"/voice/use-cases/screen-incoming-calls"},{"title":"Reject Incoming Calls","href":"/voice/use-cases/reject-incoming-calls"},{"title":"Call Forwarding","href":"/voice/use-cases/call-forwarding"},{"title":"Connect a Call to a Second Person","sidebarTitle":"Connect Call to Second Person","href":"/voice/use-cases/connect-call-to-second-person"}]},{"group":"IVR \u0026 Input","pages":[{"title":"Phone system IVR","sidebarTitle":"Phone System IVR","href":"/voice/use-cases/ivr"},{"title":"Receive DTMF and Speech Input","sidebarTitle":"Receive DTMF/Speech Input","href":"/voice/use-cases/receive-input"},{"title":"Voicemail","href":"/voice/use-cases/voicemail"},{"title":"Voicemail Transcription","sidebarTitle":"Transcribe Voicemail","href":"/voice/use-cases/voicemail-transcription"}]},{"group":"Recording","pages":[{"title":"Record Calls","sidebarTitle":"Record a Call","href":"/voice/use-cases/record-a-call"},{"title":"Download Recordings","href":"/voice/use-cases/download-recordings"},{"title":"Participant-Level Recording","sidebarTitle":"Participant Level Recording","href":"/voice/use-cases/participant-level-recording"}]},{"group":"Conferencing","pages":[{"title":"PINless Conference Calls","sidebarTitle":"PINless Conference","href":"/voice/use-cases/call-conference"},{"title":"Conference Calling with a PIN","sidebarTitle":"Conference with PIN","href":"/voice/use-cases/conference-with-pin"},{"title":"Supervisor Coaching","sidebarTitle":"Supervisor Coaching","href":"/voice/use-cases/supervisor-coaching"}]},{"group":"Call Routing","pages":[{"title":"Number Masking","href":"/voice/use-cases/number-masking"},{"title":"Call Tracking","href":"/voice/use-cases/call-tracking"},{"title":"Dial Status Reporting","href":"/voice/use-cases/dial-status-reporting"},{"title":"Pass Custom Headers","href":"/voice/use-cases/pass-custom-headers"}]},{"title":"Build an App That Makes Phone Calls from Raspberry Pi","sidebarTitle":"Raspberry Pi","href":"/voice/use-cases/raspberry-pi"}]},{"group":"Migration Guides","pages":[{"title":"Technical Guide: Migrating from Twilio to Plivo","sidebarTitle":"Twilio to Plivo","href":"/voice/migrate/twilio"},{"group":"SDK Upgrade (Within 4.x)","pages":[{"title":"Upgrade from SDK v4 to v4.8.0 or Latest Version","sidebarTitle":"Within 4.x","href":"/voice/migrate/sdk/active-sdk/active-sdk"},{"title":"Upgrade from Python SDK v4 to v4.9.0 or Latest Version","sidebarTitle":"Python","href":"/voice/migrate/sdk/active-sdk/python"},{"title":"Upgrade from Ruby SDK v4 to v4.9.0 or Latest Version","sidebarTitle":"Ruby","href":"/voice/migrate/sdk/active-sdk/ruby"},{"title":"Upgrade from PHP SDK v4 to v4.25.0 or Latest Version","sidebarTitle":"PHP","href":"/voice/migrate/sdk/active-sdk/php"},{"title":"Upgrade from Java SDK v4 to v4.8.0 or Latest Version","sidebarTitle":"Java","href":"/voice/migrate/sdk/active-sdk/java"},{"title":"Upgrade from .NET SDK v4 to v4.10.0 or Latest Version","sidebarTitle":".NET","href":"/voice/migrate/sdk/active-sdk/dotnet"},{"title":"Upgrade from Go SDK v4 to v4.8.0 or Latest Version","sidebarTitle":"Go","href":"/voice/migrate/sdk/active-sdk/go"}]},{"group":"SDK Upgrade (Legacy to Active)","pages":[{"title":"Upgrade from Legacy to v4.8.0 or Latest Version","sidebarTitle":"From Legacy to 4.x","href":"/voice/migrate/sdk/legacy-to-active-sdk/legacy-to-active-sdk"},{"title":"Upgrade from Python SDK Legacy to v4.9.0 or Latest Version","sidebarTitle":"Python","href":"/voice/migrate/sdk/legacy-to-active-sdk/python"},{"title":"Upgrade from Ruby Legacy to v4.9.0 or Latest Version","sidebarTitle":"Ruby","href":"/voice/migrate/sdk/legacy-to-active-sdk/ruby"},{"title":"Upgrade from PHP SDK Legacy to v4.25.0 or Latest Version","sidebarTitle":"PHP","href":"/voice/migrate/sdk/legacy-to-active-sdk/php"},{"title":"Upgrade from Java Legacy to v4.8.0 or Latest Version","sidebarTitle":"Java","href":"/voice/migrate/sdk/legacy-to-active-sdk/java"},{"title":"Upgrade from .NET SDK Legacy to v4.10.0 or Latest Version","sidebarTitle":".NET","href":"/voice/migrate/sdk/legacy-to-active-sdk/dotnet"}]}]}]},{"anchor":"Messaging API","icon":"message-square-code","pages":[{"title":"Messaging API","href":"/messaging/sms-availability"}]},{"anchor":"SIP Trunking","icon":"utility-pole","pages":[{"title":"SIP Trunking","href":"/sip-trunking"}]},{"anchor":"Verify API","icon":"badge-check","pages":[{"title":"Verify API","href":"/programmable-api/verify/availability"}]},{"anchor":"Phone Numbers API","icon":"file-digit","pages":[{"title":"Phone Numbers API","href":"/numbers"}]},{"anchor":"WhatsApp API","icon":"message-circle","pages":[{"title":"WhatsApp API","href":"/messaging/concepts/whatsapp/prerequisites"}]},{"anchor":"Account API","icon":"building-2","pages":[{"title":"Account API","href":"/account/concepts/subaccounts"}]},{"anchor":"Number Masking","icon":"shield-half","pages":[{"title":"Number Masking","href":"/number-masking/concepts/overview"}]},{"anchor":"Lookup API","icon":"search","pages":[{"title":"Lookup API","href":"/lookup/overview"}]},{"anchor":"CLI","icon":"terminal","pages":[{"title":"CLI","href":"/cli/overview"}]},{"anchor":"Integrations","icon":"blocks","pages":[{"title":"Integrations","href":"/integrations/overview"}]}]},{"tab":"FAQ","pages":[{"title":"FAQ","href":"/faq/messaging/messaging-api"}]}]},"title":"Voice Notifications - Plivo","buildId":"dpl_GvhK4qVXq51DpfYJLCtPpYNN4YHN","deploymentId":"dpl_GvhK4qVXq51DpfYJLCtPpYNN4YHN","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-5VlDM5Io.js","DynamicMarkdown-DO1Fz7ar.js","zoom-image-lightbox-uyuQJRFs.js","lightbox-handle-r17bVUz3.js"]}