← Cloudflare Waiting Room / waiting-room / how-to
Настройка зала ожидания
Вы можете настроить зал ожидания на панели управления или через API.
Настройка зала ожидания в дашборде
Чтобы настроить и предварительно просмотреть оформление зала ожидания, выберите Настройка вкладку в Создание зала ожидания страницу.
Cloudflare предлагает варианты настройки внешнего вида вашего зала ожидания:
- Зал ожидания по умолчанию: зал ожидания без брендинга, который показывает посетителям расчётное время ожидания.
- Выберите язык страницы зала ожидания по умолчанию. Доступны следующие языки: английский, арабский, немецкий, испанский, французский, индонезийский, итальянский, японский, корейский, нидерландский, польский, португальский (бразильский), турецкий и китайский (упрощённый и традиционный).
- Пользовательский зал ожидания: отредактируйте текст шаблона или создайте собственный HTML-код:
- Настраивайте содержимое HTML и CSS: шрифты, цвета, статические изображения, дополнительные языки и многое другое.
- Редактируйте содержимое напрямую в панели управления или импортируйте нужные файлы.
- Получение JSON-совместимого ответа зала ожидания: Включите этот переключатель, чтобы дополнительно получать ответ в формате JSON со статусом пользователя в зале ожидания.
Зал ожидания по умолчанию
Чтобы выбрать зал ожидания по умолчанию без брендирования:
- Выберите зал ожидания.
- Перейдите в Настройка шаг.
- Выберите Зал ожидания по умолчанию.
- Выберите язык страницы зала ожидания по умолчанию.
Пользовательский зал ожидания
Чтобы настроить зал ожидания:
- Выберите зал ожидания.
- Перейдите в Настройка шаг.
- Выберите Пользовательский зал ожидания.
Вы можете редактировать код HTML прямо в текстовом поле:
- Выберите Скачивание шаблона по умолчанию чтобы скачать на компьютер HTML-файл с содержимым шаблона по умолчанию.
- Выберите Скачать чтобы скачать на компьютер HTML-файл с содержимым текстового поля.
- Выберите Copy чтобы скопировать текст из текстового поля в буфер обмена, а затем вставить его в любой удобный вам редактор.
Текст шаблона содержит код для отображения времени ожидания. Если вы хотите показывать посетителям расчётное время ожидания, не удаляйте этот контент.
Загрузите HTML-файл
- Выберите Импорт чтобы загрузить HTML-файл с компьютера.
- Выберите файл в диалоговом окне, а затем нажмите Открыто. Максимальный размер HTML-файла составляет 1,048,576 байт (1 МБ).
Внесите дальнейшие изменения в текстовое поле. Включите код для отображения времени ожидания чтобы отображать примерное время в очереди на странице Waiting Room, либо создайте собственную страницу с помощью доступные переменные.
Отображение времени ожидания
Следующее содержимое в <main> раздел HTML-кода шаблона отображает время ожидания:
<h2 id="time-remaining">
<noscript>
{{#waitTimeKnown}}Your estimated wait time is {{waitTimeFormatted}}...{{/waitTimeKnown}}
{{^waitTimeKnown}}{{#queueIsFull}}The estimated wait time is greater than a day. You will
automatically be placed in the queue once space is available.{{/queueIsFull}}
{{^queueIsFull}}Your estimated wait time is unavailable.{{/queueIsFull}}{{/waitTimeKnown}}
</noscript>
</h2>Следующий скрипт в <body> раздел после <main> получает время ожидания:
<script type="text/javascript">
var remainingEl = document.getElementById('time-remaining');
var waitTime = {{waitTime}};
var waitTimeKnown = {{waitTimeKnown}};
var remainingString = 'Your estimated wait time is ';
if (!waitTimeKnown) {
remainingString += 'unavailable.'
} else {
if (waitTime === 1) {
remainingString += waitTime + ' minute...';
} else {
remainingString += waitTime + ' minutes...';
}
}
remainingEl.innerText = remainingString;
</script>переменная Turnstile
Если вы используете Turnstile для настроенного зала ожидания, необходимо обеспечить turnstile переменная добавляется. Шаблон страницы очереди по умолчанию и все новые пользовательские шаблоны уже включают эту переменную. Если у вас есть существующий пользовательский HTML-шаблон и вы хотите включить интеграцию Turnstile, вам нужно будет добавить {{{turnstile}}} где-нибудь в шаблоне, чтобы Waiting Room знал, куда поместить виджет. Waiting Room использует шаблоны Mustache, поэтому для вставки необработанного HTML в шаблон без экранирования нужны три фигурные скобки вместо двух.
<!DOCTYPE html>
<html>
<head>
<title>Waiting Room</title>
</head>
<body>
<h1>You are currently in the queue.</h1>
{{#waitTimeKnown}}
<h2>Your estimated wait time is {{waitTimeFormatted}}.</h2>
{{/waitTimeKnown}}
{{^waitTimeKnown}}
<h2>Your estimated wait time is unknown.</h2>
{{/waitTimeKnown}}
{{#turnstile}}
<!-- for a managed (and potentially interactive) challenge, you may want to instruct the user to complete the challenge -->
<p>Please complete this challenge so we know you're a human:</p>
{{{turnstile}}} <!-- include the turnstile widget -->
{{/turnstile}}
</body>
</html>При использовании Infinite Queue, особенно вместе с managed challenges, которые могут быть интерактивными, стоит предупредить пользователей, что они не попадут в очередь, пока не пройдут проверку.
Доступные переменные
При создании зала ожидания с пользовательским HTML вам доступны несколько переменных для настройки ответа. Полный список переменных приведён в json_response_enabled параметр в Документация Cloudflare API.
Поддержка нескольких языков
Настраиваемые залы ожидания могут отображать текст на любом языке, поддерживаемом набором символов UTF-8. Чтобы отобразить примерное время ожидания, можно использовать числовые переменные, такие как waitTime и waitTimeHours в шаблоне зала ожидания независимо от языка пользователя. При этом на данный момент следующие переменные доступны только на английском языке: waitTimeFormatted, timeUntilEventStartFormatted, а также timeUntilEventEndFormatted.
Если вы хотите отображать разные языки в своём настроенном зале ожидания в зависимости от пути или поддомена, можно добавить в пользовательский HTML код на JavaScript, который это реализует. Ниже приведено несколько исходных шаблонов, которые можно использовать в качестве примера для начала работы:
-
Чтобы отображать другой язык в зависимости от пути, скачайте этот шаблон. Шаблон отображает содержимое на английском языке, если путь содержит
enили по умолчанию, японский, если путь содержитjp, французский, если путь содержитfr, и испанский, если путь содержитes. -
Чтобы отображать другой язык в зависимости от поддомена, скачайте этот шаблон. По умолчанию шаблон отображает содержимое на английском языке, а также если поддомен содержит
en, японский, если поддомен содержитjp, французский, если поддомен содержитfr, и испанский, если поддомен содержитes.
Скачайте любой из этих шаблонов и настройте его по своему усмотрению. Обновите путь или поддомен так, чтобы он отражал структуру выбора языка вашего сайта. Добавить другие языки в эти шаблоны можно, добавив переводы в translations объект для каждой из локалей.
Размещение ресурсов
Если вы используете изображения или другие ресурсы для настроенного зала ожидания, не разместите эти ресурсы на хосте, который охватывает ваш зал ожидания. Иначе запросы к этим ресурсам не смогут пройти через зал ожидания.
Предварительный просмотр зала ожидания
Чтобы предварительно просмотреть оформление зала ожидания:
- В своём приложении перейдите к Трафик > Waiting Room.
- Либо создать зал ожидания или отредактировать существующий.
- Перейдите в Проверить шаг.
- Выберите Предварительный просмотр зала ожидания:
- Выберите Очередь чтобы отображать оформление Waiting Room, когда оно включено на панели управления, и Queue-all не включено.
- Выберите Queue-All чтобы отображать оформление Waiting Room, когда оно включено на панели управления, и Queue-all включена. Когда Queue-all включена для Waiting Room, примерное время ожидания не отображается.
Устранение неполадок
Если при предварительном просмотре зала ожидания вы замечаете что-то неожиданное, проверьте свой пользовательский код на правильность синтаксиса. Часто забывают закрыть каждый тег соответствующим закрывающим тегом (имя тега с /).
Настройка зала ожидания через API
С помощью Waiting Room API можно настроить веб-страницу, которая показывается посетителям, помещённым в виртуальный зал ожидания.
В следующем PATCH запрос, custom_page_html поле содержит HTML-код для пользовательский зал ожидания:
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Waiting Rooms Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/waiting_rooms/$WAITING_ROOM_ID" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "webshop-waiting-room",
"host": "example.com",
"new_users_per_minute": 200,
"total_active_users": 300,
"custom_page_html": "<p>Include custom HTML here</p>"
}'Ответ:
{
"success": true,
"errors": [],
"messages": [],
"result": [
{
"id": "1111111111111111111111",
"name": "webshop-waiting-room",
"description": "Waiting room for webshop",
"host": "example.com",
"path": "/shop",
"suspended": false,
"queue_all": false,
"new_users_per_minute": 200,
"total_active_users": 300,
"session_duration": 1,
"disable_session_renewal": false,
"json_response_enabled": false,
"queueing_method": "FIFO",
"cookie_attributes": {
"samesite": "auto",
"secure": "auto"
},
"custom_page_html": "<p>Include custom HTML here</p>",
"created_on": "2014-01-01T05:20:00.12345Z",
"modified_on": "2014-01-01T05:20:00.12345Z"
}
]
}Предварительный просмотр HTML-кода настроенного зала ожидания
Прежде чем отправлять запрос API для настройки страницы зала ожидания с пользовательским HTML, вы можете предварительно просмотреть свой HTML, загрузив его на эндпоинт предварительного просмотра:
POST https://api.cloudflare.com/client/v4/zones/{zone_id}/waiting_rooms/previewВ теле запроса укажите настроенный HTML-код в поле custom_html поле:
{
"custom_html": "<p>Include custom HTML here</p>"
}Обратите внимание, что HTML-содержимое передаётся в конечную точку предварительного просмотра в custom_html поле, но при настройке зала ожидания через API HTML-содержимое передаётся в поле custom_page_html поле.
Пример запроса:
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Waiting Rooms Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/waiting_rooms/preview" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"custom_html": "<p>Include custom HTML here</p>"
}'Конечная точка предпросмотра возвращает временный URL-адрес в теле ответа, по которому можно просмотреть вашу пользовательскую страницу:
{
"result": {
"preview_url": "https://waitingrooms.dev/preview/111111111111"
},
"success": true,
"errors": [],
"messages": []
}Для доступа по предварительной ссылке учётная запись Cloudflare не нужна, поэтому страницу зала ожидания можно проверить на нескольких устройствах.
Предварительный просмотр веб-страницы зала ожидания по умолчанию или текущей настроенной страницы
После создание ссылки для предварительного просмотра, используйте следующую конечную точку, чтобы получить ссылку для предварительного просмотра текущей веб-страницы зала ожидания или страницы по умолчанию, если пользовательская страница не настроена.
GET https://waitingrooms.dev/preview/{preview_id}Ссылка в ответе отображает содержимое custom_page_html поле, отображаемое с помощью mustache ↗.
Используйте необязательный force_queue параметр запроса, чтобы просматривать веб-страницу Waiting Room, когда весь трафик принудительно поставлен в очередь.