API · Atualizado em 12/10/2026
Contexto do contato e sessões do bot pela API
Leia e grave variáveis do bot em um contato, mude o bloco em que ele está e encontre quem ficou preso na conversa automática, sem ticket.
Enquanto um contato conversa só com o bot, não existe ticket. Mesmo assim, o fluxo guarda variáveis e a posição do contato. A API permite ler e gravar essas variáveis, mover o contato de bloco e achar quem está preso no bot.
Quando usar
- Para entregar ao bot dados do seu sistema antes de ele falar, como número do pedido ou nome do plano.
- Para ler o que o bot coletou, como a opção escolhida, e usar no seu sistema.
- Para destravar um contato que ficou no bot, devolvendo-o ao início ou a um bloco específico.
- Para listar contatos há muito tempo em atendimento automático e passá-los a um atendente.
Pré-requisitos
contatos:lerpara ler variáveis econversas:lerpara listar sessões.contexto:escreverpara gravar, apagar e mover de bloco. Esse escopo muda o comportamento do bot e não vem na chave padrão: crie a chave com Compatível com a Blip.- O contato precisa já ter conversado com o bot do fluxo. Caso contrário, a resposta é 404
bot_context_not_found.
Rotas
| Método | Rota | Escopo | O que faz |
|---|---|---|---|
| GET | /v1/contacts/:id/context | contatos:ler | Lista as variáveis do contato (com values=true, traz os valores) |
| GET | /v1/contacts/:id/context/:name | contatos:ler | Lê uma variável |
| PUT | /v1/contacts/:id/context/:name | contexto:escrever | Grava uma variável |
| DELETE | /v1/contacts/:id/context/:name | contexto:escrever | Apaga uma variável |
| PUT | /v1/contacts/:id/bot-state | contexto:escrever | Move o contato para um bloco ou para o início |
| GET | /v1/bot-sessions | conversas:ler | Lista contatos em atendimento automático, sem ticket |
| GET | /v1/contacts/:id/bot-session | conversas:ler | Lê a sessão ativa de um contato, ou 404 |
As rotas de contexto atuam sobre a última execução do contato em um fluxo: o da chave ou o informado em ?flowId=. Uma chave de fluxo só pode nomear o próprio fluxo.
Passo a passo: gravar uma variável
- Grave o valor.
valueaceita texto, número ou booleano, até 64 KB.expirationSecondsé opcional, de 1 a 31536000:
curl -s -X PUT https://http.pipebr.app/v1/contacts/b3a1c9de-0000-4000-8000-000000000010/context/numero_pedido \
-H "Authorization: Bearer $PIPE_CHAVE" \
-H "Content-Type: application/json" \
-d '{"value": "1234", "expirationSeconds": 86400}'
- A resposta confirma o fluxo e o nome:
{
"contactId": "b3a1c9de-0000-4000-8000-000000000010",
"flowId": "b3a1c9de-0000-4000-8000-0000000000f1",
"name": "numero_pedido"
}
- Leia de volta quando precisar:
curl -s "https://http.pipebr.app/v1/contacts/b3a1c9de-0000-4000-8000-000000000010/context?values=true" \
-H "Authorization: Bearer $PIPE_CHAVE"
{
"contactId": "b3a1c9de-0000-4000-8000-000000000010",
"flowId": "b3a1c9de-0000-4000-8000-0000000000f1",
"total": 1,
"data": [ { "name": "numero_pedido", "value": "1234" } ]
}
O nome da variável tem de 1 a 200 caracteres. Nomes reservados do motor dão 422 variable_reserved. O valor gravado não aparece nos registros de auditoria.
Mover o contato de bloco
Para devolver o contato ao início do fluxo, envie stateId: null. Para levá-lo a um bloco, informe o código do bloco:
curl -s -X PUT https://http.pipebr.app/v1/contacts/b3a1c9de-0000-4000-8000-000000000010/bot-state \
-H "Authorization: Bearer $PIPE_CHAVE" \
-H "Content-Type: application/json" \
-d '{"stateId": null}'
A próxima mensagem do contato cai nesse bloco. Se o fluxo não tiver um bloco com o código informado, a resposta é 422 state_not_found. O campo flowId é opcional para chave de fluxo.
Achar quem está preso no bot
GET /v1/bot-sessions lista as execuções ativas do bot de contatos que não têm ticket. Filtros: flowId, contactId, state_id, idle_minutes_gte (minutos parado), limit e cursor.
curl -s "https://http.pipebr.app/v1/bot-sessions?idle_minutes_gte=30" \
-H "Authorization: Bearer $PIPE_CHAVE"
{
"data": [
{
"executionId": "b3a1c9de-0000-4000-8000-000000000600",
"contactId": "b3a1c9de-0000-4000-8000-000000000010",
"contactName": "Maria Exemplo",
"contactPhone": "+5511955550101",
"flowId": "b3a1c9de-0000-4000-8000-0000000000f1",
"flowName": "Atendimento Girassol",
"stateId": "menu-principal",
"stateName": "Menu principal",
"startedAt": "2026-10-12T13:00:00.000Z",
"lastInboundAt": "2026-10-12T13:05:00.000Z",
"lastOutboundAt": "2026-10-12T13:05:02.000Z",
"hasActiveTicket": false
}
],
"page_info": { "has_next_page": false, "end_cursor": null }
}
Para tirar o contato do bot e levá-lo a uma pessoa, abra um ticket para ele. Veja Conversas e tickets.
Resultado esperado
O bot passa a enxergar as variáveis que você gravou, o contato volta a andar quando você o move de bloco, e sua rotina consegue achar sessões paradas e encaminhá-las.
Problemas comuns
- 404
bot_context_not_found: o contato ainda não conversou com o bot daquele fluxo, então não há contexto. - 403
without_scopeao gravar: a chave não temcontexto:escrever. Crie uma chave com a opção Compatível com a Blip. - 422
variable_reserved: o nome pertence ao motor. Use um nome seu, comonumero_pedido. - Contato não aparece em
/v1/bot-sessions: se ele tem ticket ativo, não é uma sessão presa. Sessões listadas são só as sem ticket.
Boas práticas
- Dê às variáveis nomes estáveis, em minúsculas e sem espaços, e use os mesmos nomes no fluxo (veja Variáveis do fluxo).
- Use
expirationSecondspara dados que perdem a validade, como um código temporário. - Teste o fluxo no painel de teste antes de mover contatos reais de bloco. Veja Como testar um fluxo.
Próximos passos
- Abra o ticket que tira o contato do bot em Conversas e tickets.
- Gerencie os dados do contato em Contatos pela API.
Perguntas frequentes
O que é o contexto do contato?
São as variáveis que o fluxo guarda para aquele contato na conversa com o bot, como nome, pedido ou opção escolhida. A API lê e grava essas variáveis.
Para que serve a sessão do bot?
Conversa só com o bot não é ticket. A rota de sessões lista quem está em atendimento automático, há quanto tempo e em que bloco, para você achar contatos presos.
Posso mudar o bloco em que o contato está?
Sim, com PUT /v1/contacts/:id/bot-state. Você escolhe o bloco ou devolve o contato para o início do fluxo. A próxima mensagem do contato cai nesse bloco.
Que variáveis a API não deixa gravar?
As reservadas do motor: nomes que começam com # ou com pipe., desk_, stateid@, previous-stateid@, currentflowsession@, e a variável Master-State. A resposta é 422 variable_reserved.
Esse artigo foi útil?
Obrigado pelo retorno!