Um treinamento que fica em outra plataforma pode ser aberto de dentro da Engage, sem o usuário digitar credenciais de novo. A Engage entrega os dados da sessão para uma página sua, e essa página faz o login no seu sistema. Este artigo mostra como montar essa página e como devolver a nota para a Engage.
Neste artigo
- Antes de começar
- Montar a atividade
- Devolver a nota para a Engage
- Cuidados
- Problemas comuns
Antes de começar
- Este passo é de desenvolvimento front-end (HTML e JavaScript), não de API. Quando o seu servidor precisar chamar a API, as credenciais estão em Comece por aqui: credenciais para integrar com a API da Engage.
- O template de atividade customizada atualizado, que você pede ao Suporte em meajuda@engage.bz.
- Uma forma de o seu sistema reconhecer o usuário: a Engage entrega o login e o e-mail do usuário logado, e um dos dois precisa existir também no seu lado.
- Monte e teste na instância de homologação; publique em produção só depois de validado.
Montar a atividade
1Prepare o template
- Descompacte o template e abra o
index.html. - Implemente a sua lógica de login no ponto indicado pelos comentários do arquivo.
- Compacte de novo em
.zip, com oindex.htmlna raiz.
2Crie a atividade na Engage
- Na área administrativa, crie uma atividade do tipo Customizada e salve. O campo Arquivo é habilitado.
- Clique em Importar, envie o
.zip, atualize a biblioteca de mídia e selecione oindex.html. - Na aba Avançado, preencha o Código externo com o ID do treinamento no seu sistema.
- Vincule a atividade a um módulo e teste com um usuário comum.
Dica
Crie uma atividade Customizada para cada treinamento do seu sistema. O Código externo é o que liga as duas pontas: ele chega à sua página como externalCode.
3Converse com o player
A sua página roda dentro de um iframe do player e troca mensagens com ele por postMessage. O corpo é uma string JSON com message e, quando houver, param:
| Você envia | O player responde | Para que serve |
|---|---|---|
{"message":"requestUserData"} | retrieveUserData | Dados do usuário logado, incluindo login e email |
{"message":"requestActivityData"} | retrieveActivity | Dados da atividade, incluindo o externalCode |
{"message":"requestParameters"} | retrieveParameters | Parâmetros configurados na atividade |
{"message":"requestUserRelated"} | retrieveUserRelated | Dados complementares do usuário |
{"message":"setAnswer","param":{"score":100}} | — | Conclui a atividade com a nota informada |
{"message":"verifyActivityStatus"} | — | Consulta a situação da atividade |
{"message":"refreshPage"} | — | Pede a atualização da tela do player |
Envie as solicitações só depois do load da página.
Cuidado
A mensagem retrieveUserData traz dado pessoal. No seu addEventListener('message', ...), compare event.origin com o domínio do portal da instância (protocolo e domínio do platform_url, em GET /{customer_id}/infos/token) e descarte tudo que não bater. Ao enviar, use o domínio do portal como destino — nunca '*'.
Devolver a nota para a Engage
Há duas formas, e só uma precisa de integração no servidor:
- Dentro da sessão (recomendado): quando o usuário termina com a página aberta, ela envia
setAnswercom oscore. Não precisa de webhook. - Fora da sessão: quando a conclusão acontece depois (correção manual, processamento em lote), o seu sistema envia o resultado para a Engage pela API, e é aí que um webhook do seu lado faz sentido.
Cuidados
logineemailsão dado pessoal. Não grave em console, não coloque em URL nem emlocalStorage. Se precisar registrar o acesso, registre no seu servidor.- Não coloque segredo no
index.html. O arquivo vai para o navegador do usuário. Chamada que useclient_secretou token de servidor fica no seu back-end. - Não dependa de número de linha do template. Ele muda a cada versão; use os comentários do arquivo como referência.
- A mesma página roda no navegador e no aplicativo da Engage.
- Teste com um usuário comum. Testar só com administrador esconde erros de permissão e de vínculo de trilha.
Problemas comuns
| O que aparece | Causa provável | O que fazer |
|---|---|---|
| A atividade abre em branco | O index.html não foi selecionado, ou o .zip tem uma pasta a mais na raiz | Recompacte com o index.html na raiz e selecione-o de novo |
| A página não recebe resposta do player | A solicitação não foi enviada, ou foi enviada antes do load | Envie as mensagens depois do load da página |
| O usuário não é reconhecido no seu sistema | O login ou o email não existe do seu lado | Alinhe o cadastro, ou troque o campo usado para reconhecer o usuário |
externalCode chega vazio | O Código externo não foi preenchido na aba Avançado | Preencha o Código externo da atividade |
| O usuário conclui no seu sistema e a atividade segue pendente | Nenhuma das formas de devolver a nota foi implementada | Envie setAnswer ou devolva o resultado pela API |
Próximo passo
Para levar o usuário do seu sistema para a Engage, no sentido contrário, veja SSO — Passo 1: ligar o usuário do seu sistema ao usuário da Engage.
Precisa de ajuda?
Escreva para meajuda@engage.bz informando o customer_id, o ambiente e a atividade. Nunca envie senhas, tokens ou o client_secret por e-mail.
Este artigo foi útil?
Que bom!
Obrigado pelo seu feedback
Desculpe! Não conseguimos ajudar você
Obrigado pelo seu feedback
Feedback enviado
Agradecemos seu esforço e tentaremos corrigir o artigo