diff --git a/docs/SignalWire-Examples/dial-sipendpoint.mdx b/docs/SignalWire-Examples/dial-sipendpoint.mdx new file mode 100644 index 0000000..72f66ab --- /dev/null +++ b/docs/SignalWire-Examples/dial-sipendpoint.mdx @@ -0,0 +1,31 @@ +## Dialing a SignalWire SIP Endpoint from FreeSWITCH Dialplan + +To dial a SignalWire SIP endpoint from FreeSWITCH dialplan, follow these steps: + +1. Create a gateway with SignalWire SIP endpoint details. Refer to this guide for instructions on how to create a gateway in FreeSWITCH: [Gateway Creation Guide](https://github.com/ShashiKumar-SignalWire/SW-example-Docs/blob/main/FS_SIPEndpoint_registration.md). + +2. Create the following dialplan in your FreeSWITCH `dialplan/public.xml` to forward your incoming calls to the public dialplan: + +```xml + + + + + + + +``` +If you want to pass custom SIP headers when calling the SIP endpoint, set custom variables as shown below: + +```xml + + + + + + + + +``` + +Replace example.sip.signalwire.com with your actual SignalWire SIP endpoint URI and SignalwireUsername with your SignalWire SIP endpoint username. \ No newline at end of file diff --git a/docs/SignalWire-Examples/index.mdx b/docs/SignalWire-Examples/index.mdx new file mode 100644 index 0000000..92fac89 --- /dev/null +++ b/docs/SignalWire-Examples/index.mdx @@ -0,0 +1,49 @@ +import { Link } from '@docusaurus/router'; +import Layout from '@theme/Layout'; + + +# Welcome to the Evolution of Telecommunications + +## From FreeSWITCH to SignalWire + +FreeSWITCH has been the backbone of open-source telecommunications for years, enabling countless businesses to build robust communication solutions. Now, with SignalWire, we take it a step further, offering advanced APIs, unparalleled scalability, and a seamless transition for FreeSWITCH users. + +## Why Choose SignalWire? + +### Scalability and Flexibility +Leverage our elastic cloud infrastructure to scale your applications globally with minimal latency. SignalWire provides a robust platform that grows with your business needs, ensuring high availability and performance. + +### Enhanced API Capabilities +Simplify the development of voice, messaging, and video applications with our powerful and intuitive APIs. SignalWire's APIs offer greater functionality and ease of use compared to traditional methods, enabling you to build complex communication solutions with minimal effort. + +### Continuous Support +Benefit from the expertise of the original FreeSWITCH developers and an active, supportive community. With SignalWire, you get access to dedicated support channels, extensive documentation, and a vibrant community ready to help you succeed. + +## Explore Our Examples + +We provide detailed examples to help you transition from FreeSWITCH to SignalWire seamlessly. Explore how common tasks and setups in FreeSWITCH can be easily achieved and enhanced using SignalWire's advanced platform. + +### Basic Voicemail Setup +Learn how to set up a basic voicemail system with SignalWire, leveraging our powerful APIs to simplify the process and add new capabilities. + +### Interactive Voice Response (IVR) +Discover how to build a sophisticated IVR system with SignalWire, using our low-code options to create flexible and dynamic customer interactions. + +### Call Recording and Forwarding +See how SignalWire streamlines call recording and forwarding, providing real-time analytics and seamless integration with your existing systems. + +## Start Building with SignalWire + +Ready to take your telecommunications solutions to the next level? [Sign up](https://signalwire.com/signup) for SignalWire today and start building powerful communication applications with ease. + +## Join the Community + +Join SignalWire's developer community for support, collaboration, and networking. Connect with other developers, share your experiences, and get help from the experts who built FreeSWITCH and SignalWire. + +
+ SignalWire empowers you to focus on your ideas instead of worrying about developing, scaling, maintaining, and overpaying for complex communications technology and services. +
+ +## Contact Us + +For more information and personalized assistance, [contact our support team](https://signalwire.com/contact) and let us help you build the future of communication. diff --git a/docs/SignalWire-Examples/office-hours.mdx b/docs/SignalWire-Examples/office-hours.mdx new file mode 100644 index 0000000..37e69a9 --- /dev/null +++ b/docs/SignalWire-Examples/office-hours.mdx @@ -0,0 +1,263 @@ +# Signalwire Office Hours Call Forwarding examples +## Introduction +In this guide, we will explore various examples of creating office hours call forwarding to agents using different methods: SignalWire Markup Language (SWML), FreeSWITCH, and SignalWire Call Flow Builder. Each method offers unique capabilities and approaches to implementing office hours call forwarding functionality within telecommunication systems. + +## FreeSWITCH Dialplan for Office Hours Call Forwarding +## Introduction +This FreeSWITCH dialplan configuration forwards incoming calls to an external number during office hours (Monday to Friday, 9 AM to 6 PM). Outside of these hours, the calls are sent to voicemail. + +### Dialplan Configuration +The following XML configuration should be added to your FreeSWITCH dialplan (e.g., `dialplan/default.xml`). + +```xml + + + + + + + + + + + + + + + + + + +``` +### Explanation + +1. **Working Hours Condition (9 AM to 6 PM, Monday to Friday):** +- The condition checks if the current time is within the specified working hours. +- Sets `hangup_after_bridge` to `true` to ensure the call is terminated after the bridge completes. +- Sets `continue_on_fail` to `true` to continue executing the dialplan if the bridge action fails. +- Bridges the call to the external number via the specified SIP gateway during working hours. + +2. **Default Condition (Outside Working Hours):** +- Acts as the fallback condition when the working hours condition is not met. +- Answers the incoming call. +- Pauses for 1 second (1000 milliseconds). +- Sends the call to voicemail for the specified domain and dialed extension. + +### Adjustments + +- Replace `${domain_name}` with your actual domain name. +- Replace `+198XYXYXY` with the actual phone number you want to forward calls to during working hours. + +### How to Use + +1. **Update the Dialplan**: Copy the XML configuration into your FreeSWITCH dialplan file (e.g., `dialplan/default.xml`). +2. **Reload the Dialplan**: After updating the dialplan, reload it using the FreeSWITCH CLI: +```bash +fs_cli -x "reloadxml" +``` + +## SignalWire SWML for Office Hours Call Forwarding +### Introduction +In this guide, we will explore an example of using SignalWire Markup Language (SWML) to create office hours call forwarding. SignalWire Markup Language (SWML) is a scripting language used to control the behavior of voice calls, such as initiating calls, playing audio, recording messages, and more. + +**Description:** +This SWML script is designed to handle incoming calls and forward them to a specific number during office hours (Monday to Friday, 9 AM to 6 PM). It also provides a message informing callers about the office hours and requests them to call during that time frame. + +```json +{ + "sections": { + "main": [ + "answer", + { + "request": { + "method": "GET", + "save_variables":true, + "url": "https://f47d-103-52-38-2.ngrok-free.app/is_working_hours" + } + }, + { + "switch": { + "case": { + "success": [ + { + "cond": [ + { + "then": [ + { + "connect": { + "from": "+16XYXYXYX", + "to": "+198XYXYXYX" + } + }, + { + "switch": { + "case": { + "connected": [ + { + "transfer": "ZYFRTspBKf-34skFsEoO8" + } + ] + }, + "default": [ + { + "switch": { + "case": { + "noAnswer": [ + { + "transfer": "ZYFRTspBKf-34skFsEoO8" + } + ], + "busy": [ + { + "transfer": "ZYFRTspBKf-34skFsEoO8" + } + ], + "decline": [ + { + "transfer": "ZYFRTspBKf-34skFsEoO8" + } + ], + "error": [ + { + "transfer": "ZYFRTspBKf-34skFsEoO8" + } + ] + }, + "default": [ + "hangup" + ], + "variable": "connect_failed_reason" + } + } + ], + "variable": "connect_result" + } + } + ], + "when": "%{request_response.isInWorkingHours} == true" + }, + { + "else": [ + { + "play": { + "url": "say:Our office hours are from Monday to Friday, spanning 9 AM to 6 PM. To connect with our agents, kindly place your call during this time frame. We look forward to assisting you!", + "say_language": "en-US", + "say_gender": "female", + "say_voice": "gcloud.en-US-Standard-C" + } + }, + { + "transfer": "ZYFRTspBKf-34skFsEoO8" + } + ] + } + ] + } + ] + }, + "default": [ + { + "play": { + "url": "say:Oops! Something's not quite right on our end. Please try calling back later. Thank you!", + "say_language": "en-US", + "say_gender": "female", + "say_voice": "gcloud.en-US-Standard-C" + } + }, + { + "transfer": "ZYFRTspBKf-34skFsEoO8" + } + ], + "variable": "request_result" + } + } + ], + "ZYFRTspBKf-34skFsEoO8": [ + { + "hangup": { + "reason": "hangup" + } + } + ] + }, + "version": "1.0.0" +} +``` + + +### Breakdown and Explanation: +1. **Answer**: The call is answered to initiate the communication process. +2. **Request**: A GET request is made to the specified URL to check if the current time is within working hours. +3. **Switch**: Depending on the success of the request, the script either forwards the call to the specified number or plays a message indicating office hours. +- **Success Case**: +- If the request is successful and the current time is within working hours: +- The call is connected from the specified number to the destination number. +- If the call is successfully connected, it is transferred to the specified endpoint (`ZYFRTspBKf-34skFsEoO8`). +- If the call cannot be connected for various reasons (e.g., no answer, line busy, etc.), it's transferred to the specified endpoint (`ZYFRTspBKf-34skFsEoO8`). +- **Default Case**: +- If the request fails or the current time is outside working hours: +- A message is played to inform the caller about the office hours and to call during that time frame. +- After playing the message, the call is transferred to the specified endpoint (`ZYFRTspBKf-34skFsEoO8`). +4. **Hangup**: Finally, if the call cannot be connected or handled, it is hung up with the reason specified as "hangup". + +5. **Configuration Note**: The URL in the request needs to be replaced with the actual Ngrok URL/public URL containing the provided Node Express code to determine working hours. + +**Version:** +This SWML script version is "1.0.0". + +***NodeJS Expess code*** +```javascript +const express = require('express'); +const app = express(); + +// Middleware to check time and day +app.use((req, res, next) => { + const now = new Date(); + const hour = now.getHours(); + const day = now.getDay(); // Sunday is 0, Monday is 1, and so on... + + // Check if current time is between 9 AM and 6 PM and if it's Monday to Friday + if (hour >= 9 && hour < 18 && day >= 1 && day <= 5) { + res.locals.isInWorkingHours = true; + } else { + res.locals.isInWorkingHours = false; + } + next(); +}); + +// Route to handle requests +app.get('/', (req, res) => { + res.send('Welcome! The service is available.'); +}); + +// Route to check if it's working hours and return JSON +app.get('/is_working_hours', (req, res) => { + res.json({ isInWorkingHours: res.locals.isInWorkingHours }); +}); + +// Start server +const port = 3000; +app.listen(port, () => { + console.log(`Server is running on port ${port}`); +}); + +``` + +## SignalWire Call flow builder for Office Hours Call Forwarding + +### Introduction +In addition to traditional scripting methods like SignalWire Markup Language (SWML), SignalWire offers a user-friendly drag-and-drop interface called SignalWire Call Flow Builder. This intuitive tool allows users to create complex Interactive Voice Response (IVR) systems visually, without extensive coding knowledge. + +SignalWire Call Flow Builder empowers users to design IVRs by arranging various call flow elements such as connect, join_room, play, switch, etc., using a simple drag-and-drop interface. This approach streamlines the process of building telephony applications, enabling rapid development and iteration cycles. + +Now, let's create an example for Office Hours Call Forwarding step-by-step using SignalWire Call Flow Builder, accompanied by screenshots to guide you through each stage of the process. + +Create call flow with nodes shown in the picture below +![image](https://github.com/ShashiKumar-SignalWire/SW-example-Docs/assets/45973234/80172702-a13f-469d-b037-32afbf222a9d) + + +In the request node add URL, Method GET/POST, and enable Set Variables as shown in the screenshot below: + +![image](https://github.com/ShashiKumar-SignalWire/SW-example-Docs/assets/45973234/bbc436c8-e190-4367-a652-6b2c723dd647) + +Once you've configured the call flow, click on "Deploy" to activate it. and Configure the SWML script to use your SignalWire phone number (you can refer to the Purchase a phone number guide for assistance) and save the changes. \ No newline at end of file diff --git a/docs/SignalWire-Examples/sip-endpoint-registration.mdx b/docs/SignalWire-Examples/sip-endpoint-registration.mdx new file mode 100644 index 0000000..cbc99f0 --- /dev/null +++ b/docs/SignalWire-Examples/sip-endpoint-registration.mdx @@ -0,0 +1,26 @@ +## Setting up a SignalWire SIP Endpoint in FreeSWITCH + +To register a SignalWire SIP endpoint in FreeSWITCH, follow these steps: + +1. Set up a SIP endpoint in the SignalWire space. +- You can create a SIP endpoint manually within your SignalWire Space or programmatically through the [Create A SIP Endpoint API](https://developer.signalwire.com/apis/docs/rest/2020-12-11/account/sip-endpoints/create-a-sip-endpoint). +- If you want to create a SIP endpoint in your SignalWire Space, visit the SIP tab and click "Create a Sip Endpoint." +![image](https://github.com/ShashiKumar-SignalWire/SW-example-Docs/assets/45973234/f385b59c-023e-413d-b7e6-07765e2b5b43) + +- You will need to set a few things: the username you will register your SIP endpoint as, a password to authenticate your endpoint when registering, which SignalWire or verified phone number you would like to show when dialing a PSTN number (if left blank, a random number from your purchased numbers will be chosen), encryption status, an outbound call policy (whether to allow calls to PSTN), and the default codecs/ciphers you would like to use. You can create a SIP endpoint programmatically by making a POST request to the SIP Endpoint resource. + +2. Configure the SIP endpoint in FreeSWITCH. +- First, follow the official FreeSWITCH documentation [link](https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Configuration/Sofia-SIP-Stack/Gateways-Configuration_7144069/) to create a gateway. +- Create a new XML file in your FreeSWITCH `conf` directory under `sip_profiles/external/` and name it `signalwire_gateway.xml`. + +```xml + + + + + + + +``` + + - Now, go to fs_cli and then execute reloadxml. After a successful XML reload, execute reload mod_sofia, and to see your gateway in fs_cli, execute sofia status. \ No newline at end of file diff --git a/docs/SignalWire-Examples/swml-voicemail.mdx b/docs/SignalWire-Examples/swml-voicemail.mdx new file mode 100644 index 0000000..df3419e --- /dev/null +++ b/docs/SignalWire-Examples/swml-voicemail.mdx @@ -0,0 +1,268 @@ +# SignalWire Voicemail Examples + +## Introduction + +In this guide, we will explore various examples of creating voicemail systems using different methods: SignalWire Markup Language (SWML), FreeSWITCH, and SignalWire Call Flow Builder. Each method offers unique capabilities and approaches to implementing voicemail functionality within telecommunication systems. + +## FreeSWITCH Voicemail Example + +## Introduction +In this setup, we'll configure FreeSWITCH to bridge incoming calls from SignalWire and a destination number. We'll start by registering a gateway with SignalWire SIP endpoint details, and establishing the connection between FreeSWITCH and SignalWire. Then, we'll configure the FreeSWITCH dialplan to handle incoming calls from SignalWire and forward them to a specified destination number. If the call is unanswered, we'll handle voicemail to ensure callers can leave a message. This setup enables seamless call forwarding and voicemail functionality using FreeSWITCH and SignalWire. + +### Steps: + +1. **Register a Gateway with SignalWire Endpoint**: Follow the guide provided by SignalWire to register a gateway with the SignalWire SIP endpoint details. This step establishes the connection between your FreeSWITCH instance and SignalWire. + +[Freeswitch Signalwre SIP endpoint registraion](https://github.com/ShashiKumar-SignalWire/SW-example-Docs/blob/main/FS_SIPEndpoint_registration.md) + +3. **Configure Dialplan for Incoming Calls**: Once the gateway is registered, you need to configure your FreeSWITCH dialplan to handle incoming calls from SignalWire and route them to the appropriate destination. + +```xml + + + + + +``` + +4. **Configure Voicemail Handling**: To handle cases where the FreeSWITCH user does not answer the call, you can set up voicemail handling in the dialplan. + +```xml + + + + + + +``` + +5. **Adjust Configuration**: Replace `your_signalwire_gateway` with the name of your registered SignalWire gateway. + +6. **Testing**: After configuring the dialplan, test the setup by placing a call to the SignalWire number configured to forward calls to the SIP endpoint. If the call is not answered, it should be forwarded to voicemail as per the configured dialplan. + + +#### Resources +- [Gateways Configuration](https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Configuration/Sofia-SIP-Stack/Gateways-Configuration_7144069/) +- [SIP endpoint configuration](https://developer.signalwire.com/guides/set-up-a-signalwire-phone-number-with-a-sip-endpoint/) +- [Freeswitch Voicemail](https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Modules/mod-voicemail/Voicemail_13174041/) + +--- + +## SignalWire SWML Voicemail Example + +### Introduction + +In this guide, we will explore an example of using SignalWire Markup Language (SWML) to create a voicemail system. SignalWire Markup Language (SWML) is a scripting language used to control the behavior of voice calls, such as initiating calls, playing audio, recording messages, and more. + +In this example, we will walk through the steps involved in setting up a voicemail system using SWML. This system allows callers to leave a message when the called party is unavailable to answer the call. We will break down each component of the SWML script, explaining its purpose and functionality, to provide a comprehensive understanding of how to create and customize a voicemail system using SignalWire. + + +#### Example SWML JSON script: +```json +{ + "sections": { + "main": [ + { + "connect": { + "from": "+1XYXYXYXYX", + "timeout": 10, + "to": "+1XYXYXYXYX" + } + }, + { + "switch": { + "case": { + "connected": ["hangup"] + }, + "default": [ + { + "switch": { + "case": { + "noAnswer": [{"transfer": "zbPB5t-FP3ptWUbHmYHCm"}], + "busy": [{"transfer": "zbPB5t-FP3ptWUbHmYHCm"}], + "decline": [{"transfer": "zbPB5t-FP3ptWUbHmYHCm"}] + }, + "default": ["hangup"], + "variable": "connect_failed_reason" + } + } + ], + "variable": "connect_result" + } + } + ], + "zbPB5t-FP3ptWUbHmYHCm": [ + { + "play": { + "url": "say:Our Agent is not answering your call at the moment, Please leave your message after the beeb sound", + "say_language": "en-US", + "say_gender": "female", + "say_voice": "gcloud.en-US-Neural2-C" + } + }, + { + "record": { + "beep": true, + "format": "mp3", + "stereo": true, + "terminators": "#", + "end_silence_timeout": 10, + "initial_timeout": 10, + "max_length": 60 + } + }, + "hangup" + ] + }, + "version": "1.0.0" +} +``` +### Example Breakdown + +#### Connect Method +Initiates a call to the specified number with a timeout. + +```json +{ + "connect": { + "from": "+16XYXYXYXYX", + "timeout": 10, + "to": "+91XYXYXYX" + } +} + +``` + +#### Switch Method +Handles different scenarios after attempting to connect the call, such as no answer, busy, or decline. +``` +{ + "switch": { + "case": { + "connected": ["hangup"] + }, + "default": [ + { + "switch": { + "case": { + "noAnswer": [{"transfer": "zbPB5t-FP3ptWUbHmYHCm"}], + "busy": [{"transfer": "zbPB5t-FP3ptWUbHmYHCm"}], + "decline": [{"transfer": "zbPB5t-FP3ptWUbHmYHCm"}] + }, + "default": ["hangup"], + "variable": "connect_failed_reason" + } + } + ], + "variable": "connect_result" + } +} +``` +#### Play Method +Plays a message informing the caller that the agent is unavailable and prompts them to leave a message after the beep sound. +```json +{ + "play": { + "url": "say:Our Agent is not asnswring your call at the mpment, Please leave your mesage after the beeb sound", + "say_language": "en-US", + "say_gender": "female", + "say_voice": "gcloud.en-US-Neural2-C" + } +} + +``` + +#### Record Method +Records the caller's message after playing the prompt with specified settings. +```json +{ + "record": { + "beep": true, + "format": "mp3", + "stereo": true, + "terminators": "#", + "end_silence_timeout": 10, + "initial_timeout": 10, + "max_length": 60 + } +} + +``` + +#### Hangup Method +Ends the call after the recording is completed or if the call cannot be connected. +```json +"hangup" +``` + +#### Getting Started +1. Sign up for a SignalWire account and create a project. +2. Navigate to your project and click on the "Relay / SWML" tab. +3. Click on the "SWML Scripts" tab and then click on the "+ New" button to create a new SWML Script. +4. Copy and paste the provided SWML script into the editor. Ensure to customize the `from` and `to` numbers in the `Connect` action according to your requirements, then save the script. +5. Configure the SWML script to use your SignalWire phone number (you can refer to the [Purchase a phone number guide](https://developer.signalwire.com/rest/purchase-a-phone-number/) for assistance) and save the changes. +6. Test the functionality of your configured SWML script by initiating calls and verifying the voicemail system. + +#### Resources +- [SignalWire Documentation](https://developer.signalwire.com/) +- [SignalWire SWML Guide](https://developer.signalwire.com/sdks/reference/swml/methods/) + + +## SignalWire Call Flow Builder Voicemail Example + +## Introduction + +In addition to traditional scripting methods like SignalWire Markup Language (SWML), SignalWire offers a user-friendly drag-and-drop interface called SignalWire Call Flow Builder. This intuitive tool allows users to create complex Interactive Voice Response (IVR) systems visually, without extensive coding knowledge. + +SignalWire Call Flow Builder empowers users to design IVRs by arranging various call flow elements such as connect, join_room, play, switch, etc., using a simple drag-and-drop interface. This approach streamlines the process of building telephony applications, enabling rapid development and iteration cycles. + +Now, let's create an example of a voicemail system step-by-step using SignalWire Call Flow Builder, accompanied by screenshots to guide you through each stage of the process. + + +1. **Login and Access Call Flow Builder**: Upon logging into your SignalWire space, navigate to the Call Flow Builder section. +![image](https://github.com/ShashiKumar-SignalWire/SW-example-Docs/assets/45973234/18c7285c-6750-4afb-9321-2db0fd3721d3) + + +2. **Create a New Call Flow**: Click on the "+ Add New" button located in the top-right corner. This action will redirect you to a new page containing a text box and a "Save" button. +![image](https://github.com/ShashiKumar-SignalWire/SW-example-Docs/assets/45973234/13926569-11e7-432e-a385-369b041dae0f) + + +3. **Name Your Call Flow**: In the text box, provide a meaningful name for your call flow, then click "Save." You will then be redirected to the Builder page. + + +4. **Explore the Call Flow Builder Interface**: On the Builder page, you'll notice all available nodes listed on the left panel and the "Handle call" section in the middle. +![image](https://github.com/ShashiKumar-SignalWire/SW-example-Docs/assets/45973234/9e8f52f5-2153-42e4-9929-cff875afaf73) + +5. **Add Forward to Phone Number Node**: Click on the "Forward to Phone Number" button. A form will appear on the right side, allowing you to specify the forward-to-phone options. +![image](https://github.com/ShashiKumar-SignalWire/SW-example-Docs/assets/45973234/1d92e785-4166-405c-879e-7b6e69e06b21) + + +6. **Fill Out Forwarding Options**: In the form, set the "Default From" field to your SignalWire number. Then, under "Phone Number 1," specify the "From" and "To" numbers. You have the option to add more phone numbers if needed. + +7. **Handle Call Flow**: After adding the forward to the phone number node, you'll see options for handling different call outcomes like Success, No Answer, Busy, Decline, and Error. +![image](https://github.com/ShashiKumar-SignalWire/SW-example-Docs/assets/45973234/15133637-5874-41b1-b65e-a9c43ef01545) + + +8. **Connect Nodes**: Create a link between the "Handle call" node and the "Forward to Phone" node. +![image](https://github.com/ShashiKumar-SignalWire/SW-example-Docs/assets/45973234/2f7ab1b4-7246-4f79-a9db-5e976978d87e) + +9. **Handle Different Call Outcomes**: For each outcome (Success, No Answer, Busy, Decline, Error), add appropriate actions. For example, use the "Play Audio or TTS" node to provide a message for each scenario. +10. + +11. **Set Up Voicemail Recording**: Select the "Voicemail Recording" node and specify the desired audio format (e.g., WAV or MP3). +![image](https://github.com/ShashiKumar-SignalWire/SW-example-Docs/assets/45973234/9ecec43f-3272-45a6-9661-112c4556a034) + +12. **Link Nodes Together**: Connect the "Voicemail Recording" node to the "Play Audio or TTS" node for the remaining options and then link the "Hangup" node to the "Voicemail Recording" node. +![image](https://github.com/ShashiKumar-SignalWire/SW-example-Docs/assets/45973234/c5a0c36b-f661-4e9f-bff0-37c3b1de5d56) + + +14. **Deploy Call Flow**: Once you've configured the call flow, click on "Deploy" to activate it. + +15. Configure the SWML script to use your SignalWire phone number (you can refer to the Purchase a phone number guide for assistance) and save the changes. +16. Test the functionality of your configured SWML script by initiating calls and verifying the voicemail system. + +#### Resources +- [SignalWire Documentation](https://developer.signalwire.com/) +- [SignalWire CallFlow Builder Voicemail Guide](https://developer.signalwire.com/call-flow-builder/voicemail-recording) + + diff --git a/docusaurus.config.js b/docusaurus.config.js index c810b5f..5f09206 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -73,6 +73,12 @@ const config = { position: "left", target: "_self", }, + { + type: "doc", + docId: "SignalWire-Examples/index", + position: "left", + label: "Examples", + }, { href: "https://github.com/signalwire/freeswitch", label: "GitHub", diff --git a/sidebars.js b/sidebars.js index 2b4ad26..25d7453 100644 --- a/sidebars.js +++ b/sidebars.js @@ -20,6 +20,9 @@ const sidebars = { freeswitchExplainedSidebar: [ { type: "autogenerated", dirName: "FreeSWITCH-Explained" }, ], + signalwireExamplesSidebar: [ + { type: "autogenerated", dirName: "SignalWire-Examples" }, + ], // But you can create a sidebar manually /*