> For the complete documentation index, see [llms.txt](https://docs.chatcaptain.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chatcaptain.com/bot-verwalten/app-marktplatz/app-erstellung-und-struktur/module.md).

# Module

## Was sind Module?

Module können Aktionen bzw. Anfragen im Flow ausführen. Diese Module sind als Schritte im Bot Builder vorhanden und können dort verwendet werden.&#x20;

<figure><img src="/files/DyNw49EHTl5eIXwWDh6n" alt=""><figcaption><p>Übersicht der App-Module</p></figcaption></figure>

## HTTP-Abfrage erstellen und Verbindung auswählen

Diese Abfrage wird beim Ausführen des Moduls/der Funktion an den gewünschten Endpunkt geschickt. Zusätzlich muss wie bereits in [Verbindungen](/bot-verwalten/app-marktplatz/app-erstellung-und-struktur/verbindungen.md)erwähnt wurde eine Verbindung für diese App-Modul ausgewählt werden.&#x20;

<figure><img src="/files/Enfzj0qP1BnaT7hVQVRf" alt=""><figcaption><p>HTTP-Abfrage und Auswahl der entsprechenden Verbindung</p></figcaption></figure>

### Erklärung Bestandteile HTTP-Abfrage

* `url`: Erweiterung der [Basis-URL](/bot-verwalten/app-marktplatz/app-erstellung-und-struktur/basisdaten.md) um den gewünschten Endpunkt
* `headers`:
  * `Content-Type`: Festlegung auf JSON-Format des Anforderungs-Headers und der Antwort
  * meist wird hier noch für die Autorisierung "`authorization"` ein Token oder API-Key mit dem  Platzhalter `{{parameters.apiKey}}`&#x20;
* `method`: Methode des Aufrufes
* `qs`:  Sammlung von Parametern in Form eines Query-Strings (`qs`)&#x20;

### Vollständige URL der HTTP-Abfrage

**Die zusammengesetzte vollständige URL diese HTTP-Aufrufes würde wie folgt lauten:**

```
https://api.chucknorris.io/jokes/random?category={category}
```

### Beispiel - HTTP-Abfrage mit Querystrings

In der HTTP-Abfrage wird zusätzlich eine Kategorie als Query-String übergeben.

```
{
  "url": "{{baseUrl}}/random",
  "method": "GET",
  "headers": {
    "Content-Type": "application/json"
  },
  "qs": {
    "category": "{{parameters.category}}"
  }
}
```

### **Dummy - POST-HTTP-Abfrage**&#x20;

Hierbei handelt es sich um ein Dummy POST-HTTP-Abfrage, die nicht in der "[Chuck Norrs Jokes Api](https://api.chucknorris.io/)" erreichbar ist und nur für Veranschaulichungszwecke verwendet wird

```
{
  "url": "{{baseUrl}}/random/createJoke",
  "method": "POST",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "category": "{{parameters.category}}",
    "value": "{{parameters.value}}"
  }
}
```

Es wird ein Witz mit der Kategorie ("`category`") und dem Witzetext ("`value`") aus dem Body erstellt. Es müssen dementsprechend im Teil [#festlegen-der-parameter](#festlegen-der-parameter "mention") diese Parameter angelegt werden.

## Festlegen der Parameter

Die Parameter stellen notwendigen Informationen für die HTTP-Abfrage des Moduls dar. Diese Parameter müssen im Bot Builder beim Ausführen eines Moduls mitgeben werden.

<figure><img src="/files/d6OzrcKER5zwW3w5J9cR" alt=""><figcaption><p>Festlegen der Parameter</p></figcaption></figure>

### Erklärung Bestandteile Parameter

* `name`: Eindeutiger Namen des Parameters&#x20;
* `type`:  Datentyp (`text`, `number` oder `boolean`)
* `label`:  Label, das im Bot Builder im entsprechenden App-Modul aufgeführt ist
  * das Feld im App-Modul für die Eingabe der Daten trägt diesen Namen
* `required`: Gibt an, ob der Parameter erforderlich ist (`true` oder `false`)

### Beispiel - Parameter

```
[
  {
    "name": "category",
    "type": "text",
    "label": "Kategorie",
    "required": true
  }
]
```

## Definition des Outputs&#x20;

Hier werden Informationen zum Aufbau der erwarten Antwort des Endpunktes festgelegt. Der Aufbau der Antwort muss exakt definiert werden, da sonst Werte nicht weiter verarbeitet werden können. Die aufgelisteten Objekte sind Variablen der Konversation, die nach erfolgreichem Ausführen des App-Moduls entsprechend gesetzt werden. Mit diesen Variablen kann nun im Flow weitergearbeitet werden.

<figure><img src="/files/7ZLutopkJXBYYJQNaGsI" alt=""><figcaption><p>Definition des Outputs</p></figcaption></figure>

### Erklärung Bestandteile Output

* `name`: Eindeutiger Name des Ouput-Wertes
  * diese Name muss exakt dem Namen in der HTTP-Antwort entsprechen
* `type`:  Datentyp (`text`, `number` oder `boolean`)
* `label`:  Name der Variablen&#x20;
  * unter diesem Namen ist die Variablen nach ausführen des App-Moduls verfügbar
  * Es besteht auch die Möglichkeit verschachtele JSON-Datenstrukturen bzw. Objekte mit dem obigen Aufbau darzustellen. Siehe [#dummy-beispiel-output-definition-verschachtelte-json-datenstruktur](#dummy-beispiel-output-definition-verschachtelte-json-datenstruktur "mention")

### Beispiel - Output-Definition (flache JSON-Datenstruktur)

```
[
  {
    "name": "id",
    "type": "text",
    "label": "ID"
  },
  {
    "name": "value",
    "type": "text",
    "label": "Witz"
  }
]
```

### Dummy - Beispiel Output-Definition (verschachtelte JSON-Datenstruktur)

Folgend wird ein Beispiel für die Output-Definition einer Schnittstelle in einem verschachtelter JSON-Datenstruktur dargestellt. Hierbei handelt es sich um eine Dummy Output-Definition, die nicht zu einem Endpunkt der "[Chuck Norrs Jokes Api](https://api.chucknorris.io/)" gehört und nur für Veranschaulichungszwecke verwendet wird. Diese Output-Definition entspricht dem [Voraussetzung der eigenen Schnittstelle/API](/bot-verwalten/app-marktplatz/voraussetzung-der-eigenen-schnittstelle-api.md#beispiel-verschachtelte-json-datenstruktur)

```
[
  {
    "name": "id",
    "type": "number",
    "label": "Id"
  },
  {
    "name": "email",
    "type": "text",
    "label": "E-Mail"
  },
  {
    "name": "username",
    "type": "text",
    "label": "Username"
  },
  {
    "name": "address",
    "type": "object",
    "label": "Adresse",
    "spec": [
      {
        "name": "city",
        "type": "text",
        "label": "City"
      },
      {
        "name": "street",
        "type": "number",
        "label": "Strasse"
      },
      {
        "name": "number",
        "type": "number",
        "label": "Number"
      },
      {
        "name": "zipcode",
        "type": "number",
        "label": "Postleitzahl"
      }
    ]
  }
]
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.chatcaptain.com/bot-verwalten/app-marktplatz/app-erstellung-und-struktur/module.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
