Ir para o conteúdo

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 child de cada nó. Os nós ifElse e externalEvent têm um segundo ramo, child2. Um nó cujo nó seguinte é null termina 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.

  1. Criar a automação.

    curl -u "username:api_key" -H "Accept: application/json" \
      -d "name=Payment+follow-up" \
      https://app.duo.pt/transactional/{t}/automation
    

    Guarde transactionalAutomation.id como {a}.

  2. 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
    
  3. 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
    
  4. Verificar o contacto. Aqui, o campo personalizado {vip_field} da lista tem de ser yes.

    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
    
  5. 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}/sendMessage
    

    Para acrescentar passos ao ramo falso, use connectFrom={if}[1].

  6. Avisar o seu CRM depois da mensagem: crie um nó com type=httpCallback&connectFrom={send}&connectTo=null e configure-o como em Nó de Automação.

  7. Ativar a automação.

    curl -u "username:api_key" -H "Accept: application/json" \
      -d "x-verb=PUT&id={a}&enabled=true" \
      https://app.duo.pt/transactional/{t}/automation/{a}
    
  8. Disparar o evento para um cliente (Evento).

    payload=$(printf '{"type":"automation","node":"externalEventEntry","nodeId":%d}' {entry} | base64 | tr -d '\n')
    curl -u "username:api_key" -H "Accept: application/json" -X POST \
      --data-urlencode "email=ana@example.com" \
      "https://app.duo.pt/transactional/{t}/event/$payload"
    

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 existingContact e loopingContact não são processados de momento.
  • O segment de contactSignup e os fields_to_set dos 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.