Как проверить номера телефонов на Ruby с помощью API Lookup

Автор: | 03.08.2026

Twilio Lookup — это REST API, который может:

— Подтвердить существование номера телефона

— Форматировать любой международный номер телефона в его местный стандарт

— Определить, является ли номер телефона мобильным, VoIP или стационарным

— Получить информацию о поставщике услуг номера телефона

В этом руководстве мы будем использовать Twilio Ruby gem для получения данных номеров телефонов из API Lookup всего за несколько строк кода.

Для начала зарегистрируйтесь в бесплатном аккаунте Twilio.

Вооружившись REST-клиентом, вы готовы к поиску номеров.

Давайте начнем с поиска действительного номера телефона.

Если мы введем номер, который использует моя собака для отправки селфи, на главной странице Lookup, мы увидим, что успешный поиск возвращает JSON-объект:

Вот как вы можете выполнить такой поиск в Ruby:

Если номер телефона действителен, gem преобразует атрибуты JSON в методы объекта ответа:

Этот поиск бесплатный, но содержит только информацию о самом номере. Если вы хотите получить информацию о поставщике услуг, это обойдется вам в полпенни (0,005 долл. США). Это особенно полезно для определения того, может ли номер телефона получать SMS/MMS.

Для выполнения поиска поставщика услуг просто добавьте дополнительный параметр:

Затем вы можете получить доступ к данным поставщика услуг следующим образом:

Попробуйте с вашим собственным номером телефона и посмотрите, что произойдет.

Прежде чем говорить о недействительных номерах телефонов, давайте немного поговорим о REST API.

Представьте, что у вас есть RESTful веб-приложение, которое служит онлайн-книжным магазином. Уникальный идентификатор каждой книги — это «слизнизированная» версия ее названия. Например, чтобы просмотреть детали книги Боба Мартина «The Clean Coder» (отличная книга!), мы бы сделали:

Теперь, что произойдет, если мы попытаемся получить детали книги, которая не существует? Насколько мне известно, никто не написал книгу под названием «The Dirty Coder» (хотя кто-то определенно должен). Так что, если мы попытаемся сделать это:

Мы получим 404, потому что книга не найдена, верно?

Twilio Lookup — это REST API. Концептуально вы можете думать о нем как об онлайн-телефонной книге, где номера телефонов служат уникальными идентификаторами. Когда номер телефона не найден, мы получаем 404.

Мы можем увидеть это и на главной странице Lookup:

Когда Twilio gem сталкивается с 404, он вызывает исключение. Таким образом, всякий раз, когда мы используем API Lookup для проверки номеров телефонов, нам нужно перехватывать исключение и проверять, соответствует ли ошибка коду ошибки Twilio «Не найдено»: 20404.

Чтобы написать функцию, которая проверяет номер телефона, нам нужно:

— Инициировать клиент для поиска

— Выполнить поиск номера телефона и попытаться получить доступ к его атрибуту

— Если это пройдет успешно, вернуть true

— Если возникнет исключение, вернуть false, если ошибка — 20404 (в противном случае просто вызвать исключение, как обычно)

Попробуйте с реальным и фейковым номером и посмотрите, что получится:

Подведем итог:

— Twilio Lookup — это REST API-телефонная книга. Lookup не служит для ответа на вопрос «Существует ли этот номер?». Он предназначен для предоставления данных о действительных номерах телефонов и возвращает 404, когда номер телефона не найден — точно так же, как должен вести себя REST API.

— Twilio gem вызывает исключение при 404. Если вы можете успешно получить информацию о номере телефона, вы знаете, что номер телефона действителен. Если Ruby вызывает исключение, когда вы пытаетесь выполнить поиск номера телефона, скорее всего, этот номер телефона недействителен (но проверьте код ошибки, чтобы быть уверенным).

Мы будем рады услышать, что вы сделаете с Lookup API. Наиболее очевидные варианты использования Lookup — это проверка номеров телефонов, форматирование номеров телефонов и определение того, может ли номер телефона принимать текстовые сообщения. Тем не менее, как и в случае с большинством наших продуктов, самое интересное применение этого API, вероятно, будет чем-то, что придумает такой разработчик, как вы, о чем мы даже не задумывались.

Мы с нетерпением ждем, что вы придумаете.

*Если вам понравился этот пост, вы можете подписаться на меня в Twitter. Если у вас есть вопросы, напишите мне по адресу gb@twilio.com.*