Приложение EnglishVR взаимодействует с Y-bot для выполнения сценариев. Для описания сценариев используется AIML 1.0.1.
Каждое взаимодействие с ботом описывается в тегах category
, запрос в pattern
,
а ответ в template
. Такая форма выглядит следующим образом
<?xml version="1.0" encoding="UTF-8"?>
<aiml version="2.0">
<category>
<pattern>HELLO</pattern>
<template>Hi there!</template>
</category>
</aiml>
Описание сценариев заключается в состалении запросов, используя специльные команды, и вариантов ответов в виде json-объектов.
Команды указываются в тегах <pattern></pattern>
.
Именование идентификаторов:
- стиль
camelCase
- префикс
cmd
Пример:
<?xml version="1.0" encoding="UTF-8"?>
<aiml version="2.0">
<category>
<pattern>cmdStart</pattern>
<template>
...
</template>
</category>
</aiml>
Доступные команды:
cmdStart
– команда для запуска сценария
Ответ бота должен конструироваться в тегах template
, а
итоговый результат возвращаться Пользователю в виде json.
Пример:
<?xml version="1.0" encoding="UTF-8"?>
<aiml version="2.0">
<category>
<pattern>cmdStart</pattern>
<template>
// конструирование фразы ...
<json>
{
"Actions": "Walking",
"VoicePhrases": "Hello"
}
</json>
</template>
</category>
</aiml>
В качестве ключей в json могут быть:
Actions
– список действий для NPC.VoicePhrases
– сконструированная фраза для произношения NPC.
Actions
Доступный список действий для выполнения NPC:
go
– действие "подойти", включает в себя анимациюwalking
;say
– действие "сказать", включает в себя проигрывание голосовых фразgreet
– действие "поприветствовать", анимацияwavingGesture
;- и другие
VoicePhrases
Результатом ответа бота должна являться конкатенация отдельных фраз, которые могут быть составлены из:
- грамматические конструкции;
- числительные;
- типы объектов;
- вводные слова;
- и другое.
Именование
Возвращаемая строка должна состоять из названий фраз, разделенных пробелами.
Слова во фразах, в свою очередь, разделены символом _
.
Таким образом, итоговая фраза может выглядеть следующим образом:
>> Good_morning
>> Can_I_have one melon please
Вариативность
В AIML необходимо описывать несколько вариантов ответов со стороны бота на конкретный запрос, чтобы бот реагировал по-разному при каждом запуске программы.
В связи с этим необходимо конструировать итоговые фразы из отдельных частей, подобранных случайным образом из ограниченного списка фраз, которые подходят как грамматически, так и семантически.
Пример:
> cmdStart
>> Hello
>> Can_I_have one melon please
...
> cmdStart
>> Good_morning
>> I_would_like two apples please
В данном примере, на запрос cmdStart
происходит выбор случайных частей фраз
из вариантов приветствия, фруктов, числительных.
Возможные варианты частей фраз, которые должны быть прописаны в сценарии:
- Hello | Good_morning | ...
- Can_I_have | I_would_like | ...
- one | two | three | ...
- apple | watermelon | melon | potato | ...
- apples | watermelons | melons | potatoes | ...
- please