26. Уведомления и отладка сценария
Сценарий умеет разговаривать с администратором, пока работает. Уведомление, отправленное в приложение, всплывает карточкой прямо в редакторе — и это самый практичный способ отладки, какой здесь есть.
Что это
Карточки появляются в правом нижнем углу и растут вверх. У каждой:
-
в шапке — код сценария и имя компонента, который её прислал;
-
ниже — текст, целиком, с переносом длинных строк;
-
цвет полосы слева — вид уведомления: информация, успех, предупреждение, ошибка;
-
крестик справа — закрыть.
Источников у стопки два, и вид у карточек один: сообщения самого редактора (сценарий сохранён, версия на сервере новее, не закрепились файлы) и уведомления от работающего сценария.
Сколько карточка висит
По умолчанию восемь секунд, дальше исчезает сама. Срок задаётся в отправляющем компоненте свойством Автоскрытие, с.
Клик по карточке продлевает показ до тридцати секунд — считая от клика. Каждый следующий клик продлевает снова. Карточку, которой оставалось больше, клик не укорачивает.
Правый клик открывает два действия:
- Копировать
-
кладёт в буфер время, код сценария, имя компонента, вид и текст. Удобно, когда уведомление нужно приложить к обращению или просто сохранить, пока оно не исчезло.
- Скрыть все
-
убирает стопку целиком. Пригодится, когда сценарий разговорчивый.
|
В самом редакторе карточки не сохраняются: исчезнувшую здесь не вернуть.
Если уведомление важное, продлите его кликом и скопируйте — или задайте
компоненту Автоскрытие, с = |
Как сценарий их отправляет
Уведомления шлёт компонент Уведомление (Компонент Уведомление).
|
По умолчанию этот компонент пишет в лог, а не в приложение. Чтобы уведомление всплыло у вас на экране, в свойстве Режим нужно выбрать отправку в приложение. Уходит она не «во все вебсокеты подряд», а на отдельный служебный интерфейс уведомлений. Слушает его редактор сценариев — потому карточки и видны здесь; может слушать и специально написанное приложение. Обычные приложения платформы, включая продуктовые пакеты, в стандартном режиме на этот интерфейс не подключены и таких уведомлений не получают. |
Дальше настраивается то, что видно на карточке:
- Пользователь и Группа
-
кому отправлять. Уведомление придёт тем, кто указан здесь, — на тот самый служебный интерфейс, который слушает их редактор сценариев. Открыт редактор — карточка всплывёт; закрыт — уведомление всё равно уйдёт, показывать его будет некому.
- Текст
-
что показать. Это аргумент, а не строка: сюда одинаково ложится и константа, и выражение, собранное из нескольких переменных и стартовых параметров. Текущее время тоже подставляется — выражением с подходящими функциями (глава 15), удобно, когда нужен момент события.
- Тип уведомления
-
цвет карточки: инфо, успех, предупреждение, ошибка.
- Автоскрытие, с
-
сколько секунд держать. Пусто — восемь.
- Сохранять
-
записать уведомление в базу — тогда оно останется в кабинете пользователя, а не растворится вместе с карточкой. Возможность есть, но усердствовать с ней не стоит: асинхронное уведомление в один конец дёшево, запись в базу — нет. Для беглой отладки она обычно не нужна.
Отладка уведомлениями
Вот ради чего это стоит освоить.
Редактор не видит обработчиков и не показывает значений переменных конкретного вызова — но уведомления он видит. Значит, сценарий может рассказать о себе сам, а вы будете читать это, не выходя из редактора.
Приём такой:
-
Ставите в интересных точках сценария Уведомление в режиме отправки в приложение, адресатом — себя.
-
В Текст пишете выражение: где мы находимся и что сейчас в переменных. Например,
"после меню, dtmf=" + str([dtmf]) + ", попытка " + str([tries]). -
Сохраняете. Звоните в IVR или запускаете служебный сценарий (глава 25).
-
Смотрите в правый нижний угол редактора.
Карточки приходят по ходу выполнения и строго в том порядке, в каком сценарий их отправил, — последовательность событий сохраняется. По ним видно то, чего не видно ни на карте, ни в трассировке: какой ветвью пошёл реальный вызов и с какими значениями.
|
Несколько приёмов, которые экономят время. Нумеруйте. Пишите значения, а не факты. «Прошли сравнение» говорит меньше, чем «сравнение: [a]=17, [b]=20 → ложь». Ставьте разные виды. Ошибочные ветки — красным типом, нормальный ход — информационным. Стопка тогда читается по цветам. Не забывайте выключать. Отладочные уведомления — такие же компоненты сценария: перед боевым сохранением их выключают (глава 21), а не удаляют. Вызов пройдёт сквозь них, а включить обратно — одно нажатие. |
Чего ожидать не стоит
- Карточки живут во вкладке
-
по умолчанию всплывшее уведомление нигде не остаётся — закрыли редактор, и показывать его уже некому. Нужен след надолго — у компонента есть свойство Сохранять (см. выше): с ним уведомление ложится в кабинет пользователя. Для беглой отладки это избыточно.
- Это не отладчик
-
шага, точки останова и просмотра переменных здесь нет. Уведомление скажет ровно то, что вы попросили его сказать.
- Адресат обязателен
-
уведомление приходит указанным пользователям. Если адресат не вы, в вашем редакторе ничего не появится.
- Порядок сохраняется
-
последовательность событий гарантирована — карточки приходят в том порядке, в каком сценарий их отправил. По стопке можно читать ход выполнения как есть.