> ## Documentation Index
> Fetch the complete documentation index at: https://veriqa.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Поддерживаемые каналы

> Через какие мессенджеры и почту Veriqa пускает пользователей сейчас и в ближайших планах: какие claims добавляет канал, спрашивает ли он подтверждение в чате и нужно ли пользователю отправлять секретное сообщение.

<Note>
  Тот же каталог — на [veriqa.app/channels](https://veriqa.app/channels). Они ведутся синхронно, и
  расхождение между ними — дефект, а не две точки зрения.
</Note>

Пользователь подтверждает вход в мессенджере или почте, которыми и так пользуется, — ничего нашего
устанавливать не нужно. Ваше приложение получает обычные токены OpenID Connect, через какой бы канал
ни прошёл вход.

Любой канал выдаёт базовые claims `channel_type`, `channel_user_id` и `name` — в карточке указано,
что канал добавляет к ним. Для каналов, которых ещё нет в поставке, — что позволяет API платформы.

Помимо claims, в описании канала используются ещё два термина: секретное сообщение и подтверждение в
канале.

## Секретное сообщение

Секретное сообщение — это сообщение с кодом входа, которое пользователь сам отправляет в канал, когда
перешёл по ссылке или отсканировал QR-код. Veriqa заполняет его заранее, мессенджер показывает
готовым — остаётся нажать «Отправить». Нужно оно не во всех каналах.

Примеры:

* Telegram и MAX: не нужно — мессенджер сам открывает бота и передаёт ему код.
* WhatsApp: нужно ради повышенной безопасности — готовое сообщение уходит в один тап.
* Email: так же, готовым письмом — **письмо в один тап** (режим `Push`), — или, опционально,
  классический magic link.

## Подтверждение в канале

Подтверждение в канале — это функция, при которой бот прямо в чате спрашивает, пропустить ли вход: в
какое приложение и с какого устройства, — с кнопками «Подтвердить» и «Отклонить». Её можно
переключить в автоматический режим — тогда вход происходит без дополнительного запроса: ключ
`LoginConfirmation.Mode` в [справочнике конфигурации](/docs/ru/reference/configuration).

Примеры:

* Telegram: вопрос приходит сразу после перехода по ссылке.
* WhatsApp: вопрос приходит в ответ на секретное сообщение.
* Email: в канале вопроса нет — по желанию он задаётся на странице в браузере.

## Встроенные

Входят в поставку Veriqa — нужные включаются в конфигурации.

<CardGroup cols={2}>
  <Card title="Telegram">
    **Claims сверх базовых:** `given_name`, `family_name`, `preferred_username`, `locale`, `picture`

    **Номер телефона:** `phone_number` и `phone_number_verified` по запросу — пользователь делится
    номером кнопкой в чате ([номер телефона](/docs/ru/guides/phone-number))

    **Подтверждение в канале:** да

    **Секретное сообщение:** не нужно
  </Card>

  <Card title="WhatsApp">
    **Claims сверх базовых:** `phone_number`, `phone_number_verified`, `given_name`

    **Подтверждение в канале:** да

    **Секретное сообщение:** нужно — в один тап
  </Card>

  <Card title="WhatsApp через Twilio">
    Тот же канал WhatsApp, но доставка идёт через аккаунт Twilio, а не через Meta WhatsApp Business
    Platform — провайдер выбирается одним ключом конфигурации
    ([доставка через Twilio](/docs/ru/guides/channels#доставка-через-twilio)).

    **Claims сверх базовых:** `phone_number`, `phone_number_verified`, `given_name`

    **Подтверждение в канале:** да — две кнопки быстрого ответа

    **Секретное сообщение:** нужно — в один тап
  </Card>

  <Card title="MAX">
    **Claims сверх базовых:** `given_name`, `family_name`, `preferred_username`, `locale`, `picture`

    **Номер телефона:** `phone_number` и `phone_number_verified` по запросу — пользователь делится
    номером кнопкой в чате; только в режиме вебхука ([номер телефона](/docs/ru/guides/phone-number))

    **Подтверждение в канале:** да

    **Секретное сообщение:** не нужно
  </Card>

  <Card title="Email">
    **Claims сверх базовых:** `email`, `email_verified`, `preferred_username`, `veriqa_channel`, `veriqa_email_mode`

    **Подтверждение в канале:** нет — опционально через браузер

    **Секретное сообщение:** нужно — в один тап, или классический magic link

    **Два режима:** **письмо в один тап** (пользователь отправляет готовое письмо — значит,
    доставлять ему ничего не нужно, и почтовому шлюзу нечего сжигать) и классический **magic
    link**, включённый по умолчанию. Что даёт каждый —
    [какой режим выбрать](/docs/ru/guides/channels#какой-режим-выбрать).
  </Card>
</CardGroup>

## Любой канал через HTTP

Подключите канал, которого нет в поставке, — свой бот, корпоративный мессенджер,
региональную платформу — как внешний сервис на любом языке. Veriqa общается с ним по HTTP, а ключи
платформы остаются у вашего сервиса. Это же способ встроить в процесс Veriqa уже написанного бота —
без публикации нового.

* **Claims сверх базовых:** те, что вернёт ваш адаптер
* **Подтверждение в канале:** задаёт адаптер
* **Секретное сообщение:** задаёт адаптер

<CardGroup cols={2}>
  <Card title="WhatsApp через Baileys">
    Рабочий референсный адаптер на Node: привязывает номер WhatsApp как связанное устройство, как
    WhatsApp Web, — без бизнес-аккаунта Meta и без провайдера. Для отладки сценариев с WhatsApp,
    небольших команд и собственного использования.

    **Риск:** работает через неофициальный клиент WhatsApp Web, и WhatsApp может заблокировать
    привязанный номер — привязывайте отдельный номер, который не жалко потерять.

    **Claims сверх базовых:** `phone_number`, `given_name`

    **Подтверждение в канале:** да — опрос с двумя вариантами

    **Секретное сообщение:** нужно — в один тап

    Пример: `samples/node/custom-channel-whatsapp-baileys/`.
  </Card>
</CardGroup>

Как его написать, с референсными адаптерами на Python и Node, —
[HTTP-адаптер канала на любом языке](/docs/ru/guides/custom-channel-adapter#http-адаптер-канала-на-любом-языке).

## В тестировании: следующий релиз

Пять адаптеров уже тестируются и войдут в поставку следующего релиза — каналов станет 8+. Viber
и LINE открывают свои рынки, Messenger и Instagram работают на платформе Meta, которую уже использует
адаптер WhatsApp, а Slack приносит вход и step-up в рабочее пространство.

<CardGroup cols={2}>
  <Card title="Viber">
    **Claims сверх базовых:** `picture`, `locale`

    **Подтверждение в канале:** да

    **Секретное сообщение:** не нужно
  </Card>

  <Card title="LINE">
    **Claims сверх базовых:** `picture`, `locale`

    **Подтверждение в канале:** да

    **Секретное сообщение:** нужно — в один тап
  </Card>

  <Card title="Messenger">
    **Claims сверх базовых:** `given_name`, `family_name`, `picture`, `locale`

    **Подтверждение в канале:** да

    **Секретное сообщение:** не нужно
  </Card>

  <Card title="Instagram Direct">
    **Claims сверх базовых:** `preferred_username`, `picture`

    **Подтверждение в канале:** да

    **Секретное сообщение:** не нужно
  </Card>

  <Card title="Slack">
    **Claims сверх базовых:** `given_name`, `family_name`, `preferred_username`, `email`, `picture`, `locale`

    **Подтверждение в канале:** да

    **Секретное сообщение:** нужно — вводится вручную

    Ссылки платформы не умеют заполнять сообщение, поэтому код с экрана пользователь вводит сам.
  </Card>
</CardGroup>

## В плане: enterprise

Рабочие мессенджеры — для входа и step-up внутри компании.

<CardGroup cols={2}>
  <Card title="Microsoft Teams">
    **Claims сверх базовых:** `given_name`, `family_name`, `preferred_username`, `email`

    **Подтверждение в канале:** да

    **Секретное сообщение:** нужно — в один тап
  </Card>

  <Card title="Discord">
    **Claims сверх базовых:** `preferred_username`, `picture`, `locale`

    **Подтверждение в канале:** да

    **Секретное сообщение:** нужно — вводится вручную

    Ссылки платформы не умеют заполнять сообщение, поэтому код с экрана пользователь вводит сам.
  </Card>
</CardGroup>

## В плане: региональные

Платформы, которые лидируют на своих рынках.

<CardGroup cols={2}>
  <Card title="WeChat">
    **Claims сверх базовых:** `locale`

    **Подтверждение в канале:** да

    **Секретное сообщение:** не нужно
  </Card>

  <Card title="Zalo">
    **Claims сверх базовых:** `picture`

    **Подтверждение в канале:** да

    **Секретное сообщение:** уточняется
  </Card>

  <Card title="BiP">
    **Claims сверх базовых:** `phone_number` — по разрешению Turkcell на открытые номера

    **Подтверждение в канале:** уточняется

    **Секретное сообщение:** уточняется
  </Card>

  <Card title="Threema">
    **Claims сверх базовых:** нет — только базовые

    **Подтверждение в канале:** нет

    **Секретное сообщение:** нужно — в один тап
  </Card>

  <Card title="KakaoTalk">
    **Claims сверх базовых:** `email`

    **Номер телефона:** не через бота — только вашей собственной интеграцией Kakao Login или Kakao Sync
    ([номер телефона](/docs/ru/guides/phone-number))

    **Подтверждение в канале:** да

    **Секретное сообщение:** уточняется
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.