WhatsApp Autoreply — Instalasi singkat

Persyaratan:
- PHP >= 8.0
- Composer
- Ekstensi PHP: curl, json, mbstring
- Web server (Apache / Nginx) dan akses publik untuk menerima webhook

File penting:
- `config.php` (wajib) — file konfigurasi utama
- `webhook.php` (wajib) — endpoint webhook (POST JSON)
- `log.php` (opsional) — tool web untuk melihat / export data DB (debug/admin)

Langkah instalasi singkat:
1. Upload folder aplikasi `autoreply` ke website anda. Contoh  `/var/www/website.id/public_html/autoreply`). Contoh link akhir: https://website.id/autoreply/.
2. Sesuaikan file `config.php` (lihat bagian panduan di bawah).
3. Pastikan folder `logs` (atau path log pada `config.php`) dapat ditulis oleh webserver jika logging diaktifkan.
4. Daftarkan URL webhook di menu webhook OneSender Anda menuju `https(s)://your-domain/auto /webhook.php`. Link menyesuaikan hasil instalasi.


Panduan pengaturan file `config.php`:
- `db_file`
  - Path ke file Excel yang dipakai sebagai database (contoh: `BASE_PATH . '/chatdb.xlsx'`).
  - Jika file tidak ada, sistem akan membuat file dan inisialisasi sheet: `contacts`, `inbox`, `autoreply`.
  - Pastikan path dapat ditulis oleh PHP agar data tersimpan.

- `onesender`
  - `api_url` — URL endpoint provider WhatsApp untuk mengirim pesan.
  - `api_key` — API key/token untuk autentikasi.

- `gemini` (opsional)
  - `key`, `model` — untuk integrasi Google Gemini (jika dipakai).

- `openai` (opsional)
  - `url`, `key`, `model` — untuk integrasi OpenAI (jika dipakai).
  - Jika pakai OpenAI resmi, `url` biasanya: `https://api.openai.com/v1/chat/completions`.

- `ai`
  - `model` — pilih `openai` atau `gemini`.
  - `prefix_prompt` — instruksi/petunjuk yang dikirim ke model sebelum pesan user.
  - `reply_prefix` / `reply_postfix` — tambahan di depan/akhir jawaban AI.
  - `stop_word` — kata (lowercase) yang jika dikirim dari operator (`is_from_me`) akan men-trigger embargo (non-aktif sementara bot).

- `autoreply`
  - `enabled` — aktifkan / nonaktifkan auto-reply berbasis FAQ.
  - `max_length` — maksimal panjang pesan (karakter) yang diproses autoreply.

- `log`
  - `enabled` — aktifkan/nonaktifkan logging.
  - `path` — folder penyimpanan log (contoh: `BASE_PATH . '/logs'`).
  - Aplikasi akan mencoba membuat folder jika tidak ada, namun tetap pastikan permission sudah benar.

Contoh konfigurasi minimal (sesuaikan nilai Anda):
    <?php
    return [
        "db_file" => BASE_PATH . "/chatdb.xlsx",
        "onesender" => [
            "api_url" => "https://wa.example.com/api/v1/messages",
            "api_key" => "YOUR_API_KEY_HERE",
        ],
        "openai" => [
            "url" => "https://api.openai.com/v1/chat/completions",
            "key" => "sk-...",
            "model" => "gpt-4o",
        ],
        "ai" => [
            "model" => "openai",
            "prefix_prompt" => "",
            "stop_word" => "human",
        ],
        "autoreply" => ["enabled" => true, "max_length" => 200],
        "log" => ["enabled" => true, "path" => BASE_PATH . "/logs"],
    ];

Cara menguji webhook (contoh):
    curl -X POST https://your-domain/webhook.php \
      -H "Content-Type: application/json" \
      -d '{"sender_phone":"628123456789","sender_push_name":"Budi","message_text":"halo"}'

Contoh payload minimal yang diharapkan:
- `sender_phone` (contoh: `628123456789`)
- `sender_push_name` (nama pengirim)
- `message_text` (isi pesan)

Penggunaan `log.php` (opsional):
- List sheets: `log.php?action=list`
- View sheet: `log.php?action=view&sheet=autoreply&format=json`
- Export CSV: `log.php?action=view&sheet=autoreply&format=csv`
- Tersedia juga action: `info`, `search`, `paginated`, `stats`, `all`, `export`.

Tips & Troubleshooting singkat:
- Jika muncul error \"Config file not found\", pastikan `config.php` ada dan Anda mengakses lewat `webhook.php` atau `log.php` (keduanya mendefinisikan `BASE_PATH`).
- Pastikan `db_file` dan folder `logs` dapat ditulis oleh user webserver (mis. `www-data`).
- Jangan commit API key ke repository publik.
- Untuk debug, aktifkan logging sementara dan gunakan `log.php` untuk inspeksi data.

Selesai. Jika mau, saya bisa bantu membuat contoh `config.php` template atau contoh webhook request payload lebih lengkap.
