> ## Documentation Index
> Fetch the complete documentation index at: https://dokumentation.websale.de/llms.txt
> Use this file to discover all available pages before exploring further.

# ASSE- (Asynchrone Datenübermittlung)

> Die beiden Tags für Asynchronous-Server-Side-Events: ein Ereignis aus dem Template auslösen und prüfen, ob dabei ein Fehler aufgetreten ist.

Mit einem Asynchronous-Server-Side-Event schickt der Shop Daten an ein fremdes System, ohne auf dessen Antwort zu warten. Der Seitenaufbau läuft weiter, die Übermittlung geschieht im Hintergrund.

Im Template sind dafür nur zwei Tags nötig: `ASSE-Fire()` löst ein Ereignis aus, `ASSE-LastErrorCode` sagt, ob das geklappt hat.

Wegweiser: [Asynchronous-Server-Side-Events](https://dokumentation.websale.de/v8s/schnittstellen/marketing-seo-und-portale/ws-asse.md)

## Was beim Auslösen tatsächlich passiert

Das Tag verschickt die Daten nicht selbst. Es legt das Ereignis als Datei in einem Spool-Verzeichnis ab, und ein eigener Prozess stellt es von dort aus zu, mit Wiederholungen, falls der Empfänger nicht erreichbar ist.

Daraus folgt zweierlei für die Templatearbeit:

* Der Seitenaufbau wird nicht aufgehalten, auch wenn das Zielsystem langsam oder gar nicht antwortet.
* Ob die Übermittlung am Ende erfolgreich war, erfährt das Template nicht. `ASSE-LastErrorCode` meldet nur, ob das Ereignis überhaupt angenommen und abgelegt werden konnte.

Für eine Rückmeldung an den Besucher eignen sich diese Tags deshalb nicht. Sie sind dafür gedacht, ein anderes System zu benachrichtigen, nicht dafür, eine Antwort abzuholen.

## Voraussetzungen

Drei Dinge müssen stimmen, bevor ein Ereignis überhaupt ausgelöst werden kann:

| Voraussetzung | Wo eingestellt |
| - | - |
| Die Funktion ist für den Shop freigeschaltet | durch WEBSALE |
| Das Spool-Verzeichnis ist eingerichtet | globale Konfiguration `websale8.cfg` |
| Das Ereignis ist mit einer ID angelegt | `shop.config`, Abschnitt `<ASSE>` |

Ein Eintrag im Abschnitt `<ASSE>` legt unter anderem die ID fest, unter der das Ereignis im Template angesprochen wird, die Adresse des Empfängers, die HTTP-Methode, den Namen des Payload-Parameters, den Content-Type und die Bedingungen, unter denen eine Antwort als erfolgreich gilt.

Referenz: [Abschnitt ASSE](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/externe-dienste-und-schnittstellen.md#asse)

## Ein Ereignis auslösen

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
~ASSE-Fire(bestellung-abgeschlossen,~BASKET-OrderNumber~)~
```

Das Tag gibt selbst nichts aus. Es löst nur aus und ist deshalb ausschließlich als Einzel-Tag verwendbar, dafür in allen Templates.

| Tag | Einzel-Tag | Bereichs-Tag | negatives Bereichs-Tag | Schleifen-Tag |
| - | - | - | - | - |
| `ASSE-Fire()` | ja | – | – | – |
| `ASSE-LastErrorCode` | ja | ja | ja | – |

### ASSE-Fire()

Löst das Ereignis mit der angegebenen ID aus und übergibt ihm die angegebenen Daten.

| Parameter | Bedeutung |
| - | - |
| 1 | ID des Ereignisses aus dem Abschnitt `<ASSE>` der `shop.config` |
| 2 | Payload, also die Daten, die übermittelt werden |

Beide Parameter unterstützen Tag-in-Tag, die Daten lassen sich also aus anderen Tags zusammensetzen.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
~ASSE-Fire(bestellung-abgeschlossen,{"nummer":"~BASKET-OrderNumber~","summe":"~BASKET-OrderTotal~"})~
```

> [!WARNING]
>
> Beide Parameter sind Pflicht. Fehlt der zweite, ist das Tag ungültig und löst nichts aus. Soll kein Inhalt mitgeschickt werden, übergeben Sie ausdrücklich einen leeren Wert statt den Parameter wegzulassen.
>
> Das Tag löst bei jedem Seitenaufbau aus, an dem es steht. Klammern Sie es deshalb so ein, dass es nur im gewünschten Fall zum Zuge kommt, beispielsweise auf der Bestellbestätigungsseite nur dann, wenn tatsächlich eine Bestellung zustande gekommen ist. Ein Neuladen der Seite durch den Besucher löst das Ereignis sonst ein zweites Mal aus.

Achten Sie beim Payload auf die Zeichen, die im Tag selbst Bedeutung haben. Ein Komma im Payload trennt sonst Parameter, die gar nicht getrennt werden sollen.

## Prüfen, ob es geklappt hat

### ASSE-LastErrorCode

Gibt den Ergebniscode des zuletzt ausgelösten Ereignisses aus. Als Bereichs-Tag greift es, wenn ein Fehler aufgetreten ist.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
~ASSE-Fire(bestellung-abgeschlossen,~BASKET-OrderNumber~)~

{ASSE-LastErrorCode}
   Fehler bei der Datenübermittlung, Code: ~ASSE-LastErrorCode~
{/ASSE-LastErrorCode}

{!ASSE-LastErrorCode}
   Es ist kein Fehler aufgetreten.
{/!ASSE-LastErrorCode}
```

> [!WARNING]
>
> Als Einzel-Tag gibt `ASSE-LastErrorCode` immer eine Zahl aus, im Erfolgsfall die 0. Setzen Sie es deshalb nur innerhalb der Klammerung ein. Außerhalb steht sonst eine einsame 0 auf der Seite.

Das Tag hält immer nur das Ergebnis des zuletzt ausgelösten Ereignisses fest. Lösen Sie auf einer Seite mehrere aus, prüfen Sie jedes einzeln direkt nach seinem `ASSE-Fire()`, sonst sehen Sie nur das letzte Ergebnis.

### Die Bedeutung der Codes

Nicht jeder Fehler ist ein Fall für den WEBSALE-Support. Ein Teil davon entsteht im Template selbst.

| Code | Bedeutung | Wo ansetzen |
| - | - | - |
| 0 | kein Fehler, das Ereignis wurde abgelegt | – |
| 1 | Die Funktion ist für diesen Shop nicht freigeschaltet | WEBSALE-Ansprechpartner |
| 2 | Kein Spool-Verzeichnis in der globalen Konfiguration | WEBSALE-Ansprechpartner |
| 3 | Es wurde keine ID übergeben | Template |
| 4 | Zu dieser ID gibt es keinen Eintrag im Abschnitt `<ASSE>` | Template oder `shop.config` |

Code 4 ist der häufigste und zugleich der, den Sie selbst beheben können. Er bedeutet fast immer einen Tippfehler in der ID oder einen Eintrag, der in der `shop.config` noch fehlt. Vergleichen Sie zuerst die Schreibweise im Tag mit der im Abschnitt `<ASSE>`.

Codes jenseits dieser Liste betreffen das Schreiben der Ereignisdatei und sind ein Fall für Ihren WEBSALE-Ansprechpartner.

## Verwandte Themen

* Wegweiser: Asynchronous-Server-Side-Events
* Wegweiser: [Daten mit externen Systemen austauschen](https://dokumentation.websale.de/v8s/externe-dienste/daten-mit-externen-systemen-austauschen.md)
* Referenz: [Abschnitt ASSE](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/externe-dienste-und-schnittstellen.md#asse)


## Related topics

- [$wsAsse - Asynchrone HTTP-Events (ASSE)](https://dokumentation.websale.de/frontend/referenz/module/wsasse.md)
- [ASSE-Schnittstelle (Server-Side-Events)](https://dokumentation.websale.de/schnittstellen/asse-schnittstelle-server-side-events.md)
- [CBPOD- (Anreichern von Bestelldaten)](https://dokumentation.websale.de/v8s/referenz/tags/cbpod.md)
- [Externe Dienste und Schnittstellen](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/externe-dienste-und-schnittstellen.md)
- [easyCredit-Ratenkauf](https://dokumentation.websale.de/v8s/zahlungsarten-anlegen/easycredit-ratenkauf.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.