Sua Ação pode enviar notificações push aos usuários sempre que for relevante, como enviar um lembrete quando a data de conclusão de uma tarefa estiver próxima.
Neste guia, descrevemos como configurar notificações push para uma ação.
Plataformas compatíveis
As notificações push estão disponíveis em dispositivos Android e iOS (os dispositivos iOS precisam ter o app do Assistente instalado para receber as notificações push). No momento, eles não são compatíveis com alto-falantes ativados por voz, smart displays ou outras superfícies.
Pré-requisitos
Seu projeto precisa conter pelo menos uma intent global, que é invocada quando o usuário toca em uma notificação push recebida do Google Assistente.
Primeiros passos
As seções a seguir descrevem como configurar notificações push na sua ação.
Criar uma intent para acionamento
A intent criada nesta seção aciona o fluxo de notificações. Para criar essa intent, siga estas etapas:
- Acesse o Console do Actions e clique em Desenvolver no menu superior.
- Clique em Intents no menu à esquerda para expandir a seção.
- Clique no na parte de baixo da lista e digite um nome para a nova intent.
- Pressione Enter/Returnpara criar a nova intent.
- Adicione frases de treinamento para acionar o fluxo de notificações. Por exemplo: - Notify me
- Send notifications
- Subscribe to notifications
 
- Clique em Salvar. 

Transição para a intent do sistema
Para configurar a transição para a cena do sistema Notifications, siga estas etapas:
- Em Cenas no menu à esquerda, clique na cena em que você quer adicionar o fluxo de inscrições de notificações.
- Na seção Processamento da intent do usuário da cena, clique em + para adicionar um novo gerenciador de intent.
- Em Intent, selecione a intent que você criou na seção anterior.
- Em Transição, selecione a cena do sistema Notificações. 
- Clique em Salvar. 

Configurar cenário do sistema
Para configurar a cena do sistema Notifications, siga estas etapas:
- Em Cenas, no menu à esquerda, selecione o novo cenário do sistema Notificações.
- Na seção Configurar intent, clique em Selecionar intent.
- Na seção Selecionar intent, escolha a intent que vai corresponder quando um usuário tocar em uma notificação push. 
- Em Personalizar solicitação de ativação, insira um aviso que será exibido aos usuários quando eles receberem uma solicitação para se inscreverem nas notificações push. O comando fica no seguinte formato: "Tudo bem se eu enviar notificações push para $prompt". 
- Clique em Salvar. 

Configurar a ativação
Para configurar as notificações push, siga estas etapas:
- Em Cenas, selecione a cena do sistema Notificações.
- Em Condições, selecione Se o usuário disser "sim".
- Ative Chamar seu webhook e forneça um nome de manipulador de eventos, como subscribe_to_notifications.
- Ative Enviar solicitações e forneça um comando simples para informar ao usuário que ele vai receber notificações: - candidates: - first simple: variants: - speech: 'Great, I'll send you notifications.'
- Em Transição, selecione Encerrar conversa para encerrar a conversa depois que um usuário se inscrever para receber notificações. 

Configurar recusa
Para configurar a desativação de notificações push, siga estas etapas:
- Em Condições, selecione Se o usuário disser "não".
- Ative Enviar solicitações e forneça um comando simples para informar ao usuário que ele não receberá notificações: - candidates: - first simple: variants: - speech: Okay, I won't send you notifications.
- Em Transição, selecione Encerrar conversa para encerrar a conversa depois que um usuário desativar as notificações. 

Configurar webhook
Para configurar o webhook, siga estas etapas:
- No webhook, adicione um gerenciador de intent para armazenar o - updatesUserId:- app.handle('subscribe_to_notifications', conv => { const intentName = '<name_of_intent_to_trigger>'; const notificationsSlot = conv.session.params['NotificationSlot_${intentName}']; if(notificationsSlot.permissionStatus == 'PERMISSION_GRANTED') { const updateUserId = notificationsSlot.additionalUserData.updateUserId; // Store the user ID and the notification's target intent for later use. // (Use a database, like Firestore, for best practice.) } });
Envie notificações
As notificações push são enviadas aos usuários pela API Actions. Para usar essa API, você precisa ativá-la no projeto do Google Cloud, configurar e fazer o download de uma chave de conta de serviço JSON.
Depois, é possível usar a biblioteca de cliente OAuth2 do Google para trocar a chave da conta de serviço por um token de acesso e usá-lo para autenticar suas solicitações à API Actions.
Gerar uma chave da conta de serviço
- Acesse o Console de APIs do Google e escolha seu projeto na lista suspensa Selecionar um projeto.
- Clique em Ativar para ativar a API Actions no projeto.
- Acesse a página de credenciais do console do Google Cloud e escolha seu projeto no menu suspenso Selecionar um projeto.
- Clique em Criar credenciais > Conta de serviço.
- Insira o nome da conta de serviço e clique em Criar.
- No menu suspenso Selecionar papel, selecione Projeto > proprietário.
- Clique em Continuar.
- Clique em Criar chave para fazer o download do arquivo JSON da conta de serviço.
Trocar a chave por um token de acesso e enviar uma notificação
Para enviar notificações push pela API Actions, você precisa trocar a chave da conta de serviço por um token de acesso. Para isso, recomendamos o uso de uma biblioteca de cliente das APIs do Google. Na série de snippets de código a seguir, usamos a biblioteca de cliente Node.js da API do Google.
- Instale a biblioteca de cliente da API do Google e solicite: - npm install googleapis request --save
- Use o código a seguir para receber um token de acesso da chave da conta de serviço e enviar uma notificação push: - // Use the Actions API to send a Google Assistant push notification. let client = auth.fromJSON(require('./service-account.json')); client.scopes = ['https://www.googleapis.com/auth/actions.fulfillment.conversation']; let notification = { userNotification: { title: 'Example notification title', }, target: { userId: '<UPDATES_USER_ID>', intent: 'Notifications Intent', }, }; client.authorize((err, tokens) => { if (err) { throw new Error('Auth error: ${err}'); } request.post('https://actions.googleapis.com/v2/conversations:send', { 'auth': { 'bearer': tokens.access_token, }, 'json': true, 'body': {'customPushMessage': notification, 'isInSandbox': true}, }, (err, httpResponse, body) => { if (err) { throw new Error('API request error: ${err}'); } console.log('${httpResponse.statusCode}: ' + '${httpResponse.statusMessage}'); console.log(JSON.stringify(body)); }); });
