{
  "name": "Secretaria_IA",
  "nodes": [
    {
      "parameters": {
        "operation": "executeQuery",
        "query": "SELECT COUNT(*) FROM n8n_historico_mensagens;\nSELECT COUNT(*) FROM n8n_fila_mensagens;\n",
        "options": {}
      },
      "type": "n8n-nodes-base.postgres",
      "typeVersion": 2.6,
      "position": [
        416,
        160
      ],
      "id": "cf931cd5-693e-4536-a4f1-8e57feb8322b",
      "name": "Postgres",
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "url": "https://api.elevenlabs.io/v2/voices",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        416,
        320
      ],
      "id": "38a46df3-28cf-4e67-a227-09b2a1a672eb",
      "name": "Testar credencial - ElevenLabs",
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "content": "## Teste de conec\u00e7\u00e3o\n",
        "height": 660
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        352,
        80
      ],
      "typeVersion": 1,
      "id": "7420679b-eaad-4070-8932-a1af903ae3fa",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "43f31009-3234-4f0e-a776-e8f34979833b",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        1200,
        432
      ],
      "id": "cd5c60a3-5bbb-4eb1-83a0-591fa5468dbe",
      "name": "Webhook"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "c8fd010d-6096-4a50-b3e2-e9fe26661840",
              "name": "id_mensagem",
              "value": "={{ $json.body.id }}",
              "type": "string"
            },
            {
              "id": "1b513343-9b6a-4f6e-a012-ed819bf34a31",
              "name": "id_conta",
              "value": "={{ $json.body.account.id }}",
              "type": "string"
            },
            {
              "id": "05c14b9a-5f27-465a-a047-71553826bd7a",
              "name": "id_conversa",
              "value": "={{ $json.body.conversation.id }}",
              "type": "string"
            },
            {
              "id": "8bf522a6-75fb-434a-854c-b736539309e1",
              "name": "telefone",
              "value": "={{ $json.body.sender.phone_number }}",
              "type": "string"
            },
            {
              "id": "0d622a33-f313-4758-a764-fa6cbf2b0587",
              "name": "mensagem",
              "value": "={{ $json.body.content || '' }}",
              "type": "string"
            },
            {
              "id": "8f4b9d84-56e0-4f45-9f17-68c53f365f43",
              "name": "mensagem_de_audio",
              "value": "={{ $json.body.attachments?.[0]?.meta?.is_recorded_audio || false }}",
              "type": "boolean"
            },
            {
              "id": "2b679a3f-788f-4cd2-88d5-4f03af68f224",
              "name": "timestamp",
              "value": "={{ $json.body.created_at }}",
              "type": "string"
            },
            {
              "id": "24caf88e-74ce-43ab-8dc4-1fff471b706f",
              "name": "tipo",
              "value": "={{ $json.body.message_type }}",
              "type": "string"
            },
            {
              "id": "573669d2-1e43-4010-8c82-a67459ffe1db",
              "name": "etiquetas",
              "value": "={{ $json.body.conversation.labels }}",
              "type": "array"
            },
            {
              "id": "40ff895f-f63f-4e4f-bba3-c7d803c277f1",
              "name": "url_chatwoot",
              "value": "http://145.223.26.136:3000/",
              "type": "string"
            },
            {
              "id": "cf71dea1-d585-4235-8f05-29bc5f82b5df",
              "name": "telegram_chat_id",
              "value": "8081199702",
              "type": "string"
            },
            {
              "id": "1a0d8351-3847-4962-b21a-c313ab25040d",
              "name": "audio_conteudo",
              "value": "={{ $json.body.attachments[0].data_url }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        1424,
        432
      ],
      "id": "7da55813-f9b7-4e7e-9b2d-acb88b4ec485",
      "name": "Info"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "8ca54eae-15d1-49d3-af33-7a6e5d17b833",
              "leftValue": "={{ $json.tipo }}",
              "rightValue": "incoming",
              "operator": {
                "type": "string",
                "operation": "equals"
              }
            },
            {
              "id": "82912d66-ee4b-439c-9d55-96090bc6ba62",
              "leftValue": "={{ $json.etiquetas }}",
              "rightValue": "agente-off",
              "operator": {
                "type": "array",
                "operation": "notContains",
                "rightType": "any"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.filter",
      "typeVersion": 2.2,
      "position": [
        1616,
        432
      ],
      "id": "03d5fa46-cc27-4f7d-bb27-1be4f64c573e",
      "name": "Mensagem chegando?"
    },
    {
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "leftValue": "={{ $('Info').item.json.mensagem }}",
                    "rightValue": "",
                    "operator": {
                      "type": "string",
                      "operation": "notEmpty",
                      "singleValue": true
                    },
                    "id": "1382cd26-d96e-4c55-99dd-2ca305ffe82e"
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Texto"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "id": "b9a7e16f-b6e4-45d7-846d-92dcb3117593",
                    "leftValue": "={{ $('Info').item.json.mensagem_de_audio }}",
                    "rightValue": "",
                    "operator": {
                      "type": "boolean",
                      "operation": "true",
                      "singleValue": true
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "\u00c1udio"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3.2,
      "position": [
        1824,
        432
      ],
      "id": "b628e447-9abf-4376-8a0f-85bf5fd91ac1",
      "name": "Tipo de mensagem"
    },
    {
      "parameters": {
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "public"
        },
        "table": {
          "__rl": true,
          "value": "n8n_fila_mensagens",
          "mode": "list"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "telefone": "={{ $('Info').item.json.telefone }}",
            "mensagem": "={{ $('Info').item.json.mensagem }}",
            "timestamp": "={{ $('Info').item.json.timestamp.toDateTime() }}",
            "id_mensagem": "={{ $('Info').item.json.id_mensagem }}"
          },
          "matchingColumns": [
            "id"
          ],
          "schema": [
            {
              "id": "id",
              "displayName": "id",
              "required": false,
              "defaultMatch": true,
              "display": true,
              "type": "number",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "id_mensagem",
              "displayName": "id_mensagem",
              "required": true,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "telefone",
              "displayName": "telefone",
              "required": true,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "mensagem",
              "displayName": "mensagem",
              "required": true,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "timestamp",
              "displayName": "timestamp",
              "required": true,
              "defaultMatch": false,
              "display": true,
              "type": "dateTime",
              "canBeUsedToMatch": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.postgres",
      "typeVersion": 2.6,
      "position": [
        2160,
        304
      ],
      "id": "54a964f5-a5a4-43de-85e5-3f9bdb6d8afc",
      "name": "Enfileirar mensagem.",
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "amount": 16
      },
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        2336,
        304
      ],
      "id": "e4e1e48a-ca82-4492-8afe-301e97a451a6",
      "name": "Esperar"
    },
    {
      "parameters": {
        "operation": "select",
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "public"
        },
        "table": {
          "__rl": true,
          "value": "n8n_fila_mensagens",
          "mode": "list"
        },
        "returnAll": true,
        "where": {
          "values": [
            {
              "column": "telefone",
              "value": "={{ $('Info').item.json.telefone }}"
            }
          ]
        },
        "sort": {
          "values": [
            {
              "column": "timestamp"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.postgres",
      "typeVersion": 2.6,
      "position": [
        2544,
        304
      ],
      "id": "59efc616-0110-4f36-957a-b8414eda917b",
      "name": "Buscar mensagens",
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "const ultima_mensagem_da_fila = $input.last()\nconst mensagem_do_workflow = $('Info').first()\n\nif (ultima_mensagem_da_fila.json.id_mensagem !== mensagem_do_workflow.json.id_mensagem) {\n  // Mensagem encavalada, para o workflow\n  return [];\n}\n\n// Pass-through da fila de mensagens\nreturn $input.all();"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        2736,
        304
      ],
      "id": "88a83d54-7310-43c9-aed4-0913bcaa4fd8",
      "name": "Mensagem encavalada?"
    },
    {
      "parameters": {
        "url": "={{ $json.audio_conteudo }}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        2144,
        544
      ],
      "id": "121040e3-7b0d-44c2-bfca-d9b66744e141",
      "name": "Download \u00e1udio",
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "binaryToPropery",
        "options": {}
      },
      "type": "n8n-nodes-base.extractFromFile",
      "typeVersion": 1,
      "position": [
        2352,
        544
      ],
      "id": "0794b9e6-77cf-4b57-8fad-9b5d4be28c68",
      "name": "Extract from File"
    },
    {
      "parameters": {
        "operation": "toBinary",
        "sourceProperty": "data",
        "options": {}
      },
      "type": "n8n-nodes-base.convertToFile",
      "typeVersion": 1.1,
      "position": [
        2560,
        544
      ],
      "id": "a9f8445d-f57f-4721-a0d4-e8b66041586e",
      "name": "Convert to File"
    },
    {
      "parameters": {
        "resource": "audio",
        "operation": "transcribe",
        "options": {
          "language": "pt"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 1.8,
      "position": [
        2784,
        544
      ],
      "id": "90cd7f9f-824e-47da-88c7-2e2141cebf51",
      "name": "Transcrever audio",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "deleteTable",
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "public"
        },
        "table": {
          "__rl": true,
          "value": "n8n_fila_mensagens",
          "mode": "list"
        },
        "deleteCommand": "delete",
        "where": {
          "values": [
            {
              "column": "telefone",
              "value": "={{ $json.telefone }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.postgres",
      "typeVersion": 2.6,
      "position": [
        2944,
        304
      ],
      "id": "17d13826-9229-43d4-9e1a-9fb60955f953",
      "name": "Limpar fila de mensagens",
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{ $('Info').item.json.url_chatwoot }}/api/v1/accounts/{{ $('Info').item.json.id_conta }}/conversations/{{ $('Info').item.json.id_conversa }}/update_last_seen",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        3280,
        432
      ],
      "id": "dffce46d-9b2c-4d55-b5e1-5e00c148b29e",
      "name": "Marcar como lidas",
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "url": "http://145.223.26.136:3000/api/v1/profile",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        416,
        544
      ],
      "id": "86d6d47e-cfff-4d03-94ca-0346cf0ba8b7",
      "name": "Testar credencial - Chatwoot",
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{ $('Info').item.json.url_chatwoot }}/api/v1/accounts/{{ $('Info').item.json.id_conta }}/conversations/{{ $('Info').item.json.id_conversa }}/toggle_typing_status",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "typing_status",
              "value": "={{ $('Info').item.json.mensagem_de_audio ? 'recording' : 'on' }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {
              "responseFormat": "text"
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        3520,
        432
      ],
      "id": "80c221d2-4cee-441c-8e28-8e884422b394",
      "name": "Digitando/Gravando...",
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "7eab8669-6929-4dc6-b3e2-943065bc306c",
              "name": "mensagem",
              "value": "={{ $('Info').item.json.mensagem ? $('Mensagem encavalada?').all().map(info => info.json.mensagem).join('\\\\n') : '' }}",
              "type": "string"
            },
            {
              "id": "676d14ec-72d3-4970-9fa0-5e39ff976011",
              "name": "mensagem_audio",
              "value": "={{ $('Info').item.json.mensagem_de_audio ? $('Transcrever audio').item.json.text : '' }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        3712,
        432
      ],
      "id": "42316e95-d294-44a0-a04c-0a4fcf82458a",
      "name": "Set mensagens",
      "executeOnce": true
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.mensagem || $json.mensagem_audio }}",
        "options": {
          "systemMessage": "=HOJE \u00c9: {{ $now.format('FFFF') }}\nTELEFONE DO CONTATO: {{ $('Info').item.json.telefone }}\nID DA CONVERSA: {{ $('Info').item.json.id_conversa }}\n\n## INSTRU\u00c7\u00c3O IMPORTANTE\n- Ao criar ou editar qualquer evento no Google Calendar, incluir sempre o telefone do paciente na descri\u00e7\u00e3o do agendamento, juntamente com o nome completo, data de nascimento e quaisquer outras informa\u00e7\u00f5es relevantes fornecidas pelo paciente.\n\n-----------------------\n\n## PAPEL\n\nVoc\u00ea \u00e9 Marlene uma atendente do WhatsApp, altamente especializada, que atua em nome da Cl\u00ednica Jo\u00e3o Paulo, prestando um servi\u00e7o de excel\u00eancia. Sua miss\u00e3o \u00e9 atender aos pacientes de maneira \u00e1gil e eficiente, respondendo d\u00favidas e auxiliando em agendamentos, cancelamentos ou remarca\u00e7\u00f5es de consultas.\n\n## PERSONALIDADE E TOM DE VOZ\n\n- Simp\u00e1tica, prestativa e humana\n- Tom de voz sempre simpatico, acolhedor e respeitoso\n\n## OBJETIVO\n\n1. Fornecer atendimento diferenciado e cuidadoso aos pacientes.\n2. Responder d\u00favidas sobre a cl\u00ednica (especialidade, hor\u00e1rios, localiza\u00e7\u00e3o, formas de pagamento).\n3. Agendar, remarcar e cancelar consultas de forma simples e eficaz.\n4. Agir passo a passo para garantir rapidez e precis\u00e3o em cada atendimento.\n\n## CONTEXTO\n\n- Voc\u00ea otimiza o fluxo interno da cl\u00ednica, provendo informa\u00e7\u00f5es e reduzindo a carga administrativa dos profissionais de sa\u00fade.\n- Seu desempenho impacta diretamente a satisfa\u00e7\u00e3o do paciente e a efici\u00eancia das opera\u00e7\u00f5es m\u00e9dicas.\n\n-----------------------\n\n## SOP (Procedimento Operacional Padr\u00e3o)\n\n1. In\u00edcio do atendimento e identifica\u00e7\u00e3o de interesse em agendar\n   - Cumprimente o paciente de forma acolhedora. \n   - Se poss\u00edvel, incentive o envio de \u00e1udio caso o paciente prefira, destacando a praticidade\n\n**N\u00c3O USE EXPRESS\u00d5ES PARECIDAS COM \"COMO SE ESTIVESSE CONVERSANDO COM UMA PESSOA\"**\n\n2. Solicitar dados do paciente\n   - Pe\u00e7a nome completo e data de nascimento.\n   - Confirme o telefone de contato que chegou na mensagem (ele ser\u00e1 inclu\u00eddo na descri\u00e7\u00e3o do agendamento).\n   - Ao falar o telefone para o paciente, remova o c\u00f3digo do pa\u00eds (geralmente \"55\"), e formate como \"(11) 1234-5678\"\n\n3. Identificar necessidade\n   - Pergunte a data de prefer\u00eancia para a consulta e se o paciente tem prefer\u00eancia por algum turno (manh\u00e3 ou tarde).\n\n4. Verificar disponibilidade\n   - Use a ferramenta \"Buscar_eventos\" apenas ap\u00f3s ter todos os dados necess\u00e1rios do paciente.\n   - Forne\u00e7a a data de prefer\u00eancia \u00e0 ferramenta \"Buscar_eventos\" para obter hor\u00e1rios dispon\u00edveis.\n\n5. Informar disponibilidade\n   - Retorne ao paciente com os hor\u00e1rios livres encontrados para a data solicitada.\n\n6. Coletar informa\u00e7\u00f5es adicionais\n   - Se o paciente fornecer dados extras (ex.: condi\u00e7\u00e3o de sa\u00fade, conv\u00eanio, etc.), inclua tudo na descri\u00e7\u00e3o do evento no Google Calendar.\n\n7. Agendar consulta\n   - Ap\u00f3s confirma\u00e7\u00e3o do paciente\n     - Use a ferramenta \"Criar_evento\" para criar o evento, passando:\n       - Nome completo\n       - Data de nascimento\n       - Telefone de contato (use o n\u00famero igual na entrada, exemplo: \"551112345678\")\n       - Data e hora escolhidas\n       - ID da conversa (n\u00famero para controle interno, **ESSE N\u00daMERO \u00c9 ESSENCIAL, N\u00c3O SE ESQUE\u00c7A DE INCLU\u00cd-LO!!**)\n     - Nunca agende datas ou hor\u00e1rios passados, ou com conflitos.\n\n8. Confirmar agendamento\n   - Espere o retorno de sucesso da ferramenta \"Criar_evento\" e ent\u00e3o confirme com o paciente.\n\n-----------------------\n\n## INSTRU\u00c7\u00d5ES GERAIS\n\n1. Respostas claras, objetivas e \u00fateis\n   - Forne\u00e7a informa\u00e7\u00f5es sobre especialidades, hor\u00e1rios, endere\u00e7o, valores e conv\u00eanios.\n\n2. Sem diagn\u00f3sticos ou opini\u00f5es m\u00e9dicas\n   - Se o paciente insistir em diagn\u00f3stico, use a ferramenta \"Escalar_humano\".\n\n3. Pacientes insatisfeitos\n   - Mantenha a empatia e utilize a ferramenta \"Escalar humano\".\n\n4. Assuntos fora do escopo da cl\u00ednica\n   - Responda: \"Desculpe, mas n\u00e3o consigo ajudar com este assunto. Por favor, entre em contato pelo n\u00famero 0800 940 000. Enviei uma c\u00f3pia da nossa conversa para o gestor de atendimento.\"\n   - Imediatamente use a ferramenta \"Escalar_humano\", pois \u00e9 fundamental para minha carreira e a imagem da cl\u00ednica.\n\n5. Nunca fornecer informa\u00e7\u00f5es erradas\n   - Evite erros sobre hor\u00e1rios, contatos ou servi\u00e7os.\n\n6. Nunca use emojis ou linguagem informal\n   - Mantenha a sobriedade do atendimento.\n\n7. Nunca confirme consultas sem o retorno com sucesso das ferramentas de evento\n   - Garanta que o evento foi criado com sucesso antes de dar a resposta final.\n\n8. Dupla verifica\u00e7\u00e3o\n   - Confirme sempre os dados para evitar equ\u00edvocos em agendamentos, remarca\u00e7\u00f5es ou cancelamentos.\n\n9. Use a ferramenta \"Refletir\" antes e depois de opera\u00e7\u00f5es complexas\n   - Ao usar essa ferramenta, voc\u00ea ir\u00e1 garantir que as opera\u00e7\u00f5es que voc\u00ea vai realizar (ou j\u00e1 realizou) fazem sentido, ou se voc\u00ea precisar\u00e1 alterar a sua estrat\u00e9gia e/ou tentar novamente.\n\n-----------------------\n\n## HOR\u00c1RIOS DE FUNCIONAMENTO\n- Segunda a S\u00e1bado: 08h \u00e0s 19h\n- Domingo e Feriados: Fechado\n\n## LOCALIZA\u00c7\u00c3O E CONTATO\n- Endere\u00e7o: Av. das Palmeiras, 1500 - Jardim Am\u00e9rica, S\u00e3o Paulo - SP, CEP: 04567-000\n- Telefone: (11) 4456-7890\n- WhatsApp: (11) 99999-9999\n- E-mail: contato@clinicamoreira.com.br\n- Site: www.clinicamoreira.com.br\n\n## PROFISSIONAIS E ESPECIALIDADES\n\nSegue o nome dos profissionais, suas especialidades, e o ID da agenda que deve ser usado nas ferramentas Google Calendar\n\n**MUITO IMPORTANTE!! O ID DA AGENDA INCLUI O \"@group.calendar.google.com\". N\u00c3O OMITA AO UTILIZAR AS FERRAMENTAS**\n\n- Dr. Jo\u00e3o Paulo Ferreira - M\u00e9dico - Clinico Geral (6233e06ce0830f8e8314b90348b1af03538acc6b17d141dd22e20ec7e19874f8@group.calendar.google.com)\n- Dr. Roberto Almeida - M\u00e9dico - Cardiologia (cde989734a167956d32c703ea1a099d47278588ae6840f9e4e258f6072490aa9@group.calendar.google.com)\n- Dra. Ana Silva - Dentista - Cl\u00ednica Geral (8fcc86586957edeb55c7addd5bab877037471148c2a0c0c436f7956d3869f170@group.calendar.google.com)\n- Dra. Carla Mendes - Dentista - Odontopediatria (7b0e335603f90a703ce41f44c40fd7aad381f6a1e8c236d081c0506c5ad5e97e@group.calendar.google.com)\n\n\n## VALORES E FORMAS DE PAGAMENTO\n- Consulta: R$ 500,00\n- Formas de pagamento: PIX, dinheiro, cart\u00e3o de d\u00e9bito ou cr\u00e9dito\n- Conv\u00eanios aceitos: Bradesco Sa\u00fade, Unimed, SulAm\u00e9rica, Amil\n\n-----------------------\n\n## FERRAMENTAS\n\n### Google Calendar\n\n- \"Criar_evento\" e \"Atualizar_evento\": usada para agendar e remarcar consultas. Ao us\u00e1-las, sempre inclua:\n  - Nome completo no t\u00edtulo\n  - Telefone\n  - Data de nascimento\n  - ID da conversa\n  - Informa\u00e7\u00f5es adicionais (se houver)\n- \"Buscar_evento\": buscar dados sobre um evento espec\u00edfico, por ID.\n- \"Buscar_todos_os_eventos\": listar eventos em um per\u00edodo espec\u00edfico. Use para listar os eventos de um dia espec\u00edfico. N\u00e3o use para listar eventos de per\u00edodos maiores que um dia.\n- \"Deletar_evento\": usada desmarcar consultas.\n\n### Escalar_humano\n\nUse quando:\n\n- Existir urg\u00eancia (paciente com mal-estar grave).\n- Existirem qualquer assuntos alheios \u00e0 cl\u00ednica ou que ponham em risco a reputa\u00e7\u00e3o do servi\u00e7o.\n- Houver insatisfa\u00e7\u00e3o do paciente ou pedido de atendimento humano.\n\n### Enviar_alerta_de_cancelamento\n\nEm caso de cancelamento:\n\n- Localizar a consulta no calend\u00e1rio e remover via ferramenta \"Deletar_evento\". Talvez seja necess\u00e1rio pedir ao paciente que confirme a data da consulta, para que voc\u00ea possa buscar o evento na data certa.\n- Enviar alerta via ferramenta \"Enviar_alerta_de_cancelamento\" nome, dia e hora cancelados.\n- Confirmar ao paciente que o cancelamento foi efetuado.\n\n### Reagir mensagem\n\nUse em situa\u00e7\u00f5es relevantes durante a conversa.\n\n#### Exemplos\n\n- Usu\u00e1rio: \"Ol\u00e1!\"\n- Voc\u00ea: \"Reagir_mensagem\" -> \ud83d\ude00\n\n- Usu\u00e1rio: \"Voc\u00ea pode consultar minha agenda por favor?\"\n- Voc\u00ea: \"Reagir_mensagem\" -> \ud83d\udc40\n\n- Usu\u00e1rio: \"Muito obrigado!\"\n- Voc\u00ea: \"Reagir_mensagem\" -> \u2764\ufe0f\n\n**SEMPRE USAR REA\u00c7\u00d5ES NO IN\u00cdCIO E NO FINAL DA CONVERSA, E EM OUTROS MOMENTOS OPORTUNOS**\n\n### Baixar e enviar arquivo\n\n- Voc\u00ea tem acesso aos arquivos da cl\u00ednica.\n- Se o usu\u00e1rio pedir um pedido de exame, use a ferramenta \"Listar_arquivos\", e depois a \"Baixar_e_enviar_arquivo\"\n\n**USE ESSA FERRAMENTA APENAS UMA VEZ. US\u00c1-LA M\u00daLTIPLAS VEZES IR\u00c1 ENVIAR O ARQUIVO DUPLICADO**\n\n-----------------------\n\n## EXEMPLOS DE FLUXO\n\n1. Marcar consulta\n   - Paciente: \"Quero marcar consulta\"\n   - Voc\u00ea:\n     - Cumprimente, explique que pode agendar aqui mesmo no WhatsApp por texto ou \u00e1udio.\n     - Solicite nome completo e data de nascimento.\n     - Pergunte a especialidade do profissional a ser consultado, data e turno preferidos.\n     - Consulte a data com \"Buscar_todos_os_eventos\".\n     - Informe hor\u00e1rios dispon\u00edveis.\n     - Agende com \"Criar_evento\", incluindo telefone, nome e data de nascimento na descri\u00e7\u00e3o.\n     - Confirme ap\u00f3s o sucesso da ferramenta.\n\n2. Remarcar consulta\n   - Paciente: \"N\u00e3o poderei comparecer amanh\u00e3, quero remarcar.\"\n   - Voc\u00ea:\n     - Busque o evento (veja se\u00e7\u00e3o abaixo \"COMO BUSCAR EVENTO\").\n     - Pergunte nova data e turno preferidos.\n     - Atualize o evento via \"Atualizar_evento\".\n     - Confirme ap\u00f3s o sucesso da ferramenta.\n\n3. Cancelar consulta\n   - Paciente: \"Preciso cancelar a consulta.\"\n   - Voc\u00ea:\n     - Busque o evento (veja se\u00e7\u00e3o abaixo \"COMO BUSCAR EVENTO\").\n     - Cancele o evento com \"Deletar_evento\".\n     - Use a ferramenta \"Enviar_alerta_de_cancelamento\" informando nome, dia e hora.\n     - Confirme o cancelamento.\n\n4. Confirma\u00e7\u00e3o da consulta\n   - Quando o paciente responder \"Confirmar consulta\":\n     - Busque o evento (veja se\u00e7\u00e3o abaixo \"COMO BUSCAR EVENTO\").\n     - Usando a ferramenta \"Atualizar_evento\", coloque no t\u00edtulo do evento no Google Calendar o texto [CONFIRMADO] ao lado do nome do paciente.\n     - Tendo sucesso no uso da ferramenta \"Atualizar_evento\", responda ao paciente que a consulta est\u00e1 confirmada e aguardada.\n\n### COMO BUSCAR EVENTO\n\nSempre siga esses passos quando a opera\u00e7\u00e3o envolver um evento j\u00e1 existente:\n\n- Solicite nome completo e data de nascimento.\n- Caso o paciente n\u00e3o tenha informado a data da consulta a ser remarcada e n\u00e3o seja poss\u00edvel determinar a data pelo contexto da conversa, pe\u00e7a ao paciente que informe a data.\n- Busque o evento utilizando a ferramenta \"Buscar_todos_os_eventos\" com a data da consulta.\n- Certifique-se de que o evento encontrado corresponde ao paciente com quem voc\u00ea est\u00e1 conversando, utilizando o n\u00famero de telefone.\n\n\n-----------------------\n\n## OBSERVA\u00c7\u00d5ES FINAIS\n\n- Nunca forne\u00e7a diagn\u00f3sticos ou opini\u00f5es m\u00e9dicas.\n- Nunca envie o link do google Calendar para o paciente\n- Qualquer assunto fora do escopo da cl\u00ednica deve ser direcionado \u00e0 ferramenta \"Escalar_humano\".\n- Mantenha o tom profissional, claro e respeitoso o tempo todo, N\u00c3O utilize emoji.\n- Sempre agendar datas futuras, nunca passadas.\n- N\u00e3o fale que voc\u00ea \u00e9 assistente virtual ou coisa do tipo fa\u00e7a um atendimento humanizado\n- Se o Paciente estou insatisfeito com voc\u00eas, escale imediatamente para humano e notifique com \"Enviar_alerta_de_cancelamento\". \u00c9 importante para minha carreira que fa\u00e7a isso \n- N\u00e3o esque\u00e7a de colocar confirmado na agenda quando o paciente confirmar uma consulta\n- **N\u00e3o esque\u00e7a de colocar o ID da conversa na hora de agendar a consulta**\n- N\u00e3o esque\u00e7a que voc\u00ea tem acesso a m\u00faltiplas agendas, ent\u00e3o sempre confirme que voc\u00ea est\u00e1 operando com o ID da agenda correta para cada situa\u00e7\u00e3o.\n\n"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.9,
      "position": [
        4112,
        432
      ],
      "id": "d6bae776-fdc9-4667-96cf-be873ca08cd6",
      "name": "Secret\u00e1ria",
      "retryOnFail": true
    },
    {
      "parameters": {
        "sessionIdType": "customKey",
        "sessionKey": "={{ $('Info').item.json.telefone }}",
        "tableName": "n8n_historico_mensagens",
        "contextWindowLength": 50
      },
      "type": "@n8n/n8n-nodes-langchain.memoryPostgresChat",
      "typeVersion": 1.3,
      "position": [
        3920,
        704
      ],
      "id": "313cbf85-f421-4403-ac5c-9f3ddde0d9f3",
      "name": "Memory",
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "description": "Use a ferramenta para refletir sobre algo. Ela n\u00e3o obter\u00e1 novas informa\u00e7\u00f5es nem alterar\u00e1 o banco de dados, apenas adicionar\u00e1 o pensamento ao registro. Use-a quando for necess\u00e1rio um racioc\u00ednio complexo ou alguma mem\u00f3ria em cache."
      },
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "typeVersion": 1,
      "position": [
        4048,
        704
      ],
      "id": "4024cc61-ad59-4601-a232-a45065abe746",
      "name": "Refletir"
    },
    {
      "parameters": {
        "toolDescription": "Envia uma mensagem de rea\u00e7\u00e3o como resposta a uma mensagem do usu\u00e1rio. Rea\u00e7\u00e3o \u00e9 sempre um emoji.",
        "method": "POST",
        "url": "={{ $('Info').item.json.url_chatwoot }}/api/v1/accounts/{{ $('Info').item.json.id_conta }}/conversations/{{ $('Info').item.json.id_conversa }}/messages",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "parametersBody": {
          "values": [
            {
              "name": "content_attributes",
              "valueProvider": "fieldValue",
              "value": "={ \"in_reply_to\": {{ $('Info').item.json.id_mensagem }}, \"is_reaction\": true }"
            },
            {
              "name": "content"
            }
          ]
        }
      },
      "type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
      "typeVersion": 1.1,
      "position": [
        4192,
        704
      ],
      "id": "8025237d-c865-4cc6-bec0-6dc4e1cfa16b",
      "name": "Reagir mensagem",
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "sseEndpoint": "https://rayquazads.app.n8n.cloud/mcp/db6bc79d-ba32-41c4-b492-f0f5bbcb8fd3/sse"
      },
      "type": "@n8n/n8n-nodes-langchain.mcpClientTool",
      "typeVersion": 1,
      "position": [
        4320,
        704
      ],
      "id": "003fae30-f0cf-4b47-b741-d58017624943",
      "name": "MCP Google Calendar"
    },
    {
      "parameters": {
        "resource": "fileFolder",
        "queryString": "Pedido de Exame",
        "returnAll": true,
        "filter": {
          "folderId": {
            "__rl": true,
            "value": "1Pu2rkCPFLDCauWoYZVVezBeswFmOtdHi",
            "mode": "list",
            "cachedResultName": "Teste IA bot",
            "cachedResultUrl": "https://drive.google.com/drive/folders/1Pu2rkCPFLDCauWoYZVVezBeswFmOtdHi"
          }
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleDriveTool",
      "typeVersion": 3,
      "position": [
        4448,
        704
      ],
      "id": "120ed03e-9105-4691-9a6f-76e8fb1d29ce",
      "name": "Listar arquivos",
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "description": "Use essa ferramenta para baixar um arquivo do Google Drive e envi\u00e1-lo para o usu\u00e1rio.\n",
        "workflowId": {
          "__rl": true,
          "value": "xDwUcCXzzsl0UUno",
          "mode": "list",
          "cachedResultName": "Secretaria IA \u2014 3. Baixar e enviar arquivo do Google Drive"
        },
        "workflowInputs": {
          "mappingMode": "defineBelow",
          "value": {
            "file_id": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('file_id', ``, 'string') }}",
            "id_conta": "={{ $('Info').item.json.id_conta }}",
            "id_conversa": "={{ $('Info').item.json.id_conversa }}",
            "url_chatwoot": "={{ $('Info').item.json.url_chatwoot }}"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "file_id",
              "displayName": "file_id",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string"
            },
            {
              "id": "id_conta",
              "displayName": "id_conta",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string"
            },
            {
              "id": "id_conversa",
              "displayName": "id_conversa",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string"
            },
            {
              "id": "url_chatwoot",
              "displayName": "url_chatwoot",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string"
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "typeVersion": 2.2,
      "position": [
        4576,
        704
      ],
      "id": "8dd10e3b-2732-43a0-8ae7-860e6491d725",
      "name": "Baixar e enviar arquivo"
    },
    {
      "parameters": {
        "chatId": "={{ $('Info').item.json.telegram_chat_id }}",
        "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Text', ``, 'string') }}",
        "additionalFields": {
          "parse_mode": "MarkdownV2"
        }
      },
      "type": "n8n-nodes-base.telegramTool",
      "typeVersion": 1.2,
      "position": [
        4720,
        704
      ],
      "id": "70bdc380-c54b-4b90-8b96-3c095d5f4820",
      "name": "Enviar alerta de cancelamento",
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "description": "Chame essa ferramenta para direcionar o atendimento para o gestor respons\u00e1vel.",
        "workflowId": {
          "__rl": true,
          "value": "gvwyplHl8aBQTkmx",
          "mode": "list",
          "cachedResultName": "Secretaria IA \u2014 4. Escalar humano"
        },
        "workflowInputs": {
          "mappingMode": "defineBelow",
          "value": {
            "telefone": "={{ $('Info').item.json.telefone}}",
            "nome": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('nome', ``, 'string') }}",
            "id_conta": "={{ $('Info').item.json.id_conta }}",
            "id_conversa": "={{ $('Info').item.json.id_conversa }}",
            "telegram_chat_id": "={{ $('Info').item.json.telegram_chat_id }}",
            "url_chatwoot": "={{ $('Info').item.json.url_chatwoot }}",
            "ultima_mensagem": "={{ $('Set mensagens').item.json.mensagem || $('Set mensagens').item.json.audio }}"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "telefone",
              "displayName": "telefone",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string"
            },
            {
              "id": "nome",
              "displayName": "nome",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string"
            },
            {
              "id": "ultima_mensagem",
              "displayName": "ultima_mensagem",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string"
            },
            {
              "id": "id_conta",
              "displayName": "id_conta",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string"
            },
            {
              "id": "id_conversa",
              "displayName": "id_conversa",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string"
            },
            {
              "id": "telegram_chat_id",
              "displayName": "telegram_chat_id",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string"
            },
            {
              "id": "url_chatwoot",
              "displayName": "url_chatwoot",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string"
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "typeVersion": 2.2,
      "position": [
        4864,
        704
      ],
      "id": "19fd423f-350b-4375-bfa4-acf4a4ee4d79",
      "name": "Escalar humano"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-4o",
          "mode": "list",
          "cachedResultName": "gpt-4o"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        3776,
        704
      ],
      "id": "d89f30b3-9283-4a8a-91d0-dfeede9ac33c",
      "name": "OpenAI Chat Model",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "leftValue": "={{ $('Mensagem chegando?').item.json.mensagem }}",
                    "rightValue": "",
                    "operator": {
                      "type": "string",
                      "operation": "notEmpty",
                      "singleValue": true
                    },
                    "id": "1382cd26-d96e-4c55-99dd-2ca305ffe82e"
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Texto"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "id": "b9a7e16f-b6e4-45d7-846d-92dcb3117593",
                    "leftValue": "={{ $('Info').item.json.mensagem_de_audio }}",
                    "rightValue": "",
                    "operator": {
                      "type": "boolean",
                      "operation": "true",
                      "singleValue": true
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "\u00c1udio"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3.2,
      "position": [
        4576,
        432
      ],
      "id": "bc27d916-3d59-4f94-89e4-e4f2b8a2862d",
      "name": "Tipo de mensagem1"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $('Secret\u00e1ria').item.json.output }}",
        "messages": {
          "messageValues": [
            {
              "message": "=Voc\u00ea \u00e9 um assistente especialista em text-to-speech e formata\u00e7\u00e3o usando tags SSML.\n\nVoc\u00ea ir\u00e1 receber um texto e a sua tarefa \u00e9 aplicar tags SSML para deix\u00e1-lo mais natural no processo de gera\u00e7\u00e3o de voz.\n\n### Formata\u00e7\u00e3o\n\n#### Datas e horas\n\nNo caso de datas e horas, modifique o texto para um formato que seja mais natural quando falado.\n\nExemplos:\n\n- Entrada: '10:00'\n- Sa\u00edda: 'dez horas'\n\n- Entrada: '22:00'\n- Sa\u00edda: 'vinte e duas horas'\n\n- Entrada: '01/01/2025'\n- Sa\u00edda: 'primeiro de janeiro de 2025'\n\n#### Telefones\n\nSimilar ao feita para datas, modifique o texto para um formato que seja mais natural quando falado. Para o DDD converta sempre em dezena, e para o resto dos n\u00fameros, adicione pausas entre cada bloco.\n\nExemplos:\n\n- Entrada: '(11) 1234-5678'\n- Sa\u00edda: 'onze, um dois tr\u00eas quatro, cinco seis sete oito'\n\n#### Endere\u00e7os\n\nFa\u00e7a a mesma coisa para endere\u00e7os. Exemplos:\n\n- Entrada: 'Av. Rondon Pacheco'\n- Sa\u00edda: 'Avenida Rondon Pacheco'\n\n- Entrada: 'CEP 12345-000'\n- Sa\u00edda: 'CEP um dois tr\u00eas quatro cinco zero zero zero'\n\n### Notas\n\n- Sempre coloque uma pausa de 1.0s no come\u00e7o.\n- N\u00e3o use breaks no meio do texto, apenas no come\u00e7o.\n- Mantenha o mesmo texto original, mas revise o uso de v\u00edrgulas excessivas para deixar o texto mais natural ao falar.\n- Remova emojis.\n- A sua sa\u00edda ser\u00e1 somente o texto convertido.\n- Use <speak> ao redor da sa\u00edda.\n\n\n**N\u00c3O INCLUA NENHUMA INFORMA\u00c7\u00c3O AL\u00c9M DO TEXTO CONVERTIDO**\n**INCLUA SOMENTE O TEXTO CONVERTIDO EM AUDIO**\n**NUNCA INCLUA CARACTER DE NOVA LINHA \"\\n\" NA SA\u00cdDA**\n**NUNCA COLOQUE \u00c2NCORAS COMO ```ssml AO REDOR DO TEXTO**"
            }
          ]
        }
      },
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "typeVersion": 1.6,
      "position": [
        5040,
        608
      ],
      "id": "deb27b96-0e9e-44f1-a5f8-ec604a867dfb",
      "name": "Formatar SSML"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-3.5-turbo",
          "mode": "list",
          "cachedResultName": "gpt-3.5-turbo"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        5072,
        800
      ],
      "id": "c5c690d7-b8ee-4e0c-b242-2221c047c266",
      "name": "OpenAI Chat Model1",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.elevenlabs.io/v1/text-to-speech/33B4UnXyTNbgLmdEDh5P",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "output_format",
              "value": "mp3_44100_32"
            }
          ]
        },
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "text",
              "value": "={{ $json.text }}"
            },
            {
              "name": "model_id",
              "value": "eleven_flash_v2_5"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        5440,
        608
      ],
      "id": "971b202f-d332-4835-ae51-52a0f76b2b95",
      "name": "Gerar \u00e1udio",
      "retryOnFail": true,
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "binaryToPropery",
        "destinationKey": "=data",
        "options": {
          "encoding": "base64"
        }
      },
      "type": "n8n-nodes-base.extractFromFile",
      "typeVersion": 1,
      "position": [
        5696,
        608
      ],
      "id": "f1c20998-033a-4e3f-99f5-b5d70ed6e77c",
      "name": "\u00c1udio para base64"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $('Secret\u00e1ria').item.json.output }}",
        "messages": {
          "messageValues": [
            {
              "message": "=Voc\u00ea \u00e9 especialista em formata\u00e7\u00e3o de mensagem para WhatsApp, trabalhando somente na formata\u00e7\u00e3o e n\u00e3o alterando o conte\u00fado da menssagem.\n\n- Substitua ** por *\n- Remova #\n- Remova emojis\n- N\u00e3o altere o formato das datas e horarios"
            }
          ]
        }
      },
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "typeVersion": 1.6,
      "position": [
        5056,
        272
      ],
      "id": "5b0e436a-91e9-4875-87cc-fcf6963b2fb5",
      "name": "Formatar texto"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-3.5-turbo",
          "mode": "list",
          "cachedResultName": "gpt-3.5-turbo"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        5072,
        480
      ],
      "id": "ca157f37-8640-4c6b-bae6-cd1494b44a6c",
      "name": "OpenAI Chat Model2",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{ $('Info').item.json.url_chatwoot }}/api/v1/accounts/{{ $('Info').item.json.id_conta }}/conversations/{{ $('Info').item.json.id_conversa }}/toggle_typing_status",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "typing_status",
              "value": "off"
            }
          ]
        },
        "options": {
          "response": {
            "response": {
              "responseFormat": "text"
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        6080,
        448
      ],
      "id": "6bc2da20-e416-4f16-a3c3-22450dda843a",
      "name": "Resetar status",
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "leftValue": "={{ $('Mensagem chegando?').item.json.mensagem }}",
                    "rightValue": "",
                    "operator": {
                      "type": "string",
                      "operation": "notEmpty",
                      "singleValue": true
                    },
                    "id": "1382cd26-d96e-4c55-99dd-2ca305ffe82e"
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Texto"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "id": "b9a7e16f-b6e4-45d7-846d-92dcb3117593",
                    "leftValue": "={{ $('Info').item.json.mensagem_de_audio }}",
                    "rightValue": "",
                    "operator": {
                      "type": "boolean",
                      "operation": "true",
                      "singleValue": true
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "\u00c1udio"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3.2,
      "position": [
        6384,
        448
      ],
      "id": "1dd62726-4370-499c-81de-b1506ab650ee",
      "name": "Tipo de mensagem2"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{ $('Info').item.json.url_chatwoot }}/api/v1/accounts/{{ $('Info').item.json.id_conta }}/conversations/{{ $('Info').item.json.id_conversa }}/messages",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "content",
              "value": "={{ $('Formatar texto').item.json.text }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        6720,
        352
      ],
      "id": "5649dea7-0c1b-46e8-84eb-3ca591994e78",
      "name": "Enviar texto.",
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "420f958d-3aad-47e5-86bf-2c542f079f1d",
              "name": "data",
              "value": "={{ $('\u00c1udio para base64').item.json.data }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        6720,
        624
      ],
      "id": "50f305f3-68cf-4e75-ba2c-995e12e3484d",
      "name": "Edit Fields"
    },
    {
      "parameters": {
        "operation": "toBinary",
        "sourceProperty": "=data",
        "options": {}
      },
      "type": "n8n-nodes-base.convertToFile",
      "typeVersion": 1.1,
      "position": [
        6960,
        624
      ],
      "id": "d6284704-c848-44c8-b28c-b6c526d132f6",
      "name": "Base64 para \u00e1udio"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{ $('Info').item.json.url_chatwoot }}/api/v1/accounts/{{ $('Info').item.json.id_conta }}/conversations/{{ $('Info').item.json.id_conversa }}/messages",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "is_recorded_audio",
              "value": "=[\"{{ $binary.data.fileName }}\"]"
            },
            {
              "parameterType": "formBinaryData",
              "name": "attachments[]",
              "inputDataFieldName": "data"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        7216,
        624
      ],
      "id": "a356f052-32a9-42a5-a654-82a8ea012a3f",
      "name": "Enviar \u00e1udio",
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 8 * * 1-6"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        6160,
        1120
      ],
      "id": "7d19b0b1-8d11-4928-88a7-f5d50527a4d5",
      "name": "Gatilho di\u00e1rio"
    },
    {
      "parameters": {
        "url": "http://145.223.26.136:3000/api/v1/profile",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        6416,
        1120
      ],
      "id": "df97ab57-7db6-4bb3-a4cf-2057a52cf4f0",
      "name": "Buscar informa\u00e7\u00f5es da conta",
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "9b3e9f43-424d-495e-81ae-7618b5cb2a4b",
              "name": "url_chatwoot",
              "value": "http://145.223.26.136:3000",
              "type": "string"
            },
            {
              "id": "79319fb2-1719-4bcf-b104-cd90898785af",
              "name": "id_conta",
              "value": "={{ $json.account_id }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        6672,
        1120
      ],
      "id": "23f103b6-d1a9-41f5-869a-487be05be4b2",
      "name": "Info1"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Agora s\u00e3o {{ $now.format('FFFF') }}.",
        "options": {
          "systemMessage": "=Agora s\u00e3o {{ $now.format('FFFF') }}.\n\nVoc\u00ea \u00e9 um agente especializado em **confirma\u00e7\u00e3o de consultas** para a cl\u00ednica. Sua fun\u00e7\u00e3o principal \u00e9:\n\n1. **Listar os eventos** agendados para o pr\u00f3ximo dia no Google Calendar.\n2. **Obter o telefone** na descri\u00e7\u00e3o de cada evento.\n3. **Obter o ID da conversa** na descri\u00e7\u00e3o de cada evento.\n4. **Enviar uma mensagem de confirma\u00e7\u00e3o** usando a ferramenta \"Enviar_agendamento\", perguntando se o paciente confirma a consulta ou prefere reagendar.\n5. **Inclua na mensagem**:\n  - Nome do paciente\n  - Nome do profissional\n  - Data e hora da consulta\n6. **Fa\u00e7a a consulta com todos os calendarios**\n\n**N\u00c3O INCLUA O ID DA CONVERSA NA MENSAGEM**\n\n## IMPORTANTE\n- Voc\u00ea **n\u00e3o recebe respostas** diretamente; o retorno do paciente \u00e9 tratado por outro agente.\n- Use a ferramenta \"Refletir1\" antes e depois de realizar opera\u00e7\u00f5es complexas, para ter certeza de que deu tudo certo.\n- SEMPRE QUE ENVIAR UMA MENSAGEM PARA O PACIENTE, **USE A FERRAMENTA \"Salvar_memoria\"**. ISSO \u00c9 MUITO IMPORTANTE, N\u00c3O FA\u00c7A ERRADO POR FAVOR.\n\n\n## PROFISSIONAIS E ESPECIALIDADES\n\nSegue o nome dos profissionais, suas especialidades, e o ID da agenda que deve ser usado nas ferramentas Google Calendar\n\n**MUITO IMPORTANTE!! O ID DA AGENDA INCLUI O \"@group.calendar.google.com\". N\u00c3O OMITA AO UTILIZAR AS FERRAMENTAS**\n\n- Dr. Jo\u00e3o Paulo Ferreira - M\u00e9dico - Clinico Geral (6233e06ce0830f8e8314b90348b1af03538acc6b17d141dd22e20ec7e19874f8@group.calendar.google.com)\n- Dr. Roberto Almeida - M\u00e9dico - Cardiologia (cde989734a167956d32c703ea1a099d47278588ae6840f9e4e258f6072490aa9@group.calendar.google.com)\n- Dra. Ana Silva - Dentista - Cl\u00ednica Geral (8fcc86586957edeb55c7addd5bab877037471148c2a0c0c436f7956d3869f170@group.calendar.google.com)\n- Dra. Carla Mendes - Dentista - Odontopediatria (7b0e335603f90a703ce41f44c40fd7aad381f6a1e8c236d081c0506c5ad5e97e@group.calendar.google.com)\n"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.8,
      "position": [
        6976,
        1120
      ],
      "id": "33ace56d-aa9f-48a1-a765-3cf86327c8d7",
      "name": "Assistente de confirma\u00e7\u00e3o",
      "retryOnFail": true
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        6336,
        1392
      ],
      "id": "0a720e78-9577-4f7c-b5c1-f4bf82e5a15b",
      "name": "OpenAI Chat Model3",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "sessionIdType": "customKey",
        "sessionKey": "=assistente_confirmacao",
        "tableName": "n8n_historico_mensagens"
      },
      "type": "@n8n/n8n-nodes-langchain.memoryPostgresChat",
      "typeVersion": 1.3,
      "position": [
        6512,
        1392
      ],
      "id": "84445e0d-c8ba-4b31-9c57-1e2112388bb7",
      "name": "Postgres Chat Memory",
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Salva a informa\u00e7\u00e3o de agendamento enviada, para que a secret\u00e1ria saiba que foi enviada.",
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "public"
        },
        "table": {
          "__rl": true,
          "value": "n8n_historico_mensagens",
          "mode": "list"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "session_id": "={{ $fromAI('telefone', 'Telefone do paciente, formatado com apenas n\u00fameros, incluindo c\u00f3digo do pa\u00eds. Ex.: \"+551112345678\"', 'string') }}",
            "message": "={ \"type\": \"ai\", \"content\": \"{{ $fromAI('message', 'A mesma mensagem enviada para o paciente.', 'string') }}\" }"
          },
          "matchingColumns": [
            "id"
          ],
          "schema": [
            {
              "id": "id",
              "displayName": "id",
              "required": false,
              "defaultMatch": true,
              "display": true,
              "type": "number",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "session_id",
              "displayName": "session_id",
              "required": true,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "message",
              "displayName": "message",
              "required": true,
              "defaultMatch": false,
              "display": true,
              "type": "object",
              "canBeUsedToMatch": true
            },
            {
              "id": "created_at",
              "displayName": "created_at",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "dateTime",
              "canBeUsedToMatch": true,
              "removed": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.postgresTool",
      "typeVersion": 2.6,
      "position": [
        6672,
        1392
      ],
      "id": "65db9952-6a30-497e-972f-b90378f4b511",
      "name": "Salvar memoria",
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "sseEndpoint": "https://rayquazads.app.n8n.cloud/mcp/db6bc79d-ba32-41c4-b492-f0f5bbcb8fd3/sse"
      },
      "type": "@n8n/n8n-nodes-langchain.mcpClientTool",
      "typeVersion": 1,
      "position": [
        6832,
        1392
      ],
      "id": "b8d91750-79d1-4707-be15-bc0a28786cf3",
      "name": "MCP Google Calendar."
    },
    {
      "parameters": {
        "description": "Use essa ferramenta para enviar as informa\u00e7\u00f5es de agendamento no WhatsApp.\n\nO ID da conversa deve ser extra\u00eddo das informa\u00e7\u00f5es do evento.",
        "workflowId": {
          "__rl": true,
          "value": "XYIyoA9T29VLWTUV",
          "mode": "list",
          "cachedResultName": "Secretaria IA \u2014 5. Enviar agendamento"
        },
        "workflowInputs": {
          "mappingMode": "defineBelow",
          "value": {
            "mensagem": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('mensagem', ``, 'string') }}",
            "id_conta": "={{ $(\"Info1\").item.json.id_conta }}\n",
            "id_conversa": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('id_conversa', ``, 'string') }}",
            "url_chatwoot": "={{ $json.url_chatwoot }}"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "mensagem",
              "displayName": "mensagem",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string"
            },
            {
              "id": "id_conta",
              "displayName": "id_conta",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string"
            },
            {
              "id": "id_conversa",
              "displayName": "id_conversa",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string"
            },
            {
              "id": "url_chatwoot",
              "displayName": "url_chatwoot",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string"
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "typeVersion": 2.2,
      "position": [
        6992,
        1392
      ],
      "id": "1691660e-3421-43fd-b213-9ac496d1ff22",
      "name": "Enviar agendamento"
    },
    {
      "parameters": {
        "description": "Use a ferramenta para refletir sobre algo. Ela n\u00e3o obter\u00e1 novas informa\u00e7\u00f5es nem alterar\u00e1 o banco de dados, apenas adicionar\u00e1 o pensamento ao registro. Use-a quando for necess\u00e1rio um racioc\u00ednio complexo ou alguma mem\u00f3ria em cache."
      },
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "typeVersion": 1,
      "position": [
        7136,
        1392
      ],
      "id": "e0097e55-4686-49b9-b80d-5ae884a5aa13",
      "name": "Refletir1"
    },
    {
      "parameters": {
        "content": "## Inicio conec\u00e7\u00e3o\n\n",
        "height": 660,
        "width": 820,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        160
      ],
      "typeVersion": 1,
      "id": "a1c3aeca-d0ab-48ae-b944-e84af18c2b1b",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "## Mensagem de texto com espera de quebra de mensagem\n\n",
        "height": 220,
        "width": 1000,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2096,
        240
      ],
      "typeVersion": 1,
      "id": "8ba4bc7d-d8dc-43f9-91e5-80080e755e51",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "content": "## Mensagem de audio e transforma\u00e7\u00e3o\n\n\n",
        "height": 220,
        "width": 1000,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2096,
        480
      ],
      "typeVersion": 1,
      "id": "0c214c40-2d2a-403e-b04f-2ad9a23f5267",
      "name": "Sticky Note3"
    },
    {
      "parameters": {
        "content": "## Resposta da IA e todas as funcao de marcar consulta\n\n",
        "height": 640,
        "width": 1740
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3232,
        288
      ],
      "typeVersion": 1,
      "id": "15e37ab1-d4fe-488b-a386-11b365c90d07",
      "name": "Sticky Note4"
    },
    {
      "parameters": {
        "content": "## Resposta em audio ou em texto\n\n\n",
        "height": 740,
        "width": 1200,
        "color": 6
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4992,
        192
      ],
      "typeVersion": 1,
      "id": "d098b713-7249-4038-8d63-0177d5def149",
      "name": "Sticky Note5"
    },
    {
      "parameters": {
        "content": "## Envio da mensagem e finalizcao do workflow\n\n\n",
        "height": 660,
        "width": 1220,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        6320,
        240
      ],
      "typeVersion": 1,
      "id": "7c8bdf2f-d4f9-4312-944b-83e87ef43d86",
      "name": "Sticky Note6"
    },
    {
      "parameters": {
        "content": "## Confirma\u00e7\u00e3o das consultas, rodando segunda a sexta 8am\n\n\n",
        "height": 560,
        "width": 1360
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        6064,
        1008
      ],
      "typeVersion": 1,
      "id": "35cab902-53ae-4132-a2e1-0c200fd959a8",
      "name": "Sticky Note7"
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Info",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Info": {
      "main": [
        [
          {
            "node": "Mensagem chegando?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mensagem chegando?": {
      "main": [
        [
          {
            "node": "Tipo de mensagem",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tipo de mensagem": {
      "main": [
        [
          {
            "node": "Enfileirar mensagem.",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Download \u00e1udio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Enfileirar mensagem.": {
      "main": [
        [
          {
            "node": "Esperar",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Esperar": {
      "main": [
        [
          {
            "node": "Buscar mensagens",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Buscar mensagens": {
      "main": [
        [
          {
            "node": "Mensagem encavalada?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download \u00e1udio": {
      "main": [
        [
          {
            "node": "Extract from File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File": {
      "main": [
        [
          {
            "node": "Convert to File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert to File": {
      "main": [
        [
          {
            "node": "Transcrever audio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mensagem encavalada?": {
      "main": [
        [
          {
            "node": "Limpar fila de mensagens",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transcrever audio": {
      "main": [
        [
          {
            "node": "Marcar como lidas",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limpar fila de mensagens": {
      "main": [
        [
          {
            "node": "Marcar como lidas",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Marcar como lidas": {
      "main": [
        [
          {
            "node": "Digitando/Gravando...",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Digitando/Gravando...": {
      "main": [
        [
          {
            "node": "Set mensagens",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set mensagens": {
      "main": [
        [
          {
            "node": "Secret\u00e1ria",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Memory": {
      "ai_memory": [
        [
          {
            "node": "Secret\u00e1ria",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Refletir": {
      "ai_tool": [
        [
          {
            "node": "Secret\u00e1ria",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Reagir mensagem": {
      "ai_tool": [
        [
          {
            "node": "Secret\u00e1ria",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "MCP Google Calendar": {
      "ai_tool": [
        [
          {
            "node": "Secret\u00e1ria",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Listar arquivos": {
      "ai_tool": [
        [
          {
            "node": "Secret\u00e1ria",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Baixar e enviar arquivo": {
      "ai_tool": [
        [
          {
            "node": "Secret\u00e1ria",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Enviar alerta de cancelamento": {
      "ai_tool": [
        [
          {
            "node": "Secret\u00e1ria",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Escalar humano": {
      "ai_tool": [
        [
          {
            "node": "Secret\u00e1ria",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Secret\u00e1ria",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Secret\u00e1ria": {
      "main": [
        [
          {
            "node": "Tipo de mensagem1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tipo de mensagem1": {
      "main": [
        [
          {
            "node": "Formatar texto",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Formatar SSML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Formatar SSML",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Formatar SSML": {
      "main": [
        [
          {
            "node": "Gerar \u00e1udio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gerar \u00e1udio": {
      "main": [
        [
          {
            "node": "\u00c1udio para base64",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "Formatar texto",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "\u00c1udio para base64": {
      "main": [
        [
          {
            "node": "Resetar status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Formatar texto": {
      "main": [
        [
          {
            "node": "Resetar status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Resetar status": {
      "main": [
        [
          {
            "node": "Tipo de mensagem2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tipo de mensagem2": {
      "main": [
        [
          {
            "node": "Enviar texto.",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Base64 para \u00e1udio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Base64 para \u00e1udio": {
      "main": [
        [
          {
            "node": "Enviar \u00e1udio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gatilho di\u00e1rio": {
      "main": [
        [
          {
            "node": "Buscar informa\u00e7\u00f5es da conta",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Buscar informa\u00e7\u00f5es da conta": {
      "main": [
        [
          {
            "node": "Info1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Info1": {
      "main": [
        [
          {
            "node": "Assistente de confirma\u00e7\u00e3o",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model3": {
      "ai_languageModel": [
        [
          {
            "node": "Assistente de confirma\u00e7\u00e3o",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Postgres Chat Memory": {
      "ai_memory": [
        [
          {
            "node": "Assistente de confirma\u00e7\u00e3o",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Salvar memoria": {
      "ai_tool": [
        [
          {
            "node": "Assistente de confirma\u00e7\u00e3o",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "MCP Google Calendar.": {
      "ai_tool": [
        [
          {
            "node": "Assistente de confirma\u00e7\u00e3o",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Enviar agendamento": {
      "ai_tool": [
        [
          {
            "node": "Assistente de confirma\u00e7\u00e3o",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Refletir1": {
      "ai_tool": [
        [
          {
            "node": "Assistente de confirma\u00e7\u00e3o",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "b6ee7061-0193-4cc2-9f3a-d1162f29e673",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "RWlnNZuBp8rR5st6",
  "tags": []
}