Automações¶
Uma automação faz passar os contactos da lista de um objeto transacional por um fluxo de passos: um gatilho, seguido de esperas, condições e ações. Pode criá-la no editor da DUO ou com a API.
Como funciona um fluxo¶
- Cada automação pertence a um objeto transacional e usa a sua lista de contactos. O fluxo envia mensagens desse objeto.
- Um fluxo começa em um ou mais nós de entrada e segue o
childde cada nó. Os nósifElseeexternalEventtêm um segundo ramo,child2. Um nó cujo nó seguinte énulltermina o fluxo para o contacto. - Um contacto está, no máximo, num nó de cada automação de cada vez. A sua posição é guardada durante cerca de dois meses.
- As automações novas ficam desativadas. Ative-as quando o fluxo estiver pronto.
| Passo | Tipos de nó |
|---|---|
| Gatilho | contactSignup, contactAnniversary, externalEventEntry, smsReceivedEntry |
| Espera | wait, externalEvent, smsReceived |
| Condição | ifElse |
| Ação | sendMessage, setField, httpCallback |
As definições de cada tipo estão descritas em Nó de Automação.
Criar um fluxo com a API¶
Exemplo: quando a sua loja comunica um pagamento, esperar uma hora; depois, se o contacto for um cliente VIP, enviar uma mensagem de agradecimento e avisar o seu CRM.
Nos comandos, {t} é o ID do objeto transacional, {a} o ID da automação, e os outros {…}
são os IDs dos nós devolvidos por cada POST.
-
Criar a automação.
curl -u "username:api_key" -H "Accept: application/json" \ -d "name=Payment+follow-up" \ https://app.duo.pt/transactional/{t}/automationGuarde
transactionalAutomation.idcomo{a}. -
Acrescentar o nó de entrada e dar nome ao evento.
curl -u "username:api_key" -H "Accept: application/json" \ -d "type=externalEventEntry&connectFrom=null&connectTo=null" \ https://app.duo.pt/transactional/{t}/automation/{a}/node curl -u "username:api_key" -H "Accept: application/json" \ -d "x-verb=PUT&event=payment&fields_to_set[argument][]=&fields_to_set[custom_field][]=" \ https://app.duo.pt/transactional/{t}/automation/{a}/node/{entry}/externalEventEntry -
Esperar uma hora.
curl -u "username:api_key" -H "Accept: application/json" \ -d "type=wait&connectFrom={entry}&connectTo=null" \ https://app.duo.pt/transactional/{t}/automation/{a}/node curl -u "username:api_key" -H "Accept: application/json" \ -d "x-verb=PUT&period=3600" \ https://app.duo.pt/transactional/{t}/automation/{a}/node/{wait}/wait -
Verificar o contacto. Aqui, o campo personalizado
{vip_field}da lista tem de seryes.curl -u "username:api_key" -H "Accept: application/json" \ -d "type=ifElse&connectFrom={wait}&connectTo=null" \ https://app.duo.pt/transactional/{t}/automation/{a}/node curl -u "username:api_key" -H "Accept: application/json" \ --data-urlencode "x-verb=PUT" \ --data-urlencode "payload[topoperator]=AND" \ --data-urlencode "payload[condition_field][]={vip_field}" \ --data-urlencode "payload[condition_operator][]===" \ --data-urlencode "payload[condition_operand][]=yes" \ https://app.duo.pt/transactional/{t}/automation/{a}/node/{if}/ifElse -
Enviar a mensagem no ramo verdadeiro.
curl -u "username:api_key" -H "Accept: application/json" \ -d "type=sendMessage&connectFrom={if}&connectTo=null" \ https://app.duo.pt/transactional/{t}/automation/{a}/node curl -u "username:api_key" -H "Accept: application/json" \ -d "x-verb=PUT&message={message_id}" \ https://app.duo.pt/transactional/{t}/automation/{a}/node/{send}/sendMessagePara acrescentar passos ao ramo falso, use
connectFrom={if}[1]. -
Avisar o seu CRM depois da mensagem: crie um nó com
type=httpCallback&connectFrom={send}&connectTo=nulle configure-o como em Nó de Automação. -
Ativar a automação.
-
Disparar o evento para um cliente (Evento).
Verifique o fluxo com GET /transactional/{t}/automation/{a} e as mensagens enviadas nas
Estatísticas Transacionais.
Esperar por um evento¶
Um nó externalEvent retém o contacto até disparar o seu evento (o contacto segue para child)
ou até passarem period segundos (o contacto segue para child2). Dispare-o como um evento de
entrada, com "node":"externalEvent" e o ID do nó no payload. Defina um tempo limite só quando
precisar do segundo ramo; com period=0, o contacto espera apenas pelo evento.
Chamar o seu serviço¶
Um nó httpCallback envia POST <url> (form-encoded, User-Agent: duo/<versão>, tempo limite
de 60 segundos) com os parâmetros configurados. Uma resposta 2xx faz o contacto seguir para
child. Com qualquer outra resposta, ou se o pedido falhar, o contacto não continua, exceto se
definir http_error: nesse caso, o código de estado é gravado nesse campo personalizado e o
contacto continua. Com http_result, o corpo da resposta é gravado num campo personalizado.
Os pedidos não são assinados nem repetidos. Coloque um token secreto num parâmetro static e
verifique-o do seu lado, responda depressa e garanta que o seu serviço pode ser chamado duas
vezes para o mesmo contacto sem problemas.
Limitações¶
- Os nós
existingContacteloopingContactnão são processados de momento. - O
segmentdecontactSignupe osfields_to_setdos nós de evento são guardados, mas não são aplicados. - As mensagens enviadas por uma automação não têm valores
%Transactional:…%: use campos personalizados. - Os contactos não subscritos continuam a percorrer o fluxo, mas não recebem mensagens.