На этой странице описаны распространенные подходы к архитектуре сервисов, которые используются для создания приложений Google Chat. Если у вас уже есть приложение, которое вы хотите интегрировать с Google Chat, вы можете использовать или адаптировать существующую реализацию. Если вы создаете новое приложение Chat, на этой странице представлена информация, которая поможет вам выбрать подходящую архитектуру:
- Посмотреть обзорную таблицу.
- Ознакомьтесь с кратким описанием каждого стиля архитектуры.
- Посмотрите обзор логики приложений Chat.
- Посмотреть сводку по шаблонам диалогов в приложении Chat.
Обзор функций и возможностей
В таблице ниже перечислены основные функции и возможности приложений Chat, а также рекомендованный () стиль архитектуры сервисов. В некоторых случаях с помощью этих функций можно разработать архитектуру другого стиля, но она будет менее подходящей для варианта использования, чем другие стили ().
Функциональность |
Веб-сервис или сервис HTTP |
издатель-подписчик |
Вебхуки |
Apps Script |
AppSheet |
Dialogflow |
Скрипт |
|---|---|---|---|---|---|---|---|
Целевая аудитория. |
|||||||
Ваша команда |
|||||||
Ваша организация |
|||||||
всем в интернете, сделав его общедоступным; |
|||||||
Интерактивность |
|||||||
использовать обработку естественного языка; |
|||||||
Шаблоны сообщений |
|||||||
Отправлять и получать синхронные сообщения |
|||||||
Отправлять и получать синхронные сообщения, а также отправлять асинхронные сообщения. |
|||||||
Отправлять только асинхронные сообщения |
|||||||
Как отправлять сообщения из внешней системы в чат-группу Chat |
|||||||
Доступ к другим сервисам и системам |
|||||||
Объединение с другими сервисами Google |
|||||||
Как общаться через брандмауэр |
|||||||
Как запрашивать события Chat или подписываться на них |
|||||||
Стили кодирования и развертывания |
|||||||
Разработка без кода |
|||||||
Разработка с использованием low-code |
|||||||
Разработка на выбранном языке программирования. |
|||||||
Упрощенная модель DevOps |
|||||||
Полное управление DevOps и CI/CD |
Стили архитектуры сервисов
В этом разделе описаны некоторые из наиболее распространенных архитектурных подходов, используемых для создания приложений Chat.
Веб-сервис или сервис HTTP
Веб-сервис или HTTP-сервис – это наиболее распространенная архитектура, поскольку она предоставляет разработчикам наибольшую гибкость при создании общедоступных приложений Chat. Эта архитектура рекомендуется в следующих случаях:
- Приложение Chat развернуто в Google Workspace Marketplace.
- Приложение Chat может отправлять и получать сообщения всех типов: синхронные, асинхронные и сообщения из внешних систем.
- Приложение Chat разрабатывается на любом языке программирования.
- Приложение Chat требует полного управления DevOps и CI/CD.
- Сервис приложения Chat реализован в облаке или на локальных серверах.
В этой архитектуре вы настраиваете интеграцию Chat с удаленным сервисом с помощью HTTP, как показано на следующей диаграмме:
На приведенной выше схеме показано, как пользователь взаимодействует с приложением HTTP Chat. Информация передается следующим образом:
- Пользователь отправляет сообщение в чат-группе Chat приложению Chat.
- HTTP-запрос отправляется на веб-сервер, который представляет собой облачную или локальную систему, содержащую логику приложения Chat.
- При необходимости логика приложения Chat может взаимодействовать с внешними сторонними сервисами, например системой управления проектами или инструментом для создания заявок.
- Веб-сервер отправляет HTTP-ответ обратно в сервис приложения Chat в Chat.
- Ответ будет отправлен пользователю.
- При необходимости приложение Chat может вызывать Chat API для асинхронной отправки сообщений или выполнения других операций.
Эта архитектура позволяет использовать существующие библиотеки и компоненты, которые уже есть в вашей системе, поскольку приложения Chat можно разрабатывать на разных языках программирования. Существуют разные способы реализации этой архитектуры. В Google Cloud можно использовать Cloud Run и App Engine. Чтобы начать, ознакомьтесь со статьей Как создать приложение Google Chat.
издатель-подписчик
Если приложение Chat реализовано за межсетевым экраном, Chat не сможет выполнять к нему вызовы HTTP. Один из способов – использовать издатель-подписчик, чтобы реализованное приложение Chat могло подписаться на тему, в которой содержатся сообщения из Chat. Pub/Sub – это сервис асинхронного обмена сообщениями, который разделяет сервисы, создающие сообщения, и сервисы, обрабатывающие их. Эта архитектура рекомендуется в следующих случаях:
- Приложение Chat создано за межсетевым экраном.
- Приложение Chat получает события, связанные с чат-группой.
- Приложение Chat развернуто в вашей организации.
- Приложение Chat может отправлять и получать синхронные сообщения, а также отправлять асинхронные сообщения.
- Приложение Chat разрабатывается на любом языке программирования.
- Приложение Chat требует полного управления DevOps и CI/CD.
На приведенной ниже схеме показана архитектура приложения Chat, созданного с помощью Pub/Sub:
На приведенной выше схеме пользователь, взаимодействующий с приложением Pub/Sub Chat, получает информацию следующим образом:
Пользователь отправляет сообщение в Chat приложению Chat в прямой переписке или чат-группе Chat, либо в чат-группе Chat происходит событие, на которое у приложения Chat есть активная подписка.
Chat отправляет сообщение в тему Pub/Sub.
Сервер приложений, представляющий собой облачную или локальную систему, содержащую логику приложения Chat, подписывается на тему издатель-подписчик, чтобы получать сообщения через брандмауэр.
При необходимости приложение Chat может вызывать Chat API для асинхронной отправки сообщений или выполнения других операций.
Чтобы начать работу, ознакомьтесь со статьей Как использовать Pub/Sub в качестве конечной точки для приложения Chat.
Вебхуки
Вы можете создать приложение Chat, которое может отправлять сообщения только в определенную чат-группу, используя вызовы к URL веб-перехватчика Chat. Эта архитектура рекомендуется в следующих случаях:
- Приложение Chat развернуто для вашей команды.
- Приложение Chat отправляет сообщения из внешней системы в одну чат-группу Chat.
При такой архитектуре приложение Chat ограничено определенной чат-группой и не позволяет пользователю взаимодействовать с ним, как показано на следующей диаграмме:
На приведенной выше схеме приложение Chat имеет следующий поток информации:
- Логика приложения Chat получает информацию от внешних сторонних сервисов, например системы управления проектами или инструмента для создания заявок.
- Логика приложения Chat размещается в облачной или локальной системе, которая может отправлять сообщения, используя URL вебхука, в определенную чат-группу Chat.
- Пользователи могут получать сообщения от приложения Chat в определенной чат-группе, но не могут взаимодействовать с приложением Chat.
Такое приложение Chat нельзя опубликовать в Google Workspace Marketplace, а также поделиться им с другими командами или чат-группами Chat. Входящие веб-хуки рекомендуются для приложений Chat, которые сообщают об оповещениях или статусе, а также для некоторых типов прототипов приложений Chat.
Чтобы начать работу, ознакомьтесь со статьей Как отправлять сообщения в Chat с помощью вебхуков.
Apps Script
Вы можете создать логику приложения Chat полностью на JavaScript. Google Apps Script – это платформа для разработки приложений Chat с минимальным использованием кода. Apps Script обрабатывает процесс авторизации и токены OAuth 2.0 для аутентификации пользователей. Вы можете использовать Apps Script для создания общедоступных приложений Chat, но это не рекомендуется из-за квот и ограничений.
Эта архитектура рекомендуется в следующих случаях:
- Приложение Chat развернуто для вашей команды или организации.
- Приложение Chat может отправлять и получать сообщения всех типов: синхронные, асинхронные и из внешних систем.
- Приложению Chat требуется упрощенное управление DevOps.
Эта архитектура полезна для приложений Chat, которые также интегрируются с другими сервисами Google Workspace и Google, такими как Google Таблицы, Google Презентации, Google Календарь, Google Диск, Google Карты и YouTube, как показано на следующей схеме:
На приведенной выше схеме показано, как пользователь взаимодействует с приложением Chat, созданным с помощью Apps Script. Информация передается следующим образом:
- Пользователь отправляет сообщение приложению Chat в чате или чат-группе.
- Логика приложения Chat, реализованная в Apps Script, который находится в Google Cloud, получает сообщение.
- При необходимости логику приложения Chat можно интегрировать с сервисами Google Workspace, такими как Календарь или Таблицы, или другими сервисами Google, например Картами или YouTube.
- Логика приложения Chat отправляет ответ обратно в сервис приложения Chat в Chat.
- Ответ будет отправлен пользователю.
Чтобы начать, ознакомьтесь со статьей Как создать приложение Chat с помощью Apps Script.
AppSheet
Вы можете создать приложение для Chat, доступное в домене, без кода, используя AppSheet. Вы можете упростить процесс разработки, используя режим автоматической настройки и шаблоны для создания распространенных действий в приложении Chat. Однако некоторые функции веб-приложения AppSheet недоступны в приложениях Chat.
Эта архитектура рекомендуется в следующих случаях:
- Приложение Chat развернуто для вас и вашей команды.
- Приложение Chat может отправлять и получать синхронные сообщения, а также отправлять асинхронные сообщения.
- Приложению Chat требуется упрощенное управление DevOps.
На приведенной ниже схеме показана архитектура приложения Chat, созданного с помощью AppSheet.
На приведенной выше диаграмме пользователь, взаимодействующий с приложением AppSheet Chat, получает информацию следующим образом:
- Пользователь отправляет сообщение в Chat приложению Chat в прямой переписке или чат-группе.
- Логика приложения Chat, реализованная в AppSheet, который находится в Google Cloud, получает сообщение.
- При необходимости логику приложения Chat можно интегрировать с сервисами Google Workspace, например Apps Script или Google Таблицами.
- Логика приложения Chat отправляет ответ обратно в сервис приложения Chat в Chat.
- Ответ будет отправлен пользователю.
Чтобы начать работу, ознакомьтесь со статьей Как создать приложение Chat с помощью AppSheet.
Dialogflow
Вы можете создать приложение Chat с помощью Dialogflow – платформы для автоматизированных диалогов и динамических ответов на естественном языке. Эта архитектура рекомендуется в следующих случаях:
- Приложение Chat может отправлять и получать синхронные сообщения.
- Приложение Chat использует обработку естественного языка, чтобы отвечать на запросы пользователей и взаимодействовать с ними.
На приведенной ниже схеме показана архитектура приложения Chat, созданного с помощью Dialogflow.
На приведенной выше схеме пользователь, взаимодействующий с чат-ботом Dialogflow, получает информацию следующим образом:
- Пользователь отправляет сообщение в Chat приложению Chat в прямой переписке или чат-группе.
- Виртуальный агент Dialogflow, размещенный в Google Cloud, получает и обрабатывает сообщение, чтобы создать ответ.
- При необходимости агент Dialogflow может взаимодействовать с внешними сторонними сервисами, например системой управления проектами или инструментом для создания заявок, с помощью веб-перехватчика Dialogflow.
- Агент Dialogflow отправляет ответ обратно в сервис приложения Chat в Chat.
- Ответ будет отправлен в чат-группу.
Чтобы начать работу, ознакомьтесь со статьей Как создать приложение Google Chat с помощью Dialogflow.
Приложение или скрипт командной строки
Вы можете создать приложение командной строки или скрипт, который будет отправлять сообщения в Chat или выполнять другие операции, например создавать чат-группы или управлять их участниками, без прямого вызова приложения Chat пользователями или их ответа на него в Chat. Эта архитектура рекомендуется для следующих случаев использования:
- Приложение Chat разрабатывается на любом языке программирования.
- Приложение Chat может отправлять только асинхронные сообщения.
На приведенной ниже схеме показана архитектура.
На приведенной выше схеме приложение Chat имеет следующий поток информации:
- Приложение Chat вызывает Chat API, чтобы отправить сообщение или выполнить другую операцию.
- Chat выполняет запрошенную операцию.
- При необходимости приложение Chat выведет подтверждение в интерфейсе командной строки.
Реализация логики приложения для Chat
Chat не ограничивает способы реализации логики приложения Chat. Вы можете создать парсер с фиксированным синтаксисом, использовать продвинутые библиотеки или сервисы для обработки ИИ и языка, подписаться на события и реагировать на них или сделать что-то другое, подходящее для ваших целей.
Как обрабатывать действия пользователей
Приложение Chat может взаимодействовать с пользователями разными способами. Взаимодействие пользователя – это любое действие, которое пользователь выполняет, чтобы вызвать или использовать приложение Chat.
Синтаксический анализатор команд
Приложения Chat, управляемые командами, анализируют полезную нагрузку взаимодействий пользователей с приложениями Chat, а затем извлекают из этого контента команды и параметры. Например, ознакомьтесь с информацией о том, как отвечать на команды приложений Google Chat.
Другой подход заключается в том, чтобы разбить сообщение на токены, извлечь команду, а затем обратиться к словарю, который сопоставляет команды с функциями обработчика для каждой команды.
Пользовательский интерфейс на основе диалоговых окон
Приложения на основе диалоговых окон реагируют на действия пользователей в приложении Chat, показывая диалоговые окна на основе карточек, в которых пользователи могут взаимодействовать с приложением Chat, например заполнять формы или запрашивать действия.
Каждый раз, когда пользователь выполняет действие в диалоговом окне, в приложение Chat отправляется новое событие, которое может привести к обновлению диалогового окна или отправке сообщения.
Обработка естественного языка
Во многих реализациях приложений Chat используется обработка естественного языка (NLP), чтобы определить, что именно хочет пользователь. Существует множество способов реализовать обработку естественного языка, и вы можете выбрать любой из них.
Вы можете использовать NLP в приложении Chat с помощью Dialogflow ES или Dialogflow CX, чтобы создавать виртуальных агентов для автоматизированных бесед и динамических ответов.
Как отправлять запросы в Chat
Приложения Chat также могут отправлять сообщения или другие запросы в Chat, которые не вызваны прямым взаимодействием пользователей в Chat. Вместо этого приложения Chat можно запускать, например, с помощью сторонних приложений или командной строки, но пользователи не могут взаимодействовать с этими приложениями Chat напрямую в Chat.
Неинтерактивные приложения Chat используют Chat API для отправки сообщений или других типов запросов в Chat.
Разговорные шаблоны
Подумайте, как ваше приложение Chat должно взаимодействовать с пользователями. В следующих разделах описаны шаблоны диалогов, которые может использовать ваше приложение Chat.
Взаимодействие с помощью запросов и ответов (синхронное)
При синхронном обмене сообщениями приложение Chat отвечает на сообщения пользователей по принципу "один на один". Одно сообщение, отправленное пользователем в приложение Chat, приводит к одному ответу от приложения Chat, как показано на следующей диаграмме:
На приведенной выше схеме пользователь, взаимодействующий с приложением Chat, получает информацию следующим образом:
- Пользователь отправляет синхронное сообщение в приложение Chat, например "Какая у меня следующая встреча?".
- Приложение Chat отправляет пользователю синхронное сообщение, например "Доктор Сильва в 14:30".
Для такого типа диалогов можно реализовать архитектуру приложения Chat с помощью веб-сервиса, издателя-подписчика, Apps Script, AppSheet или Dialogflow.
Несколько ответов (асинхронно)
Шаблон "Несколько ответов" может включать синхронные и асинхронные сообщения. Этот шаблон характеризуется двусторонней связью между пользователями и приложением Chat, при этом приложение Chat может генерировать любое количество дополнительных сообщений, как показано на следующей диаграмме:
На приведенной выше схеме пользователь, взаимодействующий с приложением Chat, получает информацию следующим образом:
- Пользователь отправляет синхронное сообщение в приложение Chat, например "Отслеживай трафик".
- Приложение Chat отправляет пользователю синхронное сообщение с подтверждением запроса, например "Мониторинг включен".
- Позже приложение Chat отправляет пользователю одно или несколько асинхронных сообщений, вызывая REST API, например "Новый трафик".
- Пользователь отправляет в приложение Chat ещё одно синхронное сообщение, например "Игнорировать трафик".
- Приложение Chat отправляет пользователю синхронное сообщение с подтверждением запроса, например "Мониторинг отключен".
Для такого типа диалогов можно реализовать архитектуру приложения Chat с помощью веб-сервиса, издателя-подписчика, Apps Script или AppSheet.
Запрашивать события или подписываться на них (асинхронно)
При асинхронной модели на основе событий приложение Chat получает события, отправляя запросы к Chat API или создавая подписку на чат-группу или пользователя с помощью Google Workspace Events API. События представляют собой изменения ресурсов Chat, например публикацию нового сообщения или присоединение пользователя к чат-группе. Приложения Chat, управляемые событиями, анализируют полезную нагрузку события, чтобы получить данные об измененном ресурсе Chat, а затем реагируют соответствующим образом.
Приложения Chat могут получать различные типы событий, в том числе события, связанные с чат-группами, подписками, сообщениями и реакциями. Когда приложение Chat получает событие, запрашивая Chat API или через активную подписку, оно может сгенерировать любое количество асинхронных ответов и отправить их обратно в Chat с помощью Chat API.
Вы можете использовать эту логику для обновления внешних систем, например системы управления заявками, или отправлять сообщения в чат-группу Chat асинхронно, например отправлять приветственное сообщение, когда новый пользователь присоединяется к чат-группе Chat.
На диаграмме ниже показан пример разговорного шаблона, управляемого событиями:
На приведенной выше схеме взаимодействие между Chat и приложением Chat происходит следующим образом:
- Приложение Chat подписано на чат-группу Google Chat.
- Чат-группа, на которую подписано приложение Chat, изменилась.
- Приложение Chat отправляет событие в тему Pub/Sub, которая служит конечной точкой уведомлений для подписки. Событие содержит данные о том, что изменилось в ресурсе.
- Приложение Chat обрабатывает сообщение Pub/Sub, содержащее событие, и при необходимости выполняет действие.
Для такого типа диалогов можно реализовать архитектуру приложения Chat с помощью издателя-подписчика, веб-сервиса или Apps Script.
Подробнее о том, как получать события и отвечать на них в Google Chat…
Одностороннее сообщение от приложения Chat
Шаблон одностороннего обмена сообщениями с приложением Chat позволяет приложению Chat отправлять асинхронные сообщения в чат-группу Chat, но не позволяет пользователям напрямую взаимодействовать с приложением Chat. Этот шаблон не является разговорным или интерактивным, но может быть полезен для таких задач, как оповещение о тревоге, как показано на следующей диаграмме:
На приведенной выше схеме пользователь в чат-группе с приложением Chat получает информацию следующим образом:
- Приложение Chat отправляет пользователю асинхронное сообщение, вызывая Chat API или отправляя запрос на URL вебхука, например "Предупреждение о переполнении очереди".
- Приложение Chat может отправить дополнительные асинхронные сообщения.
Для такого типа диалогов можно реализовать архитектуру приложения Chat, используя веб-сервис, веб-перехватчик, Apps Script, AppSheet, приложение командной строки или скрипт.
Одностороннее сообщение приложению Chat
Шаблон одностороннего обмена сообщениями с приложением Chat позволяет пользователю отправлять сообщения в приложение Chat, не получая от него ответа, но при этом обрабатывая запрос. Хотя такая архитектура технически возможна, она приводит к неудобству для пользователей, поэтому мы настоятельно не рекомендуем ее использовать.
Статьи по теме
- Как создать приложение Google Chat
- Как использовать издатель-подписчик в качестве конечной точки для приложения Chat
- Как отправлять сообщения в Chat с помощью входящих вебхуков
- Как создать приложение Chat с помощью Apps Script
- Как отправить сообщение Chat из автоматизации с помощью AppSheet
- Интеграция чата Dialogflow ES
- Интеграция Dialogflow CX с Chat