API Gateway: Что это и как пользоваться?

Автор: @RDGlessons

Сегодня Telegram выпустил обновление Telegram API — Gateway API. Оно представлено как инструмент, способный заменить СМС-верификации. В этой статье мы расскажем о преимуществах, разберём, как пользоваться, и реализуем интеграцию.

API Gateway: Что это и как пользоваться?

Основные особенности:

  • Мгновенная доставка кодов верификации.
  • Цена в ~$0.01 за сообщение, что в ~50 раз ниже средней цены за СМС*
  • 100% процентная доставка сообщения.
  • Отчёты о прочтении и доставке.

Но есть и большой минус: минимальная сумма пополнения составляет $100, причём оплата возможна только в TON.

*В целях тестирования вы сможете отправлять бесплатные проверочные сообщения на аккаунт Telegram, привязанный к номеру, который вы использовали для входа.

Инструкция по настройке:

Авторизация:

Для начала необходимо получить уникальный API токен, для отправки кодов верификации. Перейдите в Gateway account, авторизуйтесь по номеру Telegram и скопируйте API токен:

Страница Gateway API
Страница Gateway API

Отправка кодов через PuzzleBot:

Создайте Интегрированную переменную во вкладке Переменные в PuzzleBot

Заполните поле "Ссылка" данной ссылкой:

https://gatewayapi.telegram.org/sendVerificationMessage

Выберите тип запроса GET или POST

Добавьте заголовки:

Authorization: Bearer ТОКЕН

Замените ТОКЕН на действующий токен, полученный ранее.

Добавьте параметры:

  • phone_number - обязательно - номер телефона получателя кода в международном формате E. 164
  • code - необязательно - код, который будет отправлен получателю. Код может состоять только от 4 до 8 цифр.
  • code_length - необязательно (используется только если отсутствует поле code) - длина кода, который будет сгенерирован Telegram, от 4 до 8 символов.
  • sender_username - необязательно - юзернейм публичного канала, от чьего имени придёт код получателю. Канал который вы укажите должен принадлежать вашему аккаунту.
  • ttl - необязательно - количество секунд, после которых код будет удалён/деактивирован. Код удаляется только если сообщение с кодом не прочитано на момент удаления.
  • callback_url - необязательно - адрес вебхука, который получит обновления сообщения: статус доставки и прочтение.
  • request_id - необязательно - айди предыдущего сообщения, отправленного на этот же номер. Если всё указано верно - деньги с баланса за отправленное сообщение считываться не будут.

Возвращаемый ответ:

JSON:

[ { "ok": true, "result": { "request_id": "1234567890", "phone_number": "1234567890", "request_cost": 0, "remaining_balance": 0, "delivery_status": { "status": "sent", "updated_at": 123456789 } } } ]

Подробнее с документацией можно ознакомиться здесь.

При вызове запроса на указанный номер придёт следующее сообщение:

API Gateway: Что это и как пользоваться?

По нажатию на кнопку Copy Code пользователь скопирует код. Коды, сгенерированные Telegram можно проверить на соответствие с помощью метода checkVerificationStatus.

Проверяем корректность введённого кода:

Создайте Интегрированную переменную во вкладке Переменные в PuzzleBot

API Gateway: Что это и как пользоваться?

Заполните поле "Ссылка" данной ссылкой:

https://gatewayapi.telegram.org/checkVerificationStatus

Выберите тип запроса GET или POST

Добавьте заголовки:

Authorization: Bearer ТОКЕН

Замените ТОКЕН на действующий токен, полученный ранее.

Добавьте параметры:

  • request_id - обязательно - айди сессии/предыдущего отправленного сообщения с кодом, который мы будем проверять. Возвращается в поле request_id при отправке кода.
  • code - необязательно - код, который ввёл пользователь у вас на стороне.

Возвращаемый ответ:

JSON:

[ { "ok": true, "result": { "request_id": "12345678901234567", "phone_number": "1234567890", "request_cost": 0, "delivery_status": { "status": "read", "updated_at": 1728154468 }, "verification_status": { "status": "code_valid", "updated_at": 1728204369, "code_entered": "123456" } } } ]

В поле result.verification_status.status указано одно из значений code_valid или code_invalid, они отвечают за корректность и корректность введённого кода соответственно.

Автор: @RDGlessons

Подпишитесь, чтобы не пропустить наши уроки и статьи.
99
11
11
10 комментариев

Хорошая инструкция, очень интересно, где и как это применять

2
Ответить

Где-то уже используешь в своих проектах? или планируешь внедрить?

1
Ответить
Автор

Пока большой необходимости в нём для своих проектов не вижу, но вероятно я ещё напишу статью с реализацией кейса с регистрацией на мероприятия

2
Ответить

Очень интересно, но совсем непонятно, где и зачем это нужно 😁

1
Ответить

Коротко и по делу)

1
Ответить

а обычные сообщения можно отправлять?

Ответить