Лия - База Знаний
  • База знаний
  • 💻Обзор платформы
    • Намерения
      • Добавление намерения
      • Редактирование намерения
      • Как перераспределять намерения
      • Приоритизация намерений
      • Клонирование намерения
      • Добавление и удаление сущностей внутри намерения
      • Удаление намерения
      • Архивирование намерения
    • QA
    • Сущности
    • Тестовый чат
    • Обучение
      • Обучение на нераспознанных сообщениях
      • Обучение по кластерам
    • Создание сценария и работа с ним
      • Динамические сценарии
        • Тестирование в проекте
      • Реакции
        • Реакция Условие
      • Триггеры
      • Инструкция по сборке сценариев
      • Hello World бот
      • Как дообучать Лию
      • Алармные сценарии
  • 🤖Вопросы и ответы
    • Общие
    • Обучение и покрытие
    • Cценарии и намерения
    • Вопросы по приоритизации намерений
    • Датасет
    • Вопросы по аналитике
    • Распознавание
    • Безопасность
    • Интеграция
    • Ядро, языки, кейсы и др.
    • Словарь
    • Вопросы по сниппетам
    • Полезные кейсы
      • Как настроить бот для определения номера телефона и других данных и передачи их в контекст?
      • Как с помощью сниппета сделать API-запрос для обработки номера телефона и иных данных из сообщений?
  • 🤷‍♀️Работа с проектом
    • Как получить доступ к личному кабинету Лии?
    • Начало работы с проектом
    • Управление проектом
    • Безопасность
    • Управление командой
    • Журнал активности
    • Публикация
    • Аналитика
  • ⚙️Разработчикам
    • Подключение бота
      • Chat2Desk
      • Edna
      • Helpdeskeddy
      • Infobip
      • Jivochat
      • LiveChat
      • Omnidesk
      • Usedesk
      • Webim
      • Imotio
      • Chatwoot
    • Лия API
    • Минимальные требования для разработки динамического сценария
    • Работа со сниппетами
    • Контекст
    • Переменные личного кабинета
    • Интеграции
Powered by GitBook
On this page
  • Устройство контекста
  • context.events
  • context.current
  • Установка фактов
  • Примеры использования
  • В сниппетах
  • Mustache-синтаксис
  • Тестирование
  1. Обзор платформы
  2. Создание сценария и работа с ним
  3. Динамические сценарии

Тестирование в проекте

PreviousДинамические сценарииNextРеакции

Last updated 1 year ago

Kонтекст — ключевой объект в Лии, который содержит в себе уникальную для каждого пользователя информацию о проекте, пользователе и взаимодействии пользователя с ботом.

Контекст полезно использовать, когда:

  • для сценария нужна информация о пользователе, полученная по API;

  • в сценарии нужно выводить текст в зависимости от данных конкретного пользователя;

  • нужна переменная, доступная нескольким сниппетам.

Устройство контекста

Объект контекст содержит следующие базовые ключи:

  • context.fact_name — факты, установленные вручную, полученные по API и т. п. (см. ),

  • context.project_id — id проекта,

  • context.user_id — id пользователя,

  • channel_id — id канала, с которого пришло сообщение (например, виджет или API),

  • context.events — массив событий (текстовых сообщений и прочих триггеров/реакций),

  • context.current — быстрый доступ к последнему событию от пользователя.

context.events

Сообщения из переписки хранятся в context.events, который имеет следующую структуру:

[
{
	'incoming': true, // От пользователя
	'type': 'text',
	'timestamp': 1591186466.1,
	'params': {
		'text': 'Привет, бот [a@b.com](mailto:a@b.com)'
	},
	'meta': {
		'intents': {
			'приветствие': {'proba': 0.98}
		},
		'entities': {
			'email': {...}
		}
	}
},
{
	'incoming': false, // От робота
	'type': 'text',
	'timestamp': 1591186466.2,
	'params': {
		'text': 'Привет, пользователь'
	},
	'meta': {
		{'reaction': 'reaction1'}
	}
},
...
]

В объекте 'params' лежат параметры сообщения в зависимости от типа.

В 'meta' во входящих сообщениях лежат намерения и сущности, в исходящих — название реакции из сценария.

context.current

В context.current содержится последнее входящее событие из context.events.


Установка фактов

Существует несколько способов добавления фактов в context:

  • в сниппете через context.set('key', 'value') : такие факты будут доступны во всех сниппетах через context.key;

  • передача по Лия API в JSON-объект facts;

  • вручную через надстройку под дебаг-чатом (такой способ удобен для тестирования работы сниппетов).

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

Порядок приоритетности фактов контекста (от большего к меньшему):

  1. Системные факты: 'project_id' , 'user_id', 'channel_id', 'events', 'current'.

  2. context.set('key', 'value') или заданные вручную.

  3. Распознанные сущности.

  4. facts из API.

Контекст автоматически удаляется для пользователя в случае отсутствия от него обращений в течение 48 часов.


Примеры использования

В сниппетах

Переменная
Значение

context.current.params.text

Последнее текстовое сообщение от пользователя

context.entity_name.raw

Распознанная сущность, как ее написал пользователь

context.entity_name.str

Распознанная сущность в отформатированном виде (https://liaplatform.atlassian.net/wiki/spaces/docs/pages/1319632974)

context.fact_name

Доступ к любому заранее установленному факту

Mustache-синтаксис

Внутри текстового блока сценария можно получить доступ к контексту. Рассмотрим пример с установкой фактов из сниппета:

Создадим сценарий, в котором данный сниппет выполнится в качестве реакции на некоторое намерение пользователя, и выведем в последующем блоке текст, зависящий от установленного контекста:

По умолчанию mustache заменяет спец. символы на их html-код (например кавычку превращает в “"”). Если вы хотите получить строку без кодирования, используйте в шаблоне тройные фигурные скобки.

Результат выполнения сценария:

В случае ошибки выполнения сниппета (переход в ветку Ошибка) факты контекста, установленные в данном сниппете, не сохраняются. Любые события (реакции), генерируемые внутри сниппета, не отправляются.

Тестирование

Для проверки работы сниппетов бывает необходимо установить контекст вручную.

Для проверки работы сценария или обучения намерения можно использовать дебаг-чат.

, распознанные Лией, автоматически добавляются в контекст и доступны поcontext.entity_name — поэтому сущностям следует давать название на латинице в соответствии с традиционными правилами названия переменных в коде;

💻
сущности
Установка фактов