Messaging

switch

View as MarkdownOpen in Claude

Branch on a variable’s value, with optional text transforms applied before matching. Useful for keyword-driven inbound message handling.

Properties

switch
objectRequired

An object that accepts the following properties.

switch.variable
stringRequired

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
objectRequired

Map of values to arrays of SWML methods 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 to execute if no case matches. If omitted and no case matches, execution stops with an error.

Examples

Keyword-based reply

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

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."