Создайте дополнение Dialogflow CX, расширяющее возможности Google Chat, которое понимает естественный язык и отвечает на нем.

На этой странице объясняется, как создать приложение Google Chat, способное понимать и отвечать на естественном языке, используя Dialogflow . В этом руководстве используется Dialogflow CX , который имеет прямую интеграцию с Google Chat. Вы также можете использовать Dialogflow ES для создания приложения Google Chat, следуя руководству по Dialogflow ES для Google Chat .

Например, рассмотрим чат-приложение, которое помогает людям арендовать автомобили. Пользователь может написать: «Я хотел бы арендовать автомобиль». Чат-приложение может ответить вопросом типа «Где вы хотели бы забрать автомобиль?», что положит начало диалогу, похожему на человеческий, в котором чат-приложение понимает и отвечает человеческой речью, одновременно оформляя аренду автомобиля.

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

  • Забронируйте авиабилеты
  • Запишитесь на прием к врачу
  • Заказать доставку еды
  • Ответьте на вопросы о каталоге розничной продукции, например, доступны ли товары в других цветах.
  • Предварительно созданная страница выбора агента Dialogflow.
    Рисунок 1. Выбор готового агента для приложения Dialogflow Chat.
  • Тестирование агента в Dialogflow CX.
    Рисунок 2. Тестирование агента в Dialogflow CX для проверки корректности его логики и конфигурации. На диаграмме показана последовательная последовательность тематических страниц, относящихся к конкретным этапам диалога, например, к указанию места получения и возврата арендованного автомобиля, а также настраивается логика, связывающая эти этапы. Диалог тестируется в симуляторе.
  • Настройка приложения Dialogflow Chat.
    Рисунок 3. Настройка приложения чата для обработки ответов с помощью агента Dialogflow CX на странице конфигурации API чата в консоли Google Cloud.
  • Тестирование приложения Dialogflow CX Chat
    Рисунок 4. Разговор о бронировании автомобиля напрокат с помощью приложения Dialogflow Chat в Google Chat.

Цели

  • Настройте свою среду.
  • Создайте и разверните агент Dialogflow CX.
  • Создайте и разверните приложение чата на базе агента Dialogflow CX.
  • Протестируйте приложение «Чат».

Предварительные требования

Архитектура

На следующей диаграмме показана архитектура чат-приложения, созданного с помощью Dialogflow:

Архитектура чат-приложения, реализованного с помощью Dialogflow.

На приведенной выше диаграмме показано следующее взаимодействие пользователя с приложением Dialogflow Chat:

  1. Пользователь отправляет сообщение в чате в приложение для чата, либо в личном сообщении, либо в пространстве чата.
  2. Виртуальный агент Dialogflow, размещенный в облаке Google, получает и обрабатывает сообщение для формирования ответа.
  3. При желании, используя веб-перехватчик Dialogflow , агент Dialogflow может взаимодействовать с внешними сторонними сервисами, такими как система управления проектами или система обработки заявок.
  4. Агент Dialogflow отправляет ответ обратно в службу приложения Chat в приложении Chat.
  5. Ответ отправляется в чат.

Настройте среду

Перед использованием API Google необходимо включить их в проекте Google Cloud. В одном проекте Google Cloud можно включить один или несколько API.
  1. В консоли Google Cloud включите API Google Chat и API Dialogflow.

    Включите API

  2. Убедитесь, что вы включаете API в правильном облачном проекте, затем нажмите «Далее» .

  3. Убедитесь, что вы включаете правильные API, затем нажмите «Включить» .

Создайте агента Dialogflow CX.

Агент Dialogflow CX — это виртуальный агент, обрабатывающий одновременные диалоги с вашими конечными пользователями. Это модуль понимания естественного языка, который понимает нюансы человеческой речи. Dialogflow переводит текст конечного пользователя во время разговора в структурированные данные, которые могут понимать ваши приложения и сервисы. Вы проектируете и создаете агента Dialogflow для обработки типов диалогов, необходимых для вашей системы.

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

Вот как создать агента Dialogflow CX:

  1. В консоли Dialogflow CX откройте раздел > Dialogflow CX .

    Перейдите в консоль Dialogflow CX.

  2. Выберите проект Google Cloud. Чтобы найти свой проект, возможно, потребуется нажать «Все» , а затем выполнить поиск.

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

    Чтобы выбрать готовый агент, выполните следующие действия:

    1. Нажмите « Использовать предварительно созданные агенты» .
    2. Выберите готового агента. Для просмотра этого руководства выберите «Путешествия: прокат автомобилей» .

      Уровень подготовки агентов оценивается как начальный, средний или продвинутый в зависимости от количества используемых ими функций и сложности логики диалога. Выбор агента среднего или продвинутого уровня может потребовать внесения специфических настроек, включая включение функций и API в консоли Google Cloud.

    3. Нажмите «Импорт как агент» .

    Чтобы создать собственного агента, выполните следующие шаги:

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

    Подробное описание процесса создания агента см. в разделе «Создание агента Dialogflow CX» .

  4. Настройка основных параметров агента:

    1. В поле «Отображаемое имя» введите отображаемое имя.
    2. Выберите желаемое местоположение . Если вы хотите изменить дополнительные настройки местоположения , нажмите «Редактировать» .
    3. Выберите предпочитаемый часовой пояс.
    4. Выберите язык по умолчанию для вашего агента. Изменить язык по умолчанию для агента после его создания невозможно.
  5. Нажмите «Создать» . Dialogflow CX начнет создание агента, а затем отобразит стандартный сценарий запуска агента.

  6. При желании вы можете настроить агента. Подробное описание процесса настройки агента см. в разделе «Создание агента Dialogflow CX» .

  7. В качестве оптимальной практики рекомендуется протестировать агента:

    1. Нажмите «Проверить агента» .
    2. Выберите агент тестирования в среде .
    3. В разделе «Окружение» выберите «Черновик» .
    4. В меню Flow выберите «Запуск по умолчанию» .
    5. В разделе «Страница» выберите «Начальная страница» .
    6. В строке ввода «Поговорить с агентом» введите Hello и нажмите Enter . Агент ответит, представившись.
    7. Пройдите тест, выполнив примерный диалог .
  8. Агент Dialogflow CX создан. Вернитесь в консоль Dialogflow CX. > Dialogflow CX .

    Перейдите в консоль Dialogflow CX.

  9. В разделе «Агенты» нажмите > Скопировать имя . Сохраните это имя, так как оно будет использоваться при настройке приложения «Чат».

Создайте приложение для чата и подключите его к агенту Dialogflow.

После создания агента Dialogflow CX выполните следующие шаги, чтобы превратить его в приложение для чата:

  1. В консоли Google Cloud перейдите в раздел Google Chat API. Найдите "Google Chat API", щелкните по Google Chat API , а затем нажмите "Управление" .

    Перейти к API чата

  2. Нажмите «Конфигурация» и настройте приложение «Чат»:

    1. В поле «Название приложения» введите Dialogflow App .
    2. В поле "URL аватара" введите https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png .
    3. В поле «Описание» введите Responds to real human conversation .
    4. В разделе «Функциональность» выберите «Присоединяйтесь к пространствам и групповым беседам» .
    5. В разделе «Настройки подключения» выберите Dialogflow .
    6. В настройках Dialogflow выберите Dialogflow CX .
    7. В поле «Имя ресурса агента или среды» вставьте имя агента Dialogflow CX, скопированное вами в конце поля «Создание агента Dialogflow CX» .
    8. Сделайте это приложение для чата доступным для определенных людей и групп в вашем домене и введите свой адрес электронной почты.
    9. В разделе «Журналы» выберите « Записывать ошибки в журнал» и перейдите в раздел «Ведение журнала» .
  3. Нажмите « Сохранить ».

Приложение «Чат» готово к приему и ответам на сообщения в чате.

Протестируйте приложение для чата

Протестируйте приложение Dialogflow CX Chat, отправив ему сообщение в Google Chat.

  1. Откройте Google Chat, используя учетную запись Google Workspace, которую вы указали при добавлении себя в качестве доверенного тестировщика.

    Перейдите в Google Чат

  2. Нажмите новый чат» .
  3. В поле «Добавить 1 или более человек» введите название вашего приложения для чата.
  4. Выберите ваше приложение для чата из результатов поиска. Откроется личное сообщение.

  5. В новом личном сообщении в приложении напишите Hello и нажмите enter .

    Приложение Dialogflow Chat отвечает, представляясь.

  6. Пройдите тест, выполнив примерный диалог .

Пример тестового диалога

Чтобы протестировать приложение Dialogflow CX Chat в консоли Dialogflow CX или в Google Chat, проведите следующий диалог. Объяснение поможет вам понять, как агент Dialogflow CX интерпретирует естественный язык пользователя и выдает свой собственный ответ на естественном языке на каждом этапе диалога. Этот пример диалога основан на предварительно созданном агенте под названием «Путешествия: аренда автомобилей» .

Диалог Объяснение
Пользователь: Здравствуйте
Агент: Здравствуйте! Я виртуальный агент по прокату автомобилей. Я могу помочь вам оформить новое бронирование автомобиля. Чем я могу вам сегодня помочь?
  1. Вызывается маршрут Default Welcome Intent в Default Start Flow .
  2. Соответствующее событие для данного обработчика состояния ("Привет! Я...") добавляется в очередь ответов.
  3. Агент отправляет очередь ответов конечному пользователю.
Конечный пользователь: Я хотел бы взять автомобиль напрокат.
Агент: Где бы вы хотели забрать автомобиль?
  1. Маршрут интента car_rental.reservation_create на стартовой странице соответствует условию.
  2. В ходе сеанса происходит переход на страницу выбора места получения заказа .
  3. Форма на странице "Место получения заказа" не заполнена полностью, поэтому оператор использует параметр pickup_location , чтобы запросить у пользователя ответ ("Где вы хотели бы забрать заказ..."), который добавляется в очередь ответов.
  4. Агент отправляет очередь ответов конечному пользователю.
Конечный пользователь: Лас-Вегас
Агент: Хорошо, вас заберут из Лас-Вегаса.
Агент: Место сдачи автомобиля отличается от места получения?
  1. Введенные пользователем данные заполняют параметр pickup_location, запрошенный агентом в предыдущем раунде разговора.
  2. Маршрут намерения car_rental.return_different_location в потоке запуска по умолчанию соответствует условию.
  3. Маршрут заполнения формы на странице «Место получения» оценивается и вызывается. Он имеет операцию выполнения («Хорошо, ваше место получения...»), которая добавляется в очередь ответов, при этом ссылки на параметры преобразуются в фактические значения, предоставленные конечным пользователем.
  4. В ходе сеанса происходит переход на страницу подтверждения местоположения .
  5. На странице «Подтверждение местоположения» есть поле для ввода данных («Отличается ли ваше место доставки от указанного...»), которое добавляется в очередь ответов.
  6. Агент отправляет очередь ответов конечному пользователю.
Конечный пользователь: Да. Я оставлю машину в Лос-Анджелесе.
Агент: Хорошо, вас высадят в Лос-Анджелесе.
Агент: В какую дату и время вы хотели бы забрать автомобиль?
  1. Маршрут намерения car_rental.return_different_location в потоке запуска по умолчанию соответствует условию.
  2. В ходе сеанса происходит переход на страницу выбора места высадки .
  3. Введенные пользователем данные заполняют параметр drop_off_location, запрошенный агентом в предыдущем раунде разговора.
  4. Маршрут заполнения формы на странице «Место высадки» оценивается и вызывается. Он содержит запрос на выполнение («Хорошо, место высадки...»), который добавляется в очередь ответов.
  5. В ходе сеанса происходит переход на страницу «Продолжительность аренды» .
  6. На странице «Продолжительность аренды» значения в форме неполные, поэтому пользователю предлагается ввести параметр pickup_date_time («Какую дату и время вы хотели бы забрать...»), который добавляется в очередь ответов.
  7. Агент отправляет очередь ответов конечному пользователю.
Конечный пользователь: Я хотел бы забрать машину 5 марта в полдень.
Агент: В какую дату и время вы хотели бы сдать автомобиль?
  1. Введенные пользователем данные заполняют параметр pickup_date_time, запрошенный агентом в предыдущем раунде разговора.
  2. На странице «Продолжительность аренды» отсутствует еще одно значение в форме, поэтому пользователю предлагается ввести параметр drop_off_date_time («Какую дату и время вы хотели бы оставить машину...»), который добавляется в очередь ответов.
  3. Агент отправляет очередь ответов конечному пользователю.
Конечный пользователь: 15 марта в полдень.
Агент: Итак, для подтверждения:

Вы заберете автомобиль в Лас-Вегасе 5 марта 2024 года в 12:00:00 и вернете его в Лос-Анджелесе 15 марта 2024 года в 12:00:00.

Звучит правдоподобно?
  1. Введенные пользователем данные заполняют параметр drop_off_date_time, запрошенный агентом в предыдущем раунде разговора.
  2. В ходе сеанса происходит переход на страницу подтверждения срока аренды .
  3. На странице подтверждения срока аренды есть поле для ввода данных («Итак, чтобы подтвердить...»), которое добавляется в очередь ответов.
  4. Агент отправляет очередь ответов конечному пользователю.
Конечный пользователь: Да, спасибо.
Агент: Отлично! Теперь давайте выберем автомобиль.
Агент: Вы предпочитаете автомобиль эконом-класса или класса люкс?
  1. Маршрут намерения small_talk.confirmation.yes на странице подтверждения продолжительности аренды совпадает.
  2. Агент подтверждает выбор пользователя сообщением («Отлично! Теперь давайте выберем...»), которое добавляется в очередь ответов.
  3. Сессия переходит на страницу определения типа транспортного средства .
  4. Форма на странице уточнения типа транспортного средства не заполнена полностью, поэтому агент использует параметр vehicle_type , чтобы запросить у пользователя ответ («Вы хотите экономичный или люксовый автомобиль...»), который добавляется в очередь ответов.
  5. Агент отправляет очередь ответов конечному пользователю.
Конечный пользователь: Экономия, пожалуйста.
Агент: Вам нужна машина с тарелками или грузовик с тарелками?
  1. Маршрут намерения $session.params.vehicle_type="economy_vehicle" найден.
  2. Переход к странице «Экономичные варианты» — это новый этап сессии.
  3. На странице «Эконом-варианты» есть поле для ввода данных («Хотите ли вы...»), которое добавляется в очередь ответов.
  4. Агент отправляет очередь ответов конечному пользователю.
Конечный пользователь: Cymbal Truck.
Агент: Аренда автоцистерны стоит 50,33 доллара в день. В ней могут разместиться 4 человека, и она оборудована AM/FM-радио. Хотите перейти к оплате?
Конечный пользователь: Да, пожалуйста.
  1. Маршрут намерения $session.params.vehicle_type="Cymbal Truck" совпадает, и параметр vehicle_model заполняется.
  2. Сессия переходит на страницу подтверждения установки тарелок .
  3. На странице подтверждения заказа на доставку тарелок есть поле для ввода данных («Стоимость доставки тарелок составляет 50,33 доллара в день...»), которое добавляется в очередь ответов.
  4. Агент отправляет очередь ответов конечному пользователю.
  5. Ответ пользователя соответствует маршруту small_talk.confirmation.yes .
Агент: Какой тип карты вы будете использовать?
Конечный пользователь: Altostrat
Агент: Пожалуйста, введите номер карты.
Конечный пользователь: 1234 1234 1234 1234
Агент: Как зовут человека, указанного на карте?
Конечный пользователь: Чарли
Агент: Какой адрес для выставления счетов?
Конечный пользователь: 1800 Amphibious Blvd., Маунтин-Вью, Калифорния
Агент: Какой почтовый индекс для выставления счетов?
Конечный пользователь: 94045
Агент: Вы заберете автомобиль Cymbal Car в Лас-Вегасе 5 марта 2024 года в 12:00 и вернете его 15 марта 2024 года в 12:00. Общая стоимость поездки составит 175,38 долларов.
Агент: Спасибо за то, что арендовали у нас жилье, и желаем вам прекрасного дня!
  1. Сессия переходит на страницу оплаты .
  2. Форма оплаты не заполнена полностью, поэтому агент запрашивает у пользователя параметры card_type , card_number , billing_name , billing_street_address и billing_zip_code («Какой тип карты будет использоваться...»), которые последовательно добавляются в очередь ответов и отправляются по мере ответа пользователя. Ответы пользователя устанавливают значение каждого параметра.
  3. Сессия переходит на страницу подтверждения аренды .
  4. На странице подтверждения аренды отображается сообщение об успешном выполнении операции («Хорошо, вы получите заказ...»), которое добавляется в очередь ответов.
  5. Агент отправляет очередь ответов конечному пользователю.
  6. Сессия переходит на страницу завершения сессии .

Отправляйте сообщения с банковскими картами из Dialogflow.

Dialogflow может отвечать текстовыми сообщениями или карточками . Чтобы ответить карточкой, укажите её в качестве пользовательской полезной нагрузки в запросе на выполнение .

Приведенный ниже JSON-код показывает, как отправить сообщение на карту в качестве пользовательской полезной нагрузки при выполнении заказа:

json

{ "hostAppDataAction": { "chatDataAction": { "createMessageAction": {
  "message": { "cardsV2": [{
    "cardId": "createCardMessage",
    "card": {
      "header": {
        "title": "A card message!",
        "subtitle": "Sent from Dialogflow",
        "imageUrl": "https://developers.google.com/chat/images/chat-product-icon.png",
        "imageType": "CIRCLE"
      },
      "sections": [{ "widgets": [{ "buttonList": { "buttons": [{
        "text": "Read the docs!",
        "onClick": { "openLink": {
          "url": "https://developers.google.com/workspace/chat"
        }}
      }]}}]}]
    }
  }]}
}}}}

Ограничения и соображения

  • При использовании надстроек Google Workspace с Dialogflow объекты событий чата имеют следующие ограничения и особенности:
    • События App Home: Поддержка событий APP_HOME пока недоступна.
    • Ввод запроса Dialogflow: Текст, отправляемый в качестве входных данных запроса агенту Dialogflow, зависит от типа события:
      • MESSAGE : Значение поля argumentText из сообщения чата.
      • APP_COMMAND : Строка "APP_COMMAND_PAYLOAD" .
      • ADDED_TO_SPACE : Строка "ADDED_TO_SPACE_PAYLOAD" .
      • REMOVED_FROM_SPACE : Строка "REMOVED_FROM_SPACE_PAYLOAD" .
      • CARD_CLICKED : Строка "BUTTON_CLICKED_PAYLOAD" .
      • WIDGET_UPDATED : Строка "WIDGET_UPDATED_PAYLOAD" (используется для автозаполнения).
    • Полная полезная нагрузка события: Полная полезная нагрузка JSON события взаимодействия в чате отправляется в Dialogflow в поле WebhookRequest.payload . Вы можете получить к ней доступ в своем веб-хуке Dialogflow. Для получения дополнительной информации см. документацию по запросам веб-хуков Dialogflow CX .
  • Рекомендации по реагированию на команды и получению данных с карточек или диалоговых окон :
  • Предварительный просмотр ссылок не поддерживается.
  • Если агент Dialogflow отвечает только одним сообщением, то это сообщение отправляется в Google Chat синхронно. Если агент Dialogflow отвечает несколькими сообщениями, то все сообщения отправляются в Chat асинхронно путем вызова метода create ресурса spaces.messages в Chat API один раз для каждого сообщения.
  • При использовании интеграции Dialogflow CX с Chat, агент Dialogflow и приложение Chat должны быть настроены в одном проекте Google Cloud. Если вам необходимо настроить Dialogflow и Chat в разных проектах Cloud, вы можете настроить промежуточный сервер для обеспечения соединения. Чтобы узнать, как это сделать, см. этот пример интеграции Chat с Dialogflow CX на GitHub.

Устранение неполадок

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

Уборка

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

  1. В консоли Google Cloud перейдите на страницу «Управление ресурсами» > IAM и администрирование > Управление ресурсами .

    Перейдите в Диспетчер ресурсов

  2. В списке проектов выберите проект, который хотите удалить, и нажмите кнопку «Удалить .
  3. В диалоговом окне введите идентификатор проекта, а затем нажмите «Завершить» , чтобы удалить проект.
  • Dialogflow CX использует подход конечного автомата при проектировании агентов Dialogflow, что обеспечивает четкий и явный контроль над диалогом, улучшает пользовательский опыт и упрощает процесс разработки. При создании приложения Dialogflow Chat мы рекомендуем использовать Dialogflow CX.
  • Dialogflow ES — это ещё один способ использовать Dialogflow с приложением для чата.