> For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

# 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**

An object that accepts the following properties.

Variable path to match. Specified without the `%{}` wrapper (e.g. `message.body`).

Transform to apply to the value before matching. One of `lowercase`, `uppercase`, `trim`,
`lowercase_trim`, or `uppercase_trim`.

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.

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
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
{
  "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
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
{
  "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."
              }
            }
          ]
        }
      }
    ]
  }
}
```