*Вы можете скачать весь этот проект с 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*.