CENTRO ASSISTENZA

Funzioni personalizzate AI

Consenti all’IA di WAzion di chiamare le tue API esterne durante le conversazioni per consultare informazioni o eseguire azioni in tempo reale.

1. Introduzione

Le Funzioni Personalizzate permettono all’IA di WAzion di chiamare le tue API esterne durante una conversazione con un cliente. Questo consente di consultare informazioni in tempo reale o di eseguire azioni automaticamente.

Come funziona?

  1. 1 Il cliente chiede qualcosa (es: “Avete disponibile il prodotto X?“)
  2. 2 L’IA rileva che ha bisogno di informazioni esterne
  3. 3 WAzion chiama la tua API con i parametri necessari
  4. 4 La tua API risponde con le informazioni richieste
  5. 5 L’IA usa quelle informazioni per rispondere al cliente

Casi d’uso tipici

  • Verificare la disponibilità di prodotti/servizi
  • Effettuare prenotazioni automatiche
  • Consultare lo stato degli ordini
  • Consultare prezzi dinamici
  • Cercare informazioni sui clienti
  • Verificare gli orari disponibili

2. Struttura JSON

Le funzioni sono definite come un array JSON. Ogni funzione ha un nome, una descrizione e parametri che includono l’endpoint da chiamare.

[
  {
    "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"]
    }
  }
]

Campi principali

  • name: Identificatore univoco della funzione
  • description: Descrivi quando usare questa funzione
  • parameters: Definisce i parametri e l’endpoint

Oggetto endpoint

  • url: URL completa dell’endpoint (HTTPS)
  • method: GET, POST, PUT, DELETE, PATCH
  • format: json El tiempo es oro. form
  • auth: Configurazione di autenticazione

Importante: La descrizione di ciascuna funzione e parametro è cruciale. L’IA utilizza queste descrizioni per decidere quando chiamare ogni funzione.

3. Tipi di Autenticazione

WAzion supporta 4 tipi di autenticazione per proteggere i tuoi endpoint:

Header Auth (Consigliato)

Più sicuro

Invia le credenziali come header HTTP. Ideale per token Bearer o API Key.

"auth": {
  "type": "header",
  "fields": {
    "Authorization": "Bearer tu-token-secreto",
    "X-API-Key": "otra-clave-si-necesitas"
  }
}

Basic Auth

Autenticazione HTTP di base con nome utente e password (codificati in Base64).

"auth": {
  "type": "basic",
  "fields": {
    "username": "tu-usuario",
    "password": "tu-contraseña"
  }
}

Query Auth

Invia le credenziali come parametri nell’URL. Meno sicuro ma semplice.

"auth": {
  "type": "query",
  "fields": {
    "api_key": "tu-api-key",
    "secret": "tu-secret"
  }
}
// Resultado: ?api_key=tu-api-key&secret=tu-secret

Body Auth

Includi le credenziali nel corpo della richiesta (solo 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

Senza autenticazione

Se il tuo endpoint non richiede autenticazione, semplicemente ometti il campo “auth“ dall’oggetto endpoint.

4. Specifiche Tecniche

Timeout

Timeout totale 60s
Timeout di connessione 10s

Ritenti

Numero massimo di tentativi 4
Strategia Backoff esponenziale

Calendario di ritentativi

Tentativo 1 Immediato
Tentativo 2 2s
Tentativo 3 4s
Tentativo 4 8s

Header HTTP inviati

Header Valore
Content-Type application/json
Accept application/json
User-Agent WAzion-Functions/1.0
+ Intestazioni di autenticazione Secondo configurazione

Codici HTTP che attivano il tentativo di nuovo

429 500 502 503 504

Codici senza ritentativo

400 401 403 404

Requisiti dell’endpoint

  • HTTPS obbligatorio (certificato SSL valido)
  • { “Respuesta“: “in formato JSON valido“ }
  • Content-Type: application/json nella risposta
  • Risposta in meno di 60 secondi

Parametro riservato: telefono

Se la tua funzione dichiara un parametro chiamato “phone“, WAzion lo sovrascriverà automaticamente con il numero di telefono del cliente attuale nel formato E.164 (es: +34612345678). Questo garantisce che venga sempre utilizzato il numero corretto del cliente con cui si sta conversando, indipendentemente dal valore inviato dall’IA. Usalo per inviare notifiche, registrare richieste o personalizzare risposte in base al cliente.

5. Esempi Pratici

Esempio 1: Consultare la disponibilità

Consente all’IA di verificare se un prodotto è disponibile in magazzino.

[
  {
    "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"]
    }
  }
]

Esempio 2: Creare una prenotazione

Permette all’IA di creare prenotazioni automaticamente nel tuo sistema.

[
  {
    "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"]
    }
  }
]

Esempio 3: Consultare lo stato dell’ordine

Consente all’IA di consultare lo stato di un ordine utilizzando il suo numero di riferimento.

[
  {
    "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. Codice di esempio

Esempi di come implementare gli endpoint nel tuo server:

PHP
<?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"
]);
Node.js / Express
// 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`
  });
});
Python / Flask
# 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'
    })

Cronologia delle modifiche

Nessuna modifica recente in questa documentazione.

Articoli correlati

Assistente WAzion

Informazioni commerciali e supporto tecnico

Ciao! Sono l’assistente di WAzion. Posso aiutarti con informazioni su prezzi e piani, dubbi tecnici, configurazione o qualsiasi domanda sul nostro prodotto. Come posso aiutarti?
Sviluppato con WAzion AI