«Якоря» и связные диалоги

Пока что мы в обучении инфа ограничивались одной парой: "вопрос-ответ". Но этого мало, так как не получается предусмотреть более или менее связный диалог хотя бы на несколько шагов вперед.

Что хочется:

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

Представим такой диалог:
Гость: У тебя там телевизор есть?
Инф: Да я, считай, в нем живу :). Любишь телик смотреть?

Дальше последует реакция гостя на ответ инфа. Гость может сказать "да, люблю" или "нет, не люблю", и на все эти ситуации нужны разные реакции инфа.

Например, вот одно возможное продолжение диалога:

Гость: Да, люблю.
Инф: Ага. Особенно детективы на ДТВ мне нравятся. Они там подряд идут.

А вот другое возможное продолжение:

Гость: Нет, не люблю.
Инф: Ну и правильно. Сплошная жвачка для мозгов. Хотя детективы я иногда смотрю.

Обычные шаблоны вида:
Инфу говорят:
* Да *
Инф отвечает:
Ага. Особенно детективы на ДТВ мне нравятся. Они там подряд идут.

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

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

Как это сделать
1. Назначаем якорь.

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

Инфу говорят:
* У тебя * телевизор есть <?>
Инф отвечает:
Да я, считай, в нем живу :) . Любишь телик смотреть?

Вы можете создать новый шаблон, а можете использовать какой-то из старых шаблонов как исходную точку для работы с якорями. В процессе создания/редактирования шаблона, вам нужно завести якорь и назначить его этому шаблону. Это можно сделать с помощью ниспадающего меню рядом с изображением якоря. По умолчанию якорь отсутствует (в меню выбран пункт Без якоря). Для создания якоря надо выбрать в меню пункт Новый якорь.


Тогда откроется новое окошко, в котором вам будет предложено ввести название этого якоря. В нашем примере его можно назвать телевизор.


Теперь в списке Мои шаблоны у этого шаблона рядом с ответом отображается значок якоря и рядом с этим значком – название якорь. Вот как это выглядит:


2. Создаем шаблоны, привязанные к якорю.

Теперь нужно создать шаблоны, привязанные к реплике, которой был назначен якорь "телевизор". Это делается следующим образом: нажимаем на значок + рядом с названием якорь в ответе инфа. Создаем шаблон для первого варианта продолжения разговора:

Инфу говорят:
* да *
Инф отвечает:
Ага. Особенно детективы на ДТВ мне нравятся. Они там подряд идут


В этом шаблоне указано, что он связан с якорем телевизор. Об этом говорит черный значок и название якоря в начале формы шаблона.


Точно таким же способом добавляем шаблон для второго варианта продолжения разговора про телевидение:

Инфу говорят:
* нет *
Инф отвечает:
Ну и правильно. Сплошная жвачка для мозгов. Хотя детективы я иногда смотрю.

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


Как это будет работать:
Инф научится поддерживать связные диалоги:
Гость: У тебя там телевизор есть?
Инф: Да я, считай, в нем живу :). Любишь телик смотреть?
Гость: Да, люблю.
Инф: Ага. Особенно детективы на ДТВ мне нравятся. Они там подряд идут.

Гость: У тебя там телевизор есть?
Инф: Да я, считай, в нем живу :). Любишь телик смотреть?
Гость: Нет, не люблю.
Инф: Ну и правильно. Сплошная жвачка для мозгов. Хотя детективы я иногда смотрю.

И даже такие:
Гость: У тебя там телевизор есть?
Инф: Да я, считай, в нем живу :). Любишь телик смотреть?
Гость: Расскажи лучше анекдот.
Инф: Пожалуйста. Самый короткий анекдот: колобок повесился.

Советы начинающим якорестроителям :)

Попробуйте построить несколько веток диалога с использованием якорей и увидите, как интеллект вашего инфа растет буквально на глазах!
Особенно эффективно якоря работают в тех случаях, когда вы ожидаете от гостей реплики "да", "нет", "нормально" и другие "общие" реплики, с которыми раньше было так сложно справиться.
На каждом уровне "дерева диалога" постарайтесь прописать сначала именно эти, самые общие, и они же - самые вероятные, - реплики гостя – "да", "нет" и т.п. Вначале не увлекайтесь глубокими и сложными ветками с использованием множества якорей: вероятность их срабатывания в точности так, как вы хотите, может быть маленькой. То есть ветка будет, а диалог никогда не будет на неё выходить или будет быстро "соскакивать" с неё, потому что гость отвечает не так, как вы задумали.
Чтобы удержать собеседника в диалоге, прицепляйте к якорю шаблон "*", ведь создать шаблоны на все возможные варианты ответов собеседника практически невозможно.

Пример работы такого шаблона для якоря "телевизор":
Инфу говорят: *
Инф отвечает: Телевизор - это зло.

Как это будет работать:
Гость: У тебя там телевизор есть?
Инф: Да я, считай, в нем живу :) Любишь телик смотреть?
Гость: Там вообще ничего стоящего не показывают.
Инф: Телевизор - это зло.
Минусы использования шаблона "*", "зацепленного" с якорем: собеседник может задать вопрос по какой-нибудь другой теме, но из-за этого шаблона ответ будет по старой теме.

Пример такого неудачного диалога:
Гость: У тебя там телевизор есть?
Инф: Да я, считай, в нем живу :) Любишь телик смотреть?
Гость: Как тебя зовут?
Инф: Телевизор - это зло.

ВАЖНО: якоря можно вставлять в разделах Мои шаблоны, Предустановленные темы и Нераспознанные реплики. В разделе Реакции на события вставить "якоря" не получится.