PHPackages                             lukehowland/helpdeskwidget - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. lukehowland/helpdeskwidget

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

lukehowland/helpdeskwidget
==========================

Widget embebible para integrar Helpdesk en proyectos Laravel externos

2.0.0(5mo ago)1156MITPHPPHP ^8.2

Since Dec 11Pushed 5mo agoCompare

[ Source](https://github.com/Lukehowland/helpdeskwidget)[ Packagist](https://packagist.org/packages/lukehowland/helpdeskwidget)[ RSS](/packages/lukehowland-helpdeskwidget/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (3)Versions (3)Used By (0)

🎫 Helpdesk Widget para Laravel
==============================

[](#-helpdesk-widget-para-laravel)

Widget embebible para integrar el sistema de tickets de Helpdesk en proyectos Laravel externos.

✨ Características
-----------------

[](#-características)

- 🔐 Autenticación automática/manual con Helpdesk
- 📱 Widget responsive embebido en iframe
- 🎨 Compatible con AdminLTE v3
- 🔧 Comando de instalación incluido
- 📐 Altura dinámica via postMessage

📋 Requisitos
------------

[](#-requisitos)

- PHP 8.2+
- Laravel 11.x o 12.x
- Guzzle HTTP Client

🚀 Instalación
-------------

[](#-instalación)

### 1. Instalar el paquete

[](#1-instalar-el-paquete)

```
composer require lukehowland/helpdeskwidget
```

### 2. Ejecutar el instalador

[](#2-ejecutar-el-instalador)

```
php artisan helpdeskwidget:install
```

Este comando:

- ✅ Publica `config/helpdeskwidget.php`
- ✅ Crea `resources/views/helpdesk.blade.php`
- ✅ Agrega ruta `/helpdesk` a `routes/web.php`
- ✅ Muestra instrucciones para AdminLTE

### 3. Configurar variables de entorno

[](#3-configurar-variables-de-entorno)

Añade estas líneas a tu archivo `.env`:

```
HELPDESK_API_URL=https://proyecto-de-ultimo-minuto.online
HELPDESK_API_KEY=tu-api-key-aqui
```

> **Nota**: El API Key es proporcionado por el administrador de Helpdesk cuando registra tu empresa.

### 4. Limpiar caché

[](#4-limpiar-caché)

```
php artisan config:clear
```

### 5. ¡Listo!

[](#5-listo)

Visita `/helpdesk` en tu navegador.

---

🛠️ Opciones del Instalador
--------------------------

[](#️-opciones-del-instalador)

```
# Instalación básica
php artisan helpdeskwidget:install

# Sobrescribir archivos existentes
php artisan helpdeskwidget:install --force

# No agregar ruta automáticamente
php artisan helpdeskwidget:install --skip-route

# No mostrar instrucciones de AdminLTE
php artisan helpdeskwidget:install --skip-adminlte
```

---

📦 Uso Manual (sin instalador)
-----------------------------

[](#-uso-manual-sin-instalador)

### En cualquier vista Blade

[](#en-cualquier-vista-blade)

```
{{-- Uso básico --}}

{{-- Con parámetros personalizados --}}

```

### Publicar configuración manualmente

[](#publicar-configuración-manualmente)

```
php artisan vendor:publish --tag=helpdeskwidget-config
```

---

🎨 Integración con AdminLTE v3
-----------------------------

[](#-integración-con-adminlte-v3)

El instalador crea automáticamente la vista y la ruta, pero debes agregar manualmente el enlace en el sidebar.

### Paso 1: Agregar "Centro de Soporte" al sidebar

[](#paso-1-agregar-centro-de-soporte-al-sidebar)

Abre `config/adminlte.php` y busca el array `'menu' => [`. Al final del array (antes del cierre `]`), agrega:

```
// Encabezado de sección
['header' => 'SOPORTE'],

// Elemento del menú
[
    'text' => 'Centro de Soporte',      // Texto que se muestra en el sidebar
    'url' => 'helpdesk',                // Ruta creada por el instalador
    'icon' => 'fas fa-fw fa-headset',   // Icono FontAwesome
],
```

### Paso 2: Limpiar caché

[](#paso-2-limpiar-caché)

```
php artisan config:clear
```

¡Listo! Ahora verás "Centro de Soporte" en el sidebar de AdminLTE.

---

⚙️ Configuración Avanzada
-------------------------

[](#️-configuración-avanzada)

Archivo: `config/helpdeskwidget.php`

```
return [
    // URL del servidor Helpdesk
    'api_url' => env('HELPDESK_API_URL', 'https://helpdesk.example.com'),

    // API Key de tu empresa
    'api_key' => env('HELPDESK_API_KEY', ''),

    // Dimensiones del iframe
    'iframe_height' => env('HELPDESK_WIDGET_HEIGHT', '600px'),
    'iframe_width' => env('HELPDESK_WIDGET_WIDTH', '100%'),
    'iframe_border' => env('HELPDESK_WIDGET_BORDER', false),

    // Cache de tokens (en minutos)
    'token_cache_ttl' => env('HELPDESK_TOKEN_CACHE_TTL', 55),

    // Debug mode
    'debug' => env('HELPDESK_DEBUG', false),
];
```

---

🔄 Flujo de Autenticación
------------------------

[](#-flujo-de-autenticación)

```
┌─────────────────┐     ┌──────────────────┐     ┌─────────────────┐
│  Tu Proyecto    │────▶│  Widget Package  │────▶│    Helpdesk     │
│  (auth user)    │     │  (API calls)     │     │   (API + View)  │
└─────────────────┘     └──────────────────┘     └─────────────────┘

```

1. **Usuario detectado**: Lee `auth()->user()` para obtener email y nombre
2. **Verificación**: Consulta a Helpdesk si el usuario ya tiene cuenta
3. **Login automático**: Si existe, obtiene token JWT
4. **Registro**: Si no existe, muestra formulario para crear contraseña
5. **Widget**: Muestra la interfaz de tickets

---

🔧 Personalización del Modelo User
---------------------------------

[](#-personalización-del-modelo-user)

El componente busca automáticamente estos atributos en tu modelo User:

```
// Intentos en orden:
$user->first_name
$user->name        // Separa por espacios
$user->profile->first_name  // Si existe relación
```

Si tu modelo tiene atributos diferentes, puedes extender el componente:

```
// app/View/Components/CustomHelpdeskWidget.php
namespace App\View\Components;

use Lukehowland\HelpdeskWidget\View\Components\HelpdeskWidget;

class CustomHelpdeskWidget extends HelpdeskWidget
{
    protected function getUserFirstName($user): string
    {
        return $user->primer_nombre; // Tu atributo personalizado
    }

    protected function getUserLastName($user): string
    {
        return $user->apellido;
    }
}
```

---

🐛 Solución de Problemas
-----------------------

[](#-solución-de-problemas)

### "API Key inválida"

[](#api-key-inválida)

- Verifica que `HELPDESK_API_KEY` esté en tu `.env`
- Confirma que tu empresa esté registrada en Helpdesk

### "Widget no carga"

[](#widget-no-carga)

- Ejecuta `php artisan config:clear`
- Verifica la URL en `HELPDESK_API_URL`

### "Error de CORS"

[](#error-de-cors)

- El servidor Helpdesk debe permitir tu dominio
- Contacta al administrador de Helpdesk

### "X-Frame-Options error"

[](#x-frame-options-error)

- El servidor Helpdesk necesita permitir iframes
- Esto se configura en el servidor, no en tu proyecto

---

📄 Licencia
----------

[](#-licencia)

MIT License - Ver [LICENSE](LICENSE)

---

🤝 Soporte
---------

[](#-soporte)

- 📧 Email:
- 🐛 Issues: [GitHub Issues](https://github.com/Lukehowland/helpdeskwidget/issues)

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance72

Regular maintenance activity

Popularity12

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

2

Last Release

157d ago

Major Versions

v1.0.0 → 2.0.02025-12-12

### Community

Maintainers

![](https://www.gravatar.com/avatar/45b5baad7720a738c294b9a3f6e00144009fcf2e2b43ad4df206a292c94a8276?d=identicon)[Lukehowland](/maintainers/Lukehowland)

---

Top Contributors

[![Lukehowland](https://avatars.githubusercontent.com/u/122487510?v=4)](https://github.com/Lukehowland "Lukehowland (3 commits)")

---

Tags

laravelwidgetAdminLTEsupportticketshelpdesk

### Embed Badge

![Health badge](/badges/lukehowland-helpdeskwidget/health.svg)

```
[![Health](https://phpackages.com/badges/lukehowland-helpdeskwidget/health.svg)](https://phpackages.com/packages/lukehowland-helpdeskwidget)
```

###  Alternatives

[glhd/conveyor-belt

14797.0k](/packages/glhd-conveyor-belt)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)[binshops/laravel-ticket

A simple ticketing system for Laravel 5.1 – 5.8 and 6.\* - 7.\* - 8.\* - 9.\* - 10.\* -which integrates smoothly with Laravel default users and auth system

261.0k](/packages/binshops-laravel-ticket)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
