Skip to main content

Execute SWML

Execute a remote SWML document and return to the current document. Use %{return_value.['object_field']} to reference the return values from the external SWML.

Output Node Connectors

NameDescription
ConditionThe condition that is evaluated to determine which path to take. Additional conditions can be added by clicking the Add condition button. Additional conditions will act as JavaScript else-if statements.
ElseThe path to take if none of the conditions are met.

Node Settings

Node SettingDescription
URLThe URL of the SWML document to execute. The URL must return swml in valid JSON or YAML format.
ParamsThe parameters to pass to the SWML document.
MetaThe metadata to pass to the SWML document. A JSON object to serialize.
ConditionsThe conditions that are evaluated to determine which path to take. Additional conditions can be added by clicking the Add condition button. Additional conditions will act as JavaScript else-if statements.

Example

In this example, we will execute a SWML script that is hosted on a remote server. When making a request to the server, we will pass the User and Token parameters.

The SWML document will return a JSON object with a play method field. This play field will be used for TTS (Text-to-Speech) in the current document and will welcome the user with the User parameter and say the Token parameter.

Execute SWML node example that executes a remote SWML document.
Call Flow using the Execute SWML node.

Execute SWML Node Settings

  • URL: Self-hosted ngrok URL.
  • Params: { "Content-Type": "application/json", "User": "user_1", "Token": "123" }
  • Meta: None
  • Condition: %{return_value.return_value} === 1

SWML Document

Below is the SWML document that will be executed.

sections:
main:
- play: 'say: Hello <USER_NAME>, welcome to the SWML demo! Your token is <TOKEN>!'

Server Code

Below is the server code that will return the SWML document.

Pre-requisites

  • ExpressJs installed in your environment.
  • ngrok installed in your environment.
const express = require('express');
const ngrok = require('ngrok');
const app = express();

// Body parser middleware to handle JSON payloads
app.use(express.json());

// Define the route
app.post('/swml', (req, res) => {

let reqBody = req.body;
console.log(reqBody);

let user = reqBody.params.User;
let token = reqBody.params.Token;


const swml = {
"sections": {
"main": [
{
"play": `say: Hello ${user}, welcome to the SWML demo! Your token is ${token}!`
}
]
}
};

res.json(swml);
});


// Start the server and use ngrok to expose it
const port = 5000;
app.listen(port, async () => {
const url = await ngrok.connect(port);
console.log(`Server running on ${url}`);
});