Представляем Address API – международные звонки для ваших приложений под рукой

Автор: | 29.07.2026

Ваш бизнес стремительно растет. По мере расширения услуг на международном уровне вы тщательно продумываете опыт, который предоставляете клиентам в разных частях мира. Обеспечение первоклассного сервиса включает локализацию сайта на разные языки, прием местных валют в качестве оплаты и предоставление местных телефонных номеров для поддержки клиентов. Теперь вы готовитесь к очередному расширению – на этот раз в Мексику.

Пройдя по чек-листу расширения, вы уже локализовали сайт на испанский язык и готовы принимать песо. Осталось только получить местный телефонный номер, чтобы мексиканские клиенты могли связаться с вашей службой поддержки.

Поскольку ваш колл-центр построен на Twilio, выход на рынки других стран, таких как Великобритания, прошел легко, но с Мексикой ситуация немного иная. Как и в ряде других стран, мексиканские регуляторы требуют предоставить Twilio иностранный (за пределами Мексики) адрес для покупки местного мексиканского телефонного номера.

*(Узнайте больше о требованиях к адресам здесь)*

К счастью, теперь Twilio упрощает этот процесс с помощью нашего Addresses API. Этот новый API позволяет клиентам, таким как вы, быстро удовлетворить требования к адресам, предъявляемые многими странами.

В этой статье мы рассмотрим, как создать простой портал управления адресами и телефонными номерами с использованием ASP.NET MVC. Попутно мы узнаем, как использовать API Addresses и Incoming Phone Numbers для покупки телефонных номеров Twilio, включая номера из стран с адресными ограничениями.

Конечно, если вы просто хотите загрузить и развернуть все приложение без необходимости вводить весь код, можете перейти в репозиторий GitHub, где доступно все приложение, показанное ниже.

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

Прежде чем мы начнем, убедитесь, что у вас есть все необходимые инструменты для работы с Addresses API:

— Аккаунт Twilio – зарегистрироваться можно бесплатно!

— Физический адрес – у каждого он есть, верно?

— Выбор языка программирования и фреймворка – я буду использовать C# с ASP.NET MVC, но вы можете выбрать любой язык по своему усмотрению.

Каждый адрес, который вы предоставляете Twilio, может использоваться для удовлетворения адресных требований конкретной страны. В зависимости от страны телефонный номер может иметь одно из трех требований к адресу:

*Любой*: Ваш аккаунт должен иметь адрес, но он может находиться в любой точке мира.

*Иностранный*: Ваш аккаунт должен иметь адрес за пределами страны телефонного номера.

*Местный*: Ваш аккаунт должен иметь адрес в пределах страны телефонного номера.

Пока вы предоставили Twilio хотя бы один адрес, удовлетворяющий требованиям страны, вы сможете приобретать местные номера для этой страны.

Начнем создание приложения для управления адресами с пустого ASP.NET MVC 5 приложения. После создания проекта установим библиотеку Twilio .NET Helper через NuGet.

Затем добавим учетные данные Twilio в файл *Web.config*, чтобы не копировать и не вставлять их каждый раз. Их можно найти в панели управления Twilio и ввести в соответствующий раздел.

Далее создадим новый контроллер под названием *HomeController* в папке Controllers и добавим код, который предоставит доступ к API Twilio, а затем получим список адресов из Twilio и передадим этот список в представление для отображения. Этот список будет пустым, если у вас еще нет адресов. Вскоре мы создадим функционал, позволяющий добавлять новые адреса в аккаунт.

Наш экшен будет следующим:

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

Создав контроллер, добавим представление в папку *Views/Home* под названием *index.cshtml*. Мы будем использовать это представление для отображения всех адресов, зарегистрированных в Twilio. Приложение использует синтаксис Razor от ASP.NET для перебора списка адресов и добавления каждого из них в HTML-таблицу:

Запустим проект. Если вы уже сообщили Twilio об адресе, он будет отображен на веб-странице.

Теперь нам нужен способ добавлять адреса в список с нашего сайта. Давайте создадим форму, которая позволит пользователю ввести адрес и сообщить о нем Twilio.

Для начала вернемся в *HomeController* и добавим еще один метод действия под названием *AddAddress*.

Мы будем использовать его для отображения нового представления *AddAddress.cshtml*, содержащего форму, которая позволяет пользователям вводить адрес. Создадим это представление.

Здесь не так много кода. Мы настроили форму на отправку данных методом `POST` на новый метод действия под названием *Create*. Добавим этот метод в *HomeController*.

Метод *Create* включает несколько параметров. Когда пользователь отправляет форму из представления *AddAddress*, мы используем возможность привязки модели ASP.NET MVC для получения значений формы и заполнения ими параметров метода.

Внутри метода мы делаем две вещи. Сначала используем метод *AddAddress* из вспомогательной библиотеки Twilio, чтобы сообщить Twilio о новом адресе. Затем перенаправляем пользователя обратно к списку адресов.

Теперь создадим страницу с деталями, чтобы пользователи нашего сайта могли просматривать и редактировать адрес, если захотят что-то обновить.

Нам нужен новый метод в *HomeController*, который будет обрабатывать этот запрос. Он вернет всю информацию об одном адресе на основе его уникального идентификатора.

Теперь все, что нам нужно сделать, – это создать представление *Details.cshtml*, которое будет показывать информацию о каждом из адресов.

Знакомо? Это потому, что эта страница очень похожа на нашу страницу создания, за исключением того, что она используется для обновления существующего адреса и будет отображаться с уже заполненными данными. Действие для обновления загруженного адреса будет следующим:

Обратите внимание, что с помощью этого метода можно обновить все, кроме страны, что может быть полезно, когда компания расширяется и переезжает в более просторный офис в той же стране.

Запустите веб-приложение снова. Теперь вы сможете добавлять новые адреса в свой список. Каждый раз, добавляя адрес, вы потенциально удовлетворяете адресные требования страны, что позволяет покупать местные телефонные номера для этой страны. Например, добавление адреса с кодом страны MX удовлетворит адресные требования Мексики. Далее мы рассмотрим изменения в API Twilio, которые позволяют покупать номера в странах с адресными ограничениями.

Теперь у нас есть система, которая позволяет сообщать Twilio об адресах, чтобы мы могли начать покупать телефонные номера в странах, где это требуется.

Но как узнать, есть ли у страны, в которой мы пытаемся купить номер, адресные требования? И если есть, то какие именно? Легко! API доступных телефонных номеров возвращает новый параметр *AddressRequirements*, который сообщает, какие адресные ограничения, если они есть, накладываются на каждый доступный телефонный номер.

Создадим возможность для пользователей нашего сайта искать доступные телефонные номера в странах, для которых у нас есть адреса.

Мы добавим несколько вкладок на наши страницы, чтобы пользователи сайта могли переключаться между номерами и адресами. Для этого откроем файл *Shared/_Layout* и добавим следующий код сразу после открывающего тега *body*:

Теперь создадим новый контроллер под названием *NumbersController*. Убедимся, что мы импортировали вспомогательную библиотеку Twilio в него.

Создадим экшен *Index* для контроллера со следующим кодом:

В методе *Index* мы используем метод *ListAddresses* из вспомогательной библиотеки Twilio .NET для получения списка адресов, о которых мы сообщили Twilio, а затем используем запрос *LINQ* для выбора уникального набора кодов стран из нашего списка адресов.

Далее, используя метод *ListAvailableLocalPhoneNumbers*, ищем список доступных телефонных номеров с поддержкой голосовой связи. Мы передаем код страны, выбранный пользователем сайта.

Наконец, помещаем как список кодов стран, так и список доступных телефонных номеров в *ViewBag*, чтобы использовать их в представлении поиска.

Создав контроллер, создадим соответствующее представление, которое отображает список доступных телефонных номеров и позволяет пользователю менять страну, для которой мы хотим найти номера.

Запустите приложение и перейдите по маршруту *Numbers*. Вы должны увидеть выпадающий список, содержащий все страны, для которых вы уже создали адрес. Вы можете искать номера в любой из этих стран.

Теперь пришло время купить номер. Страница со списком номеров уже содержит ссылку для покупки отдельных телефонных номеров, так что все, что нам нужно сделать, – это реализовать метод действия, который отвечает на URL в этой ссылке.

Здесь мы используем обычный метод *AddIncomingPhoneNumber* для запроса покупки выбранного телефонного номера у Twilio.

Запустите приложение еще раз, и теперь вы сможете покупать новые телефонные номера. Если мы попытаемся купить телефонный номер с адресными ограничениями и еще не предоставили Twilio адрес, удовлетворяющий этим требованиям, Twilio вернет ошибку с указанием конкретного адресного требования для этого телефонного номера.

Итак, теперь у нас есть простое приложение для управления адресами и телефонными номерами, которое упрощает поиск и покупку телефонных номеров из стран, требующих наличия адреса для владения телефонным номером.

Наличие адреса не является обязательным требованием для приобретения местных телефонных номеров во всех странах, но с новыми возможностями, описанными в этой статье, когда вашему бизнесу нужно предоставить первоклассный и локализованный опыт клиентам по всему миру, включая клиентов из стран с адресными ограничениями, Twilio всегда готов поддержать вас.

Мне было бы интересно узнать, какие требования у вашего бизнеса в отношении адресов для телефонных номеров и как вы используете новый API адресов Twilio. Свяжитесь со мной в Twitter @marcos_placona, по электронной почте marcos@twilio.com или MarcosPlacona в G+, чтобы рассказать об этом подробнее.