Расширение возможностей за пределами Google Voice с помощью Twilio: рабочие часы, белые и черные списки

Автор: | 26.07.2026

*Вы можете скачать весь этот проект с GitHub*.

У меня есть признание. Номер на моих визитках — это не номер Twilio, а номер Google Voice.

Я использовал Google Voice для переадресации звонков и голосовой почты, и он служил мне хорошо, но я хотел добавить больше крутых функций, таких как *белые списки*, *черные списки*, *транскрибирование голосовой почты* и *управление списками через SMS*. Вот тут-то и пригодился Twilio.

Я покажу, как я использовал Twilio, чтобы получить детальный контроль над тем, кто и когда может мне звонить. В любое время я общаюсь с клиентами, организаторами мероприятий и партнерами, которым нужно связаться со мной вне рабочего времени. Однако есть люди, которым не обязательно звонить мне в 11 вечера в среду.

При настройке этих функций три концепции выделились особенно: **рабочие часы, белые списки и черные списки**.

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

Звонок поступает, и мы переадресовываем его на выбранный мной номер. Объяснение занимает почти больше времени, чем сам код:

Далее нам нужно записывать голосовую почту и отправлять её на электронную почту. Для гибкости я настроил два возможных варианта: только ссылка на запись или ссылка на запись с текстовой транскрипцией. Я могу выбрать нужный вариант через параметры команды Record.

Оба варианта приводят к схожему коду, поэтому я покажу только вариант с отправкой ссылки на запись:

До этого момента я не создал никакой новой функциональности, так что давайте добавим рабочие часы. Если вы звоните в рабочее время, звонок переадресовывается, в противном случае вы попадаете на голосовую почту. Конечно, теперь нужно разрешить некоторым людям — *моей жене, начальнику и т.д.* — всегда дозваниваться. Мы можем этого добиться, добавив строки 6, 10 и отдельные действия для разрешенных и запрещенных звонков, как показано здесь:

Функция is_allowed (строка 10) довольно проста. Если звонящий находится в списке, он проходит автоматически. В противном случае звонящий подчиняется настроенным рабочим часам:

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

Наконец, добавим черный список и SMS-интерфейс для управления каждым из списков. Сначала перехватим входящие текстовые сообщения и проверим, что они пришли от меня:

**Примечание: В нашей документации по безопасности вы можете найти больше информации о проверке подлинности запроса как действительно исходящего от Twilio. Я настоятельно рекомендую это для продакшена.**

И наконец, давайте обработаем входящее сообщение:

Это позволяет нам использовать SMS для управления белым списком (allow 17035551212), черным списком (block 15128675309), проверки, в каком списке находится номер (status 15128675309), или полного удаления номера из списка (remove 17035551212). Теперь, будь то посадка на рейс, работа за столом или участие в конференции с нестабильным Wi-Fi, я могу обновлять свои списки и управлять переадресацией звонков всего лишь с помощью текстового сообщения.

Хотя это приложение постепенно становится довольно мощным, это всё ещё лишь малая часть возможного. Приложив немного больше усилий, я мог бы добавить отслеживание и логирование звонков в реальном времени, получать информацию из CRM — например, Salesforce или SugarCRM — чтобы предоставлять «подсказку» ещё до того, как я возьму трубку, или интегрироваться с календарём для ещё более интеллектуальной маршрутизации звонков.

В любом случае, теперь моё единственное ограничение — это время, которое я готов вложить, а не доступная функциональность.

*Если вы хотите помочь с проектом, вы можете скачать код с GitHub*.