До недавнего времени Анри и его команда использовали стационарную линию в качестве основной телефонной системы для своей компании. В поисках способа модернизации они решили самостоятельно создать решение на базе Twilio, которое обеспечило бы им больше гибкости и контроля.
Команда взяла за основу простую концепцию Twimlet, но решила привнести в нее собственную изюминку. Используя Elixir вместе с REST API Twilio, они в кратчайшие сроки запустили систему и начали звонить!
Они создали CRUD-приложение с помощью фреймворка Phoenix и развернули его на Heroku. Таблица базы данных PostgreSQL отслеживает номера Twilio и телефонные номера, на которые они ссылаются, сохраняя их в виде встроенных структур с использованием массива словарей (maps) и встроенной схемы Ecto в Elixir.
Все вызовы Twilio маршрутизируются в две функции, которые определяют, что делать при входящем SMS-сообщении или звонке. Функция для SMS отправляет электронное письмо, а функция для звонка по очереди пытается набрать каждый «реальный» номер телефона, связанный с «виртуальным» номером Twilio.
Поступает звонок:
Приватная функция `try_real_number` ищет вызываемый номер в базе данных, пытается набрать «реальный» номер (например, телефон Анри) и задает HTTP-обратный вызов (callback) для Twilio, отслеживая текущий индекс попытки. Если никто не отвечает или звонок поступает в нерабочее время, в Twilio отправляется инструкция TwiML
URL действия обратного вызова, указанный в инструкции
— Уведомления о записи голосовой почты пересылаются другому пользователю по электронной почте.
— Завершенные звонки заканчиваются.
— Попытки неотвеченных звонков инициируют новый вызов функции `try_real_number` со следующим «реальным» номером из списка.
Функция `answer` просто оборачивает фрагмент XML в ответ Twilio:
Поскольку для Elixir не существовало специальной вспомогательной библиотеки, Анри сказал, что сильно полагался на систему логирования в консоли. «Это было проще простого!»
Анри создавал это решение с учетом собственных потребностей. «Это не потребовало много работы. Это было идеально», — сказал он. Но после того, как он поделился им с друзьями из местного сообщества стартапов, людям оно очень понравилось, и они тоже захотели начать им пользоваться. «Наличие номера Twilio может принести им много пользы, как и нам». Они запустили сайт thisnumber.rocks, чтобы и другие люди, даже без технических знаний, могли обзавестись продвинутой системой переадресации звонков.
Виртуальный номер для фрилансеров и небольших организаций с использованием Twilio https://t.co/JHB7YTpbIA pic.twitter.com/iywZwsCPNU
— Simon Ashley (@simonashley) 14 марта 2017 г.
Вдохновились ли вы на то, чтобы начать создавать собственное решение с нуля, или вам больше по душе следовать руководству, чтобы начать работу на thisnumber.rocks, — мы всегда рады слышать о том, чем вы занимаетесь.
Не стесняйтесь написать по адресу:
— Email: mspeir@twilio.com
— Twitter: @meganspeir
— Github: meganspeir