Skip to main content

Weiteren Status in Zammad einfügen

Einleitung

Bei der Installation und Konfiguration eines Zammad-Servers kommt einem vielleicht der Wunsch, einen weiteren Status einzufügen, um Tickets besser kategorisieren zu können. Wie wir so einen Status einfügen können, erkläre ich in den nachfolgenden Schritten:

Status in Zammad einfügen

Wenn wir den Status erstellen möchten, müssen wir im ersten Schritt schauen, welche ID wir unserem Status vergeben. Dazu fragen wir die API des Zammad-Servers ab. Dazu geben wir den folgenden Link im Browser ein:

https://<URL des Zammad-Servers>/api/v1/ticket_states

Dort schauen wir, welche IDs alle vergeben sind. In einer Standard-Installation sind die IDs 1 - 7 schon vergeben. Unser Status erhält dann die ID 8.

Die Informationen zum Status müssen wir für Zammad im JSON-Format definieren. 

{
	"id": 8,
	"state_type_id": 5,
	"name": "in Arbeit",
	"next_state_id": null,
	"ignore_escalation": true,
	"default_create": false,
	"default_follow_up": false,
	"note": "in Arbeit",
	"active": true
}

Diese Daten fügen wir dann in dem folgenden Befehl ein, um die Daten an den Zammad-Server zu übermitteln. 

# Mit Zertifikatsüberprüfung
curl -u admin:<Kennwort> -H "Content-Type: application/json" -X POST -d '{"id": 8, "state_type_id": 5, "name": "in Arbeit", "next_state_id": null, "ignore_escalation": false, "default_create": false, "default_follow_up": false, "note": "in Arbeit", "active": true }' https://<URL Zammad-Server>/api/v1/ticket_states

# Ohne Zertifikatsüberprüfung
curl -k -u admin:<Kennwort> -H "Content-Type: application/json" -X POST -d '{"id": 8, "state_type_id": 5, "name": "in Arbeit", "next_state_id": null, "ignore_escalation": false, "default_create": false, "default_follow_up": false, "note": "in Arbeit", "active": true }' https://<URL Zammad-Server>/api/v1/ticket_states

Jetzt sind die Einträge in der Datenbank von Zammad eingetragen. Jetzt im letzten Schritt müssen wir die Einträge noch für die Weboberfläche verfügbar machen. 

Dazu müssen wir die Rails-Shell von Zammad in unserer Terminal-Sitzung mit dem Zammad-Server öffnen.

zammad run rails c

Dort geben wir den folgenden Befehl ein:

ObjectManager::Attribute.add(
  force: true,
  object: 'Ticket',
  name: 'state_id',
  display: 'State',
  data_type: 'select',
  data_option: {
    relation: 'TicketState',
    nulloption: true,
    multiple: false,
    null: false,
    default: Ticket::State.find_by(default_follow_up: true).id,
    translate: true,
    filter: Ticket::State.by_category(:viewable).pluck(:id),
  },
  editable: false,
  active: true,
  screens: {
    create_middle: {
      'ticket.agent' => {
        null: false,
        item_class: 'column',
        filter: Ticket::State.by_category(:viewable_agent_new).pluck(:id),
      },
      'ticket.customer' => {
        item_class: 'column',
        nulloption: false,
        null: true,
        filter: Ticket::State.by_category(:viewable_customer_new).pluck(:id),
        default: Ticket::State.find_by(default_create: true).id,
      },
    },
    edit: {
      'ticket.agent' => {
        nulloption: false,
        null: false,
        filter: Ticket::State.by_category(:viewable_agent_edit).pluck(:id),
      },
      'ticket.customer' => {
        nulloption: false,
        null: true,
        filter: Ticket::State.by_category(:viewable_customer_edit).pluck(:id),
        default: Ticket::State.find_by(default_follow_up: true).id,
      },
    },
  },
  to_create: false,
  to_migrate: false,
  to_delete: false,
  position: 40,
)

Jetzt melden wir uns in Zammad neu an, und der neue Status sollte jetzt auswählbar sein.