Когда вы создаете приложение с помощью Twilio, подключение вашего приложения к номеру Twilio — это просто вопрос определения нескольких вебхуков для частей вашего приложения, которые будут обрабатывать голосовые и SMS-запросы. Вот так, голосовые вызовы и SMS становятся доступными. Однако иногда вам может понадобиться резервный набор инструкций на случай возникновения проблем, например, сбоя связи между Twilio и вашим веб-приложением. Вы можете легко выйти за рамки стандартных настроек и настроить свое приложение для работы с такими сценариями, используя резервные URL-адреса для голосовых вызовов и SMS.
Приложения Twilio по своей природе являются распределенными, а соединения определяются через URL-адрес голосового запроса и URL-адрес SMS-запроса. Если Twilio не может получить корректный ответ от вебхуков, которые вы определили, он отреагирует заранее заданным образом:
— В случае ошибки при получении URL-адреса голосового запроса фиксируется ошибка, и вызывающему абоненту воспроизводится заранее записанное сообщение о том, что произошла ошибка.
— В случае ошибки при получении URL-адреса SMS-запроса фиксируется ошибка, и больше ничего не происходит.
Ошибка при получении вашего URL-адреса может произойти по разным причинам, две наиболее распространенные из них:
— Запрос истекает по времени (время ожидания по умолчанию установлено на 15 секунд)
— Возвращаемый TwiML недействителен
Вот полный список возможных ошибок. Если вашему приложению необходимо определить другое поведение в этом сценарии, вы можете задать пользовательский резервный URL-адрес как для голосовых вызовов, так и для SMS. Эти дополнительные поля можно отобразить, нажав на ссылки «Дополнительные настройки голосовых вызовов» и «Дополнительные настройки SMS».
В случае, если Twilio не может получить доступ к вашему URL-адресу голосового запроса, вы можете определить резервный URL-адрес для голосовых вызовов, который Twilio вызовет. Twilio отправит параметры ‘ErrorCode’ и ‘ErrorUrl’, указывающие код ошибки и URL-адрес, на котором произошел сбой.
Конечно, возможность задавать резервные URL-адреса не будет полезной, если вы не знаете, что делать по-другому при ошибке выполнения вашего приложения. Вы определенно не захотите дублировать URL-адрес запроса в надежде, что он сработает во второй раз. Существует три метода, которые вы можете использовать для повышения надежности вашего приложения:
**1) Делайте проще**
Если URL-адрес запроса, который вы вызвали, выполняет сложную цепочку обработки, включающую несколько потенциальных точек отказа, вызовите резервный URL-адрес, который выполняет только минимально необходимые действия и обходит наиболее вероятные точки отказа. Самое простое действие — вернуть пользовательское сообщение об ошибке и попросить пользователя попробовать снова.
**2) Настройте резервный сервер**
Возможно, временная проблема с подключением вызывает сбой вашего URL-адреса запроса. В этом случае может помочь наличие резервного URL-адреса, размещенного на другом сервере. Этот сервер может быть таким же простым, как корзина AWS S3, содержащая статические файлы TwiML. Какой бы вариант вы ни выбрали для резервного сервера, доступность и надежность должны быть важнее функциональности.
**3) Отправляйте уведомление**
Независимо от того, используете ли вы голосовые вызовы, SMS, электронную почту или другой канал связи, важно, чтобы кто-то был уведомлен в случае сбоя URL-адреса запроса вместе с соответствующей информацией (URL-адрес и код ошибки). Таким образом, вы сможете продолжать отладку и улучшать доступность и надежность ваших приложений Twilio.