Funktionen für künstliche Intelligenz
Ermöglicht es der KI von WAzion, während der Gespräche auf deine externen APIs zuzugreifen, um Informationen abzurufen oder Aktionen in Echtzeit auszuführen.
1. Einführung
Benutzerdefinierte Funktionen ermöglichen es der WAzion-KI, während eines Gesprächs mit einem Kunden auf deine externen APIs zuzugreifen. Dadurch können Informationen in Echtzeit abgefragt oder Aktionen automatisch ausgeführt werden.
Wie funktioniert das?
- 1 Der Kunde fragt etwas (z.B. “Haben Sie das Produkt X vorrätig?“)
- 2 Die KI erkennt, dass sie externe Informationen benötigt
- 3 WAzion ruft deine API mit den notwendigen Parametern auf
- 4 Deine API antwortet mit den angeforderten Informationen
- 5 Die KI verwendet diese Informationen, um auf den Kunden zu antworten.
Typische Anwendungsfälle
- • Verfügbarkeit von Produkten/Dienstleistungen anfragen
- • Automatische Reservierungen vornehmen
- • Bestellstatus abfragen
- • Dynamische Preise abfragen
- • Kundeninformationen suchen
- • Verfügbare Zeiten überprüfen
2. JSON-Struktur
Die Funktionen werden als JSON-Array definiert. Jede Funktion hat einen Namen, eine Beschreibung und Parameter, die den aufzurufenden Endpunkt enthalten.
[
{
"name": "nombreDeLaFuncion",
"description": "Descripción clara de qué hace esta función",
"parameters": {
"type": "object",
"properties": {
"parametro1": {
"type": "string",
"description": "Descripción del parámetro"
},
"parametro2": {
"type": "number",
"description": "Otro parámetro"
},
"endpoint": {
"url": "https://tu-api.com/endpoint",
"method": "GET",
"format": "json",
"auth": {
"type": "header",
"fields": {
"Authorization": "Bearer tu-token-aqui"
}
}
}
},
"required": ["parametro1"]
}
}
]
Hauptfelder
name: Eindeutige Funktionskennzeichnungdescription: Beschreibe, wann diese Funktion verwendet wirdparameters: Definieren Sie die Parameter und den Endpunkt
Endpunktobjekt
url: Vollständige URL des Endpunkts (HTTPS)method: GET, POST, PUT, DELETE, PATCHformat: json El texto proporcionado no está en español. Por favor proporcione un texto en español para que pueda traducirlo al alemán. formauth: Authentifizierungseinstellungen
Wichtig: Die Beschreibung jeder Funktion und jedes Parameters ist entscheidend. Die KI verwendet diese Beschreibungen, um zu entscheiden, wann welche Funktion aufgerufen werden soll.
3. Arten der Authentifizierung
WAzion unterstützt 4 Arten der Authentifizierung, um deine Endpunkte zu schützen:
Header-Auth (Empfohlen)
SichererSende Anmeldeinformationen als HTTP-Header. Ideal für Bearer-Token oder API-Schlüssel.
"auth": {
"type": "header",
"fields": {
"Authorization": "Bearer tu-token-secreto",
"X-API-Key": "otra-clave-si-necesitas"
}
}
Basic Auth
HTTP-Basis-Authentifizierung mit Benutzername und Passwort (in Base64 codiert).
"auth": {
"type": "basic",
"fields": {
"username": "tu-usuario",
"password": "tu-contraseña"
}
}
Query Auth
Sendet Anmeldedaten als Parameter in der URL. Weniger sicher, aber einfach.
"auth": {
"type": "query",
"fields": {
"api_key": "tu-api-key",
"secret": "tu-secret"
}
}
// Resultado: ?api_key=tu-api-key&secret=tu-secret
Body Auth
Fügen Sie Anmeldeinformationen im Body der Anfrage ein (nur POST/PUT/PATCH).
"auth": {
"type": "body",
"fields": {
"api_key": "tu-api-key",
"token": "tu-token"
}
}
// Se añade al JSON del body junto con los parámetros
Ohne Authentifizierung
Wenn dein Endpoint keine Authentifizierung erfordert, lasse einfach das Feld “auth“ im Endpoint-Objekt weg.
4. Technische Spezifikationen
Zeitüberschreitungen
| Gesamtzeitüberschreitung | 60s |
| Verbindungszeitüberschreitung | 10s |
Wiederholungen
| Maximale Anzahl von Versuchen | 4 |
| Strategie | Exponentielles Backoff |
Wiederholungsplan
| Versuch 1 | Sofortig |
| Versuch 2 | 2s |
| Versuch 3 | 4s |
| Versuch 4 | 8s |
Gesendete HTTP-Header
| Header | Wert |
|---|---|
| Content-Type | application/json |
| Accept | application/json |
| User-Agent | WAzion-Functions/1.0 |
| + Authentifizierungsheader | Gemäß Einstellung |
HTTP-Codes, die einen erneuten Versuch auslösen
Codes ohne Wiederholungsversuch
Anforderungen an den Endpunkt
- Obrigatorisches HTTPS (gültiges SSL-Zertifikat)
- { “Respuesta“: “im gültigen JSON-Format“ }
- Content-Type: application/json in der Antwort
- Antwort in weniger als 60 Sekunden
Reservierter Parameter: Telefon
Wenn Ihre Funktion einen Parameter namens “phone“ deklariert, wird WAzion ihn automatisch mit der aktuellen Telefonnummer des Kunden im E.164-Format (z. B.: +34612345678) überschreiben. Dies stellt sicher, dass immer die richtige Telefonnummer des Kunden verwendet wird, mit dem Sie sprechen, unabhängig von dem Wert, den die KI sendet. Verwenden Sie es, um Benachrichtigungen zu senden, Anfragen zu protokollieren oder Antworten je nach Kunde zu personalisieren.
5. Praktische Beispiele
Beispiel 1: Verfügbarkeit prüfen
Ermöglicht es der KI, zu überprüfen, ob ein Produkt auf Lager verfügbar ist.
[
{
"name": "consultarDisponibilidad",
"description": "Consulta si un producto específico está disponible en stock",
"parameters": {
"type": "object",
"properties": {
"producto": {
"type": "string",
"description": "Nombre o referencia del producto a consultar"
},
"cantidad": {
"type": "number",
"description": "Cantidad deseada (opcional, por defecto 1)"
},
"endpoint": {
"url": "https://tu-tienda.com/api/stock",
"method": "GET",
"format": "json",
"auth": {
"type": "header",
"fields": {
"Authorization": "Bearer token-secreto-123"
}
}
}
},
"required": ["producto"]
}
}
]
Beispiel 2: Eine Reservierung erstellen
Ermöglicht der KI, automatisch Reservierungen in deinem System zu erstellen.
[
{
"name": "crearReserva",
"description": "Crea una reserva para el cliente en la fecha y hora indicada",
"parameters": {
"type": "object",
"properties": {
"nombre_cliente": {
"type": "string",
"description": "Nombre completo del cliente"
},
"fecha": {
"type": "string",
"description": "Fecha de la reserva en formato YYYY-MM-DD"
},
"hora": {
"type": "string",
"description": "Hora de la reserva en formato HH:MM"
},
"servicio": {
"type": "string",
"description": "Tipo de servicio a reservar"
},
"endpoint": {
"url": "https://tu-negocio.com/api/reservas",
"method": "POST",
"format": "json",
"auth": {
"type": "header",
"fields": {
"X-API-Key": "mi-api-key-secreta"
}
}
}
},
"required": ["nombre_cliente", "fecha", "hora", "servicio"]
}
}
]
Beispiel 3: Bestellstatus abfragen
Ermöglicht der KI, den Status einer Bestellung anhand ihrer Referenznummer abzufragen.
[
{
"name": "consultarPedido",
"description": "Consulta el estado de envío de un pedido por su número",
"parameters": {
"type": "object",
"properties": {
"numero_pedido": {
"type": "string",
"description": "Número de pedido o referencia"
},
"endpoint": {
"url": "https://tu-tienda.com/api/pedidos/estado",
"method": "GET",
"format": "json",
"auth": {
"type": "query",
"fields": {
"token": "mi-token-secreto"
}
}
}
},
"required": ["numero_pedido"]
}
}
]
6. Beispielcode
Beispiele, wie man Endpunkte auf deinem Server implementiert:
<?php
// Endpoint: /api/stock
header('Content-Type: application/json');
// Verificar autenticación
$authHeader = $_SERVER['HTTP_AUTHORIZATION'] ?? '';
if ($authHeader !== 'Bearer token-secreto-123') {
http_response_code(401);
echo json_encode(['error' => 'Unauthorized']);
exit;
}
// Get parameters
$producto = $_GET['producto'] ?? '';
$cantidad = intval($_GET['cantidad'] ?? 1);
// Query your database
$stock = consultarStockEnBD($producto);
// Respond
echo json_encode([
'producto' => $producto,
'disponible' => $stock >= $cantidad,
'stock_actual' => $stock,
'mensaje' => $stock >= $cantidad
? "Yes, we have $stock units available"
: "Sorry, only $stock units left"
]);
// Endpoint: /api/stock
app.get('/api/stock', (req, res) => {
// Verificar autenticación
const authHeader = req.headers.authorization;
if (authHeader !== 'Bearer token-secreto-123') {
return res.status(401).json({ error: 'Unauthorized' });
}
// Get parameters
const { producto, cantidad = 1 } = req.query;
// Query your database
const stock = consultarStockEnBD(producto);
// Respond
res.json({
producto,
disponible: stock >= cantidad,
stock_actual: stock,
mensaje: stock >= cantidad
? `Yes, we have ${stock} units available`
: `Sorry, only ${stock} units left`
});
});
# Endpoint: /api/stock
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/api/stock', methods=['GET'])
def consultar_stock():
# Verificar autenticación
auth_header = request.headers.get('Authorization', '')
if auth_header != 'Bearer token-secreto-123':
return jsonify({'error': 'Unauthorized'}), 401
# Get parameters
producto = request.args.get('producto', '')
cantidad = int(request.args.get('cantidad', 1))
# Query your database
stock = consultar_stock_en_bd(producto)
# Respond
return jsonify({
'producto': producto,
'disponible': stock >= cantidad,
'stock_actual': stock,
'mensaje': f'Yes, we have {stock} units available'
if stock >= cantidad
else f'Sorry, only {stock} units left'
})
Änderungsverlauf
Keine kürzlichen Änderungen in dieser Dokumentation.