# Kontakt auswählen

Eine Anfrage an den Block [„Eingehender Webhook“](https://support.watbot.org/de/chatbots/blocks/developer/incoming-webhook) kommt nicht von einer Person, sondern von einem externen Dienst. Deshalb gibt der Code selbst an, zu welchem Kontakt die Anfrage gehört — mit einer der folgenden Funktionen. Es gibt sie nur in diesem Block; in den übrigen Blöcken ist der Kontakt bereits bekannt.

Gemeinsame Regeln für alle Funktionen:

- Der Kontakt wird nur unter den Kontakten dieses Bots gesucht. Gelöschte Kontakte werden nicht gefunden.
- **Liefert** `true`, wenn der Kontakt gefunden wurde, sonst `false`.
- Pro Anfrage lässt sich nur eine Funktion aufrufen, und nur einmal. Ein zweiter Aufruf — auch einer anderen Funktion — beendet den Code mit einem Fehler, und der Block antwortet mit dem Code `422`.
- Mindestens eine Funktion muss im Code stehen. Ohne sie führt der Block den Code nicht aus und antwortet mit `422`.
- Sobald der Kontakt gefunden ist, stehen dem Code seine [eingebauten Variablen](https://support.watbot.org/de/api/javascript/builtins#daten-des-kontakts), Variablen und Tags zur Verfügung. Vorher sind die Variablen des Kontakts leer, und ein Zugriff auf `id`, `name` und andere Kontaktdaten bricht den Code mit einem Fehler ab.
- Wird der Kontakt nicht gefunden oder wurde keine Funktion aufgerufen, läuft der Code zwar, speichert aber nichts: Variablen, Tags und globale Variablen werden nicht geschrieben, Nachrichten nicht gesendet, Sprung und Verbindung „Fortsetzen“ werden nicht ausgelöst. Der Block antwortet mit `200` und der Meldung `Code executed without setting contact`.

## setContactById

```js
setContactById(id)
```

Findet den Kontakt anhand seiner ID auf der Plattform.

| Parameter | Typ | Was übergeben wird |
|---|---|---|
| `id` | Zahl oder Zeichenkette aus Ziffern | ID des Kontakts. Im Szenario erhalten Sie sie mit dem [Platzhalter](https://support.watbot.org/de/chatbots/templates/data#daten-des-kontakts) `{{ id }}` |

```js
if (setContactById(request.query.contact_id)) {
    setContactVariable('zahlung', 'erhalten');
    sendMessage('Zahlung erhalten, wir beginnen mit Ihrem Strauß.');
}
```

Damit der externe Dienst die ID kennt, übergeben Sie sie vorab — zum Beispiel im Zahlungslink oder mit dem Block „HTTP-Anfrage“.

## setContactByTelegramId

```js
setContactByTelegramId(id)
```

Findet den Kontakt anhand der ID der Person in Telegram.

| Parameter | Typ | Was übergeben wird |
|---|---|---|
| `id` | Zahl oder Zeichenkette aus Ziffern | ID des Telegram-Nutzers — dieselbe wie in der Variablen `telegram_id` |

```js
var message = request.data.message;

if (message && message.from && setContactByTelegramId(message.from.id)) {
    setContactTag('schrieb_in_gruppe');
}
```

## setContactByMaxId

```js
setContactByMaxId(id)
```

Findet den Kontakt anhand der ID der Person in MAX.

| Parameter | Typ | Was übergeben wird |
|---|---|---|
| `id` | Zahl oder Zeichenkette aus Ziffern | ID des MAX-Nutzers — dieselbe wie in der Variablen `max_id` |

```js
if (setContactByMaxId(request.data.user_id)) {
    sendMessage('Der Kurier ist unterwegs.');
}
```

## setContactByVkId

```js
setContactByVkId(id)
```

Findet den Kontakt anhand der ID der Person in VK.

| Parameter | Typ | Was übergeben wird |
|---|---|---|
| `id` | Zahl oder Zeichenkette aus Ziffern | ID des VK-Nutzers — eine Zahl ohne `id` am Anfang |

```js
if (setContactByVkId(request.data.vk_user_id)) {
    setContactTag('bewertung_abgegeben');
}
```

## setContactByViberId

```js
setContactByViberId(id)
```

Findet den Kontakt anhand der ID der Person in Viber.

| Parameter | Typ | Was übergeben wird |
|---|---|---|
| `id` | Zeichenkette | ID des Viber-Nutzers — eine Zeichenkette aus Buchstaben, Ziffern und Zeichen; wandeln Sie sie nicht in eine Zahl um |

```js
if (setContactByViberId(request.data.viber_id)) {
    sendMessage('Ihre Bestellung wurde an die Lieferung übergeben.');
}
```
