Integrazioni

Si innesta dove lavori già. Senza esportare niente.

HubSpot e Shopify non sono un travaso notturno: i webhook allineano i dati mentre cambiano, e la fonte di verità resta dove è oggi. Per tutto il resto ci sono webhook firmati, API e un SDK pubblico.

HubSpot

In tempo reale

Contatti, aziende, deal, pipeline, prodotti e preventivi entrano in Audin e restano allineati mentre cambiano, non a fine giornata. HubSpot resta la fonte di verità, e quello che ci lavora sopra lo trova già dentro.

Contatti e aziende
da HubSpot
Deal e fasi
da HubSpot
Pipeline e colori
rispecchiati
Prodotti e preventivi
coi permessi commerce
Vedi come funziona

Shopify

5 minuti

Autorizzi l’app e clienti, ordini, prodotti e spedizioni entrano nella piattaforma. I webhook tengono tutto allineato in tempo reale, e gli import pesanti girano su un servizio dedicato che non tocca le chiamate in corso. Sullo store non scriviamo niente.

Clienti e indirizzi
sincronizzati
Ordini e righe
sincronizzati
Spedizioni e tracking
sincronizzati
Webhook ordini e prodotti
attivi
Vedi come funziona

E se non usate nessuno dei due

HubSpot e Shopify non sono due casi speciali. Sono due data source.

Sotto quei due blocchi c’è un meccanismo solo, e non è riservato a loro: si chiama data source e collega qualunque sistema che abbia un’API. Se il gestionale, il CRM o il portale che usate oggi ne espone una, entra nello stesso modo, con la stessa macchina e le stesse garanzie.

  • Si punta all’indirizzo dell’API e si dice dove stanno i record dentro la risposta
  • I campi loro si mappano sui nostri una volta sola, anche quelli annidati
  • Le credenziali stanno cifrate: una chiave fissa, oppure un login che rinnova il token da sé
  • La paginazione la gestisce lui, che sia a pagine, a cursore o con l’indirizzo del «successivo» che l’API stessa restituisce
  • Dopo il primo giro importa solo quello che è cambiato, tenendo il segno di dov’era arrivato
  • Una chiave di riconciliazione fa sì che il record aggiornato sia lo stesso, non un doppione
  • Quello che avete corretto a mano non viene sovrascritto, a meno che non chiediate il contrario
Portaci il tuo stack

Che cosa si sceglie, per ogni sorgente

Dove finisce
Undici destinazioni, dal lead al preventivo
Ogni quanto
Da un quarto d’ora a una volta al giorno
Che cosa entra
Tutto, o solo le righe che passano i filtri
Chi vince sui conflitti
Le vostre modifiche, o la sorgente
Come si autentica
Chiave statica o login che rinnova il token
Se l’API cambia
Si corregge la mappatura, non il codice

E poi tutto il resto

Per sviluppatori

Se non c’è il connettore, c’è l’API.

API REST documentata con una chiave per account, webhook firmati con ritentativi e storico delle consegne, e un SDK pubblico per portare il softphone dentro il vostro software.

Eventi in uscita

Contatti e commenti creati, aggiornati o cancellati: firmati, con ritentativi per endpoint.

POST /your-endpoint{ topic: 'lead.created',  data: { object: { … } } }
Webhook e API REST

Softphone nel vostro CRM

SDK headless per browser: microfono, audio, segnalazione e riconnessione gestiti. L’interfaccia la fate voi.

npm i @audin.ai/operator-sdkop.on('incomingCall', …)
Operator SDK

Eventi in ingresso

Un endpoint dedicato per far entrare contatti, pratiche e note dai vostri sistemi, con chiave e validazione.

Eventi in ingresso

Sicurezza e permessi

Credenziali cifrate a riposo, ruoli per entità e azione, dati e registrazioni in Unione Europea.

Operator SDK

Il softphone dei vostri operatori, dentro il vostro software.

@audin.ai/operator-sdk è un SDK headless per browser: gestisce microfono, transcodifica audio, canali di segnalazione e media, riconnessione e heartbeat. Nessuna interfaccia imposta: l’UI la disegnate voi, il resto lo fa l’SDK.

Sul registro pubblico npm

ESM + UMD, tipi TypeScriptZero dipendenze a runtimeLicenza MIT
operator-desk.tsprotocollo v1
import { AudinOperator } from '@audin.ai/operator-sdk' const op = new AudinOperator({  coreUrl: 'https://core.audin.ai',  // il token arriva dal vostro backend  getToken: async () => (await fetch('/api/operator/token')).json(),}) op.on('incomingCall', call => {  // mostrate la vostra UI, poi  call.accept()   // oppure call.reject()}) const nums = await op.listPhoneNumbers()await op.goOnline([nums[0].id]) const call = await op.dial('+39021234567', {  callerId: nums[0].phoneNumber})call.mute(true); call.sendDtmf('5'); call.hangup()

La chiave dell’account non entra mai nel browser

L’SDK non conosce la vostra chiave: chiama una callback getToken verso un endpoint vostro, che rilascia un token di sessione a vita breve (circa un’ora) e lo rinnova quando serve.

  1. 1Il browser chiede un token al vostro backend
  2. 2Il vostro backend chiama Audin con la chiave, che resta lato server
  3. 3L’SDK apre presenza e audio con quel solo token

Sotto il cofano, se vi interessa

  • Il microfono si apre con cancellazione d’eco, soppressione del rumore e guadagno automatico, tutti configurabili
  • La conversione in G.711 μ-law a 8 kHz avviene sul thread audio, senza bloccare l’interfaccia
  • L’audio viaggia in frame binari su WebSocket; muto, DTMF e chiusura sono messaggi di controllo
  • Il codec μ-law e il ricampionamento sono esportati anche singolarmente, se volete costruirvi il percorso audio

Presenza e numeri

L’operatore elenca i numeri dell’account e va online su quelli assegnati, cambiandoli quando vuole.

listPhoneNumbers()goOnline() · goOffline()

Chiamate in entrambi i sensi

Rispondere o rifiutare le entranti, chiamare in uscita scegliendo il numero mostrato al destinatario.

accept() · reject()dial(to, { callerId })

Controlli in chiamata

Muto, chiusura e toni DTMF iniettati sulla rete telefonica: i risponditori dall’altra parte li sentono davvero.

mute(on) · hangup()sendDtmf(digit)

Eventi tipizzati

Presenza, squillo, avvio, risposta e fine chiamata con il motivo: la vostra UI reagisce, non fa polling.

incomingCall · callStartedcallAnswered · callEnded

Riconnessione automatica con backoff e battito di presenza inclusi. In questa versione l’SDK gestisce una chiamata attiva per volta: mentre è in corso, le entranti vengono rifiutate e una nuova chiamata in uscita restituisce errore. Il protocollo è versionato: i cambi incompatibili escono con una versione maggiore.

Documentazione dell’SDK

Ogni integrazione, in una pagina

Portaci il tuo stack.

Ti diciamo cosa si collega subito, cosa richiede un webhook e cosa non vale la pena integrare.