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