Выберите архитектуру приложения Google Chat

This page describes common service architecture approaches that are used to create Google Chat apps. If you have an existing app that you want to integrate into Google Chat, you can use or adapt your existing implementation. If you're building a new Chat app, this page presents similar information in a few different ways to help you choose the architecture that's right for your use case:

Обзор по функциям и возможностям.

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

Функции и возможности

Веб-сервис или HTTP-сервис

Паб/Саб

Вебхуки

Apps Script

AppSheet

Диалогфлоу

Сценарий

Целевая аудитория

Ваша команда

Ваша организация

Общественность

Взаимодействие с пользователем

Используйте обработку естественного языка

шаблоны обмена сообщениями

Отправка и получение синхронных сообщений

Отправка и получение синхронных сообщений, а также отправка асинхронных сообщений.

Отправляйте только асинхронные сообщения.

Отправляйте сообщения из внешней системы в единое пространство чата.

Доступ к другим сервисам и системам

Интеграция с другими сервисами Google.

Обмен данными за брандмауэром.

Запросить информацию или подписаться на события чата

Стили кодирования и развертывания

Разработка без кода

Разработка с использованием low-code подхода

Разработка на выбранном вами языке программирования.

Упрощенный DevOps

Полное управление DevOps и CI/CD.

Стили сервисной архитектуры

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

Веб-сервис или HTTP-сервис

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

  • Приложение «Чат» доступно для публичного использования на Google Workspace Marketplace .
  • Приложение «Чат» может отправлять и получать сообщения всех типов: синхронные сообщения, асинхронные сообщения и сообщения из внешней системы.
  • Приложение «Чат» разрабатывается на любом языке программирования.
  • Для работы чат-приложения требуется полное управление DevOps и CI/CD.
  • Сервис чата реализуется на облачных или локальных серверах.

В данной конфигурации вы настраиваете чат для интеграции с удаленным сервисом с использованием протокола HTTP, как показано на следующей диаграмме:

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

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

  1. Пользователь отправляет сообщение в чате в приложение для чата.
  2. HTTP-запрос отправляется на веб-сервер, который может быть облачной или локальной системой и содержит логику приложения чата.
  3. При желании логика приложения «Чат» может взаимодействовать с внешними сторонними сервисами, такими как система управления проектами или система обработки заявок.
  4. Веб-сервер отправляет HTTP-ответ обратно в службу приложения «Чат» в приложении «Чат».
  5. Ответ отправляется пользователю.
  6. При желании приложение «Чат» может вызывать API чата для асинхронной отправки сообщений или выполнения других операций.

Эта архитектура обеспечивает гибкость в использовании существующих библиотек и компонентов, которые уже есть в вашей системе, поскольку приложения для чата могут быть разработаны с использованием различных языков программирования. Существуют разные способы реализации этой архитектуры. В Google Cloud вы можете использовать Cloud Run и App Engine. Чтобы начать, см. раздел «Создание приложения Google Chat» .

Паб/Саб

If the Chat app is implemented behind a firewall, Chat is unable to make HTTP calls to it. One approach is to use Pub/Sub to enable the Chat app implementation to subscribe to a topic that carries messages from Chat. Pub/Sub is an asynchronous messaging service that decouples services producing messages from services processing those messages. This architecture is recommended for the following use cases:

  • Приложение «Чат» работает за брандмауэром.
  • Приложение «Чат» получает события, касающиеся пространства чата .
  • Приложение «Чат» развернуто в вашей организации.
  • Приложение «Чат» может отправлять и получать синхронные сообщения, а также отправлять асинхронные сообщения.
  • Приложение «Чат» разрабатывается на любом языке программирования.
  • Для работы чат-приложения требуется полное управление DevOps и CI/CD.

На следующей диаграмме показана архитектура чат-приложения, созданного с использованием модели публикации/подписки (Pub/Sub):

Архитектура чат-приложения, реализованного с использованием модели публикации/подписки (Pub/Sub).

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

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

  2. Чат отправляет сообщение в тему Pub/Sub.

  3. Сервер приложений, представляющий собой облачную или локальную систему, содержащую логику приложения чата, подписывается на тему Pub/Sub, чтобы получать сообщения через брандмауэр.

  4. При желании приложение «Чат» может вызывать API чата для асинхронной отправки сообщений или выполнения других операций.

Для начала ознакомьтесь с разделом «Использование Pub/Sub в качестве конечной точки для вашего чат-приложения» .

Вебхуки

Вы можете создать приложение для чата, которое будет отправлять сообщения только в определенное пространство чата, используя вызовы URL-адреса веб-перехватчика чата. Такая архитектура рекомендуется для следующих сценариев использования:

  • Приложение «Чат» развернуто для вашей команды.
  • Приложение «Чат» отправляет сообщения из внешней системы в единое пространство чата.

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

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

На приведенной выше диаграмме показан следующий поток информации в чат-приложении:

  1. Логика приложения «Чат» получает информацию от внешних сторонних сервисов, таких как система управления проектами или система обработки заявок.
  2. Логика чат-приложения размещается либо в облачной, либо в локальной системе и может отправлять сообщения, используя URL-адрес веб-перехватчика, в определенное пространство чата.
  3. Пользователи могут получать сообщения от приложения «Чат» в конкретном чате, но не могут взаимодействовать с самим приложением «Чат».

Приложения для чата такого типа нельзя использовать в других пространствах чата или с другими командами, а также нельзя опубликовать в Google Workspace Marketplace. Для приложений чата рекомендуется использовать входящие веб-хуки для отправки уведомлений или сообщения о статусе, а также для некоторых типов прототипирования приложений чата.

Для начала ознакомьтесь с разделом «Отправка сообщений в чат с помощью веб-хуков» .

Apps Script

Вы можете полностью создать логику своего чат-приложения на JavaScript. Google Apps Script — это платформа для разработки чат-приложений с минимальным использованием кода. Apps Script обрабатывает процесс авторизации и токены OAuth 2.0 для аутентификации пользователей. Вы можете использовать Apps Script для создания общедоступных чат-приложений, но это не рекомендуется из-за ежедневных квот и ограничений .

Данная архитектура рекомендуется для следующих сценариев использования:

  • Приложение «Чат» развертывается для вашей команды или вашей организации.
  • Приложение «Чат» может отправлять и получать сообщения всех типов: синхронные сообщения, асинхронные сообщения и сообщения из внешней системы.
  • Приложение «Чат» требует упрощенного управления DevOps.

Эта архитектура полезна для чат-приложений, которые также интегрируются с другими сервисами Google Workspace и Google, такими как Google Sheets, Google Slides, Google Calendar, Google Drive, Google Maps и YouTube, как показано на следующей диаграмме:

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

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

  1. Пользователь отправляет сообщение в приложение для чата, либо в личном сообщении, либо в чате.
  2. Сообщение получает логика чат-приложения, реализованная в Apps Script, который размещен в Google Cloud.
  3. При желании логика приложения «Чат» может интегрироваться с сервисами Google Workspace, такими как Календарь или Таблицы, или с другими сервисами Google, такими как Google Maps или YouTube.
  4. Логика приложения «Чат» отправляет ответ обратно в службу приложения «Чат» внутри приложения «Чат».
  5. Ответ отправляется пользователю.

Для начала ознакомьтесь с инструкцией по созданию чат-приложения с помощью Apps Script .

AppSheet

С помощью AppSheet можно создать приложение чата, работающее на уровне домена, без написания кода. Вы можете упростить процесс разработки, используя режим автоматической настройки и следуя шаблонам для создания стандартных действий приложения чата. Однако некоторые функции веб-приложений AppSheet недоступны в приложениях чата .

Данная архитектура рекомендуется для следующих сценариев использования:

  • Приложение «Чат» развертывается для вас и вашей команды.
  • Приложение «Чат» может отправлять и получать синхронные сообщения, а также отправлять асинхронные сообщения.
  • Приложение «Чат» требует упрощенного управления DevOps.

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

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

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

  1. Пользователь отправляет сообщение в чате в приложение для чата, либо в личном сообщении, либо в пространстве чата.
  2. Сообщение получает логика чат-приложения, реализованная в AppSheet, который размещен в Google Cloud.
  3. При желании, логика приложения «Чат» может быть интегрирована с сервисами Google Workspace, такими как Apps Script или Google Sheets.
  4. Логика приложения «Чат» отправляет ответ обратно в службу приложения «Чат» внутри приложения «Чат».
  5. Ответ отправляется пользователю.

Для начала ознакомьтесь с инструкцией по созданию чат-приложения с помощью AppSheet .

Диалогфлоу

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

  • Приложение «Чат» позволяет отправлять и получать синхронные сообщения.
  • Приложение «Чат» использует обработку естественного языка для ответа пользователям и взаимодействия с ними.

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

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

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

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

Для начала ознакомьтесь с инструкцией по созданию приложения Dialogflow для Google Chat .

Приложение или скрипт командной строки

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

  • Приложение «Чат» разрабатывается на любом языке программирования.
  • Приложение «Чат» может отправлять только асинхронные сообщения.

На следующей диаграмме показана архитектура:

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

На приведенной выше диаграмме показана следующая схема потока информации в приложении «Чат»:

  1. Приложение «Чат» обращается к API чата для отправки сообщения или выполнения другой операции.
  2. Чат выполняет запрошенную операцию.
  3. При желании приложение «Чат» может вывести подтверждение в командной строке.

Реализация логики приложения чата

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

Обработка взаимодействий с пользователями

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

Парсер команд

Приложения для чата, управляемые командами, анализируют содержимое событий взаимодействия в приложении чата , а затем извлекают из этого содержимого команды и параметры. Например, см. раздел «Ответы на команды приложения Google Chat» .

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

Диалоговый пользовательский интерфейс

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

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

Обработка естественного языка

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

Вы можете использовать обработку естественного языка (NLP) в своем чат-приложении с помощью интеграции Dialogflow ES или Dialogflow CX Chat , которая позволяет создавать виртуальных агентов для автоматизированных диалогов и динамических ответов.

Активно отправляйте запросы в чат.

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

Неинтерактивные приложения для чата используют API чата для отправки сообщений или других типов запросов в чат.

Разговорные модели

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

Вызов и ответ (синхронный)

В синхронном режиме «звонок-ответ» приложение «Чат» отвечает на сообщения пользователей в режиме «один к одному». Одно сообщение, отправленное пользователем в приложение «Чат», приводит к одному ответу от приложения «Чат», как показано на следующей диаграмме:

Архитектура синхронного сообщения.

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

  1. Пользователь отправляет синхронное сообщение в приложение чата — например, «Какая у меня следующая встреча?».
  2. Приложение «Чат» отправляет пользователю синхронное сообщение — например, «Доктор Сильва в 2:30».

Для такого типа диалогового взаимодействия можно реализовать архитектуру чат-приложения, используя веб-сервис, модель публикации/подписки (Pub/Sub), скрипты AppScript, AppSheet или Dialogflow.

Множественные ответы (асинхронные)

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

Архитектура асинхронного сообщения.

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

  1. Пользователь отправляет синхронное сообщение в приложение чата — например, «Мониторинг трафика».
  2. Приложение «Чат» отправляет пользователю синхронное сообщение для подтверждения запроса — например, «Мониторинг включен».
  3. Впоследствии приложение чата отправляет пользователю одно или несколько асинхронных сообщений, вызывая REST API — например, сообщение "Новый трафик".
  4. Пользователь отправляет дополнительное синхронное сообщение в приложение «Чат» — например, «Игнорировать трафик».
  5. Приложение «Чат» отправляет пользователю синхронное сообщение для подтверждения запроса — например, «Мониторинг отключен».

Для такого типа диалогового взаимодействия можно реализовать архитектуру чат-приложения, используя веб-сервис, модель публикации/подписки (Pub/Sub), скрипты AppScript или AppSheet.

Запрос или подписка на события (асинхронно)

In an asynchronous event-driven pattern, the Chat app receives events by either querying the Chat API or creating a subscription to a Chat space or user using the Google Workspace Events API. Events represent changes to Chat resources, such as when a new message is posted or when a user joins a space. Event-driven Chat apps examine the event payload to get data about the changed Chat resource, then respond accordingly.

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

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

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

Архитектура подписки на события чата

На приведенной выше диаграмме взаимодействие между чатом и приложением «Чат» имеет следующий поток информации:

  1. Приложение «Чат» подписывается на пространство Google Chat.
  2. Пространство, к которому привязано приложение «Чат», меняется.
  3. Приложение «Чат» отправляет событие в тему в системе Pub/Sub, которая служит конечной точкой уведомлений для подписки. Событие содержит данные об изменениях в ресурсе.
  4. Приложение «Чат» обрабатывает сообщение Pub/Sub, содержащее событие, и при необходимости предпринимает соответствующие действия.

Для такого типа диалогового взаимодействия можно реализовать архитектуру чат-приложения, используя метод публикации/подписки (Pub/Sub), веб-сервис или Apps Script.

Чтобы узнать больше о получении событий и обработке ответов на них, см. раздел «Работа с событиями из событий Google Chat» .

Одностороннее сообщение из чат-приложения

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

Архитектура одностороннего сообщения.

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

  • Приложение «Чат» отправляет пользователю асинхронное сообщение, вызывая API чата или отправляя POST-запрос на URL-адрес веб-перехватчика — например, «Предупреждение о переполнении очереди».
  • При желании приложение «Чат» может отправлять дополнительные асинхронные сообщения.

Для такого типа диалогового взаимодействия архитектуру чат-приложения можно реализовать с помощью веб-сервиса, веб-перехватчика, AppScript, AppSheet, приложения командной строки или скрипта.

Одностороннее сообщение в чат-приложение

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