up
This commit is contained in:
@@ -337,16 +337,30 @@ class WhatsAppService
|
||||
|
||||
/**
|
||||
* Enviar audio
|
||||
* @param string $to Número de destinatario
|
||||
* @param string $audioUrl URL del audio
|
||||
* @param bool $skipAutoSave Omitir guardado automático
|
||||
* @param bool $isVoice True para enviar como nota de voz (requiere .ogg con códec OPUS)
|
||||
*/
|
||||
public function sendAudioMessage($to, $audioUrl, $skipAutoSave = false)
|
||||
public function sendAudioMessage($to, $audioUrl, $skipAutoSave = false, $isVoice = false)
|
||||
{
|
||||
$audioData = [
|
||||
'link' => $audioUrl
|
||||
];
|
||||
|
||||
// Si es nota de voz, agregar parámetro ptt (push-to-talk)
|
||||
// Requiere archivo .ogg con códec OPUS
|
||||
if ($isVoice) {
|
||||
// NOTA: WhatsApp Cloud API no tiene parámetro 'ptt' directo para links.
|
||||
// Para notas de voz se recomienda subir el archivo y usar sendMediaById con is_voice.
|
||||
error_log('sendAudioMessage: is_voice=true pero usando link. Para notas de voz, subir archivo primero.');
|
||||
}
|
||||
|
||||
$data = [
|
||||
'messaging_product' => 'whatsapp',
|
||||
'to' => $this->formatPhoneNumber($to),
|
||||
'type' => 'audio',
|
||||
'audio' => [
|
||||
'link' => $audioUrl
|
||||
]
|
||||
'audio' => $audioData
|
||||
];
|
||||
|
||||
if ($skipAutoSave) {
|
||||
@@ -434,8 +448,15 @@ class WhatsAppService
|
||||
|
||||
/**
|
||||
* Enviar mensaje usando media_id (archivo ya subido a WhatsApp)
|
||||
* @param string $to Número de destinatario
|
||||
* @param string $mediaId ID del archivo en WhatsApp
|
||||
* @param string $mediaType Tipo: image, video, audio, document
|
||||
* @param string|null $caption Texto opcional (no aplica para audio)
|
||||
* @param string|null $filename Nombre archivo (solo document)
|
||||
* @param bool $skipAutoSave Omitir guardado automático
|
||||
* @param bool $isVoice Para audio: true = nota de voz con onda verde, false = audio normal
|
||||
*/
|
||||
public function sendMediaById($to, $mediaId, $mediaType, $caption = null, $filename = null, $skipAutoSave = false)
|
||||
public function sendMediaById($to, $mediaId, $mediaType, $caption = null, $filename = null, $skipAutoSave = false, $isVoice = false)
|
||||
{
|
||||
$data = [
|
||||
'messaging_product' => 'whatsapp',
|
||||
@@ -453,6 +474,15 @@ class WhatsAppService
|
||||
$mediaData['filename'] = $filename;
|
||||
}
|
||||
|
||||
// Para audio: agregar parámetro 'ptt' (push-to-talk) si es nota de voz
|
||||
// Esto hace que aparezca con la onda verde característica de WhatsApp
|
||||
if ($mediaType === 'audio' && $isVoice) {
|
||||
// Según documentación de Meta: "ptt": true para mensajes de voz
|
||||
// El archivo debe ser .ogg con códec OPUS
|
||||
$mediaData['ptt'] = true;
|
||||
error_log('sendMediaById: Enviando como nota de voz (ptt=true)');
|
||||
}
|
||||
|
||||
$data[$mediaType] = $mediaData;
|
||||
|
||||
// Marcar para evitar guardado automático si se solicita
|
||||
|
||||
Reference in New Issue
Block a user