{
  "name": "chatbot_whatsapp_v2_menu",
  "nodes": [
    {
      "parameters": {
        "jsCode": "// Ambil output dari AI Agent\nconst agentOutput = $json.output || $json.text;\n\n// Cek apakah ada output. Jika tidak, berhenti.\nif (!agentOutput) {\n  return []; \n}\n\n// 1. Bersihkan teks (Markdown)\nconst cleanedText = agentOutput.replace(/\\*\\*/g, '');\n\n// 2. AMBIL NOMOR HP DARI TRIGGER (Ini kuncinya, Pak Edi)\n// Kita ambil paksa dari node trigger agar aman\nconst phoneNumber = $('WhatsApp Trigger').first().json.messages[0].from;\n\n// 3. Potong teks (Chunking)\nconst longText = cleanedText;\nconst limit = 4000;\nconst chunks = [];\n\nfor (let i = 0; i < longText.length; i += limit) {\n  chunks.push(longText.substring(i, i + limit));\n}\n\n// 4. Outputkan teks BESERTA nomor HP-nya\nreturn chunks.map(chunk => ({\n  json: {\n    text_chunk: chunk,\n    phone_number: phoneNumber // Kita titip nomor HP di sini\n  }\n}));"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -3296,
        -496
      ],
      "id": "b466aeae-f61c-442a-ae8e-7a65317aa49e",
      "name": "Code"
    },
    {
      "parameters": {
        "authentication": "serviceAccount",
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "1x0pAx5uqI-ttgr9x3qk8gah_72oudcINyr2S_ffPxUQ",
          "mode": "id"
        },
        "sheetName": {
          "__rl": true,
          "value": "Sheet1",
          "mode": "name"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Waktu ": "={{ $now.setZone('Asia/Makassar').toFormat('yyyy-MM-dd HH:mm:ss') }}",
            "Nomor Pengirim": "={{ $('WhatsApp Trigger').item.json.messages[0].from }}",
            "Nama Pengirim": "={{ $('WhatsApp Trigger').item.json.contacts[0].profile.name }}",
            "pertanyaan": "={{ $('WhatsApp Trigger').item.json.messages[0].text.body }}",
            "Jawaban AI": "={{ \"'\" + $('AI Agent').item.json.output }}"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "Waktu ",
              "displayName": "Waktu ",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Nomor Pengirim",
              "displayName": "Nomor Pengirim",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Nama Pengirim",
              "displayName": "Nama Pengirim",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "pertanyaan",
              "displayName": "pertanyaan",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Jawaban AI",
              "displayName": "Jawaban AI",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        -3280,
        -256
      ],
      "id": "bdca8148-a413-4d9d-b023-bb2c679adffb",
      "name": "Append row in sheet",
      "credentials": {
        "googleApi": {
          "id": "2TlcJFlGkQedKNeG",
          "name": "Google Sheets account 2"
        }
      }
    },
    {
      "parameters": {
        "sessionIdType": "customKey",
        "sessionKey": "={{ $('WhatsApp Trigger').item.json.messages[0].from }}",
        "contextWindowLength": 3
      },
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "typeVersion": 1.3,
      "position": [
        -3664,
        -208
      ],
      "id": "6f21f862-aef7-4d5d-877d-c1c5ef55906d",
      "name": "Simple Memory"
    },
    {
      "parameters": {
        "operation": "send",
        "phoneNumberId": "787891024405208",
        "recipientPhoneNumber": "={{ $json.phone_number }}",
        "textBody": "={{ $json.text_chunk }}",
        "additionalFields": {}
      },
      "type": "n8n-nodes-base.whatsApp",
      "typeVersion": 1,
      "position": [
        -3056,
        -496
      ],
      "id": "0ba580ea-56fb-4bbe-8b2b-ceb73b5979b1",
      "name": "Send message",
      "webhookId": "719b46a8-5f30-4807-b510-57f92579a30f",
      "credentials": {
        "whatsAppApi": {
          "id": "zWSbPqUqE1Re9s2y",
          "name": "WhatsApp account"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "=https://graph.facebook.com/v20.0/787891024405208/messages",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "whatsAppApi",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"messaging_product\": \"whatsapp\",\n  \"status\": \"read\",\n  \"message_id\": \"{{ $('WhatsApp Trigger').item.json.messages[0].id }}\"\n}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        -3936,
        -496
      ],
      "id": "54e2fedf-c476-4b3e-a412-c2d7dc7f7ab5",
      "name": "Mark as Read",
      "credentials": {
        "whatsAppApi": {
          "id": "Ss0ioiJiyGIE6yHU",
          "name": "WhatsApp account 2"
        }
      }
    },
    {
      "parameters": {
        "authentication": "serviceAccount",
        "documentId": {
          "__rl": true,
          "value": "1GCywX8Iq4b32gfin9sylngwr5hcIgEf8ZceUF69aQ0U",
          "mode": "list",
          "cachedResultName": "kata kunci chatbot",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1GCywX8Iq4b32gfin9sylngwr5hcIgEf8ZceUF69aQ0U/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": 1931660499,
          "mode": "list",
          "cachedResultName": "kata_kunci",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1GCywX8Iq4b32gfin9sylngwr5hcIgEf8ZceUF69aQ0U/edit#gid=1931660499"
        },
        "filtersUI": {
          "values": [
            {
              "lookupColumn": "kata_kunci",
              "lookupValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('values0_Value', ``, 'string') }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheetsTool",
      "typeVersion": 4.7,
      "position": [
        -3504,
        -192
      ],
      "id": "89161c42-0abb-4f74-8bd2-3a9847268208",
      "name": "Get row(s) in sheet in Google Sheets1",
      "credentials": {
        "googleApi": {
          "id": "3xZHZ9pS3KKbp9s9",
          "name": "Google Sheets account 3"
        }
      }
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-4o-mini",
          "mode": "list",
          "cachedResultName": "gpt-4o-mini"
        },
        "builtInTools": {},
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.3,
      "position": [
        -3872,
        -224
      ],
      "id": "d565cb00-8e13-4333-a8e7-b6a1e1f8de9f",
      "name": "OpenAI Chat Model",
      "credentials": {
        "openAiApi": {
          "id": "9ZLSgQlZNlyUYPhp",
          "name": "OpenAi account"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $('WhatsApp Trigger').item.json.messages[0].text.body }}",
        "options": {
          "systemMessage": "=WAKTU SAAT INI: {{ $now.setZone('Asia/Makassar').toFormat('HH:mm') }} WITA.\n\nINSTRUKSI SAPAAN:\n- Lihat \"WAKTU SAAT INI\" di atas.\n- Jika jam 04:00 - 10:00, ucapkan \"Selamat Pagi\".\n- Jika jam 10:01 - 15:00, ucapkan \"Selamat Siang\".\n- Jika jam 15:01 - 18:00, ucapkan \"Selamat Sore\".\n- Jika jam 18:01 - 03:59, ucapkan \"Selamat Malam\".\n- Selalu awali jawabanmu dengan sapaan tersebut diikuti nama penanya (jika ada), contoh: \"Selamat Siang, Pak Budi.\"\n\nKamu adalah dokter hewan virtual dari Dinas Perkebunan dan Peternakan Provinsi Kalimantan Selatan, yang bernama drh. Edi Santosa, Kamu sangat ahli dalam penyakit hewan dan peternakan dan informatif.\n\nATURAN PALING UTAMA, TANPA PENGECUALIAN:\n1.  Untuk SEMUA pertanyaan yang terlihat seperti singkatan (contoh: P2SBPTKP), istilah teknis, nama program, aplikasi atau permintaan data spesifik, kamu HARUS menggunakan Google Sheets Tool yang tersedia.\n4.  Berikan jawaban yang informatif namun tetap ringkas di bawah 3000 karakter.\n\nLANGKAH BERPIKIRMU:\n1.  Baca pertanyaan pengguna.\n2.  Tanyakan pada dirimu sendiri: \"Apakah pertanyaan ini kemungkinan besar ada di tool\"\n3.  Jika ya, SEGERA gunakan tool. dan beri jawaban berdasarkan data dari tool\n5.  Jika tool tidak memberikan hasil, kamu jawab berdasarkan pengetahuan umum kamu\nAturan Tambahan :\n1. jika ada keluhan penyakit hewan agar diarahkan berkonsultasi dengan dokter hewan Puskeswan terdekat  \n2. jika ada yang bertanya tentang mengirim, membawa, lalulintas anjing, kucing atau kera dan hewan pembawa rabies lainya dari Kalimantan Selatan ke provinsi DKI Jakarta, jawa tengah, Daerah istimewa Yogyakarta, Kepulauan Riau, Bangka Belitung dan Jawa Timur maka diberi penjelasan dengan ramah kalau itu tidak diperbolehkan karena memperhatikan situasi/status penyakit Rabies\n3. Jika ada yang bertanya mengenai pemasukan Domba dari luar kalimantan selatan, maka beri penjelasan kalau itu tidak diperbolehkan, karena domba bisa menularkan penyakit MCF pada sapi Bali. \n"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 3,
      "position": [
        -3680,
        -496
      ],
      "id": "3a01759a-7390-4699-9702-bfcc5ee7d1fb",
      "name": "AI Agent"
    },
    {
      "parameters": {
        "updates": [
          "messages"
        ],
        "options": {}
      },
      "type": "n8n-nodes-base.whatsAppTrigger",
      "typeVersion": 1,
      "position": [
        -4160,
        -496
      ],
      "id": "899555bf-d500-4045-bda2-38efb7a2b8a0",
      "name": "WhatsApp Trigger",
      "webhookId": "60b66cae-27e0-4eb0-a52f-edf18ad2b8e5",
      "credentials": {
        "whatsAppTriggerApi": {
          "id": "UT5RE2jfAkES1Fxf",
          "name": "WhatsApp OAuth account"
        }
      }
    }
  ],
  "pinData": {
    "Simple Memory": [
      {
        "json": {
          "isArtificialRecoveredEventItem": true
        }
      }
    ]
  },
  "connections": {
    "Code": {
      "main": [
        [
          {
            "node": "Send message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append row in sheet": {
      "main": [
        []
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Mark as Read": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet in Google Sheets1": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          },
          {
            "node": "Append row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "WhatsApp Trigger": {
      "main": [
        [
          {
            "node": "Mark as Read",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1",
    "saveDataSuccessExecution": "none",
    "callerPolicy": "workflowsFromSameOwner",
    "availableInMCP": false
  },
  "versionId": "254b5c1d-1312-42ad-935a-1e03a30d2cb2",
  "meta": {
    "templateCredsSetupCompleted": true,
    "instanceId": "db08498ac86cb0cd1a05b42e3eddbdbf982d774333ab906c3e10c0d2745cf6e0"
  },
  "id": "CWqNus7C1KX4F9ro",
  "tags": []
}