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

На этой странице описаны распространенные подходы к архитектуре сервисов, используемые для создания приложений 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-чатом:

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

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

Паб/Саб

Если приложение чата развернуто за брандмауэром, чат не сможет совершать HTTP-запросы к нему. Один из подходов — использование механизма Pub/Sub , позволяющего приложению чата подписываться на тему, содержащую сообщения от чата. Pub/Sub — это асинхронная служба обмена сообщениями, которая отделяет службы, отправляющие сообщения, от служб, обрабатывающих эти сообщения. Такая архитектура рекомендуется для следующих сценариев использования:

  • Приложение «Чат» работает за брандмауэром.
  • Приложение «Чат» получает события, касающиеся пространства чата .
  • Приложение «Чат» развернуто в вашей организации.
  • Приложение «Чат» может отправлять и получать синхронные сообщения, а также отправлять асинхронные сообщения.
  • Приложение «Чат» разрабатывается на любом языке программирования.
  • Для работы чат-приложения требуется полное управление 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, получает и обрабатывает сообщение для формирования ответа.
  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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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