Utils
Crono Resolver (Utils)
Usa captura via LLM (schema) para normalizar campos de data/tempo a partir do diálogo e resolve a data absoluta ou recorrência com validações e timezone.
Crono Resolver (Utils)
Extrai e normaliza campos de data/tempo a partir do diálogo (via LLM/schema) e resolve para uma data absoluta ou recorrência, com validações (feriados) e consideração de timezone. A resposta inclui extração, resolução e uma instrução resumida em PT-BR para uso em realtime.
Endpoint
POST /api/externalAPIs/public/dateResolverFromDialogue
Corpo da Requisição
| Campo | Tipo | Obrigatório | Descrição | 
|---|---|---|---|
| dialogue | string | array de mensagens | sim | Diálogo completo em array de mensagens ou string única do usuário | 
| nowISO | string (date-time) | não | Data/hora de referência em ISO-8601 para resolver expressões relativas | 
| options.tz | string | não | Timezone, ex.: America/Sao_Paulo | 
| options.defaultTime | string | não | Horário padrão para datas sem hora, ex.: 09:00 | 
| options.holidaysCountry | string | não | País para validação de feriados, ex.: BR | 
| options.holidaysState | string | não | Estado/UF para validação de feriados, ex.: SP | 
Se dialogue for um array, cada item deve seguir o formato abaixo:
{ "role": "system|user|assistant", "content": "texto da mensagem" }
Exemplo de Requisição
curl -X POST "{{{BASE_URL}}}/api/externalAPIs/public/dateResolverFromDialogue" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {{seu-tolky-domain-token}}" \
  -d '{
    "dialogue": [
      { "role": "user", "content": "Vamos marcar para terça às 15h?" }
    ],
    "nowISO": "2025-10-07T12:00:00-03:00",
    "options": {
      "tz": "America/Sao_Paulo",
      "defaultTime": "09:00",
      "holidaysCountry": "BR",
      "holidaysState": "SP"
    }
  }'
Exemplo de Resposta
Estrutura de exemplo do
200 OK, contendo extração, resolução, insights, confiança e instrução para realtime.
{
  "extraction": {
    "intent": "schedule_meeting",
    "relative": { "weekday": "tuesday", "time": "15:00" },
    "explicit": null
  },
  "resolution": {
    "start_local": "2025-10-14T15:00:00-03:00",
    "start_utc": "2025-10-14T18:00:00Z",
    "tz": "America/Sao_Paulo",
    "recurrence": null
  },
  "insights": [
    "Usuário sugeriu terça às 15h."
  ],
  "trust": {
    "score": 0.92,
    "explain": "Extração clara de weekday/time; baixa ambiguidade."
  },
  "realtime_instruction": "Agende para terça-feira às 15:00 (hora local)."
}
Códigos de Erro
- 400: Payload inválido (ex.:- dialogueausente, vazio ou mal formatado)
Observações
- dialogueaceita string única ou array; se string for fornecida, ela é normalizada para um único item- { role: "user", content: "..." }.
- Utilize nowISOpara controlar a referência temporal de expressões relativas (“amanhã”, “terça”, etc.).
- O resolvedor aplica validações (feriados, timezone) e pode retornar dados de recorrência quando aplicável.
- A resposta 200pode incluirrealtime_instruction(PT-BR) pronta para inserir emrealtimeInstructions.