October 5

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

Автор: @RDGlessons

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

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

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

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

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

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

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

Для начала необходимо получить уникальный API токен, для отправки кодов верификации. Перейдите в Gateway account, авторизуйтесь по номеру Telegram и скопируйте 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
      }
    }
  }
]

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