> 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 > Execute different instructions based on a variable's value. Execute different instructions based on a variable's value ## **Properties** **`switch`** `object` — required An object that accepts the following properties. --- **`switch.variable`** `string` — required Name of the variable whose value needs to be compared. --- **`switch.case`** `object` — required [`Case_params`](#case_params) object of key-mapped values to array of [SWML Methods](/docs/swml/reference) to execute. --- **`switch.default`** `[]` Array of [SWML Methods](/docs/swml/reference) to execute if no cases match. --- ### case\_params The `case_params` object serves as a dictionary where each key is a string identifier, and the associated value is an array of SWML Method objects. **`case.property_name`** `[]object` — required Name of the variable whose value needs to be compared. --- ## **Examples** #### YAML ```yaml version: 1.0.0 sections: main: - switch: variable: call.type case: sip: - play: url: "say: You're calling from SIP." phone: - play: url: "say: You're calling from phone." default: - play: url: 'say: Unexpected error' ``` #### JSON ```json { "version": "1.0.0", "sections": { "main": [ { "switch": { "variable": "call.type", "case": { "sip": [ { "play": { "url": "say: You're calling from SIP." } } ], "phone": [ { "play": { "url": "say: You're calling from phone." } } ] }, "default": [ { "play": { "url": "say: Unexpected error" } } ] } } ] } } ``` #### YAML ```yaml version: 1.0.0 sections: main: - set: foo: 5 - execute: dest: example_fn params: foo: '${foo}' example_fn: - switch: variable: params.foo default: - play: url: 'say: nothing matches' case: '5': - play: url: 'say: yup, math works!' ``` #### JSON ```json { "version": "1.0.0", "sections": { "main": [ { "set": { "foo": 5 } }, { "execute": { "dest": "example_fn", "params": { "foo": "${foo}" } } } ], "example_fn": [ { "switch": { "variable": "params.foo", "default": [ { "play": { "url": "say: nothing matches" } } ], "case": { "5": [ { "play": { "url": "say: yup, math works!" } } ] } } } ] } } ``` ## **See Also** * **[Variables and Expressions](/docs/swml/reference/variables)**: Complete reference for SWML variables, scopes, and using variables in conditional logic * **[cond](/docs/swml/reference/calling/cond)**: Alternative conditional logic method > Execute different instructions based on a variable's value.