This commit is contained in:
lizandrogd
2026-01-21 15:19:58 -05:00
parent ddc9a68a40
commit b709d65190
6 changed files with 171 additions and 7 deletions
+18
View File
@@ -154,6 +154,24 @@ class WhatsAppWebhook {
'reaction_emoji' => $emoji
];
} elseif (isset($message['interactive'])) {
// Interactive replies (list or button) - normalize to text so bot can process
$messageType = 'text';
if (isset($message['interactive']['list_reply']['title'])) {
$messageText = $message['interactive']['list_reply']['title'];
// If title starts with a number ("1. Option"), convert to the number for menu selection
if (preg_match('/^\s*(\d+)\b/', $messageText, $m)) {
$messageText = $m[1];
}
} elseif (isset($message['interactive']['button_reply']['title'])) {
$messageText = $message['interactive']['button_reply']['title'];
if (preg_match('/^\s*(\d+)\b/', $messageText, $m)) {
$messageText = $m[1];
}
} else {
$messageText = json_encode($message['interactive']);
}
error_log(sprintf('[webhook] interactive received title=%s mapped=%s', substr($message['interactive']['list_reply']['title'] ?? ($message['interactive']['button_reply']['title'] ?? json_encode($message['interactive'])),0,200), substr($messageText,0,200)));
} elseif (isset($message['text']) || ($message['type'] ?? '') === 'text') {
$messageText = isset($message['text']['body']) ? $message['text']['body'] : ($message['body'] ?? '');
$messageType = 'text';