Neste tutorial, mostramos como criar um app do Google Chat que uma equipe pode usar para gerenciar projetos em tempo real. O app de chat usa a Vertex AI para ajudar as equipes a escrever histórias de usuário, que representam recursos de um sistema de software do ponto de vista de um usuário para a equipe desenvolver, e as histórias são armazenadas em um banco de dados do Firestore.
-
Figura 2. Usando o comando de barra /createUserStory
, Charlie cria uma história. -
Figura 3. O app de chat de gerenciamento de projetos usa a Vertex AI para escrever a descrição da história e depois a compartilha no espaço. -
Figura 4. Carlos clica em Editar para finalizar os detalhes da história. A descrição da IA está correta, mas Carlos quer mais detalhes, então ele clica em Expandir para que a Vertex AI adicione requisitos à descrição da história. Ele atribui a história a si mesmo, define o status como iniciada, seleciona a prioridade e o tamanho apropriados e clica em Salvar. -
Figura 5. A qualquer momento, Carlos pode ver e gerenciar todas as histórias de usuários da equipe com o comando de barra /manageUserStories
.
Pré-requisitos
- Uma conta empresarial ou corporativa do Google Workspace com acesso ao Google Chat.
Acesso aos serviços do Google Cloud para fazer o seguinte:
- Criar um projeto do Google Cloud.
- Vincular uma conta de faturamento do Google Cloud ao projeto do Cloud. Para saber se você tem acesso, consulte Permissões necessárias para ativar o faturamento.
Usar invocações não autenticadas do Google Cloud Functions, que podem ser verificadas determinando se sua organização do Google Cloud usa compartilhamento restrito de domínio.
Se necessário, peça ao administrador do Google Cloud acesso ou permissão.
se estiver usando a CLI do Google Cloud, um ambiente de desenvolvimento em Node.js configurado para funcionar com a CLI gcloud; Consulte Como configurar um ambiente de desenvolvimento do Node.js.
Objetivos
- Crie um app de chat que gerencie projetos de software ágeis.
- Ajude os usuários a escrever histórias de usuário com ferramentas de escrita
de histórias com IA generativa da Vertex AI:
- Gere e regenere descrições de histórias.
- Expanda as descrições das histórias das anotações para completar os requisitos.
- Corrija a gramática para corrigir erros de digitação.
- Mantenha o trabalho atualizado gravando e lendo em um banco de dados do Firestore.
- Facilite a colaboração em um espaço do Chat permitindo que os usuários criem, editem, atribuam e iniciem histórias diretamente na conversa.
Produtos usados
O app de gerenciamento de projetos usa os seguintes produtos do Google Workspace e do Google Cloud:
- API Chat: uma API para desenvolver apps do Google Chat que recebem e respondem a eventos de interação do Chat, como mensagens. O app do Google Chat para gerenciamento de projetos usa a API Chat para receber e responder a eventos de interação enviados pelo Chat e para configurar atributos que determinam como ele aparece no Chat, como nome e imagem do avatar.
- API Vertex AI: uma plataforma de IA generativa. O app de gerenciamento de projetos do Google Chat usa a API Vertex AI para escrever títulos e descrições de histórias de usuários.
- Firestore: um banco de dados de documentos sem servidor. O app de gerenciamento de projetos do Google Chat usa o Firebase para armazenar dados sobre histórias de usuários.
Cloud Functions: um serviço de computação leve e sem servidor que permite criar funções autônomas e de finalidade única que podem responder a eventos de interação do Chat sem a necessidade de gerenciar um servidor ou um ambiente de execução. O app de gerenciamento de projetos do Google Chat usa o Cloud Functions para hospedar o endpoint HTTP ao qual o Chat envia eventos de interação e como uma plataforma de computação para executar a lógica que processa e responde a esses eventos.
O Cloud Functions usa os seguintes produtos do Google Cloud para criar, processar eventos de interação e hospedar recursos de computação:
- Cloud Build: uma plataforma de integração, entrega e implantação contínuas totalmente gerenciada que executa builds automatizados.
- Pub/Sub: um serviço de mensagens assíncrono e escalonável que separa os serviços que produzem mensagens dos serviços que processam essas mensagens.
- API Cloud Run Admin: um ambiente totalmente gerenciado para executar aplicativos conteinerizados.
Arquitetura
A arquitetura do app do Google Chat de gerenciamento de projetos recebe e processa eventos de interação do Chat em um endpoint HTTP, usa a Vertex AI para ajudar a escrever histórias de usuários e armazena detalhes da história em um banco de dados do Firestore. O diagrama a seguir mostra a arquitetura dos recursos do Google Workspace e do Google Cloud usados.
O app do Google Chat para gerenciamento de projetos funciona assim:
Um usuário envia uma mensagem no Chat e invoca o app de gerenciamento de projetos do Google Chat enviando uma mensagem diretamente, mencionando-a em um espaço ou inserindo um comando de barra.
O chat envia uma solicitação HTTP síncrona para o endpoint HTTP do Cloud Function.
O app do Google Chat para gerenciamento de projetos processa a solicitação HTTP:
A Vertex AI ajuda a escrever ou atualizar uma história de usuário.
Um banco de dados do Firestore armazena, recupera, atualiza ou exclui dados da história do usuário.
O Cloud Functions retorna uma resposta HTTP para o Chat, que é mostrada ao usuário como uma mensagem ou diálogo.
Prepare o ambiente
Nesta seção, mostramos como criar e configurar um projeto do Google Cloud para o app do Chat.
Criar um projeto do Google Cloud
Console do Google Cloud
- No console do Google Cloud, acesse Menu > IAM e administrador > Criar um projeto.
-
No campo Nome do projeto, insira um nome descritivo para o projeto.
Opcional: para editar o ID do projeto, clique em Editar. O ID do projeto não pode ser alterado após a criação do projeto. Portanto, escolha um ID que atenda às suas necessidades durante a vida útil do projeto.
- No campo Local, clique em Procurar para mostrar possíveis locais para seu projeto. Em seguida, clique em Selecionar.
- Clique em Criar. O console do Google Cloud navega até a página "Painel", e seu projeto é criado em alguns minutos.
CLI da gcloud
Em um dos seguintes ambientes de desenvolvimento, acesse a CLI do Google Cloud (gcloud
):
-
Cloud Shell: para usar um terminal on-line com a CLI gcloud
já configurada, ative o Cloud Shell.
Ativar o Cloud Shell -
Local Shell: para usar um ambiente de desenvolvimento local,
instale e
inicialize
a gcloud CLI.
Para criar um projeto do Cloud, use o comandogcloud projects create
: Substitua PROJECT_ID definindo o ID do projeto que você quer criar.gcloud projects create PROJECT_ID
Ativar o faturamento para o projeto do Cloud
Console do Google Cloud
- No console do Google Cloud, acesse Faturamento. Clique em Menu > Faturamento > Meus projetos.
- Em Selecionar uma organização, escolha a organização associada ao seu projeto do Google Cloud.
- Na linha do projeto, abra o menu Ações ( ), clique em Alterar faturamento e escolha a conta do Cloud Billing.
- Clique em Definir conta.
CLI da gcloud
- Para listar as contas de faturamento disponíveis, execute:
gcloud billing accounts list
- Vincule uma conta de faturamento a um projeto do Google Cloud:
gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID
Substitua:
PROJECT_ID
é o ID do projeto do Cloud em que você quer ativar o faturamento.BILLING_ACCOUNT_ID
é o ID da conta de faturamento a ser vinculado ao projeto do Google Cloud.
Ative as APIs
Console do Google Cloud
No console do Google Cloud, ative a API Google Chat, a API Vertex AI, a API Cloud Functions, a API Firestore, a API Cloud Build, a API Pub/Sub e a API Cloud Run Admin.
Confirme se você está ativando as APIs no projeto correto do Cloud e clique em Próxima.
Confirme se você está ativando as APIs corretas e clique em Ativar.
CLI da gcloud
Se necessário, defina o projeto do Cloud atual como o que você criou com o comando
gcloud config set project
:gcloud config set project PROJECT_ID
Substitua PROJECT_ID pelo ID do projeto do projeto do Cloud que você criou.
Ative a API Google Chat, a API Vertex AI, a API Cloud Functions, a API Firestore, a API Cloud Build, a API Pub/Sub e a API Cloud Run Admin com o comando
gcloud services enable
:gcloud services enable chat.googleapis.com \ aiplatform.googleapis.com \ cloudfunctions.googleapis.com \ firestore.googleapis.com \ cloudbuild.googleapis.com \ pubsub.googleapis.com \ run.googleapis.com
As APIs Cloud Build, Pub/Sub e Cloud Run Admin são pré-requisitos do Cloud Functions.
Autenticação e autorização
Nenhuma configuração de autenticação e autorização é necessária para seguir este tutorial.
Para chamar as APIs do Firestore e da Vertex AI, este tutorial usa as credenciais padrão do aplicativo com a conta de serviço padrão anexada ao Cloud Function, que não precisa ser configurada. No contexto de um ambiente de produção, você normalmente create e anexaria uma conta de serviço à função do Cloud.
Criar e implantar o app do Google Chat
Agora que seu projeto do Google Cloud foi criado e configurado, você já pode criar e implantar o app do Google Chat. Nesta seção, você fará o seguinte:
- Crie um banco de dados do Firestore para armazenar e recuperar histórias de usuários.
- Se quiser, analise o exemplo de código.
- Crie uma função do Cloud para hospedar e executar o código do app do Chat em resposta a eventos recebidos do Chat como solicitações HTTP.
- Crie e implante um app do Google Chat na página de configuração da API Google Chat.
Criar o banco de dados do Firestore
Nesta seção, você vai criar um banco de dados do Firestore para manter e recuperar
histórias de usuários, mas não vai definir o modelo de dados. O modelo de dados é definido
implicitamente no código de exemplo pelos arquivos model/user-story.js
e
model/user.js
.
O banco de dados do app Chat de gerenciamento de projetos usa um modelo de dados NoSQL com base em documentos modelo de dados do Firestore.
organizados em coleções . Para saber mais, consulte oO diagrama a seguir é uma visão geral do modelo de dados do app do Google Chat de gerenciamento de projetos:
A coleção raiz é spaces
, em que cada documento representa um espaço em que o
app de chat criou histórias. Cada história de usuário é
representada por um documento na subcoleção userStories
, e cada usuário é
representado por um documento na subcoleção users
.
Conferir definições de coleções, documentos e campos
spaces
Espaços em que o app do Chat criou histórias.
Campos | |
---|---|
Document ID | String ID exclusivo de um espaço específico em que as Histórias são criadas. Corresponde ao nome do recurso do espaço na API Chat. |
userStories | Subcollection of Documents ( Histórias criadas pelo app do Chat e pelos usuários. Corresponde ao Document ID de um userStories no Firebase. |
users | Subcollection of Documents (user) Usuários que criaram ou receberam histórias. |
displayName | String O nome de exibição do espaço na API Chat. Não definido para mensagens diretas com usuários. |
userStories
Histórias criadas pelo app Chat e pelos usuários.
Campos | |
---|---|
Document ID | String ID exclusivo de uma história de usuário específica criada pelo app de chat e pelos usuários. |
assignee | Document (user) O nome do recurso do usuário atribuído para concluir a história. Corresponde ao Document ID do documento users e ao nome do recurso de um usuário na API Chat. |
description | String Uma descrição do recurso do software do ponto de vista do usuário. |
priority | Enum A urgência com que o trabalho precisa ser concluído. Os valores possíveis são Low , Medium ou High . |
size | Enum A quantidade de trabalho. Os valores possíveis são Small , Medium ou Large . |
status | Enum A fase do trabalho. Os valores possíveis são OPEN , STARTED ou COMPLETED . |
title | String O título da história; um breve resumo. |
users
Usuários que criaram ou que receberam histórias.
Campos | |
---|---|
Document ID | String ID exclusivo de um usuário específico. Corresponde ao assignee de um userStories no Firebase e ao nome do recurso de um usuário na API Chat. |
avatarUrl | String URL que hospeda a imagem de avatar do Chat do usuário. |
displayName | String O nome de exibição do usuário no Chat. |
Veja como criar o banco de dados do Firestore:
Console do Google Cloud
No Console do Google Cloud, acesse o Firestore. Clique em Menu > Firestore.
Clique em Criar banco de dados.
Em Selecione o modo do Firestore, clique em Modo nativo.
Clique em Continuar.
Configure o banco de dados:
Em Nomeie seu banco de dados, deixe o ID do banco de dados como
(default)
.Em Tipo de local, especifique uma região para o banco de dados, como
us-central1
. Para ter a melhor performance, selecione o mesmo local ou um local próximo da Função do Cloud do app de chat.
Clique em Criar banco de dados.
CLI da gcloud
Crie um banco de dados do Firestore no modo nativo com o comando
gcloud firestore databases create
:gcloud firestore databases create \ --location=LOCATION \ --type=firestore-native
Substitua LOCATION pelo nome de uma região do Firestore, como
us-central1
.
Analisar o exemplo de código
Se preferir, antes de criar a Função do Cloud, analise e conheça o código de exemplo hospedado no GitHub.
Confira uma visão geral de cada arquivo:
env.js
- Variáveis de configuração de ambiente para implantar o app Chat em um projeto e uma região do Google Cloud especificados. Atualize as variáveis de configuração neste arquivo.
package.json
epackage-lock.json
- Configurações e dependências do projeto Node.js.
index.js
- Ponto de entrada para a função do Cloud do app do Chat. Ele lê o evento de chat da solicitação HTTP, chama o gerenciador de apps e publica a resposta HTTP como um objeto JSON.
controllers/app.js
- A lógica principal do aplicativo. processa os
eventos de interação com os
comandos de menções e barras do app do Chat.
Para responder aos cliques no card, ele chama
app-action-handler.js
. controllers/app-action-handler.js
- Lógica do aplicativo para processar o clique no card Eventos de interação do Chat.
services/space-service.js
,services/user-service.js
eservices/user-story-service.js
- Esses arquivos contêm as partes da
lógica do aplicativo específicas para trabalhar com espaços do Chat,
usuários e histórias de usuário. As funções nesses arquivos são chamadas por
app.js
ouapp-action-handler.js
. Para realizar operações de banco de dados, as funções nesses arquivos chamam funções emfirestore-service.js
. services/firestore-service.js
- Processa operações de banco de dados.
As funções neste arquivo são chamadas por
services/space-service.js
,services/user-service.js
eservices/user-story-service.js
. services/aip-service.js
- Chame a API Vertex AI para previsão de texto de IA generativa.
model/*.js
- Esses arquivos contêm a definição de classes e tipos enumerados que os serviços de aplicativo usam para armazenar e transmitir dados entre funções. Eles definiram o modelo de dados para o banco de dados do Firestore.
views/*.js
- Cada arquivo nesse diretório instancia um objeto de card que o app do Chat envia de volta como uma mensagem de card ou uma resposta de ação de caixa de diálogo.
views/widgets/*.js
- Cada arquivo instancia
um tipo de objeto widget
que o app usa para criar os cards no diretório
views/
. test/**/*.test.js
- Cada arquivo neste diretório e nos subdiretórios dele contém os testes de unidade
para a função, o controlador, o serviço, a visualização ou o widget correspondente.
É possível executar todos os testes de unidade executando
npm run test
no diretório raiz do projeto.
Criar e implantar a função do Cloud
Nesta seção, você cria e implanta uma função do Cloud que compreende a lógica do aplicativo do app do Chat de gerenciamento de projetos.
O Cloud Functions é executado em resposta a uma solicitação HTTP do Chat que contém um evento de interação do Chat. Quando executado, o código do Cloud Function processa o evento e retorna uma resposta ao Chat, que é renderizada como uma mensagem, caixa de diálogo ou outro tipo de interação do usuário. Se aplicável, a Função do Cloud também lê ou grava no banco de dados do Firestore.
Veja como criar a função do Cloud:
Console do Google Cloud
Faça o download do código do GitHub como um arquivo ZIP.
Extraia o arquivo ZIP salvo.
A pasta extraída contém todo o repositório de amostras do Google Workspace.
Na pasta extraída, navegue até
google-chat-samples-main/node/project-management-app/
e compacte a pastaproject-management-app
em um arquivo ZIP.O diretório raiz do arquivo ZIP precisa conter os seguintes arquivos e pastas:
env.js
README.md
gcloudignore.text
package-lock.json
package.json
index.js
model/
controllers/
views/
services/
No console do Google Cloud, acesse a página Cloud Functions:
Verifique se o projeto do Google Cloud para seu app do Chat está selecionado.
Clique em
Criar função.Na página Criar função, configure sua função:
- Em Ambiente, selecione Função do Cloud Run.
- Em Nome da função, insira
project-management-tutorial
. - Em Região, selecione uma região.
- Em Autenticação, selecione Permitir invocações não autenticadas.
- Clique em Próxima.
Em Ambiente de execução, selecione Node.js 20.
Em Ponto de entrada, exclua o texto padrão e insira
projectManagementChatApp
.Em Código-fonte, selecione Upload de CEP.
Em Bucket de destino, create ou selecione um bucket:
- Clique em Procurar.
- Escolha um bucket.
- Clique em Selecionar.
O Google Cloud faz upload do arquivo ZIP e extrai os arquivos de componentes neste bucket. Em seguida, o Cloud Functions copia os arquivos de componentes para a função do Cloud.
Em Arquivo ZIP, faça upload do arquivo ZIP que você baixou do GitHub, extraiu e recompactou:
- Clique em Procurar.
- Acesse e selecione o arquivo ZIP.
- Clique em Abrir.
Clique em Implantar.
A página Detalhes do Cloud Functions será aberta e sua função será exibida com dois indicadores de progresso: um para a compilação e outro para o serviço. Quando os dois indicadores de progresso desaparecerem e forem substituídos por uma marca de seleção, a função será implantada e estará pronta.
Edite o exemplo de código para definir constantes:
- Na página Detalhes da função do Cloud, clique em Editar.
- Clique em Próxima.
- Em Código-fonte, selecione Editor in-line.
- No editor in-line, abra o arquivo
env.js
. - Substitua project-id pelo código do projeto.
- Opcional: atualize us-central1 com um local com suporte para sua função do Cloud.
Clique em Implantar.
Quando a implantação da função for concluída, copie o URL do gatilho:
- Na página Detalhes da função, clique em Gatilho.
- Copie o URL. Você vai precisar dele para configurar o app do Chat na seção a seguir.
CLI da gcloud
Clone o código do GitHub:
git clone https://github.com/googleworkspace/google-chat-samples.git
Alterne para o diretório que contém o código desse app do Chat de gerenciamento de projetos:
cd google-chat-samples/node/project-management-app
Edite o arquivo
env.js
para definir as variáveis de ambiente:- Substitua project-id pelo ID do projeto do Google Cloud.
- Substitua us-central1 pelo local do projeto do Google Cloud.
Implante a função do Cloud no Google Cloud:
gcloud functions deploy project-management-tutorial \ --gen2 \ --region=REGION \ --runtime=nodejs20 \ --source=. \ --entry-point=projectManagementChatApp \ --trigger-http \ --allow-unauthenticated
Substitua REGION por um local da função do Cloud em que a infraestrutura é hospedada, como
us-central1
.
- Quando a implantação da função for concluída, copie a propriedade
url
da resposta. Esse é o URL do gatilho que você vai usar na próxima seção para configurar o app Google Chat.
Configurar o app Google Chat no console do Google Cloud
Esta seção mostra como configurar a API Chat no console do Google Cloud com informações sobre seu app de chat, incluindo o nome do app, os comandos de barra invertida compatíveis e o URL de acionamento da função do Cloud do app para a qual ele envia eventos de interação do Chat.
No console do Google Cloud, clique em Menu > Mais produtos > Google Workspace > Biblioteca de produtos > API Google Chat > Gerenciar > Configuração.
Em Nome do app, digite
Project Manager
.No URL do avatar, digite
https://developers.google.com/chat/images/quickstart-app-avatar.png
.Em Descrição, digite
Manages projects with user stories.
Clique no botão Ativar recursos interativos para ativar a opção.
Em Funcionalidade, selecione Receber mensagens individuais e Participar de espaços e conversas em grupo.
Em Configurações de conexão, selecione URL do endpoint HTTP.
Em URL do endpoint HTTP, cole o URL do gatilho que você copiou da implantação do Cloud Functions, formatado como
https://
REGION-
PROJECT_ID.cloudfunctions.net/project-management-tutorial
. Se você implantou a função do Cloud com a CLI gcloud, essa é a propriedadeurl
.Registre os comandos de barra do app do Chat. Para registrar um comando de barra:
- Em Comandos de barra, clique em Adicionar um comando de barra.
Para cada comando de barra detalhado na tabela a seguir, insira o Nome, o ID do comando e a Descrição. Em seguida, selecione se o comando de barra Abre uma caixa de diálogo e clique em Concluído:
Nome ID do comando Descrição Abre uma caixa de diálogo /createUserStory
1 Crie uma história com o título especificado. Não selecionado /myUserStories
2 Lista todas as histórias atribuídas ao usuário. Não selecionado /userStory
3 Exibe o status atual da matéria especificada. Não selecionado /manageUserStories
4 Abre uma caixa de diálogo em que as histórias podem ser editadas. Selecionado /cleanupUserStories
5 Exclui todas as matérias do espaço. Não selecionado
Em Visibilidade, selecione Disponibilizar este app do Chat para pessoas e grupos específicos no domínio do espaço de trabalho e insira seu endereço de e-mail.
Opcionalmente, em Registros, selecione Registrar erros no Logging.
Clique em Salvar. Uma mensagem de configuração salva será exibida, indicando que o app do Chat está pronto para ser testado.
Teste o app do Chat
Teste o app de chat de gerenciamento de projetos enviando mensagens e usando os comandos de barra para criar, editar e excluir histórias de usuário.
Abra o Google Chat usando a conta do Google Workspace que você informou ao se adicionar como um testador confiável.
- Clique em Nova conversa.
- No campo Adicionar uma ou mais pessoas, digite o nome do seu app do Chat.
Selecione seu app do Chat nos resultados. Uma mensagem direta é aberta.
- Na nova mensagem direta com o app, digite
Hello
e pressioneenter
. O app de chat de gerenciamento de projetos responde com um menu de ajuda detalhando o que ele pode fazer. - Para criar uma história, digite
/createUserStory Test story
na barra de mensagens e envie. O app de chat de gerenciamento de projetos responde com uma mensagem de card detalhando a história do usuário criada para você usando a IA generativa da Vertex AI. No console, verifique o banco de dados do Firestore para analisar os registros criados sobre o espaço a que você adicionou o app do Chat, os usuários que interagiram com ele e a história de usuário que você criou.
Volte ao Google Chat.
- Se preferir, clique em Editar para editar a história. Quando terminar, clique em Salvar.
- Teste cada comando de barra aceito pelo app. Para vê-los, digite
/
ou mencione o app do Chat. - Exclua a história de usuário de teste emitindo o comando de barra
/cleanupUserStories
. Como alternativa, remova ou desinstale o app. Quando removido, o app exclui todas as histórias de usuário criadas nesse espaço.
Resolver problemas
Quando um app do Google Chat ou um card retorna um erro, a interface do Chat mostra uma mensagem informando que "Ocorreu um erro". ou "Não foi possível processar sua solicitação". Às vezes, a interface do Chat não exibe nenhuma mensagem de erro, mas o app ou card produz um resultado inesperado. Por exemplo, uma mensagem de card pode não aparecer.
Embora uma mensagem de erro possa não aparecer na interface do Chat, mensagens de erro descritivas e dados de registro estão disponíveis para ajudar a corrigir erros quando o registro de erros para apps de chat estiver ativado. Para saber como visualizar, depurar e corrigir erros, consulte Resolver e corrigir erros do Google Chat.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, recomendamos que você exclua o projeto do Cloud.
- No console do Google Cloud, acesse a página Gerenciar recursos. Clique em Menu > IAM e administrador > Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
Temas relacionados
- Responder a perguntas com base em conversas do Chat usando um app do Chat com IA do Gemini
- Responder a incidentes com o Google Chat, a Vertex AI e o Apps Script