Skip to content

Auf Befehle antworten

Befehle sind Aktionen, die das iorder-System vom Client ausführen lässt. Sie treffen zusammen mit Bestellungen in der GET /orders/location-Antwort ein. Im Gegensatz zu Bestellungen erfordern Befehle eine Antwort vom Client.

Wie Befehle eintreffen

Befehle werden vom Polling-Endpunkt GET /orders/location als ExternalOrder-Objekte zurückgegeben, bei denen isCommand() true zurückgibt. Sie werden anhand dieser Felder von regulären Bestellungen unterschieden:

  • readTableState: true — Aktuellen Status eines Tisches lesen
  • moveTableTo: <int> — Bestellung auf einen anderen Tisch verschieben
  • exportMainData: true — Menüdaten exportieren oder synchronisieren
  • paymentNumber: <int> — Eine Rechnungsanforderung verarbeiten

Das Feld number des Befehls ist die Befehls-ID (id aus der Command-Entität). Verwenden Sie diese ID beim Senden von Antworten.

Endpunkte

  1. POST /commands/{id}/response — Antwort auf einen bestimmten Befehl senden

1. Auf einen Befehl antworten

text
POST https://{host}/commands/{commandId}/response

Pfadparameter:

ParameterTypBeschreibung
commandIdlongDie Befehls-ID (aus dem Feld number)

Header:

HeaderErforderlichBeschreibung
api_keyJaAPI-Schlüssel des Service-Geräts
Content-TypeJatext/plain

Request-Body: Zeichenkette im Klartext mit den Antwortdaten. Der Inhalt hängt vom Befehlstyp ab:

BefehlstypAntwortinhalt
readTableStateJSON-Zeichenkette, die den aktuellen Tischstatus darstellt (z. B. {"tableNumber":12,"occupied":true,"orders":[12345]})
FETCH_REMOTE_MENUJSON-Zeichenkette mit Menüdaten

Antwort: 200 OK mit leerem Body.

Curl-Beispiel: Erfolg

bash
curl -i -X POST \
  -H "api_key: abc123-def456-ghi789" \
  -H "Content-Type: text/plain" \
  -d '{"tableNumber":12,"occupied":true,"orders":[12345,12346]}' \
  "https://{host}/commands/99/response"

Antwort:

http
HTTP/1.1 200 OK

Curl-Beispiel: Befehl bereits abgeschlossen

Wenn der Befehl bereits verarbeitet wurde:

bash
curl -i -X POST \
  -H "api_key: abc123-def456-ghi789" \
  -H "Content-Type: text/plain" \
  -d 'response-data' \
  "https://{host}/commands/99/response"

Antwort:

http
HTTP/1.1 400 Bad Request
Content-Type: text/plain

Command already completed.

Curl-Beispiel: Befehl nicht gefunden

bash
curl -i -X POST \
  -H "api_key: abc123-def456-ghi789" \
  -H "Content-Type: text/plain" \
  -d 'response-data' \
  "https://{host}/commands/99999/response"

Antwort:

http
HTTP/1.1 404 Not Found

Vollständiger Befehlsverarbeitungsablauf

Wenn Ihr Client GET /orders/location abfragt und ein Element erhält, bei dem isCommand() true zurückgibt:

  1. Identifizieren Sie den Befehlstyp, indem Sie prüfen, welches Feld nicht null ist:

    • readTableState: true — Es ist ein Tischstatus lesen Befehl
    • moveTableTo: <int> — Es ist ein Tisch verschieben Befehl
    • exportMainData: true — Es ist ein Daten exportieren / Remote-Menü abrufen Befehl
    • paymentNumber: <int> — Es ist ein Rechnung anfordern Befehl
  2. Verarbeiten Sie den Befehl entsprechend seinem Typ:

    • Tischstatus lesen: Fragen Sie Ihr lokales System nach dem aktuellen Tischstatus ab und senden Sie das Ergebnis an /commands/{commandId}/response.
    • Tisch verschieben: Verschieben Sie die Bestelldaten in Ihrem System auf den angegebenen Tisch.
    • Daten exportieren / Remote-Menü abrufen: Exportieren Sie Ihre Menüdaten. Der Server verwendet diese, um Menüelemente mit externen Systemen zu synchronisieren.
    • Rechnung anfordern: Dieser Befehl wird über Polling empfangen und stellt eine Kundenrechnungsanforderung dar. Wenn er über Polling empfangen wird, verarbeiten Sie die Zahlung in Ihrem System.
  3. Senden Sie die Antwort über POST /commands/{commandId}/response für Befehle, die eine Antwort benötigen (Tischstatus lesen, Remote-Menü abrufen).

Befehlsobjekt-Schema

Wenn von der API zurückgegeben, hat das Command-Objekt diese Felder:

FeldTypBeschreibung
idlongBefehls-ID
commandTypestringBefehlstyp (ASK_FOR_BILL, READ_TABLE_STATE, FETCH_REMOTE_MENU)
orderStatestringAktueller Status (NEW oder COMPLETED)
jsonstringPayload als rohe JSON-Zeichenkette. Inhalt hängt vom Befehlstyp ab
createdstring (ISO datetime)Zeitpunkt der Befehlserstellung
locationNamestringStandort, zu dem der Befehl gehört
jsonResponsestring oder nullVom Client nach der Verarbeitung gesetzte Antwort
configurationNamestring oder nullKonfigurationsname (für FETCH_REMOTE_MENU-Befehle)

Nächste Schritte