26. Уведомления и отладка сценария

Сценарий умеет разговаривать с администратором, пока работает. Уведомление, отправленное в приложение, всплывает карточкой прямо в редакторе — и это самый практичный способ отладки, какой здесь есть.

Что это

Стопка уведомлений
Figure 1. Карточки уведомлений в углу окна

Карточки появляются в правом нижнем углу и растут вверх. У каждой:

  • в шапке — код сценария и имя компонента, который её прислал;

  • ниже — текст, целиком, с переносом длинных строк;

  • цвет полосы слева — вид уведомления: информация, успех, предупреждение, ошибка;

  • крестик справа — закрыть.

Источников у стопки два, и вид у карточек один: сообщения самого редактора (сценарий сохранён, версия на сервере новее, не закрепились файлы) и уведомления от работающего сценария.

Сколько карточка висит

По умолчанию восемь секунд, дальше исчезает сама. Срок задаётся в отправляющем компоненте свойством Автоскрытие, с.

Клик по карточке продлевает показ до тридцати секунд — считая от клика. Каждый следующий клик продлевает снова. Карточку, которой оставалось больше, клик не укорачивает.

Правый клик открывает два действия:

Копировать

кладёт в буфер время, код сценария, имя компонента, вид и текст. Удобно, когда уведомление нужно приложить к обращению или просто сохранить, пока оно не исчезло.

Скрыть все

убирает стопку целиком. Пригодится, когда сценарий разговорчивый.

В самом редакторе карточки не сохраняются: исчезнувшую здесь не вернуть. Если уведомление важное, продлите его кликом и скопируйте — или задайте компоненту Автоскрытие, с = 0: такая карточка не скроется сама и будет ждать, пока вы её не закроете. А чтобы уведомление осталось после закрытия вкладки, у компонента есть свойство Сохранять (см. ниже).

Как сценарий их отправляет

Уведомления шлёт компонент Уведомление (Компонент Уведомление).

Свойства компонента «Уведомление»
Figure 2. Свойства «Уведомления» в режиме отправки в приложение

По умолчанию этот компонент пишет в лог, а не в приложение. Чтобы уведомление всплыло у вас на экране, в свойстве Режим нужно выбрать отправку в приложение.

Уходит она не «во все вебсокеты подряд», а на отдельный служебный интерфейс уведомлений. Слушает его редактор сценариев — потому карточки и видны здесь; может слушать и специально написанное приложение. Обычные приложения платформы, включая продуктовые пакеты, в стандартном режиме на этот интерфейс не подключены и таких уведомлений не получают.

Дальше настраивается то, что видно на карточке:

Пользователь и Группа

кому отправлять. Уведомление придёт тем, кто указан здесь, — на тот самый служебный интерфейс, который слушает их редактор сценариев. Открыт редактор — карточка всплывёт; закрыт — уведомление всё равно уйдёт, показывать его будет некому.

Текст

что показать. Это аргумент, а не строка: сюда одинаково ложится и константа, и выражение, собранное из нескольких переменных и стартовых параметров. Текущее время тоже подставляется — выражением с подходящими функциями (глава 15), удобно, когда нужен момент события.

Тип уведомления

цвет карточки: инфо, успех, предупреждение, ошибка.

Автоскрытие, с

сколько секунд держать. Пусто — восемь.

Сохранять

записать уведомление в базу — тогда оно останется в кабинете пользователя, а не растворится вместе с карточкой. Возможность есть, но усердствовать с ней не стоит: асинхронное уведомление в один конец дёшево, запись в базу — нет. Для беглой отладки она обычно не нужна.

Отладка уведомлениями

Вот ради чего это стоит освоить.

Редактор не видит обработчиков и не показывает значений переменных конкретного вызова — но уведомления он видит. Значит, сценарий может рассказать о себе сам, а вы будете читать это, не выходя из редактора.

Приём такой:

  1. Ставите в интересных точках сценария Уведомление в режиме отправки в приложение, адресатом — себя.

  2. В Текст пишете выражение: где мы находимся и что сейчас в переменных. Например, "после меню, dtmf=" + str([dtmf]) + ", попытка " + str([tries]).

  3. Сохраняете. Звоните в IVR или запускаете служебный сценарий (глава 25).

  4. Смотрите в правый нижний угол редактора.

Карточки приходят по ходу выполнения и строго в том порядке, в каком сценарий их отправил, — последовательность событий сохраняется. По ним видно то, чего не видно ни на карте, ни в трассировке: какой ветвью пошёл реальный вызов и с какими значениями.

Несколько приёмов, которые экономят время.

Нумеруйте. 1. вход, 2. после меню, 3. перед переводом — по номерам сразу видно, какие точки вызов прошёл, а какие пропустил.

Пишите значения, а не факты. «Прошли сравнение» говорит меньше, чем «сравнение: [a]=17, [b]=20 → ложь».

Ставьте разные виды. Ошибочные ветки — красным типом, нормальный ход — информационным. Стопка тогда читается по цветам.

Не забывайте выключать. Отладочные уведомления — такие же компоненты сценария: перед боевым сохранением их выключают (глава 21), а не удаляют. Вызов пройдёт сквозь них, а включить обратно — одно нажатие.

Чего ожидать не стоит

Карточки живут во вкладке

по умолчанию всплывшее уведомление нигде не остаётся — закрыли редактор, и показывать его уже некому. Нужен след надолго — у компонента есть свойство Сохранять (см. выше): с ним уведомление ложится в кабинет пользователя. Для беглой отладки это избыточно.

Это не отладчик

шага, точки останова и просмотра переменных здесь нет. Уведомление скажет ровно то, что вы попросили его сказать.

Адресат обязателен

уведомление приходит указанным пользователям. Если адресат не вы, в вашем редакторе ничего не появится.

Порядок сохраняется

последовательность событий гарантирована — карточки приходят в том порядке, в каком сценарий их отправил. По стопке можно читать ход выполнения как есть.

◀ 25. Запуск служебного сценария

Приложение A. Горячие клавиши ▶