Neste tutorial, mostramos como criar um app do Google Chat que uma equipe pode usar para gerenciar projetos em tempo real. O app Chat usa a Vertex AI para ajudar as equipes a escrever histórias de usuários (que representam recursos de um sistema de software do ponto de vista de um usuário para a equipe desenvolver) e mantém as histórias em um banco de dados do Firestore.
-
Figura 1. Charlie discute o desenvolvimento de recursos em um espaço do Chat com a equipe. Mencionar o app de chat de gerenciamento de projetos faz com que ele ofereça ajuda. -
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 matéria e depois a compartilha no espaço. -
Figura 4. Charlie clica em Editar para finalizar os detalhes da matéria. A descrição da IA está correta, mas Charlie quer mais detalhes. Então, ele clica em Expandir para que a Vertex AI adicione requisitos à descrição da história. Charlie atribui a história a si mesmo, define o status como "Iniciado", seleciona uma prioridade e um tamanho adequados e clica em Salvar. -
Figura 5. A qualquer momento, Charlie pode ver e gerenciar todas as histórias de usuários da equipe com o comando de barra /manageUserStories
.
Pré-requisitos
- Uma conta do Google Workspace Business ou Enterprise com acesso ao Google Chat.
Acesso aos serviços do Google Cloud para fazer o seguinte:
- Criar um projeto do Google Cloud.
- Vincule 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.
Use invocações não autenticadas de funções do Google Cloud, que podem ser verificadas determinando se a organização do Google Cloud usa compartilhamento restrito por domínio.
Se necessário, peça acesso ou permissão ao administrador do Google Cloud.
Se você estiver usando a CLI do Google Cloud, um ambiente de desenvolvimento Node.js configurado para funcionar com a CLI gcloud. Consulte Como configurar um ambiente de desenvolvimento Node.js.
Objetivos
- Crie um app de chat que gerencie projetos de software ágil.
- Ajude os usuários a escreverem histórias de usuários com ferramentas de escrita de histórias assistidas por IA generativa com tecnologia da Vertex AI:
- Gerar e regenerar descrições de histórias.
- Amplie as descrições de histórias de observações para requisitos completos.
- Corrigir a gramática para corrigir erros de digitação.
- Mantenha o trabalho atualizado gravando e lendo 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 matérias diretamente da 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 de gerenciamento de projetos do Google Chat 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 Google Chat de gerenciamento de projetos usa o Firebase para armazenar dados sobre histórias de usuários.
Cloud Functions: um serviço de computação leve sem servidor que permite criar funções autônomas 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. (em inglês). O app de gerenciamento de projetos do Google Chat usa o Cloud Functions para hospedar o endpoint HTTP em que 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 totalmente gerenciada de integração, entrega e implantação contínuas que executa builds automatizadas.
- 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 apps em contêineres.
Arquitetura
A arquitetura do app 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 de histórias de usuários 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 de gerenciamento de projetos do Google Chat funciona assim:
Um usuário envia uma mensagem no Chat e invoca o app de gerenciamento de projetos do Google Chat enviando uma mensagem direta, mencionando o app em um espaço ou inserindo um comando de barra.
O Chat envia uma solicitação HTTP síncrona ao endpoint HTTP da função do Cloud.
O app de gerenciamento de projetos do Google Chat processa a solicitação HTTP:
A Vertex AI ajuda a escrever ou atualizar uma história do usuário.
Um banco de dados do Firestore armazena, recupera, atualiza ou exclui dados de histórias de usuários.
O Cloud Functions retorna uma resposta HTTP ao Chat, que é exibida ao usuário como uma mensagem ou caixa de diálogo.
Prepare o ambiente
Nesta seção, mostramos como criar e configurar um projeto do Google Cloud para o app de 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 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 dele.
- No campo Local, clique em Procurar para mostrar os locais possíveis 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 -
Shell local: para usar um ambiente de desenvolvimento local,
instale e
inicialize
a CLI gcloud.
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 Mudar 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 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 do Cloud correto 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 atual do Cloud como aquele 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 à função do Cloud, que não precisa ser configurada. Em um ambiente de produção, normalmente você cria e anexa 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ê está pronto para criar e implantar o app Google Chat. Nesta seção, você vai fazer o seguinte:
- Crie um banco de dados do Firestore para persistir 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.
Crie o banco de dados do Firestore
Nesta seção, você vai criar um banco de dados do Firestore para persistir e recuperar
histórias de usuários, mas não vai definir o modelo de dados. O modelo de dados é definido implicitamente no exemplo de código pelos arquivos model/user-story.js
e model/user.js
.
O banco de dados do app de chat de gerenciamento de projetos usa um modelo de dados NoSQL baseado em Modelo de dados do Firestore.
documentos organizados em coleções. Para saber mais, consulteO diagrama a seguir é uma visão geral do modelo de dados do app Google Chat de gerenciamento de projetos:
A coleção raiz é spaces
, em que cada documento representa um espaço em que o
app Chat criou histórias. Cada história do usuário é
representada por um documento na subcoleção userStories
, e cada usuário é
representado por um documento na subcoleção users
.
Ver definições de coleção, documento e campo
spaces
Espaços em que o app Chat criou histórias.
Campos | |
---|---|
Document ID | String ID exclusivo de um espaço específico onde as matérias são criadas. Corresponde ao nome do recurso do espaço na API Chat. |
userStories | Subcollection of Documents ( Histórias criadas pelo app Chat e pelos usuários dele. 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 dele.
Campos | |
---|---|
Document ID | String ID exclusivo de uma história de usuário específica criada pelo app Chat e pelos usuários dele. |
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 de 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 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 de recurso de um usuário na API Chat. |
avatarUrl | String URL que hospeda a imagem do avatar do usuário no chat. |
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 seu banco de dados, como
us-central1
. Para ter o melhor desempenho, selecione o mesmo local ou um local próximo à função do Cloud do app 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 quiser, antes de criar a Função do Cloud, revise e conheça o exemplo de código hospedado no GitHub.
Confira uma visão geral de cada arquivo:
env.js
- Variáveis de configuração de ambiente para implantar o app de chat em um projeto e uma região especificados do Google Cloud. Atualize as variáveis de configuração nesse arquivo.
package.json
epackage-lock.json
- Configurações e dependências do projeto Node.js.
index.js
- Ponto de entrada da função do Cloud do app de chat. Ele lê o evento de chat da solicitação HTTP, chama o gerenciador de apps e envia a resposta HTTP como um objeto JSON.
controllers/app.js
- A lógica principal do aplicativo. Processa os eventos de interação ao lidar com as menções e os comandos de barra do app Chat.
Para responder a cliques em cards, 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ários. 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
- Chama a API Vertex AI para previsão de texto de IA generativa.
model/*.js
- Esses arquivos contêm a definição de classes e enums que os serviços do aplicativo usam para armazenar e transmitir dados entre funções. Eles definem o modelo de dados para o banco de dados do Firestore.
views/*.js
- Cada arquivo nesse diretório cria uma instância de um objeto de card que o app Chat envia de volta para o Chat como uma mensagem de card ou uma resposta de ação de caixa de diálogo.
views/widgets/*.js
- Cada arquivo cria uma instância de um tipo de objeto widget que o app usa para criar os cards no diretório
views/
. test/**/*.test.js
- Cada arquivo nesse diretório e nos subdiretórios contém os testes de unidade
para a função, o controlador, o serviço, a visualização ou o widget correspondente.
Você pode executar todos os testes de unidade executando
npm run test
no diretório raiz do projeto.
Criar e implantar a função do Cloud Functions
Nesta seção, você vai criar e implantar uma função do Cloud que inclui a lógica de aplicativo do app de chat de gerenciamento de projetos.
A função do Cloud é executada 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 Functions 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 do 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 do ZIP.
Em Bucket de destino, crie 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 nesse bucket. Em seguida, o Cloud Functions copia os arquivos de componente para a função do Cloud.
Em Arquivo ZIP, faça upload do arquivo ZIP que você baixou do GitHub, extraiu e compactou novamente:
- Clique em Procurar.
- Navegue até o arquivo ZIP e selecione-o.
- Clique em Abrir.
Clique em Implantar.
A página Detalhes do Cloud Functions é aberta, e sua função aparece com dois indicadores de progresso: um para o build e outro para o serviço. Quando os dois indicadores de progresso desaparecem e são substituídos por uma marca de seleção, a função é implantada e fica 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 compatível para sua função do Cloud.
Clique em Implantar.
Quando a implantação da função terminar, copie o URL do gatilho:
- Na página Detalhes da função, clique em Acionar.
- Copie o URL. Você vai precisar dele para configurar o app 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
Mude para o diretório que contém o código deste app de chat de gerenciamento de projetos:
cd google-chat-samples/node/project-management-app
Edite o arquivo
env.js
para definir variáveis de ambiente:- Substitua project-id pelo ID do projeto do Google Cloud.
- Substitua us-central1 pela localização 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 Cloud Functions em que a infraestrutura dela está 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 seção a seguir 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, os comandos de barra compatíveis e o URL de acionamento da função do Cloud do app de chat, para onde 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
.Em 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 a posição ativada.
Em Funcionalidade, selecione 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 Chat. Para registrar um comando de barra:
- Em Comandos, clique em Adicionar um comando.
Para cada comando de barra detalhado na tabela a seguir, insira o Nome, o ID do comando, a Descrição e selecione se o comando de barra Abre uma caixa de diálogo. Depois, clique em Concluído:
Nome ID do comando Descrição Tipo de comando Nome do comando de barra Abre uma caixa de diálogo Criar uma história do usuário 1 Crie uma história com o título especificado. Comando de barra /createUserStory
Não selecionado Minhas histórias de usuários 2 Lista todas as matérias atribuídas ao usuário. Comando de barra /myUserStories
Não selecionado História do usuário 3 Mostra o status atual da matéria especificada. Comando de barra /userStory
Não selecionado Gerenciar histórias de usuários 4 Abre uma caixa de diálogo em que as matérias podem ser editadas. Comando de barra /manageUserStories
Selecionado Limpar histórias de usuários 5 Exclui todas as matérias no espaço. Comando de barra /cleanupUserStories
Não selecionado
Em Visibilidade, selecione Disponibilize o app de chat para pessoas e grupos específicos no seu domínio do Workspace e digite seu endereço de e-mail.
Se quiser, em Registros, selecione Registrar erros no Logging.
Clique em Salvar. Uma mensagem de configuração salva vai aparecer, o que significa que o app Chat está pronto para teste.
Teste o app do Chat
Teste o app de chat de gerenciamento de projetos enviando uma mensagem para ele e usando os comandos de barra para criar, editar e excluir histórias de usuários.
Abra o Google Chat usando a conta do Google Workspace que você informou ao se tornar um testador de confiança.
- Clique em Novo chat.
- No campo Adicionar uma ou mais pessoas, digite o nome do seu app Chat.
Selecione seu app de 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 que detalha 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 em 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 em que você adicionou o app Chat, os usuários que interagiram com ele e a história do usuário que você criou.
Volte para o Google Chat.
- Se quiser editar a matéria, clique em Editar. Quando estiver tudo certo, clique em Salvar.
- Teste cada comando de barra compatível com o app. Para conferir, digite
/
ou mencione o app Chat. - Exclua a história do usuário de teste usando o comando de barra
/cleanupUserStories
. Ou remova ou desinstale o app. Quando removido, o app exclui todas as histórias do usuário criadas nesse espaço.
Resolver problemas
Quando um app ou card do Google Chat retorna um erro, a interface do Chat mostra a mensagem "Ocorreu um erro". ou "Não foi possível processar sua solicitação". Às vezes, a interface do Chat não mostra nenhuma mensagem de erro, mas o app ou card do Chat produz um resultado inesperado. Por exemplo, uma mensagem do card pode não aparecer.
Embora uma mensagem de erro não apareça na interface do Chat, mensagens de erro descritivas e dados de registro estão disponíveis para ajudar você a corrigir erros quando o registro de erros para apps do Chat está ativado. Para ajuda com a visualização, depuração e correção de 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
- Responda 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