Zapier, Make e n8n
Le piattaforme di integrazione collegano Sursa a centinaia di altri strumenti senza codice. Non serve un’app dedicata di Sursa: i loro passaggi generici per richieste HTTP e webhook funzionano direttamente con l’API. Questa guida tratta le tre ricette più comuni:
| Ricetta | Direzione | Cosa ti serve |
|---|---|---|
| Inviare record da un altro strumento a Sursa come schede | Verso Sursa | Una fonte personalizzata e la sua chiave kbsrc_ |
| Fare una domanda a Sursa in un flusso di lavoro | Verso Sursa e ritorno | Una chiave API con l’ambito ask |
| Avviare un flusso di lavoro quando succede qualcosa in Sursa | Da Sursa | Un webhook che punta alla piattaforma |
Qualunque piattaforma usi, conserva la chiave nel suo archivio di credenziali o di connessioni, non nel passaggio stesso, così non viene copiata in ogni scenario e in ogni log di esecuzione.
Inviare record come schede
Crea una fonte personalizzata in Sursa (Sources → New source → Custom source: fonti, nuova fonte, fonte
personalizzata), poi una chiave per la fonte nella sua pagina, in API keys (chiavi API della fonte). La chiave
inizia con kbsrc_ e può solo scrivere documenti in questa fonte, quindi è la chiave giusta da conservare su una
piattaforma di terzi.
La configurazione più comune è “quando un record viene creato o aggiornato in X, invialo a Sursa”:
| Impostazione | Valore |
|---|---|
| Metodo | POST |
| URL | https://api.example.com/v1/push/sources/42/documents |
Intestazione Authorization | Bearer kbsrc_… |
Intestazione Content-Type | application/json |
| Corpo | Il JSON seguente, con i campi mappati dal trigger |
{
"external_id": "{{record_id}}",
"title": "{{record_title}}",
"content": "{{record_body_html}}",
"content_type": "html",
"url": "{{record_link}}",
"path": "{{record_category}}",
"updated_at": "{{record_updated_at}}"
}
- Mappa su
external_idun ID stabile del record, mai un orario o un numero di esecuzione. Così inviare di nuovo lo stesso record aggiorna la stessa scheda, e un passaggio ritentato non ha conseguenze: la risposta èunchanged. - Per un trigger “record eliminato”, aggiungi un secondo flusso di lavoro con metodo
DELETEe URLhttps://api.example.com/v1/push/sources/42/documents/{{record_id}}. - Verifica la connessione con
GET https://api.example.com/v1/push/sources/42e la stessa intestazioneAuthorization. Restituisce il nome della fonte e il suo numero di documenti.
I campi del documento sono gli stessi che si usano nel codice.
Zapier
Usa Webhooks by Zapier → Custom Request:
- Method:
POST. - URL:
https://api.example.com/v1/push/sources/42/documents. - Data Pass-Through: disattivato. Data: il JSON precedente, con i campi inseriti dal trigger.
- Headers:
Authorization=Bearer kbsrc_…,Content-Type=application/json.
Make
Usa il modulo HTTP → Make a request:
- Method
POST, URL come sopra, HeadersAuthorization: Bearer kbsrc_…. - Body type Raw, Content type JSON (application/json), Request content: il JSON precedente con i valori mappati.
- Attiva Parse response per usare
result(created,updated,unchanged) nei moduli successivi. - Per inviare un file, scegli Body type Multipart/form-data con un campo
file(il file di un modulo precedente) e un campo di testodocumentche contiene i campi JSON senzacontent.
n8n
Usa il nodo HTTP Request:
- Method
POST, URL come sopra. - Authentication Generic Credential Type → Header Auth, con nome
Authorizatione valoreBearer kbsrc_…. - Send Body attivo, Body Content Type JSON, campi mappati con espressioni come
{{ $json.id }}.
Per un’esportazione completa pianificata, concatena tre nodi HTTP Request: apri una sincronizzazione (POST …/syncs
con {"type": "initial"} la prima volta, {"type": "incremental"} le volte successive), invia gli elementi e chiudi
la sincronizzazione con {"status": "complete"}. n8n esegue un nodo una volta per elemento; per inviare meno
richieste, raggruppa gli elementi con un nodo Aggregate e inviali a …/documents/batch come
{"sync_number": …, "documents": [...]}.
Fare una domanda in un flusso di lavoro
Un flusso di lavoro può interrogare Sursa e usare la risposta: preparare una bozza di risposta a un ticket di
assistenza, arricchire un record del CRM, pubblicare una risposta in un canale di chat. Usa una chiave API
dell’organizzazione con l’ambito ask e un ruolo che veda le raccolte giuste.
| Impostazione | Valore |
|---|---|
| Metodo | POST |
| URL | https://api.example.com/v1/ask |
Intestazione Authorization | Bearer kb_… |
| Corpo | {"query": "{{ticket_subject}}: {{ticket_body}}", "collection": "support"} |
La risposta contiene il testo in answer (Markdown) e le fonti in sources, ciascuna con doc_name. Quando la
knowledge base non ha nulla sulla domanda, empty è impostato (per esempio no_hits): aggiungi un passaggio di filtro
perché il flusso di lavoro non pubblichi una risposta vuota. Vedi
Creare un bot di domande e risposte.
Le risposte possono richiedere diversi secondi. Se il passaggio HTTP della piattaforma ha un timeout predefinito breve, aumentalo ad almeno 60 secondi.
Avviare un flusso di lavoro da un evento di Sursa
Tutte le piattaforme possono ricevere webhook:
| Piattaforma | Trigger |
|---|---|
| Zapier | Webhooks by Zapier → Catch Raw Hook (raw, così il corpo resta com’è stato inviato) |
| Make | Webhooks → Custom webhook (webhook personalizzato) |
| n8n | Nodo Webhook, metodo POST |
- Crea il trigger e copia l’indirizzo HTTPS che ti fornisce.
- In Sursa, registra un webhook con quell’indirizzo e gli eventi che ti interessano, in Administration →
Integrations → Webhooks and API (amministrazione, integrazioni, webhook) oppure con
POST /v1/webhooks. - Invia un evento di test dalla pagina del webhook e mappa i campi dell’evento (
type,data.card.title, …) nei passaggi successivi.
Verifica la firma. L’indirizzo del trigger è pubblico: chiunque lo conosca può inviargli richieste. Verifica la firma di ogni consegna prima di basarti su di essa, soprattutto se il flusso di lavoro modifica dati:
- In n8n, aggiungi dopo il nodo Webhook un nodo Code con la verifica delle firme in Node.js di Ricevere i webhook, e attiva l’opzione del corpo grezzo del nodo Webhook così sono disponibili i byte esatti.
- In Zapier e Make, dove è più difficile accedere al corpo grezzo, mantieni almeno segreto l’indirizzo, filtra su
typee rileggi l’oggetto dall’API prima di basarti su di esso.
Nuovi tentativi e duplicati valgono per le piattaforme come per qualsiasi ricevitore: filtra sull’id dell’evento se
un’esecuzione duplicata potrebbe causare danni.
Suggerimenti
- Con un
429, lascia che il nuovo tentativo automatico della piattaforma attenda i secondi indicati daRetry-After. Per le esportazioni grandi preferisci i batch. - Le piattaforme registrano ogni richiesta e risposta. Non mettere mai una chiave in un URL e preferisci la chiave
kbsrc_ovunque il flusso di lavoro si limiti a scrivere documenti. - Se un passaggio non riesce con
401 sources.push_key_invalid, controlla che l’ID della fonte nell’URL corrisponda alla chiave.