# `WardrikSlack.Dispatch`

Routes what Slack sends, over Socket Mode or HTTP, within the workspace it came from.

| Slack sends                              | Handled by               |
| ---------------------------------------- | ------------------------ |
| a message                                | `WardrikSlack.Messages`  |
| the bot joining or leaving a channel     | `WardrikSlack.Rooms`     |
| a room's button or menu                  | `WardrikSlack.Rooms`     |
| a waiting call's button                  | `WardrikSlack.Answers`   |
| `app_uninstalled` or `tokens_revoked`    | forgets the workspace    |

Anything from a workspace the channel isn't added to is logged and ignored.

# `event`

```elixir
@spec event(WardrikChannel.Channel.t(), map()) :: term()
```

Handles an `event_callback`.

# `interactive`

```elixir
@spec interactive(WardrikChannel.Channel.t(), map()) :: term()
```

Handles a button press or a menu choice.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
