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