# `WardrikDaemon.Config.Channels`

Reads `config.yaml`'s `channels`: the chat apps agents are reached through.

    channels:
      slack:
        type: slack
        token: ${SLACK_BOT_TOKEN}
        app_token: ${SLACK_APP_TOKEN}
        approvers: ["@maria"]

Each channel has a name of your own: lower-case letters, digits and `-`, starting with a letter.
`shell`, `ssh`, `terminal` and `oauth` are taken.

## Keys

  * `type` - required. `slack` is the only type so far.
  * `token` - the bot's token. Without one, the channel keeps a token in the vault for each
    workspace it's added to.
  * `approvers` - who may decide on calls agents wait on a person for: `@handle`s, or `anyone`.
    `[]` unless set.
  * `signing_secret`, `app_token`, `client_id`, `client_secret` and `redirect_uri` - Slack's.
    See `WardrikSlack`.

A channel serves the deployment's own org's agents. `orgs` may give it to another org, or to
every org. See `WardrikDaemon.Config.Orgs`.

# `read`

```elixir
@spec read(map() | nil, String.t()) :: {:ok, keyword()} | {:error, String.t()}
```

Returns the channels `section` names, as Wardrik's `:channels` option takes them, serving `org`'s agents.

---

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