Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

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


...


Работа с переменными


Создание переменной происходит посредством простого объявления в поле


...

2. Элементы

...


Стрелка (Ветка)

...

Раскрыть
titleСвойства стрелки

Свойства:

ОписаниеСкриншот

1. Заголовок стрелки

2. Создание переменной, в которую система запишет ответ от пользователя

3. Тип данных, которые система будет ожидать от пользователя для перехода по ветке

4. Наименование кнопки ответа*

5. Определяет порядок отображения кнопки*

Так, если у нас кнопка у одной из 4 веток развития имеет порядковый номер 3, то эта кнопка будет отображена в списке предпоследней

* Данный пункт используется только для чатов


Типы:

ТипОписаниеСкриншот
Ветка по умолчанию

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


1. Наименование кнопки ответа (см. описание в свойствах стрелки)

2. Определяет порядок отображения кнопки (см. описание в свойствах стрелки)

Ключевые слова

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


1. Слова или выражения, которые система ожидает от пользователя для перехода по ветке

Ключевые слова вводятся через пробел. Выражения вводятся с использованием кавычек, например "уже на месте"

Так же, можно использовать абстрактное слово NEAR в выражении, которое будет значиться любым словом, например:"я NEAR не пойду", где NEAR - может быть любым словом: никуда, никогда, сейчас, завтра и т.д. 

В системе предусмотрена система весов, когда явный ответ "да" от человека, не всегда может означать признание, например: "Да, я вас отчетливо слышу, я не пойду на обед". В данном ответе мы видим слово "да" и предлог "не", который по смыслу является приоритетней и в общей концепции ответа является отрицанием: "я не пойду на обед". Таким образом, при расстановке ключевых слов и выражений, будет более явно добавить вес к отрицательным словам: "+++не" и "+нет". Каждый знак плюс имеет единицу веса. Где единицей является слово или выражение. Соответственно, в примере к слову "нет" + одно слово, а к предлогу "не" + 3 слова. При количественном перевесе система принятия решения выберет этот маршрут.

В обратной ситуации мы можем наоборот, понижать вес, используя знак минус:  "-да"


2. Наименование кнопки ответа (см. описание в свойствах стрелки)

3. Определяет порядок отображения кнопки (см. описание в свойствах стрелки)

Дата

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


1. Условие проверки значения

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

2. Ответ, который система ожидает от пользователя

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

  • 23 января
  • Завтра
  • Послезавтра
  • Вчера
  • Позавчера
  • Через n дней
  • n дней назад
  • 23 января 1996 года

Если в дате явно не указан год, берется текущий.

Так же данный тип пытается найти время. Возможные варианты:

  • в 14:00
  • Через n минут
  • через n часов

Если пользователь явно не указывает время, берется текущее.

3. Наименование кнопки ответа (см. описание в свойствах стрелки)

4. Определяет порядок отображения кнопки (см. описание в свойствах стрелки)

Число

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


1. Условие проверки значения

Например, при проведения соц. опроса, система может задать вопрос: "Скажите, сколько вам лет?" и благодаря условиям можно задать различные вопросы разным возрастным группам. 

Сравнение происходит по правилам:

{РАСПОЗНАННОЕ} {ОПЕРАТОР} {СРАВНИВАЕМОЕ}

Где  

  • {РАСПОЗНАННОЕ} - число, которое распознано в речи пользователя в момент диалога
  • {ОПЕРАТОР}  - оператор сравнения (меньше, больше, равно и т.д.)
  • {СРАВНИВАЕМОЕ} - Значение, заданное в свойствах (см. пункт №2)*


2. Ответ, который система ожидает от пользователя

3. Наименование кнопки ответа (см. описание в свойствах стрелки)

4. Определяет порядок отображения кнопки (см. описание в свойствах стрелки)


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

Большое число

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


1. Условие проверки значения

2. Маска ожидаемого ввода. 

Например, для паспорта мы можем задать маску вида #### ######, где каждый символ # - это цифра

3. В случае, если система не распознала ответ или ответ от пользователя не совпадает с указанным, то система не будет предпринимать попытки повторного опроса

4. Значение, которое система будет ожидать от пользователя

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

5. Наименование кнопки ответа (см. описание в свойствах стрелки)

6. Определяет порядок отображения кнопки (см. описание в свойствах стрелки)

Интеллектуальное принятие решений

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


1. Выбор системы

2. Выбор агента

3. Намерения, которые система ожидает от пользователя.

4. Создание перменныхпеременных, в которые могут быть записаны данные, которые были выяснены системой во время диалога

5. Наименование кнопки ответа (см. описание в свойствах стрелки)

6. Определяет порядок отображения кнопки (см. описание в свойствах стрелки)


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


...

Данный блок используется для выполнения запроса к внешнему серверу.

Для лучшего понимания работы блока рекомендуется прочесть о синтаксисе формата JSON. Читать


1. Вспомогательный текст, который позволяет создателю скрипта ориентироваться в связях

2. Тип принятия решения

Типы:

Раскрыть
titleСвойства блока


ОписаниеСкриншот

1. Заголовок блока

2. Текст с просьбой ожидания, который будет произнесен системой

3. Время, через которое система будет произносить повторное сообщение (см. пункт №4)

4. Текст с просьбой ожидания, который будет произнесен системой в то время, пока будет происходить выполнение запроса к серверу

5. Тип авторизации к серверу

6. Тип запроса

7. Адрес страницы с которой мы будем работать


Типы запросов:

ТипОписаниеСкриншот
GET

Используется для получения данных от сервера сервера

Например, используя Используя этот тип запроса, мы можем получить данные о заказе, товаре, пользователе и т.д.


1. Адрес страницы с которой мы будем работать

Image Modified

POST

Применяется для отправки данных на сервер

Например, благодаря этому типу

Используя этот тип запроса, мы можем сохранять данные о заказе, создавать товар,

 

обновлять данные пользователя и т.д.

Позволяет нам


1. Адрес страницы с которой мы будем работать

2. Позволяет нам установить нужное значение для

параметра

Image Removed

Типы авторизации:

ТипОписаниеСкриншот
Отсутствует

Image Removed

Логин/Пароль

Image Removed

Заголовок

Image Removed

Раскрыть
titleСвойства стрелки

ключа


Например: Если нам нужно отправлять данные в виде тела


Блок кода
{
"first_name" : "Владимир"
}


то следует ключ first_name записать в левое поле, а его значение Владимир, в правое поле

Image Added


Типы авторизации

Свойства:

ОписаниеСкриншот

Image Removed

для перехода по ветке в случае, если условия во всех остальных стрелках данного блока не будут соблюдены.
ТипОписаниеСкриншот
По умолчаниюОтсутствует

Данный тип используется

,

Image Removed

если нам не нужна авторизация для работы со страницей


1. Тип запроса

2. Адрес страницы

Image Added

Логин/Пароль

Данный тип используется, если для работы со страницей нам обязательно нужно логиниться


1. Логин

2. Пароль

3. Тип запроса

4. Адрес страницы

Image Added

Заголовок

Данный тип используется, если для работы со страницей нам обязательно нужно использовать токен


1. Имя ключа

2. Определяет, какую схему авторизации использовать для работы со страницей*

Например: Если в хедере мы передаем токен в ключе Authorization в таком виде


Блок кода
Authorization: Bearer t490da279fd42889f56


то в поле Тип авторизации, мы пишем Authorization.

а в поле Значение Ключа, мы пишем Bearer


3. Тип запроса

4. Адрес страницы


* Подробнее о схемах можно почитать здесь

Image Added



Раскрыть
titleСвойства стрелки

Свойства:

ОписаниеСкриншот

1. Вспомогательный текст, который позволяет создателю скрипта ориентироваться в связях

2. Тип принятия решения


Image Added


Типы:

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

Image Added

РезультатУспешно

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

Результат ответа от сервера будет сохранен в переменную result


1. Код ответа, который система будет ожидать после выполнения запроса*

2. Набор условий, по которым принимается решение

3. Создание переменной, в которую будет записано значение из ответа от сервера

Например мы получили ответ вида 

Блок кода
{
"first_name" : "Владимир", 
"surname" : "Владимирович",
"last_name" : "Пресняков",
"age" : "51"
}

и мы хотим сохранить из него возраст.

Для этого нам нужно записать в правое поле значение вида result.age

Где

result - тело ответа

age - ключ в теле ответа


Если же к примеру у нас ответ имеет такой вид

Блок кода
{
"first_name" : "Владимир", 
"surname" : "Владимирович",
"last_name" : "Пресняков",
"age" : "51"
}
"parents" : [ 
{
"description" : "Отец",
"full_name" : "Владимир Пресняков"
},
{
"description" : "Мать",
"full_name" : "Елена Преснякова"
}
]
}

и мы хотим сохранить полное имя матери, то в таком случае мы используем запись вида result.parents.full_name[1]

Где

result - тело ответа

parents - массив в котором находится нужный нам ключ

full_name[1] - второй ключ в массиве parents

РезультатДошли до сервера и пришел от него ответ


* Подробнее о кодах состояния можно прочесть здесь

Image Modified

Не успешноПереход по ветке будет произведен, если ответ от сервера получить не удалось

Image Modified




...