Files
manjapro_v6/whapi_webhook/ai/index.php
T

112 lines
4.5 KiB
PHP

<?php
include __DIR__ . "/../../config/whatsapp_api.php";
include __DIR__ . "/respon_ai.php";
// Setup error reporting untuk debugging
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// Simpan log raw input untuk debug paling awal
// file_put_contents(__DIR__ . "/debug_raw_input.log", date('Y-m-d H:i:s') . " Input:\n" . print_r(file_get_contents('php://input'), true) . "\n", FILE_APPEND);
try {
// Ambil dan decode input JSON
$data = file_get_contents('php://input');
$json_data = json_decode($data, true);
if (!isset($json_data['results']['apiKey'])) {
http_response_code(400);
echo "apiKey tidak ditemukan.";
exit;
}
$apiKey = $json_data['results']['apiKey'];
// file_put_contents(__DIR__ . "/debug_apikey.log", date('Y-m-d H:i:s') . " apiKey: $apiKey\n", FILE_APPEND);
if (
isset($json_data['type']) && $json_data['type'] === 'message' &&
isset($json_data['results']['fromMe']) && $json_data['results']['fromMe'] === false &&
isset($json_data['results']['isGroupMsg']) && $json_data['results']['isGroupMsg'] === false
) {
$sender = $json_data['results']['sender'] ?? 'Tidak diketahui';
$sender = str_replace("@s.whatsapp.net", "", $sender);
$body = $json_data['results']['body'] ?? '';
// file_put_contents(__DIR__ . "/debug_sender_body.log", date('Y-m-d H:i:s') . " Sender: $sender, Body: $body\n", FILE_APPEND);
$filtered = [
'sender' => $sender,
'body' => $body,
'apiKey' => $apiKey
];
$log_file = __DIR__ . "/" . $apiKey . ".log";
$log_entry = "[" . date('Y-m-d H:i:s') . "] Masuk: " . print_r($filtered, true);
// Pastikan kelas ResponAI ada
if (!class_exists('ResponAI')) {
file_put_contents(__DIR__ . "/error.log", date('Y-m-d H:i:s') . " Class ResponAI tidak ditemukan!\n", FILE_APPEND);
http_response_code(500);
exit("Server error: ResponAI class missing");
}
$ResAI = new ResponAI();
// Tangkap exception saat proses respon_chat
try {
$Respon = $ResAI->respon_chat($body, $sender, $apiKey);
} catch (Exception $e) {
file_put_contents(__DIR__ . "/error.log", date('Y-m-d H:i:s') . " Exception ResponAI: " . $e->getMessage() . "\n", FILE_APPEND);
http_response_code(500);
exit("Server error: gagal proses AI");
}
// file_put_contents(__DIR__ . "/step2_respon_ai.log", date('Y-m-d H:i:s') . " " . print_r($Respon, true), FILE_APPEND);
if (!empty($Respon['id']) && !empty($Respon['nomor'])) {
if (!class_exists('PesanWA')) {
file_put_contents(__DIR__ . "/error.log", date('Y-m-d H:i:s') . " Class PesanWA tidak ditemukan!\n", FILE_APPEND);
http_response_code(500);
exit("Server error: PesanWA class missing");
}
$API_WA = new PesanWA();
try {
$send_result = $API_WA->Send_Pesan($Respon['id'], 'sendMessage', array($Respon['nomor']), $Respon['respon']);
} catch (Exception $e) {
file_put_contents(__DIR__ . "/error.log", date('Y-m-d H:i:s') . " Exception Send_Pesan: " . $e->getMessage() . "\n", FILE_APPEND);
http_response_code(500);
exit("Server error: gagal kirim pesan");
}
// file_put_contents(__DIR__ . "/step3_send_pesan.log", date('Y-m-d H:i:s') . " Kirim pesan ke: {$Respon['nomor']}\nResponse Send_Pesan: " . print_r($send_result, true), FILE_APPEND);
$log_entry .= "[" . date('Y-m-d H:i:s') . "] Balasan AI: " . print_r($Respon, true) . PHP_EOL;
// file_put_contents($log_file, $log_entry, FILE_APPEND);
http_response_code(200);
exit;
} else {
// file_put_contents(__DIR__ . "/error_send_pesan.log", date('Y-m-d H:i:s') . " Gagal kirim pesan, id atau nomor kosong: " . print_r($Respon, true) . "\n", FILE_APPEND);
http_response_code(500);
echo "Gagal mengirim pesan: data tidak lengkap.";
exit;
}
} else {
http_response_code(400);
echo "Data tidak valid atau bukan pesan yang diinginkan.";
exit;
}
} catch (Throwable $t) {
// Tangkap semua error fatal / throwable
file_put_contents(__DIR__ . "/error.log", date('Y-m-d H:i:s') . " Fatal error: " . $t->getMessage() . "\n", FILE_APPEND);
http_response_code(500);
echo "Server error: " . $t->getMessage();
exit;
}