Справочник по синтаксису грамматик намерений

Грамматические намерения находят во взаимодействии заданные ключевые слова или фразы по формальным правилам, без модели оценки ИИ. Они вычисляются быстро, не требуют оплаты внешнего поставщика ИИ и лучше всего подходят для поиска известной лексики. Сочетание грамматических намерений и намерений на основе ИИ описано в разделе Intent Studio.

В справочнике описан полный синтаксис определения грамматических намерений: от поиска ключевых слов и фраз до выбора участника разговора, ограничений по времени и положению слов и объединяющих их логических операторов. Каждый раздел содержит примеры сопоставления шаблона с произнесенным текстом.

Сопоставление ключевых слов и фраз

Чтобы искать точное совпадение ключевых слов или фраз, заключите нужное слово или фразу в кавычки («»).

Сопоставление ключевых слов и фраз не учитывает регистр.

Например:

  • "thank you"

При поиске точных слов и фраз в языках, для которых расшифровка не разделяет слова пробелами (например, китайском или японском), окружайте ключевые слова символами подстановки (*). Например:

  • "*インターネット*"
  • "*遅い*"

Слова-заполнители и шаблоны

Между словами шаблона можно указать заполнители, допускающие любые промежуточные слова.

Слова-заполнители обозначаются звездочкой (*).

Для нескольких промежуточных слов используйте несколько звездочек через пробел (* * *) либо одну звездочку с числом в квадратных скобках (*[3]).

Например:

  • “thank you * * for your business”
  • “thank you *[2] for your business”

Промежуточные слова не обязательны для совпадения с заполнителем. Например, шаблон *[2] допускает 0, 1 или 2 промежуточных слова.

Таким образом, в приведенных выше примерах совпадут следующие предложения:

  • “thank you for your business”
  • “thank you all for your business”
  • “thank you so much for your business”

Несколько звездочек (* * * или *[3]) не могут соответствовать нескольким промежуточным словам в языках, для которых расшифровка не разделяет слова пробелами (например, китайском или японском). Если вам требуется такой синтаксис, обратитесь в поддержку Cloud Contact для обсуждения возможных решений.

Аффиксы (префиксы и суффиксы)

Звездочка (*) в начале или в конце слова позволяет расширить совпадение на слова с дополнительными символами.

Например:

  • “*end” соответствует “send” или “bend”
  • “end*” соответствует “ended” или “ends”

Альтернативные слова

Чтобы указать альтернативные слова или фразы внутри шаблона, заключите их в угловые скобки и разделите вертикальной чертой (“<first word or phrase | second word or phrase>").

Шаблон совпадет, если обнаружен любой из перечисленных вариантов.

Например, “have a good <day | week>” будет соответствовать фразам:

  • “have a good day”
  • “have a good week”

Участник разговора

В шаблоне грамматического намерения необходимо указать участника разговора, чья речь проверяется. Поддерживаются следующие обозначения:

AGENT — соответствует тексту, произнесенному оператором

CUSTOMER — соответствует тексту, произнесенному клиентом

ANY — соответствует тексту, произнесенному любой из сторон

Стандартное поведение

Обычно грамматические намерения проверяются в текущем обрабатываемом сообщении. После обозначения участника поставьте двоеточие (:), затем укажите слово или фразу для поиска. Например:

  • AGENT: "hello"
    • срабатывает, когда оператор произносит “hello»
  • CUSTOMER: "appointment"
    • срабатывает, когда клиент говорит “appointment”
  • ANY: "support"
    • срабатывает, когда любой из участников произносит “support”

Особенности автоматической оценки

При использовании грамматических намерений в автоматической оценке (Autoscoring) доступны дополнительные обозначения участников и модификаторы:

Другой участник (OTHER)

Обозначение OTHER доступно при автоматической оценке взаимодействий с несколькими операторами. Если во взаимодействии участвует несколько операторов, система оценивает каждого отдельно. Для каждой оценки создается частичная расшифровка, в которой:

  • AGENT обозначает оператора, оцениваемого в данный момент
  • CUSTOMER обозначает клиента
  • OTHER обозначает всех остальных участников, включая других операторов и супервизоров

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

Использование контекста (ENABLE_CONTEXT)

Модификатор ENABLE_CONTEXT можно добавлять к обозначению участника при автоматической оценке обращений. При обработке обращения ответы оператора оцениваются по отдельности. По умолчанию поиск намерения ограничен:

  • текущим оцениваемым сообщением оператора и
  • связанным с ним сообщением клиента

Если намерение зависит от сведений, появившихся ранее в разговоре, добавьте [ENABLE_CONTEXT] к обозначению участника.

Например:

  • CUSTOMER: "appointment"
    • соответствует только в том случае, если клиент говорит “appointment” в текущем сообщении
  • CUSTOMER[ENABLE_CONTEXT]: "appointment"
    • совпадает, если клиент упомянул «appointment» в текущем сообщении или в одном из предыдущих сообщений того же обращения
  • ANY[ENABLE_CONTEXT]: "support"
    • совпадает, если любой участник упомянул «support» ранее или в текущем сообщении

Используйте [ENABLE_CONTEXT], если намерение зависит от контекста предыдущих сообщений, например при проверке условия, упомянутого ранее во взаимодействии.

Ограничение по времени

Чтобы задать временной интервал поиска слова или фразы, добавьте справа от обозначения участника квадратные скобки с началом и концом интервала в секундах, разделенными двоеточием (AGENT[0s:30s]:).

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

Отрицательные значения времени задают смещение относительно конца разговора.

Например:

  • AGENT[0s:30s]: “thank you for calling Cloud Contact”
    • совпадает, если оператор произнес фразу в первые 30 секунд разговора.
  • AGENT[:30s]: “thank you for calling Cloud Contact”
    • также совпадает, если оператор произнес фразу в первые 30 секунд разговора.
  • AGENT[-180s:]: “is there anything else I can help you with today”
    • совпадает, если оператор произнес фразу в последние 180 секунд разговора.
  • AGENT[-180s:-5s]: “is there anything else I can help you with today”
    • совпадает, если оператор произнес фразу в интервале от 180 до 5 секунд до конца разговора.

Ограничение по числу слов

Вместо секунд можно указать число произнесенных слов, заменив «s» на «w».

Например:

  • AGENT[:10w]: “thank you for calling Cloud Contact”
    • будет соответствовать, если оператор произнес фразу в первых 10 словах.
  • AGENT[-10w:]: “thank you for calling Cloud Contact”
    • будет соответствовать, если оператор произнес фразу в последних 10 словах.

Перебивание

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

Число перебиваний, необходимое для срабатывания, можно указать в квадратных скобках (INTERRUPTION[3]).

Например:

  • AGENT: INTERRUPTION
    • будет совпадать, когда оператор один раз прервет клиента.
  • CUSTOMER: INTERRUPTION[3]
    • будет совпадать, когда клиент прерывает оператора три раза.

События вызова (удержание, отключение звука, тишина)

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

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

Удержание

Переменная HOLD срабатывает при постановке вызова на удержание. Обозначение участника указывает, кто выполнил удержание.

  • AGENT: HOLD
    • совпадает, если оператор хотя бы один раз поставил вызов на удержание; длительность удержания не важна.
  • AGENT: HOLD[N]
    • совпадает, если оператор поставил вызов на удержание не менее N раз во взаимодействии. N — целое число ≥ 1.
    • Например, AGENT: HOLD[3] совпадает, если оператор поставил вызов на удержание три раза или больше.
  • AGENT: HOLD > M
    • совпадает, если отдельный интервал удержания длился дольше M секунд. M — целое число ≥ 1.
    • Например, AGENT: HOLD > 120 совпадает, если оператор удерживал вызов более двух минут.

Каждый подходящий интервал удержания активирует намерение один раз независимо от своей длительности.

Отключение микрофона

Переменная MUTE срабатывает при отключении микрофона оператором и поддерживает те же формы записи, что и HOLD.

  • AGENT: MUTE
    • совпадает, когда оператор хотя бы один раз отключил микрофон (любая продолжительность).
  • AGENT: MUTE[N]
    • совпадает, если оператор отключал микрофон не менее N раз. N — целое число ≥ 1.
  • AGENT: MUTE > M
    • совпадает, если отдельный интервал отключения микрофона длился дольше M секунд. M — целое число ≥ 1.
    • Например, AGENT: MUTE > 120 может использоваться для обнаружения оператора, отключающего звук на линии вместо удержания.

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

Тишина

Переменная SILENCE находит непрерывный интервал тишины во всем разговоре, когда ни у одного участника не обнаруживается речь дольше M секунд. Тишина относится ко всему разговору, а не к отдельному участнику, поэтому SILENCE записывается без обозначения участника.

  • SILENCE > M
    • совпадает, если ни один участник не говорит дольше M секунд. M — целое число ≥ 1.
    • Например, SILENCE > 120 совпадает при тишине на линии более двух минут и помогает обнаружить оператора, оставшегося в разговоре без речи.

Отсутствие речи

Переменная NO_SPEECH находит непрерывный интервал, когда конкретный участник не произносит обнаруживаемую речь дольше M секунд независимо от того, говорят ли другие участники. В отличие от SILENCE, здесь требуется обозначение участника.

  • CUSTOMER: NO_SPEECH > M
    • совпадает, если клиент не говорит дольше M секунд. M — целое число ≥ 1.
    • Например, AGENT: NO_SPEECH > 120 совпадает, если оператор не говорит более двух минут.

Использование с BEFORE / AFTER / NEAR

Переменные событий вызова можно сочетать с произнесенными фразами с помощью операторов AFTER, BEFORE и NEAR — так обычно оценивается соблюдение правил удержания.

Например:

  • AGENT: "may I place you on hold while I check that for you" BEFORE CUSTOMER: "yes" BEFORE AGENT: HOLD
    • совпадает, если оператор запросил разрешение, клиент согласился и только после этого оператор поставил вызов на удержание.
  • AGENT: "thank you for waiting" AFTER AGENT: HOLD
    • совпадает, если оператор поблагодарил клиента после возвращения с удержания.

Обнаружение SILENCE (зависший разговор или тишина на линии) и MUTE (отключение микрофона вместо удержания) доступно только для анализа истории и поэтому подходят для Автоматическая оценка завершенных взаимодействий, но не для подсказок и уведомлений в реальном времени. Обнаружение HOLD доступно как в реальном времени, так и при обработке прошлых взаимодействий.

Операторы

Локальный оператор AND

Амперсанд (&) позволяет искать несколько ключевых слов или фраз в одной реплике. Порядок слов и фраз не важен.

Например:

  • CUSTOMER: “want to schedule” & “appointment”
    • совпадает, если в одной реплике клиента присутствуют и слово «appointment», и фраза «want to schedule».
    • Например, намерение совпадет, если клиент скажет «I want to schedule an appointment».

Группировка

Ключевые слова и фразы, соединенные операторами, можно группировать круглыми скобками (). Это удобно для сложных сочетаний нескольких фраз.

Например:

  • CUSTOMER: (“want to schedule” | “need to reschedule) & “appointment”

Локальный оператор OR

Вертикальная черта (|) позволяет найти любой из нескольких вариантов в одной реплике. Порядок слов и фраз не важен.

Например:

  • CUSTOMER: (“cancel” | “postpone”) & “subscription”
    • совпадает, если «cancel» или «postpone» присутствует вместе со словом «appointment» в одной реплике клиента.
    • Например, намерение совпадет с репликой «I want to cancel my subscription» или «I want to postpone my subscription».

Локальный оператор NOT

Восклицательный знак (!) позволяет искать отсутствие заданных ключевых слов или фраз в одной реплике.

Например:

  • CUSTOMER: “want” & “subscription” & !(”cancel” & “my”)
    • совпадает, если слова «want» и «subscription» присутствуют в одной реплике, а слово «cancel» отсутствует.
    • Например, намерение совпадет с репликой «I want to purchase a subscription», но не совпадет с «I want to cancel my subscription».

Глобальный оператор AND

Двойной амперсанд (&&) позволяет искать несколько слов или фраз одного участника в любых частях разговора. Их порядок не важен. Глобальный AND также позволяет объединять условия для разных участников.

Например:

  • CUSTOMER: “want to schedule an appointment” && “available next week”
    • совпадает, если клиент произнес обе фразы — «want to schedule an appointment» и «available next week» — в любой момент разговора.
    • Например, намерение совпадет, если клиент сказал «I want to schedule an appointment.», а затем «I am available next week».
  • AGENT: “hi” && CUSTOMER: “hi”
    • совпадает, если и оператор, и клиент произнесли «hi» в любой момент разговора.

Глобальный оператор OR

Двойная вертикальная черта (||) позволяет найти любой из вариантов, произнесенных участником в любой момент разговора. Их порядок не важен. Глобальный OR также позволяет объединять условия для разных участников.

Например:

  • CUSTOMER: “schedule an appointment” || “available next week”
    • совпадает, если клиент произнес «want to schedule an appointment» или «available next week» в любой момент разговора.
    • Например, намерение совпадет с репликой «I want to schedule an appointment.» или «are you available next week for an appointment».
  • AGENT: “schedule an appointment” || CUSTOMER: “schedule an appointment”
    • совпадает, если оператор произнес «do you want to schedule an appointment» или клиент произнес «i want to schedule an appointment».

Глобальный оператор NOT

Двойной восклицательный знак (!!) позволяет проверить отсутствие заданных слов или фраз во всем разговоре.

Например:

  • CUSTOMER: !!“have used * services before”
    • обнаруживает намерение, если клиент ни разу не произнес фразу «have used __ services before».
    • Например, намерение не совпадет, если клиент скажет «I have used your services before».

Глобальный оператор AFTER

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

Например:

  • CUSTOMER: “i would like to” AFTER AGENT: “would you like to purchase”
    • совпадает, если оператор сказал «would you like to purchase», а клиент в любой момент после этого сказал «i would like to purchase».

Глобальный оператор BEFORE

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

Например:

  • AGENT: “would you like to purchase” BEFORE CUSTOMER: “i would like to”
    • совпадает, если оператор произнес «would you like to purchase» до того, как клиент сказал «i would like to».

Глобальный оператор NEAR

Переменная NEAR проверяет, что высказывания участников находятся в пределах заданного временного интервала или числа слов друг от друга. Добавьте число в квадратных скобках, используя «s» для секунд и «w» для слов (NEAR[30s] или NEAR[20w]).

Например:

  • CUSTOMER: “need help” NEAR[10s] AGENT: “let me assist”
    • совпадает, если клиент произнес «i need help» в пределах 10 секунд до или после фразы оператора «let me assist».

Похожие:

Модификатор ENABLE_CONTEXT позволяет искать в предыдущих сообщениях конкретного участника внутри обращения. Глобальные операторы проверяют логические связи в разговоре, а PARTY[ENABLE_CONTEXT] расширяет поиск для одного участника без логических операторов.