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