Чат-бот понимающий человеческую речь на Dialogflow. Добавим в приветствие вопрос о пользователе

И языков на разных устройствах .

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

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

Шаг 0. Задача

Бот должен принимать от пользователя запрос, состоящий из трех параметров: имя, город и адрес. При этом, если пользователь ранее упоминал один из этих параметров - помнить его в рамках контекста.

Шаг 1. Первичная настройка

Для начала нужно зарегистрироваться и создать нового агента:
  • Название агента можно указать любое.
  • Язык я выбрал русский. Но в дальнейшем можно добавить и другие.
  • Временная зона важна, так как по ней будут определятся такие фразы как «Сегодня», «3 дня назад»
  • Создадим новый Google проект
  • Я буду использовать первую версию API
После создания агента переходим на вкладку «Integrations» и подключаем те платформы, которые нам нужны.

На этом этапе наш бот уже запущен и может общаться с пользователями. Теперь нужно научить его правильно понимать фразы.

Шаг 2. Создание назначений

Назначение - это обработчик определённого запроса от пользователя.
Переходим на вкладку «Intents». После создания агента здесь будут два стандартных назначения:
  1. Default Welcome Intent - запускается для приветствия пользователя (отправит ответное приветствие)
  2. Default Fallback Intent - запускается в том случае, если ни одно из других назначений не подходит. Отправит сообщение, что пользователя не поняли («Вот эта последняя фраза мне не ясна», «Попробуй, пожалуйста, выразить свою мысль по-другому» и т.д.).
Далее мы реализуем следующее: когда пользователь приветствует бота, тот спрашивает у него его имя и адрес проживания, чтобы использовать это в дальнейшем.

Добавим в приветствие вопрос о пользователе

Открываем «Default Welcome Intent». Здесь есть несколько секций:
  • Contexts
  • User says
  • Events
  • Action
  • Response
Обратите внимание на секцию «Events»: здесь указано одно служебное событие «WELCOME».
Назначение можно запустить двумя способами: как реакцию на текст пользователя или по событию.

В нашем случае назначение «Default Welcome Intent» реагирует не на какой-то текст от пользователя, а на служебное событие WELCOME. Например, для Telegram это запуск бота командой /start. .

Итак, рассмотрим секцию «Response». Здесь перечислены сообщения, которые будут отправлены в ответ пользователю. Каждое сообщение может состоять из нескольких строк. Каждая строка - отдельные варианты сообщения. Для ответа будет выбран один из этих вариантов. И чем их больше, тем реже ваш бот будет повторяться.

Добавим сюда сообщение с просьбой рассказать о себе.

Реакция на ответ

Теперь создадим назначение, которое будет реагировать на последующее сообщение.
На вкладке «Intents» наводим курсор на «Default Welcome Intent» и нажимаем «Add follow-up intent». В выпадающем списке, нам предложат несколько предустановленных вариантов. Нас они не интересуют - выбираем «Custom»

Перейдём к секции «User says» и добавим несколько вариантов сообщений от пользователя.

Теперь нужно указать, какие данные в этих сообщениях нам нужны. Для этого следует выбрать фрагмент текста и в выпадающем меню выбрать тип данных. В Dialogflow есть ряд предустановленных типов, в частности для имён и адресов. Но вы можете создавать и собственные. Подробнее .


Теперь обратите внимание на секцию «Action». Здесь перечислены все параметры, которые собирает это назначение. Параметры, которыми мы размечали текстовые сообщения, автоматически импортировались.


Обозначим имя пользователя как обязательный параметр. Изменим название параметра с «given-name» на «name» для большего удобства. И в колонке «Prompts» укажем вопрос «Как вас зовут?». Теперь, так как «name» это обязательный параметр, в случае если в сообщении не будет этого параметра, пользователю будет отправлен один из вопросов в «Prompts» для получения имени.

И, наконец, добавим ответ пользователю в секцию «Response».

Работа с контекстом

Каждое назначение может работать с входящим контекстом и создавать исходящий контекст.

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

Рассмотрим по порядку:

Default Welcome Intent - входящего контекста нет. Поэтому назначение может запуститься для любого запроса. Назначение создаёт новый пустой контекст «DefaultWelcomeIntent-followup» (добавится автоматически).

Default Welcome Intent - custom - имеет входящий контекст «DefaultWelcomeIntent-followup» (добавился автоматически). Это назначение может запустится только в тех случаях, когда этот контекст существует (когда пользователь поприветствовался). Исходящего контекста здесь пока-что нет.

Добавим исходящий контекст для «Default Welcome Intent - custom» с названием «UserData». Теперь, когда после приветствия пользователь представится, информация о нем будет записана в новый контекст «UserData».

Оформление заказа пользователем

Создадим новое назначение «Order» с исходящим контекстом «UserData». Это назначение может запускаться в любое время, и оно может изменять контекст «UserData».
В тексте заказа нам нужно Имя, Город и Адрес.

Добавим фразы и разметим их. Дублируем все параметры, но в этот раз отметим все как обязательные.

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

Наше назначение может работать как в случае отсутствия контекста «UserData», так и при его наличии. В первом случае бот спросит у пользователя все недостающие данные. А во втором он должен использовать уже известные.

Для этого:

  • Для параметра name #UserData.name
  • Для параметра address устанавливаем значение по умолчанию #UserData.address
  • Для параметра city устанавливаем значение по умолчанию #UserData.city
Теперь, если пользователь ранее представился (его имя хранится в контексте UserData), то при оформлении заказа его имя подставится автоматически. Если нет - то бот спросит у пользователя имя.

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

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

Предисловие – та часть книги, которую читатель часто пропускает. Ни в коем случае не советуем делать этого при работе с этой книгой. Особенно, если Вы решили работать по ней самостоятельно.

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

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

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

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

Работая же с Основным курсом, Вы должны помнить, что другой язык – это иной мир для нашего сознания. Постарайтесь психологически «приучить» себя к изучаемому языку. Поэтому не следует при встрече с незнакомыми словами и формами сразу же обращаться к справочнику или словарю. Необходимо преодолеть тот момент, что у Вас есть постоянная опора в качестве русского языка. Но с другой стороны, взрослый человек должен постоянно сравнивать изучаемый язык с родным. Накопленный опыт использования грамматики русского языка – это огромный багаж, умение сравнивать и выявлять общие моменты в строении двух языков даст Вам возможность сэкономить массу времени и преодолеть большую часть нового языка без особых трудностей.

В настоящем самоучителе всего сорок уроков. Не торопитесь быстрее их пройти, часто количество бывает во вред качеству. Не спешите переходить к новому уроку, не освоив полностью предыдущий. Прорабатывайте тексты и упражнения детально и не оставляйте непонятные моменты «на потом». Старайтесь не просто выполнить упражнения, но по предложенным образцам попробуйте составить собственные предложения. Если это у Вас получилось, смело переходите к следующему уроку.

Первые два параграфа Вводного курса помогут Вам во всеоружии прийти к Основному курсу. А далее... мы Вам просто желаем удачи.

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

В сериале "Махабхарата" эта Игра заняла двенадцать серий, которые я закачал во ВК. (Все серии доступны в группе http://vk.com/mahabharat2013 , но их там трудяги субтитров и озвучки не выкладывают, а только дают ссылку на скачку. Очевидно, это всё связано с опасением от копирастов, которые охотятся на этот сериал в любом открытом доступе)

149. Кузнец запутывается в цепи
http://vk.com/video168806175_171358093

152. Честь и гордость Пандавов
http://vk.com/video168806175_171358363

154. Драупади просит ответов
http://vk.com/video168806175_171358458

Основные действующие лица Игры в Лингамапуре :

Мнашма
Бородат и степенен. Главный защитник процветания и чести Лингамапура. Сердцем строг, но добр. Всё время пытается всех помирить, но очень страдает от того, что распри не прекращаются. Симпатизирует Пандавам, предпринимает усилия для их выигрыша, которые, однако, прямо ведут к их проигрышу.

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

ДурьодХана
Сын Дхритараштры, наследный царевич. Стремится к власти. Любит подозревать окружающих в обмане и дурных намерениях. Считает, что Пандавы всё получают по несправедливости, стремится их выжить и уничтожить.


Шакуни
Царь Гандхары, государства к западу от Лингамапура, дядя по матери Дурьодханы. Необыкновенного ума человек, хитёр и подл. Именно он затеял эту Игру, чтобы отобрать у Пандавов всё и сделать племянника царём. Игральные кости сделаны из костей его драгоценного отца, поэтому слушаются приказов Шакуни.

Юдхиштхира
Старший из Пандавов. Всегда говорит только правду и не нарушает слова. В Игре допоступался "по дхарме" до того, что проиграл своих братьев, жену и себя самого.


Драупади
Она же Панчали. Настоящее имя Ягьясени. Рождена из обрядового огня. Жена всех пятерых Пандавов (долго объяснять, как и почему это получилось). Прямолинейна и дерзка. ДурьодХана считает, что она его смертельно оскорбила. На Игре отказывается подчиниться воле выигравшего ДурьодХаны. Любимый брат последнего Духшасана тащит её за волосы на виду у всего собрания, а потом начинает срывать одежду с тем, чтобы опозорить жену Пандавов.

Суровый уральский Кришна (сокр.СУК)
Всегда улыбается и дарует радость другим, ни на кого не держит зла. Появляется всегда кстати. Неуязвим и непобедим. Когда ДурьодХана и Духшасана начинают глумиться над Драупади и тащат с неё сари, Кришна делает сари бесконечным, так что раздеть женщину становится невозможным.