> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # switch > Branch on a variable's value, with optional text transforms. Branch on a variable's value, with optional text transforms applied before matching. Useful for keyword-driven inbound message handling. ## **Properties** **`switch`** `object` — required An object that accepts the following properties. --- **`switch.variable`** `string` — required Variable path to match. Specified without the `%{}` wrapper (e.g. `message.body`). --- **`switch.transform`** `string` Transform to apply to the value before matching. One of `lowercase`, `uppercase`, `trim`, `lowercase_trim`, or `uppercase_trim`. --- **`switch.case`** `object` — required Map of values to arrays of [SWML methods](/docs/swml/reference/messaging) to execute. The key is the value to compare against `variable` (after applying `transform`); the value is the array of methods to run on match. --- **`switch.default`** `object[]` Array of [SWML methods](/docs/swml/reference/messaging) to execute if no `case` matches. If omitted and no case matches, execution stops with an error. --- ## **Examples** ### Keyword-based reply #### YAML ```yaml version: 1.0.0 sections: main: - switch: variable: message.body transform: lowercase_trim case: help: - reply: body: "Reply STOP to unsubscribe, or visit https://example.com/help." stop: - reply: body: "You've been unsubscribed." start: - reply: body: "Welcome back!" default: - reply: body: "Sorry, I didn't understand that. Reply HELP for assistance." ``` #### JSON ```json { "version": "1.0.0", "sections": { "main": [ { "switch": { "variable": "message.body", "transform": "lowercase_trim", "case": { "help": [ { "reply": { "body": "Reply STOP to unsubscribe, or visit https://example.com/help." } } ], "stop": [ { "reply": { "body": "You've been unsubscribed." } } ], "start": [ { "reply": { "body": "Welcome back!" } } ] }, "default": [ { "reply": { "body": "Sorry, I didn't understand that. Reply HELP for assistance." } } ] } } ] } } ``` ### Branch on a saved request response #### YAML ```yaml version: 1.0.0 sections: main: - request: url: "https://api.example.com/customer" body: phone: "%{message.from}" save_variables: true - switch: variable: request_response.tier case: gold: - reply: body: "Welcome back, valued customer!" silver: - reply: body: "Thanks for being a member." default: - reply: body: "Thanks for your message." ``` #### JSON ```json { "version": "1.0.0", "sections": { "main": [ { "request": { "url": "https://api.example.com/customer", "body": { "phone": "%{message.from}" }, "save_variables": true } }, { "switch": { "variable": "request_response.tier", "case": { "gold": [ { "reply": { "body": "Welcome back, valued customer!" } } ], "silver": [ { "reply": { "body": "Thanks for being a member." } } ] }, "default": [ { "reply": { "body": "Thanks for your message." } } ] } } ] } } ``` > Branch on a variable's value, with optional text transforms.