Egyedi AI funkciók
Engedje meg, hogy a WAzion MI-je a beszélgetések során meghívja külső API-jait, hogy valós időben információkat kérjen le vagy műveleteket hajtson végre.
1. Bevezetés
A Testreszabott Funkciók lehetővé teszik, hogy a WAzion MI-je hívja a külső API-jaidat egy ügyféllel folytatott beszélgetés során. Ez lehetővé teszi valós idejű információk lekérését vagy automatikus műveletek végrehajtását.
Hogyan működik?
- 1 Az ügyfél kérdez valamit (pl.: “Elérhető az X termék?“)
- 2 Az MI érzékeli, hogy külső információra van szüksége
- 3 A WAzion meghívja az API-dat a szükséges paraméterekkel
- 4 Az API-ja a kért információval válaszol.
- 5 A MI ezeket az információkat használja fel a válaszadás során az ügyfélnek.
Tipikus felhasználási esetek
- • Termékek/szolgáltatások elérhetőségének lekérdezése
- • Automatikus foglalások végrehajtása
- • Rendelések állapotának lekérdezése
- • Dinamikus árak lekérdezése
- • Ügyfélinformációk keresése
- • Ellenőrizze az elérhető időpontokat
2. JSON struktúra
A funkciók JSON tömbként vannak definiálva. Minden funkciónak van egy neve, leírása és paraméterei, amelyek tartalmazzák a meghívandó végpontot.
[
{
"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"]
}
}
]
Fő mezők
name: A funkció egyedi azonosítójadescription: Írd le, mikor kell használni ezt a funkciótparameters: Határozza meg a paramétereket és a végpontot
Végpont objektum
url: Az endpoint teljes URL-je (HTTPS)method: GET, POST, PUT, DELETE, PATCHformat: json vagy formauth: Hitelesítési beállítások
Fontos: Minden függvény és paraméter leírása kulcsfontosságú. Az MI ezeket a leírásokat használja annak eldöntésére, hogy mikor hívjon meg egy-egy függvényt.
3. Hitelesítési típusok
A WAzion négyféle hitelesítést támogat az endpointok védelme érdekében:
Fejléc hitelesítés (ajánlott)
BiztonságosabbHitelesítő adatokat HTTP fejlécben küld. Ideális Bearer tokenekhez vagy API kulcsokhoz.
"auth": {
"type": "header",
"fields": {
"Authorization": "Bearer tu-token-secreto",
"X-API-Key": "otra-clave-si-necesitas"
}
}
Basic Auth
HTTP alapú alapszintű hitelesítés felhasználónévvel és jelszóval (Base64-ben kódolva).
"auth": {
"type": "basic",
"fields": {
"username": "tu-usuario",
"password": "tu-contraseña"
}
}
Query Auth
Hitelesítő adatokat küld paraméterként az URL-ben. Kevésbé biztonságos, de egyszerű.
"auth": {
"type": "query",
"fields": {
"api_key": "tu-api-key",
"secret": "tu-secret"
}
}
// Resultado: ?api_key=tu-api-key&secret=tu-secret
Body Auth
A hitelesítő adatokat a kérés törzsében kell megadni (csak POST/PUT/PATCH esetén).
"auth": {
"type": "body",
"fields": {
"api_key": "tu-api-key",
"token": "tu-token"
}
}
// Se añade al JSON del body junto con los parámetros
Hitelesítés nélkül
Ha az endpointod nem igényel hitelesítést, egyszerűen hagyd ki az “auth“ mezőt az endpoint objektumból.
4. Műszaki specifikációk
Időtúllépések
| Teljes időkorlát | 60s |
| Kapcsolódási időtúllépés | 10s |
Újrapróbálkozások
| Maximális kísérletek száma | 4 |
| Stratégia | Eksponenciális visszalépés |
Újrapróbálkozási naptár
| Kísérlet 1 | Azonnali |
| Kísérlet 2 | 2s |
| Kísérlet 3 | 4s |
| Kísérlet 4 | 8s |
Elküldött HTTP fejlécek
| Header | Érték |
|---|---|
| Content-Type | application/json |
| Accept | application/json |
| User-Agent | WAzion-Functions/1.0 |
| + Hitelesítési fejlécelések | Beállítás szerint |
HTTP-kódok, amelyek újrapróbálkozást váltanak ki
Kódok újrapróbálás nélkül
Az végpont követelményei
- Kötelező HTTPS (érvényes SSL tanúsítvány)
- { “Respuesta“: “Érvényes JSON formátumban“ }
- Content-Type: application/json a válaszban
- Válasz kevesebb mint 60 másodperc alatt
Speciális paraméter: _phone
A WAzion automatikusan hozzáadja a “_phone“ paramétert az ügyfél E.164 formátumú telefonszámával (pl.: +34612345678). Ezt használhatod a válasz személyre szabására vagy annak nyomon követésére, hogy ki tette a lekérdezést.
5. Gyakorlati példák
1. példa: Elérhetőség lekérdezése
Lehetővé teszi az MI számára, hogy lekérdezze, elérhető-e egy termék a raktáron.
[
{
"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"]
}
}
]
2. példa: Foglalás készítése
Engedélyezd az MI számára, hogy automatikusan foglalásokat hozzon létre a rendszeredben.
[
{
"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"]
}
}
]
3. példa: Rendelés állapotának lekérdezése
Lehetővé teszi a MI számára, hogy a rendelés állapotát a hivatkozási számával ellenőrizze.
[
{
"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. Példa Kód
Példák arra, hogyan valósítsd meg a végpontokat a szervereden:
<?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' => 'No autorizado']);
exit;
}
// Obtener parámetros
$producto = $_GET['producto'] ?? '';
$cantidad = intval($_GET['cantidad'] ?? 1);
// Consultar tu base de datos
$stock = consultarStockEnBD($producto);
// Responder
echo json_encode([
'producto' => $producto,
'disponible' => $stock >= $cantidad,
'stock_actual' => $stock,
'mensaje' => $stock >= $cantidad
? "Sí, tenemos $stock unidades disponibles"
: "Lo sentimos, solo quedan $stock unidades"
]);
// 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: 'No autorizado' });
}
// Obtener parámetros
const { producto, cantidad = 1 } = req.query;
// Consultar tu base de datos
const stock = consultarStockEnBD(producto);
// Responder
res.json({
producto,
disponible: stock >= cantidad,
stock_actual: stock,
mensaje: stock >= cantidad
? `Sí, tenemos ${stock} unidades disponibles`
: `Lo sentimos, solo quedan ${stock} unidades`
});
});
# 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': 'No autorizado'}), 401
# Obtener parámetros
producto = request.args.get('producto', '')
cantidad = int(request.args.get('cantidad', 1))
# Consultar tu base de datos
stock = consultar_stock_en_bd(producto)
# Responder
return jsonify({
'producto': producto,
'disponible': stock >= cantidad,
'stock_actual': stock,
'mensaje': f'Sí, tenemos {stock} unidades disponibles'
if stock >= cantidad
else f'Lo sentimos, solo quedan {stock} unidades'
})
Változási előzmények
Nincs a közelmúltban történt változás ebben a dokumentációban.