hwkdo/intranet-app-tickets 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

hwkdo/intranet-app-tickets

最新稳定版本:v0.4.2

Composer 安装命令:

composer require hwkdo/intranet-app-tickets

包简介

Generated app: Tickets

README 文档

README

Zammad-Integration für das Intranet: Benutzer können ihre Support-Tickets einsehen und beantworten. Agenten arbeiten weiterhin im Zammad-UI.

Installation

composer require hwkdo/intranet-app-tickets
php artisan migrate
php artisan intranet-app:sync-settings
php artisan intranet-app:sync-permissions --all

Umgebungsvariablen

ZAMMAD_URL=https://ticket.hwkdo.com
ZAMMAD_HTTP_TOKEN=your-api-token
WEBHOOK_ZAMMAD_SECRET=your-webhook-hmac-secret

Optional:

ZAMMAD_DEBUG=false
INTRANET_APP_TICKETS_USER_MODEL=App\Models\User

Zammad Webhook einrichten

  1. In Zammad unter Verwalten → Webhooks einen neuen Webhook anlegen.
  2. Endpoint: {APP_URL}/webhooks/zammad
  3. HMAC-Token setzen (gleicher Wert wie WEBHOOK_ZAMMAD_SECRET).
  4. Unter Verwalten → Trigger Webhook-Trigger anlegen, z. B.:
    • Agent-Antworten: Artikel erstellt, Sichtbarkeit = öffentlich, Sender = Agent
    • Statusänderungen: Ticket aktualisiert, z. B. Status = geschlossen (ohne Artikel im Payload)
    • Aktion jeweils: Webhook auslösen

Optional INTRANET_APP_TICKETS_WEBHOOK_NOTIFY_STATES=closed,open setzen, um nur bestimmte Status zu benachrichtigen (Standard: alle).

Webhook-Debugging

Eingegangene Webhooks (gespeichert nach gültiger Signatur) unter:

  • /apps/tickets/webhooks (Permission manage-app-tickets)

Zusätzlich in der allgemeinen Admin-Webhook-Übersicht (/admin/webhooks), sofern der Eintrag gespeichert wurde.

Wichtig: Der Webhook-Job läuft über die Queue (QUEUE_CONNECTION=redis). Horizon bzw. Queue-Worker müssen laufen, sonst bleibt der Eintrag in webhook_calls ohne Benutzer-Benachrichtigung.

Ticket-Kategorien einrichten

Nach der Migration die Standard-Kategorien seeden:

php artisan intranet-app-tickets:seed-categories

Im Admin-Bereich (/apps/tickets/admin → Tab Kategorien) pro Kategorie den Übertragungsweg konfigurieren:

  • Zammad API: Zammad-Gruppe aus Dropdown wählen (Gruppen werden per API geladen)
  • E-Mail: Zieladresse eintragen (Standard für Moodle)
  • Optional: Genehmigung aktivieren und Genehmigungs-Rollen zuweisen

Funktionen

  • Ticketliste (offen / geschlossen / alle) per Zammad API + eigene Anfragen („Zur Genehmigung“)
  • Tickets erstellen mit kategoriespezifischen Flux-Formularen
  • Genehmigungsworkflow mit Rollen pro Kategorie
  • Übertragung per Zammad API oder E-Mail (konfigurierbar pro Kategorie)
  • Ticketdetail mit öffentlichem Verlauf und Bearbeiter-Info
  • Ticket-Erstellung und Antworten als Kunde (setOnBehalfOfUser)
  • Admin: Zammad-Intranet-Rolle, Gruppenrechte und Benutzerübersicht (/apps/tickets/admin → Tab Zammad-Benutzer)
  • Automatische Zammad-Benutzeranlage beim ersten Ticket (Intranet-Daten → Zammad, inkl. Intranet-Rolle)
  • Anhang-Download über die App
  • Webhook-Benachrichtigungen bei Agent-Antworten (Reverb + Task-Badge)
  • Webhook-Übersicht mit Verarbeitungsstatus und Live-Updates per Reverb/Echo

Zammad API-Token (Berechtigungen)

Funktion Zammad-Permission
Tickets erstellen / lesen ticket.agent
Benutzer automatisch anlegen + Rolle zuweisen admin.user
Gruppenrechte der Intranet-Rolle pflegen admin.role

Voraussetzung für Auto-Provisioning: Im Admin-Tab Zammad-Benutzer muss eine Intranet-Benutzer-Rolle konfiguriert sein (inkl. Gruppenrechte für die Ticket-Kategorien).

Berechtigungen

  • see-app-tickets — App nutzen
  • manage-app-tickets — Admin-Bereich

Tests

Alle Tests liegen im Package unter tests/ und werden über die Hauptanwendung ausgeführt:

php artisan test --compact packages/intranet-app-tickets/tests

Einzelne Suite:

php artisan test --compact packages/intranet-app-tickets/tests/Unit
php artisan test --compact packages/intranet-app-tickets/tests/Feature

统计信息

  • 总下载量: 2
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 7
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-06-11