Passa valori dinamici
L’URL e i valori degli header di un servizio collegato possono contenere segnaposto {{params.x}} che vengono compilati quando il servizio viene chiamato. In questo modo un solo servizio si adatta a ogni richiesta (portare un termine di ricerca nella query string, o inoltrare il token dell’utente autenticato perché il tuo endpoint possa autenticarlo) senza scrivere il valore in modo fisso nella configurazione.
Dove vanno i segnaposto
- Nell’URL: ad es.
https://api.example.com/search?q={{params.query}}. Il valore viene
codificato per l’URL, quindi puoi passare testo libero in sicurezza.
- In un valore di header: aggiungi in Headers un header il cui valore è un template, ad es. un
header Authorization con valore Bearer {{params.token}}.
Un segnaposto si scrive {{params.<name>}}, dove <name> è un identificativo semplice.
Da dove arrivano i valori
I valori vengono forniti da due fonti e uniti: un valore della singola chiamata prevale su un valore di inizializzazione con lo stesso nome:
- All’inizializzazione: per i valori che restano uguali per tutta la sessione (un token utente, un
id del tenant). Passali a startAssistant:
skdwn.startAssistant({
assistantId: 'as-xxxxxxxx',
accessToken: 'your-key-or-token',
params: { token: yourUserToken }
});
- A ogni chiamata: per i valori che dipendono dal momento (un termine di ricerca, un id selezionato). Passali come
quarto argomento di executeProxyRequest:
executeProxyRequest('search_api', null, callback, { query: userInput });
Un singolo servizio può usarli entrambi contemporaneamente: un header fisso {{params.token}} e un {{params.query}} per chiamata nell’URL.
params non è userInformation
I params servono solo a compilare questi segnaposto: non vengono mai inviati al modello né registrati nelle analisi. Tieni token e valori delle richieste in params; usa userInformation solo per il contesto sul visitatore.
Esempio: inoltra il token dell’utente
Uno schema comune è lasciare che sia il tuo endpoint ad autenticare l’utente. Configura il servizio con:
- URL:
https://api.example.com/me/orders - Header: nome
Authorization, valoreBearer {{params.token}} - All’inizializzazione:
params: { token: <the token your backend issued the user> }
La tua API riceve un normale header Authorization: Bearer … e lo convalida, esattamente come farebbe per qualsiasi richiesta. Poiché il tuo endpoint convalida il token, è sicuro anche se il valore è fornito dalla pagina: un token non valido o di un’altra persona concede solo ciò che quel token già consente.
Inoltra solo credenziali che il tuo endpoint verifica
Un valore {{params}} proviene dalla pagina, quindi è affidabile solo se l’endpoint che lo riceve lo verifica (un token firmato che convalida) o se il valore non è sensibile (un termine di ricerca). Non considerare mai un id grezzo passato in params come prova dell’identità dell’utente: convalida invece una credenziale reale.
Documenti correlati
- Autentica le richieste: un segreto salvato lato server, l’alternativa a un valore inoltrato.
- Personalizzazione avanzata: dove si trova
executeProxyRequest.