7 октября 2026 г.
Автор:
Как избежать отправки SMS на стационарные телефоны с помощью Lookup v2 API и Go
SMS — один из самых эффективных способов связи с клиентами. Почему? Потому что:
- Доставка SMS не зависит от интернет-соединения
- SMS доставляются практически мгновенно
- SMS работают на любом мобильном телефоне
- У SMS показатель открываемости составляет 98% (по данным Forbes)
Но что делать, если у вас есть приложение, в котором пользователи указали как стационарные, так и мобильные номера? Как отфильтровать стационарные номера, чтобы не получать периодические ошибки и не платить за недоставленные SMS?
Что ж, в этом руководстве мы покажем, как это сделать на языке Go с помощью Twilio Lookup v2 API.
Предварительные требования
Для выполнения этого руководства вам понадобятся:
- Учетная запись Twilio (бесплатная или платная). Создайте ее сейчас, если у вас ее еще нет.
- Номер телефона Twilio, с которого можно отправлять SMS
- Go версии 1.23 или выше
- Номер телефона, способный принимать SMS, и стационарный номер (желательно принадлежащие вам или вашим знакомым)
- Ваш любимый текстовый редактор или IDE для написания кода на Go
Создание приложения на Go
Первым делом создайте пустой проект Go с поддержкой модулей. Для этого выполните следующие команды там, где вы храните свои проекты Go.
Скопировать код
Добавление необходимых библиотек
Затем проекту потребуется несколько зависимостей, а именно:
- Вспомогательная библиотека Twilio для Go: она упрощает взаимодействие с API Twilio
- godotenv: загружает переменные окружения из файлов .env
Чтобы установить их, выполните следующую команду.
Скопировать код
Установка необходимых переменных окружения
Вам нужно задать две переменные окружения, необходимые для выполнения аутентифицированных запросов к Twilio Lookup v2 API. Для этого в корневом каталоге проекта создайте новый файл с именем .env и вставьте в него конфигурацию, приведенную ниже.
Скопировать код
Затем откройте консоль Twilio в браузере и скопируйте Account SID и Auth Token из раздела Workbench в нижней части страницы.
Теперь установите скопированные значения в качестве значений TWILIO_ACCOUNT_SID и TWILIO_AUTH_TOKEN соответственно в файле .env.
Затем в разделе Quick actions нажмите Phone numbers и скопируйте номер телефона в формате E.164 из столбца Phone Number. Вставьте этот номер телефона в качестве значения TWILIO_PHONE_NUMBER в файле .env.
Написание кода
Теперь пришло время написать код. Всего один файл. Создайте новый файл с именем main.go в корневом каталоге проекта и вставьте в него приведенный ниже код. После этого замените <A MOBILE PHONE NUMBER> и <A LAND LINE NUMBER> на номер мобильного телефона и номер стационарного телефона соответственно.
Скопировать код
Приведенный выше код определяет три функции:
- main(): является точкой входа в приложение. Она начинается с загрузки переменных окружения, зарегистрированных в .env, перед инициализацией нового объекта Twilio RestClient и массива номеров телефонов для проверки с помощью Twilio Lookup v2 API. После этого код перебирает список номеров телефонов, возвращенный функцией filterLandLines(), и пытается отправить SMS на каждый из них, вызывая sendSMS(). Пользователь получает уведомление об успешности или неудаче отправки SMS через текст, выводимый в терминал.
- filterLandLines(): использует пользовательский итератор для фильтрации стационарных номеров из массива номеров телефонов, возвращая итератор строк. По мере того как итератор проходит по массиву, он пытается получить сведения о каждом номере телефона из Twilio Lookup v2 API, включая информацию Line Type Intelligence. Эта информация необходима, так как она содержит тип номера телефона. Если тип номера телефона не установлен как "mobile", номер не включается в возвращаемый итератор.
- sendSMS(): это небольшая вспомогательная функция, которая отправляет SMS получателю с предоставленным сообщением.
Проверка работоспособности кода
Теперь, когда код написан, давайте посмотрим его в действии, выполнив следующую команду в новой вкладке или сессии терминала.
Скопировать код
Вы должны увидеть в терминале вывод, похожий на приведенный ниже.
Скопировать код
Вот как избежать отправки SMS на стационарные телефоны на Go с помощью Twilio Lookup v2 API
Благодаря возможностям Twilio Lookup v2 API и стандартной библиотеки Go вам не нужно писать много кода для фильтрации стационарных номеров из списка. Обязательно используйте эту функциональность, чтобы не платить за недоставленные SMS и создавать более надежные приложения на Go, интегрированные с Twilio.
Мэттью Сеттер — редактор разделов PHP, Go и Rust в команде Twilio Voices, а также разработчик на каждом из этих языков. Он также является автором книг Mezzio Essentials и Deploy with Docker Compose. Вы можете найти его по адресу msetter[at]twilio.com, в LinkedIn и на его сайте.







