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

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

Обзор по функциям и возможностям

В следующей таблице представлены ключевые функции и возможности приложений Chat, а также рекомендуемый ( ) стиль архитектуры службы. В некоторых случаях с этими функциями можно разработать другой стиль архитектуры, но он не так хорошо подходит для данного варианта использования, как другие стили ( ).

Особенности и возможности

Веб- или HTTP-сервис

Паб/Саб

Вебхуки

Скрипт приложений

Таблица приложений

Диалоговый поток

Скрипт

Целевая аудитория

Твоя команда

Ваша организация

Публика

Интерактивность пользователя

Используйте обработку естественного языка

Шаблоны обмена сообщениями

Отправлять и получать синхронные сообщения

Отправлять и получать синхронные сообщения, а также отправлять асинхронные сообщения.

Отправлять только асинхронные сообщения

Отправляйте сообщения из внешней системы в одно пространство чата.

Доступ к другим сервисам и системам

Интеграция с другими сервисами Google

Общайтесь за брандмауэром

Подпишитесь на мероприятия Google Workspace

Стили кодирования и развертывания

Разработка без кода

Разработка с низким кодом

Разработка на языке программирования по вашему выбору

Упрощенный DevOps

Полное управление DevOps и CI/CD

Стили сервисной архитектуры

В этом разделе описаны некоторые наиболее распространенные архитектурные подходы, используемые для создания приложений чата.

Веб- или HTTP-сервис

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

  • Приложение Chat общедоступно на Google Workspace Marketplace .
  • Приложение Chat может отправлять и получать все шаблоны обмена сообщениями: отправлять и получать синхронные сообщения, отправлять асинхронные сообщения и отправлять сообщения из внешней системы.
  • Приложение Чат разработано на любом языке программирования.
  • Приложение Chat требует полного управления DevOps и CI/CD.
  • Служба приложения Chat реализуется на облачных или локальных серверах.

В этом проекте вы настраиваете Chat для интеграции с удаленной службой с помощью HTTP, как показано на следующей схеме:

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

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

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

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

Паб/Саб

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

  • Приложение Chat защищено брандмауэром.
  • Приложение Chat получает события, связанные с пространством Chat .
  • Приложение Chat развернуто в вашей организации.
  • Приложение Chat может отправлять и получать синхронные сообщения, а также отправлять асинхронные сообщения.
  • Приложение Чат разработано на любом языке программирования.
  • Приложение Chat требует полного управления DevOps и CI/CD.

На следующей схеме показана архитектура приложения Chat, созданного с помощью Pub/Sub:

Архитектура приложения чата, реализованная с помощью Pub/Sub.

На предыдущей диаграмме пользователь, взаимодействующий с приложением Pub/Sub Chat, имеет следующий поток информации:

  1. Пользователь отправляет сообщение в Chat в приложение Chat либо в прямом сообщении, либо в пространстве Chat, либо событие происходит в пространстве Chat, на которое у приложения Chat имеется активная подписка .

  2. Чат отправляет сообщение в тему Pub/Sub.

  3. Сервер приложений, представляющий собой облачную или локальную систему, содержащую логику приложения Chat, подписывается на тему Pub/Sub, чтобы получать сообщения через брандмауэр.

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

Чтобы начать, ознакомьтесь со статьей Использование Pub/Sub в качестве конечной точки для приложения Chat .

Вебхуки

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

  • Приложение Chat развернуто в вашей команде.
  • Приложение Chat отправляет сообщения из внешней системы в одно пространство чата.

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

Архитектура входящих веб-перехватчиков для отправки асинхронных сообщений в Chat.

На предыдущей диаграмме приложение Chat имеет следующий поток информации:

  1. Логика приложения Chat получает информацию от внешних сторонних сервисов, таких как система управления проектами или инструмент для продажи билетов.
  2. Логика приложения Chat размещается либо в облаке, либо в локальной системе, которая может отправлять сообщения с помощью URL-адреса веб-перехватчика в определенное пространство Chat.
  3. Пользователи могут получать сообщения из приложения Chat в этом конкретном пространстве Chat, но не могут взаимодействовать с приложением Chat.

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

Чтобы начать, ознакомьтесь со статьей Отправка сообщений в чат с помощью веб-перехватчиков .

Скрипт приложений

Вы можете полностью создать логику своего приложения Chat на JavaScript. Google Apps Script — это платформа для разработки приложений Chat с низким уровнем написания кода. Скрипт приложений обрабатывает поток авторизации и токены OAuth 2.0 для аутентификации пользователей. Вы можете использовать Apps Script для создания общедоступных приложений чата, но это не рекомендуется из-за ежедневных квот и ограничений .

Эта архитектура рекомендуется для следующих случаев использования:

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

Эта архитектура полезна для приложений чата, которые также интегрируются с другими сервисами Google Workspace и Google, такими как Google Sheets, Google Slides, Google Calendar, Google Drive, Google Maps и YouTube, как показано на следующей схеме:

Архитектура приложения чата, реализованная с помощью Apps Script.

На предыдущей диаграмме пользователь, взаимодействующий с приложением Apps Script Chat, имеет следующий поток информации:

  1. Пользователь отправляет сообщение в приложение чата либо в прямом сообщении, либо в чат-группе.
  2. Логика приложения Chat, реализованная в Apps Script, расположенном в Google Cloud, получает сообщение.
  3. При желании логику приложения Chat можно интегрировать со службами Google Workspace, такими как Календарь или Таблицы, или другими службами Google, такими как Карты Google или YouTube.
  4. Логика приложения Chat отправляет ответ обратно в службу приложения Chat в Chat.
  5. Ответ доставляется пользователю.

Чтобы начать, ознакомьтесь со статьей Создание приложения чата с помощью Apps Script .

Таблица приложений

Вы можете создать общедоменное приложение чата без кода с помощью AppSheet . Вы можете упростить процесс разработки, используя режим автоматической настройки и следуя шаблонам для создания общих действий приложения чата. Однако некоторые функции веб-приложения AppSheet недоступны в приложениях Chat .

Эта архитектура рекомендуется для следующих случаев использования:

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

На следующей диаграмме показана архитектура приложения Chat, созданного с помощью AppSheet:

Архитектура приложения чата, реализованная с помощью AppSheet.

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

  1. Пользователь отправляет сообщение в Chat в приложение Chat либо в прямом сообщении, либо в чат-группе.
  2. Логика приложения Chat, реализованная в AppSheet, расположенном в Google Cloud, получает сообщение.
  3. При желании логику приложения Chat можно интегрировать со службами Google Workspace, такими как Apps Script или Google Sheets.
  4. Логика приложения Chat отправляет ответ обратно в службу приложения Chat в Chat.
  5. Ответ доставляется пользователю.

Чтобы начать, ознакомьтесь со статьей Создание приложения чата с помощью AppSheet .

Диалоговый поток

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

  • Приложение Chat может отправлять и получать синхронные сообщения.
  • Приложение Chat использует обработку естественного языка для ответа и взаимодействия с пользователями.

На следующей схеме показана архитектура приложения Chat, созданного с помощью Dialogflow:

Архитектура приложения чата, реализованная с помощью Dialogflow.

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

  1. Пользователь отправляет сообщение в Chat в приложение Chat либо в прямом сообщении, либо в чат-группе.
  2. Виртуальный агент Dialogflow, расположенный в Google Cloud, получает и обрабатывает сообщение для получения ответа.
  3. При желании, используя вебхук Dialogflow , агент Dialogflow может взаимодействовать с внешними сторонними сервисами, такими как система управления проектами или инструмент для обработки заявок.
  4. Агент Dialogflow отправляет ответ обратно в службу приложения Chat.
  5. Ответ доставляется в чат.

Чтобы начать, ознакомьтесь со статьей «Создание приложения Google Chat Dialogflow» .

Приложение или скрипт командной строки

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

  • Приложение Чат разработано на любом языке программирования.
  • Приложение Chat может отправлять только асинхронные сообщения.

На следующей диаграмме показана архитектура:

Архитектура приложения чата, реализованная с помощью приложения командной строки или сценария.

На предыдущей диаграмме приложение Chat имеет следующий поток информации:

  1. Приложение Chat вызывает API Chat для отправки сообщения или выполнения другой операции.
  2. Чат выполняет запрошенную операцию.
  3. При желании приложение Chat распечатывает подтверждение в CLI.

Реализация логики приложения чата

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

Обрабатывать взаимодействия с пользователем

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

Синтаксический анализатор команд

Приложения Chat, управляемые командами, проверяют полезную нагрузку событий взаимодействия приложения Chat , а затем извлекают команды и параметры из этого контента. Например, см. раздел «Настройка команд с косой чертой для взаимодействия с пользователями чата ».

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

Диалоговый пользовательский интерфейс

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

Каждый раз, когда пользователь выполняет действие в диалоговом окне, в приложение Chat отправляется новое событие взаимодействия, которое может ответить обновлением диалогового окна или отправкой сообщения.

Обработка естественного языка

Многие реализации приложений чата используют обработку естественного языка (NLP), чтобы определить, что запрашивает пользователь. Существует множество способов реализации НЛП, и вы можете реализовать НЛП по своему усмотрению.

Вы можете использовать NLP в своей реализации приложения Chat с помощью интеграции Dialogflow ES или Dialogflow CX Chat , которая позволяет создавать виртуальных агентов для автоматических разговоров и динамических ответов.

Оперативно отправлять запросы в чат

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

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

Разговорные модели

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

Звонок и ответ (синхронно)

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

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

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

  1. Пользователь отправляет синхронное сообщение в приложение чата, например: «Какая у меня следующая встреча?».
  2. Приложение «Чат» отправляет пользователю синхронное сообщение, например «Доктор Сильва в 2:30».

Для этого типа диалогового шаблона вы можете реализовать архитектуру приложения Chat с помощью веб-службы, Pub/Sub, Apps Script, AppSheet или Dialogflow.

Множественные ответы (асинхронные)

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

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

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

  1. Пользователь отправляет синхронное сообщение в приложение чата, например «Отслеживать трафик».
  2. Приложение «Чат» отправляет пользователю синхронное сообщение для подтверждения запроса, например «Мониторинг включен».
  3. Позже приложение Chat отправляет пользователю одно или несколько асинхронных сообщений, вызывая REST API, например «Новый трафик».
  4. Пользователь отправляет в приложение «Чат» дополнительное синхронное сообщение, например «Игнорировать трафик».
  5. Приложение «Чат» отправляет пользователю синхронное сообщение для подтверждения запроса, например «Мониторинг выключен».

Для этого типа диалогового шаблона вы можете реализовать архитектуру приложения Chat с помощью веб-службы, Pub/Sub, Apps Script или AppSheet.

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

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

Приложения чата могут подписываться на многие типы событий . Если у приложения Chat есть активная подписка, Chat отправляет событие, когда в пространстве Chat происходит что-то важное. Затем приложение Chat может дополнительно генерировать любое количество асинхронных ответов, которые оно отправляет обратно в Chat с помощью Chat API.

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

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

Архитектура событийно-ориентированного сообщения.

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

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

Для этого типа диалогового шаблона вы можете реализовать архитектуру приложения Chat с помощью Pub/Sub, веб-службы или скрипта приложений.

Дополнительные сведения о получении событий и реагировании на них см. в разделе Работа с событиями из событий Google Chat .

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

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

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

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

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

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

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

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