HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/qas.sports-crowd.com/app/Services/WhatsAppService.php
<?php

namespace App\Services;

use App\IntegrationProvider;
use Illuminate\Support\Facades\Http;

class WhatsAppService
{
    protected $token;
    protected $phoneId;
    protected $url;

    public function __construct()
    {
        $provider = IntegrationProvider::where('alias', 'whatsapp-api')
            ->where('active', 1)
            ->first();

        if (!$provider) {
            throw new \Exception("No hay configuración activa para WhatsApp (whatsapp-api).");
        }

        $this->token = $provider->token;
        $this->phoneId = $provider->nit;
        $this->url = $provider->endpoint;
    }

    public function sendMessageDocument($to, $link, $template = 'saludo_pedido', $language = 'es_MX')
    {
        $response = Http::withToken($this->token)->post(
            "{$this->url}/{$this->phoneId}/messages",
            [
                "messaging_product" => "whatsapp",
                "to"                => $to,
                "type"              => "template",
                "template"          => [
                    "name"          => $template,
                    "language"      => ["code" => $language],
                    "components"    => [
                        [
                            "type" => "header",
                            "parameters" => [
                                [
                                    "type" => "document",
                                    "document" => [
                                        "link" => $link,
                                        "filename" => "Boletas.pdf"
                                    ]
                                ]
                            ]
                        ],
                    ]
                ]
            ]
        );

        return $response->json();
    }
}