E aí! Precisa de ajuda?

API de disparo de mensagens modelo

Este documento descreve a API de disparo de mensagens, suas propriedades, tipos suportados e exemplos de uso.

Daniel TeixeiraAlterado em: 25/11/2024

Campos

NomeTipoObrigatórioPadrão
accountIdnumberSim-
contactContactSim-
messageMessageSim-
channelIdnumberSim-
messageTimeoutnumberNão-
isPrivatebooleanNãofalse
tagIdnumberNão-
queueIdnumberNão-
sessionSessionNão-
statusstring (automatic|pending|solved)Nãoautomatic
ticketIdnumberNão-
userIdnumberNão-
summarystringNão-
fromstringNão-
queuedbooleanNãotrue
messageTimeoutBehaviorstring (solve|flow)Nãosolve
messageTimeoutFlowIdnumberNão-
responseFlowIdnumberNão-
contextContextNão

Tipos

Contact

type Contact = {
  name: string;
  phone: string;
};

Representa o contato que receberá a mensagem.

Message

type Message =
  | {
      type: "text";
      body: string;
    }
  | {
      type: "contact";
      name: string;
      phone: string;
      businessDescription: string;
    }
  | {
      type: "template";
      variables?: string[];
      headerVariables?: string[];
      buttonVariables?: string[];
      name: string;
    }
  | {
      type: "image";
      url: string;
      caption?: string;
    }
  | {
      type: "pdf";
      url: string;
      fileName: string;
      caption?: string;
    }
  | {
      type: "document";
      url: string;
      filename: string;
      caption: string;
    };

Define o tipo de mensagem enviado e suas propriedades específicas.

Session

type SendMessageFromApiSession = {
  context: Record<string, string>;
};

Permite passar variáveis de contexto que serão armazenadas na sessão do chatbot e acessíveis no fluxo a partir do objeto session. Exemplo: Na API envie session.context.nota_fiscal = 10020. No chatbot poderá acessar essa variável utilizando {{session.nota_fiscal}} que retornará o valor "10020".

Context

type Context = {
    header: string;
    body: string;
    buttons?: ButtonContext[];
};

type ButtonContext = {
    type: 'link' | 'telephone' | 'copy';
	title: string;
	content: string;
};

Permite adicionar contexto no envio da mensagem

Descrição dos campos

  • accountId: ID único da sua conta do Sacflow.
  • channelId:&nbsp;ID único do seu canal do Sacflow.
  • message: payload da mensagem...consulte o objeto&nbsp;Message acima.
  • messageTimeout: Tempo máximo (em segundos) para que o cliente responda antes de rodar o messageTimeoutBehavior
  • isPrivate: Define se a mensagem será privada (não visível pelo cliente no Sacflow).
  • tagId: ID de uma tag a ser vinculada ao atendimento.
  • queueId: ID do departamento para o qual o atendimento será vinculado.
  • session: Permite adicionar variáveis de sessão específicas.
  • status: Status do atendimento inicial (open ou closed).
  • ticketId: ID do atendimento associado à mensagem.
  • userId: ID do usuário responsável pelo atendimento.
  • summary: Resumo breve do atendimento (máx. 300 caracteres).
  • from: Nome do remetente da mensagem.
  • queued: Define se a mensagem será enviada via fila (aplicável apenas para mensagens do tipo text e template).
  • messageTimeoutBehavior: Define o comportamento executado quando o messageTimeout acabar. Pode ser "solve" ou "flow". O "flow" requer que seja enviado o parâmetro messageTimeoutFlowId
  • messageTimeoutFlowId: Caso o messageTimeoutBehavior seja "flow" esse campo é obrigatório e define qual fluxo será chamado assim que o messageTimeout acabar.
  • responseFlowId: Utilizado para sobrescrever o fluxo definido no canal. Útil para personalizar a experiência em determinados contextos de disparos.
  • Context: As mensagens enviada têm informações adicionais que indicam o estado ou o propósito da interação. Por exemplo uma mensagem pode ser sinalizada com um "Cotacação frete não finalizada", deixando claro para o atendente que o processo ainda não foi concluído

Message

Exemplos de Uso

Envio de Template sem Variáveis

curl --request POST \
  --url https://api.sacflow.io/api/send-message \
  --header 'Authorization: Bearer API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
	"accountId": ACCOUNT_ID,
	"channelId": CHANNEL_ID,
	"contact": {
		"name": "CONTACT_NAME",
		"phone": "CONTACT_PHONE"
	},
	"message": {
		"type": "template",
		"name": "TEMPLATE_NAME"
	},
	"queued": false
}'

Envio de Template com Variáveis

curl --request POST \
  --url https://api.sacflow.io/api/send-message \
  --header 'Authorization: Bearer API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
	"accountId": ACCOUNT_ID,
	"channelId": CHANNEL_ID,
	"contact": {
		"name": "CONTACT_NAME",
		"phone": "CONTACT_PHONE"
	},
	"message": {
		"type": "template",
		"name": "TEMPLATE_NAME",
		"variables": ["VAR1", "VAR2"]
	}
}'

Detalhes Adicionais

  • Certifique-se de utilizar valores válidos para os campos obrigatórios (accountId, contact, channelId, message).

Para mais informações, entre em contato com o suporte da API.