Instalação
Para instalar a Dito em sua aplicação, cole o código abaixo antes de fechar a tag <body>
.
Este código deve ser colocado em todas as páginas da sua aplicação.
Obs.: O SDK é carregado de forma assíncrona, sem impactar o carregamento da sua aplicação.
<script>
(function(d,e,id){
window.dito={};window._ditoTemp=[];
dito.generateID=function(str){return'_dito_sha1_'+str;}
var m=['init','identify','alias','unalias','track'],s=d.createElement('script'),
x=d.getElementsByTagName(e)[0];s.type='text/javascript';s.async=true;s.id=id;
s.src='//storage.googleapis.com/dito/sdk.js';x.parentNode.insertBefore(s,x);
for(var i=0;i<m.length;i++){dito[m[i]]=function(i){
return function(){_ditoTemp.push({methodName:m[i],params:arguments});}}(i)}
})(document,'script','dito-jssdk');
dito.init({
apiKey: 'API_KEY'
});
</script>
O JavaScript SDK da Dito é identificado pela variável
dito
.
dito.identify()
O método dito.identify()
é usado para identificar os usuários que estão logados em sua aplicação e deve ser utilizado após o dito.init()
.
O nó data
é reservado para as informações personalizadas dos usuários e relativas a sua aplicação, você pode enviar quantos atributos quiser. Estes atributos podem ser utilizados para filtrar seus usuários dentro da plataforma.
Note que os atributos do tipo data devem ser enviados em um dos formatos suportados.
O método de identify é um método assincrono. Ele vai colocar a request de indentificação do usuário em uma fila, para que em eventuais falhas de rede possa se ter a oportinudade de enviar a request novamente.
Exemplo:
dito.identify({
id: dito.generateID('[email protected]'),
name: 'Marcos Nogueira',
email: '[email protected]',
gender: 'male',
location: 'Belo Horizonte',
birthday: '1990-02-15',
data: {
cpf: '101.032.076-95',
cargo: 'Desenvolvedor'
}
});
ATENÇÃO!
Os nomes das propriedades dos usuários enviados dentro do nó data DEVEM estar em letras minúsculas, sem acentuação ou caracteres especiais. Caso o nome de suas propriedades seja composto por mais de uma palavra, estas devem ser separadas por underscore '_' no padrão snake case.
Exemplo:
minha_propriedade_1
minha_propriedade_2
dito.alias()
O método dito.alias()
é usado para associar contas ao usuário logado em sua aplicação e deve ser utilizado após o dito.identify()
.
Exemplo:
dito.alias({
portal: {
id: 'ID_DO_USUARIO_A_SER_ASSOCIADO'
}
});
dito.unalias()
O método dito.unalias()
é usado para remover a associação de uma conta do usuário logado em sua aplicação e deve ser utilizado após o dito.identify()
.
Exemplo:
dito.unalias({
portal: {
id: 'ID_DO_USUARIO_A_SER_DESASSOCIADO'
}
});
dito.track()
O método dito.track()
é usado para acompanhar o comportamento dos usuários na forma de eventos em sua aplicação e deve ser utilizado após o dito.identify()
.
O nó data
é reservado para as informações do evento, você pode enviar quantos atributos quiser. Estes atributos podem ser utilizados para filtrar seus usuários dentro da plataforma.
Note que os atributos do tipo data devem ser enviados em um dos formatos suportados.
O método track é um método assincrono. Dessa forma toda vez que ele é chamado, é adicionado um elemento a uma fila e em sequência essa fila é executada, se o usuário for identiifcado. Esse comportamento tem dois propositos:
1 - em enventuais falahs de rede, haverem outras tentativas.
2 - em momentos em que ainda não se sabe, quem é o usuário que está nevagando (ainda não houve um dito.indentify), os registros de navegação sejam armazenados, até que ele seja identificado.
Exemplo:
dito.track({
action: 'nome-do-evento',
revenue: 5.99, // Opcional
data: {
propriedade_1: 'valor da propriedade 1',
propriedade_2: 'valor da propriedade 2'
}
});
ATENÇÃO!
Os nomes dos eventos DEVEM ser enviados para a Dito em letras minúsculas, sem acentuação ou caracteres especiais. Caso o nome de suas ações seja composto por mais de uma palavra, estas devem ser separadas por hífen '-'.
Exemplo:
meu-evento-1
meu-evento-2Os nomes das propriedades dos eventos enviados dentro do nó data DEVEM estar em letras minúsculas, sem acentuação ou caracteres especiais. Caso o nome de suas propriedades seja composto por mais de uma palavra, estas devem ser separadas por underscore '_' no padrão snake case.
Exemplo:
minha_propriedade_1
minha_propriedade_2
dito.api()
A classe Api
possui 2 métodos: .get()
e .post()
. Ambos os métodos aceitam os mesmos parâmetros. Cada um apenas define qual método HTTP será usado na requisição.
.get()
dito.Api.get(module, path[, params, successCallback, errorCallback]);
.post()
dito.Api.post(module, path[, params, successCallback, errorCallback]);
Parâmetros
Parâmetro | Obrigatório | Tipo | Default | Descrição |
---|---|---|---|---|
module | Sim | String | - | Nome do módulo que a requisição será feita. Acesse a lista de módulos disponíveis |
path | Não | String | - | Path (endereço) da requisição |
params | Não | Object | null | Parâmetros da requisição. Se a requisição for do tipo POST, os parâmetros serão enviados no body da requisição. Se a requisição for do tipo GET, os parâmetros serão enviados na querystring da URL |
successCallback | Não | Function | null | Função que será chamada quando a requisição terminar com sucesso. |
errorCallback | Não | Function | null | Função que será chamada quando a requisição terminar com erro. |
Exemplos
Buscando os últimos 3 eventos de 'rate':
dito.Api.get('events', '/action/rate', { limit: 3, order: 'desc' }, function(response){
console.log(response.data);
});
Cadastrando ou atualizando dados de clientes
id = dito.generateID('[email protected]')
user = {
name: 'Dito',
email: '[email protected]',
gender: 'male',
location: 'Belo Horizonte',
birthday: '1993-09-20',
created_at: '2015-06-01 08:23:14 -0300',
data: JSON.stringify(
{
extra: "EXTRA_DATA"
}
)
}
dito.Api.post(
'login',
`/users/portal/${id}/signup`,
{ user_data: JSON.stringify(user) },
(result, request) => {
user.reference = result.data.reference
dito.CurrentUser.set(user)
if (result.data.warning) {
console.warn(result.data.warning)
}
},
(error, request) => { console.error(error) }
)
Enviando evento
if ( dito.CurrentUser.get() && dito.CurrentUser.get().reference ) {
event = {
reference: dito.CurrentUser.get().reference,
action: 'acessou-categoria',
data: {
nome_categoria: 'sapatos'
}
}
dito.Api.post(
'events',
`/users/${dito.CurrentUser.get().reference}`,
{ event: JSON.stringify(event) },
(events, request) => { console.log(request.response) },
(error, request) => { console.error(error) }
)
}