Verboo

Google Calendar

A integração com Google Calendar permite que assistentes verifiquem disponibilidade e criem agendamentos diretamente na conversa, sem que o usuário precise acessar nenhuma outra interface.

Ações Disponíveis

Ação Descrição
CHECK Verifica se um horário específico está disponível
LIST Lista os próximos eventos disponíveis
SCHEDULE Cria um novo evento/agendamento

`CHECK` — Verificar Disponibilidade

Consulta se um determinado horário está livre na agenda:

json
{
  "type": "GOOGLE_CALENDAR",
  "subtype": "CHECK",
  "start": "dataHoraInicio",
  "end": "dataHoraFim",
  "calendarId": "id_do_calendario"
}

O LLM extrai dataHoraInicio e dataHoraFim da conversa e os parâmetros são substituídos automaticamente.

Resposta retornada:

json
{
  "available": true,
  "conflicts": []
}

`LIST` — Listar Disponibilidade

Lista os próximos horários disponíveis em um intervalo:

json
{
  "type": "GOOGLE_CALENDAR",
  "subtype": "LIST",
  "start": "dataInicio",
  "end": "dataFim",
  "calendarId": "id_do_calendario",
  "maxResults": 5
}

Resposta retornada:

json
{
  "slots": [
    { "start": "2025-03-10T14:00:00", "end": "2025-03-10T15:00:00" },
    { "start": "2025-03-10T16:00:00", "end": "2025-03-10T17:00:00" }
  ]
}

`SCHEDULE` — Criar Agendamento

Cria um novo evento no calendário:

json
{
  "type": "GOOGLE_CALENDAR",
  "subtype": "SCHEDULE",
  "title": "tituloEvento",
  "description": "descricaoEvento",
  "start": "dataHoraInicio",
  "end": "dataHoraFim",
  "attendees": ["emailParticipante"],
  "calendarId": "id_do_calendario"
}

O Papel do `${{horario}}`

A variável built-in ${{horario}} insere a data e hora atuais no prompt do assistente. Isso é essencial para que o LLM possa calcular corretamente datas relativas:

CustomPrompt do assistente:
"Referência temporal atual: ${{horario}}

Use esta referência para calcular datas quando o usuário disser:
'amanhã', 'semana que vem', 'próxima segunda', 'daqui 2 dias', etc.

Sempre converta para o formato ISO 8601 antes de chamar o gatilho."

Sem ${{horario}}, o LLM pode calcular datas incorretamente pois não sabe a data atual com precisão.


Exemplo Completo: Assistente de Agendamento

Prompt:

Você é uma secretária virtual de consultório.
Seu objetivo é agendar consultas de forma eficiente.

Referência temporal: ${{horario}}

Processo:
1. Pergunte a especialidade desejada
2. Verifique os horários disponíveis (LIST)
3. Apresente até 3 opções ao paciente
4. Confirme nome e e-mail
5. Crie o agendamento (SCHEDULE)
6. Envie confirmação ao paciente

Gatilho 1 — Verificar disponibilidade:

json
{
  "name": "verificar_horarios",
  "description": "Lista horários disponíveis para consulta. Use após o paciente informar a especialidade desejada e quando quiser agendar.",
  "parameters": {
    "properties": {
      "especialidade": { "type": "string" },
      "data_preferencia": { "type": "string", "description": "Data no formato ISO 8601" }
    },
    "required": ["especialidade"]
  },
  "action": {
    "type": "GOOGLE_CALENDAR",
    "subtype": "LIST",
    "start": "data_preferencia",
    "calendarId": "calendario_$especialidade"
  },
  "interpretResponse": true
}

Gatilho 2 — Criar agendamento:

json
{
  "name": "confirmar_agendamento",
  "description": "Cria o agendamento após o paciente confirmar o horário, nome e e-mail. APENAS use quando o paciente confirmar explicitamente.",
  "parameters": {
    "properties": {
      "nome_paciente": { "type": "string" },
      "email_paciente": { "type": "string" },
      "data_hora": { "type": "string", "description": "ISO 8601" },
      "especialidade": { "type": "string" }
    },
    "required": ["nome_paciente", "data_hora", "especialidade"]
  },
  "action": {
    "type": "GOOGLE_CALENDAR",
    "subtype": "SCHEDULE",
    "title": "Consulta $especialidade — $nome_paciente",
    "attendees": ["email_paciente"],
    "start": "data_hora"
  },
  "interpretResponse": true
}