Webhook dei lead
Il webhook elaborerà i dati per chatbot. Il webhook pubblicherà quotidianamente i lead e i record degli appuntamenti sul tuo CRM in formato JSON.
Configurazione di un webhook
Per configurare un webhook, devi aver ricevuto un accesso ad app.neoagent.co (contatta l'assistenza di app.neoagent.co se non disponi già di questo accesso):
- Accedi ad app.neoagent.co e clicca su Area di lavoro.
- Inserisci l'URL del webhook dell'endpoint configurato nella scheda Webhook.
- Clicca su Salva.
Una volta inserito l'URL del webhook, la chiave di firma del webhook viene generata automaticamente.
Endpoint di ricezione
Affidati all'autenticità dei tuoi webhook utilizzando la chiave di firma webhook menzionata sopra, una chiave segreta univoca condivisa tra la tua applicazione e app.neoagent.co, per verificare gli eventi inviati ai tuoi endpoint. La chiave di firma del webhook produrrà la X-Webhook-Signature, che puoi utilizzare per confrontarla con una firma webhook prevista, per verificare gli eventi provenienti da app.neoagent.co.
X-Webhook-Signature
Quando app.neoagent.co invia un webhook alla tua app, includerà l'intestazione X-Webhook-Signature nel seguente formato:
X-Webhook-Signature: t=1492774577,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd
Confronta la X-Webhook-Signature, preceduta da v1=, con la firma prevista. Se corrispondono, puoi essere certo che il payload dell'evento è stato emesso da app.neoagent.co e non è stato manomesso.
const crypto = require('crypto');
// Chiave di firma webhook dell'applicazione
const webhookSigningKey = ({}).WEBHOOK_SIGNING_KEY;
// Estrai il timestamp e la firma dall'intestazione
const neoagentSignature = req.get('X-Webhook-Signature');
const { t, signature } = neoagentSignature.split(',').reduce((acc, currentValue) => {
const [key, value] = currentValue.split('=');
if (key === 't') {
// Timestamp UNIX
acc.t = value;
}
if (key === 'v1') {
acc.signature = value
}
return acc;
}, {
t: '',
signature: ''
});
if (!t || !signature) throw new Error('Firma non valida');
// Crea il payload firmato concatenando il timestamp (t), il carattere '.' e il payload JSON del corpo della richiesta.
const data = t + '.' + JSON.stringify(req.body);
const expectedSignature = crypto.createHmac('sha256', webhookSigningKey).update(data, 'utf8').digest('hex');
// Determina la firma prevista calcolando un HMAC con la funzione hash SHA256.
if (expectedSignature !== signature) {
// La firma non è valida!
throw new Error('Firma non valida');
}
Ascolto di eventi relativi a lead e appuntamenti
Quando si verifica un evento, questo viene notificato all'URL del webhook configurato. Invia immediatamente nuovi lead e appuntamenti,
Dettagli notifica - Richiesta HTTP POST
Metodo: POST
Content-Type: application/json
Corpo JSON
Esempio:
{
// SerialNumber string ID Chatbot
"SerialNumber": "59001dd73709417321c58b11693183a2",
// Type string Sono disponibili due tipi: Lead e Appuntamento
"Type": "Lead",
// FirstName string Nome utente
"FirstName": "David",
// LastName string Cognome utente
"LastName": "Garcia",
// Email string Email utente
"Email": "test@qq.com",
// PhoneNumber string Numero di telefono utente
"PhoneNumber": "",
// CreateTime string Ora di creazione (ora UTC)
"CreateTime": "2023-11-23T18:36:21.512302Z",
// Stringa di contenuto Osservazioni o contenuto dell'appuntamento
"Content": "test",
// ID sessione int ID sessione
"ID session": 31305,
// Stringa URI URI sorgente
"URI": "www.google.com"
}
Errore, nuovo tentativo
Risposta dati: {"status":"success"} o {"status":"Success: richiesta di test ricevuta"} (sensibile alle maiuscole e alle minuscole, il valore restituito è necessario per un callback riuscito); la restituzione di altri valori è considerata un errore. Dopo un errore, riprova entro 1 minuto e 3 minuti.