Это приложение на базе Spark использует Twilio для перенаправления входящих телефонных звонков на другие номера в зависимости от места жительства звонящего. Когда пользователь совершает звонок, мы определяем его предполагаемое местоположение и запускаем соответствующие действия в приложении.
Ваш бизнес может использовать эту функциональность для автоматического перенаправления клиентов в региональный офис или для направления звонящих на опрос после взаимодействия с службой поддержки. В нашем примере приложение соединяет звонящих с офисами их сенаторов США.
Коммуникация может стать мощной силой для перемен. Мы наблюдаем рост гражданской активности по мере того, как инструменты для участия в общественной жизни становятся всё более доступными для общества, подключённого к интернету и мобильным устройствам. В ноябре 2016 года Эмили Эллсворт поделилась советами о том, как привлечь внимание конгрессмена, с главным выводом: звонки работают.
Чтобы запустить это приложение самостоятельно, скачайте код и следуйте инструкциям в README на GitHub.
Давайте начнём!
Для этого приложения мы будем использовать библиотеку Twilio Java Helper для взаимодействия с API Twilio. Первым шагом станет настройка учётной записи Twilio и самого приложения Spark.
Вам понадобится Twilio-номер с поддержкой голосовых вызовов, если у вас его ещё нет.
Мы предоставили пример набора данных, который можно загрузить в локальную базу данных для тестирования и разработки. В нашем наборе данных штаты сопоставлены с сенаторами, а сенаторы — с несколькими тестовыми Twilio-номерами, а не с *реальными* номерами сенаторов. *Обратите внимание: этот набор данных, скорее всего, устареет к моменту вашего использования, поэтому рекомендуем создать собственный, если вы хотите подготовить приложение к продакшену.*
Последний элемент головоломки конфигурации — создание вебхука для приёма входящих звонков. После настройки базы данных и запуска приложения перейдите к Twilio-номеру, который вы хотите использовать, и настройте Voice URL на ваше приложение. В нашем примере маршрут — `/callcongress/welcome`.
Рекомендуем использовать ngrok для предоставления доступа к вашей локальной среде разработки из Twilio.
Теперь ваш Twilio-номер настроен на отправку HTTP-запросов на эндпоинт `/welcome` при всех входящих голосовых звонках. Этот запрос от Twilio содержит полезные параметры. Для нашего случая нас больше всего интересует `fromState`, так как он поможет нам сделать предположение о штате проживания звонящего.
Чтобы поприветствовать звонящего и правильно перенаправить его в офисы сенаторов, нам нужно сформировать ответ с помощью TwiML.
Поскольку параметр `fromState` поступает с телефона пользователя, а не из его реальной геолокации, мы должны убедиться, что звонящий будет перенаправлен в соответствии с его штатом проживания. Давайте разберём, как мы формируем ответ, который приветствует звонящего и запрашивает подтверждение его штата.
Начнём TwiML-ответ с приветственного сообщения, используя `
После того как Twilio соберёт эту информацию, он отправит POST-запрос с вводом звонящего на маршрут, указанный в параметре `action`, чтобы мы могли лучше перенаправить пользователя в нашем приложении.
Если по какой-то причине входящий запрос к Twilio не содержит значение `fromState`, нам нужно получить немного больше информации от звонящего, прежде чем продолжить.
Этот код должен быть вам знаком. Если мы не обнаруживаем `fromState`, мы используем `
Теперь, когда мы знаем штат проживания звонящего, мы можем найти его сенаторов и перенаправить звонок на соответствующий номер.
Как и в предыдущем маршруте, мы используем `
Атрибут `action` отлично подходит для перенаправления звонка в процессе и является основой нашего случая использования переадресации звонков.
Однако важно отметить, что `action` сработает только после того, как набранная сторона (в нашем случае сенатор звонящего) завершит звонок. Twilio продолжит перенаправлять оригинального звонящего, но он должен оставаться на линии на протяжении всего процесса.
После того как первый сенатор завершит звонок с пользователем, звонящий будет перенаправлен ко второму сенатору штата. Как и в предыдущем маршруте, мы добавим атрибут `action`, который перенаправит звонящего на последний фрагмент TwiML.
После завершения звонка со вторым сенатором пользователь услышит короткое сообщение с благодарностью за звонок. Затем мы завершаем звонок с помощью `
Вот и всё! Теперь вы можете запустить свой сервер разработки с помощью ngrok, позвонить на свой Twilio-номер и быть перенаправленным к своим сенаторам!
Но подождите… это ведь не *настоящий* номер вашего сенатора, помните? Мы заполнили базу данных примера приложения тестовыми номерами с лёгкими TwiML-эндпоинтами, так что ещё предстоит проделать работу, чтобы довести это приложение до продакшен-версии.
Если ваш продакшен-сценарий совпадает с нашим демо, API ProPublica предоставляет доступ к большому объёму государственных данных, включая штаты и номера телефонов сенаторов. Возможно, вы захотите добавить ещё больше функциональности для своих граждански активных пользователей.
**Хотите создать что-то ещё более масштабное?** Узнайте, как twilio.org помогает людям использовать обмен сообщениями, голосовые и видеозвонки для продвижения своих инициатив, соединяя людей и ресурсы по всему миру.
Какой бы ни была ваша задача, мы надеемся, что вы почувствуете себя увереннее, используя полученные здесь знания для бесшовной переадресации звонков ваших пользователей.
**Вам также могут понравиться эти уроки:**
Превратите веб-трафик в телефонные звонки одним нажатием кнопки.
Используйте тёплые трансферы на базе Twilio, чтобы помочь агентам подключать других в реальном времени.
**Помогло ли это?**
Спасибо за ознакомление с этим руководством. Если у вас есть отзывы, поделитесь ими с нами в Twitter и расскажите, что вы создаёте!