Canali personalizzati
Collega qualsiasi piattaforma di messaggistica o strumento di comunicazione alla piattaforma utilizzando i canali personalizzati. Questo ti permette di importare messaggi da piattaforme come widget di live chat per siti web, sistemi di posta elettronica, CRM o qualsiasi altro servizio nella tua casella di posta, e di rispondere con il tuo Agente AI.
Cosa sono i canali personalizzati?
I canali personalizzati estendono la piattaforma oltre le sue piattaforme di messaggistica integrate (WhatsApp, SMS, Instagram, Messenger). Con i canali personalizzati, puoi:
- Ricevere messaggi da qualsiasi piattaforma esterna nella casella di posta unificata della piattaforma.
- Inviare risposte dall’app alla tua piattaforma esterna automaticamente.
- Utilizzare un Agente AI per rispondere ai messaggi da qualsiasi fonte.
- Monitorare tutte le conversazioni insieme agli altri canali in un’unica casella di posta.
Questa è la soluzione ideale per le aziende che utilizzano strumenti di comunicazione specializzati, dispongono di una piattaforma personalizzata o desiderano avere tutti i messaggi dei clienti in un unico posto.
Nota: I canali personalizzati richiedono una configurazione tecnica. Se tu o il tuo team non avete dimestichezza con le integrazioni tecniche, potresti voler chiedere aiuto al tuo sviluppatore web o al team IT per questa sezione.
Come funziona
I canali personalizzati funzionano scambiando messaggi tra la tua piattaforma esterna e la piattaforma utilizzando i webhook (messaggi automatizzati inviati tra sistemi via internet). Ecco il flusso:
Your Platform ──(sends message to)──> The App
|
AI Agent responds
Contact saved
Message stored
|
The App ──(sends reply to)──> Your Platform
- Messaggi in arrivo: La tua piattaforma esterna invia messaggi a un indirizzo web (URL). Immaginalo come se la tua piattaforma “pubblicasse” un messaggio nella casella di posta della piattaforma.
- Elaborazione: La piattaforma crea o aggiorna il contatto, archivia il messaggio e fa sì che un Agente AI generi una risposta (se attivo).
- Messaggi in uscita: Quando la piattaforma invia una risposta (che provenga dall’AI o sia stata scritta da te), invia il messaggio a un URL sulla tua piattaforma, dove il tuo sistema può recapitarlo all’utente finale.
Configurazione dei messaggi in arrivo (dalla tua piattaforma all’app)
Per inviare messaggi dalla tua piattaforma esterna all’app, la tua piattaforma deve inviare dati al seguente URL. Il tuo sviluppatore lo riconoscerà come una richiesta POST standard (un modo comune per un sistema di inviare dati a un altro via internet).
Dove inviare i messaggi
POST https://api.youraiconnector.com/v1/incoming_custom_channel_message?apiKey=YOUR_API_KEY
Sostituisci YOUR_API_KEY con la tua chiave API (un codice privato che dimostra alla piattaforma che la tua piattaforma è autorizzata a inviarle messaggi). Trovala o generala in Impostazioni → Integrazioni → Chiave API.
Formato del messaggio
Invia i dati del messaggio nel seguente formato (JSON):
{
"customData": {
"messageSid": "unique-message-id-123",
"fromId": "user-456",
"toId": "your-business-id",
"body": "Hello, I have a question about your service.",
"status": "received",
"channel": "my-live-chat",
"campaignId": "optional-campaign-id",
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com",
"mediaUrl": null,
"mediaContentType": null
},
"messageType": "text"
}
Cosa significa ogni parte:
messageSid- Un ID univoco per questo specifico messaggio (creato dal tuo sistema). Utilizzato per evitare che lo stesso messaggio venga elaborato due volte.fromId- Chi ha inviato il messaggio (può essere un ID utente, un’email o un numero di telefono del tuo sistema).toId- Il tuo identificativo aziendale (può essere qualsiasi etichetta tu scelga).body- Il testo effettivo del messaggio.channel- Un’etichetta che scegli per identificare la provenienza del messaggio (ad es. “website-chat”, “email”).
Riferimento completo dei campi
| Campo | Obbligatorio? | Cosa fa |
|---|---|---|
customData.messageSid o customData.id |
Sì | Un ID univoco per questo messaggio (previene i duplicati) |
customData.fromId |
Sì | Identifica chi ha inviato il messaggio (es. un ID utente, email o numero di telefono dal tuo sistema) |
customData.toId |
Sì | Identifica il destinatario (la tua azienda). Può essere qualsiasi testo tu scelga. |
customData.body |
Sì | Il testo effettivo del messaggio. Non può essere vuoto. |
customData.status |
No | Stato del messaggio. Lascialo vuoto per usare quello predefinito ("received"). |
customData.channel |
No | Un’etichetta per la fonte (es. "live-chat", "email", "my-crm"). Ti aiuta a identificare da dove provengono i messaggi nella tua casella di posta. |
customData.campaignId |
No | Un ID campagna/Agente. Usalo per instradare il messaggio verso una specifica configurazione AI. |
customData.firstName |
No | Nome del contatto. Incluso quando si crea una nuova scheda contatto. |
customData.lastName |
No | Cognome del contatto. Incluso quando si crea una nuova scheda contatto. |
customData.email |
No | Indirizzo email del contatto. Incluso quando si crea una nuova scheda contatto. |
customData.mediaUrl |
No | Un link a un file allegato (immagine, video, audio o documento). Può anche essere un file codificato in base64 (vedi sotto). |
customData.mediaContentType |
No | Il tipo di file (es. "image/jpeg", "video/mp4", "audio/ogg", "application/pdf"). Obbligatorio se includi mediaUrl. |
messageType |
No | Tipo di messaggio. Lascia vuoto per testo normale. Imposta su "reaction" per reazioni con emoji. |
Reazioni con emoji
Se la tua piattaforma supporta le reazioni con emoji (ad esempio, un pollice in su su un messaggio), inviale come reazione anziché come messaggio di testo: imposta messageType su "reaction" e inserisci solo l’emoji in customData.body.
{
"messageType": "reaction",
"customData": {
"messageSid": "reaction-123",
"fromId": "user-42",
"toId": "my-business",
"body": "👍"
}
}
L’assistente la gestirà quindi nel modo previsto:
- Una reazione a una domanda posta dall’assistente (ad esempio “Giovedì va bene?”) viene trattata come risposta e l’assistente risponderà.
- Una reazione a un messaggio di chiusura (ad esempio “A presto!”) termina la conversazione silenziosamente. Non viene inviata alcuna risposta.
Se la tua piattaforma trasforma le reazioni in testo come “Ha reagito con: 👍”, l’assistente visualizzerà un normale messaggio di testo e deciderà autonomamente se rispondere. L’invio del tipo di reazione evita questo problema.
Cosa si riceve in risposta
Una richiesta riuscita restituisce:
{
"success": true,
"messageId": "1234567890"
}
Se qualcosa va storto, riceverai un messaggio di errore che spiega il problema:
{
"error": "Message body cannot be empty"
}
Codici di stato
| Codice | Significato |
|---|---|
200 |
Successo - messaggio ricevuto e in fase di elaborazione |
400 |
C’è un problema con la tua richiesta - verifica l’assenza di campi obbligatori o un corpo del messaggio vuoto |
401 |
Chiave API non valida - ricontrolla la chiave in Impostazioni → Integrazioni → Chiave API |
405 |
Metodo di richiesta errato - assicurati di utilizzare POST, non GET |
500 |
Qualcosa è andato storto lato piattaforma - riprova tra qualche istante |
Se imposti
customData.status, l’unico valore accettato è"received"— omettilo completamente per utilizzare il valore predefinito invece di inviare qualcos’altro, altrimenti riceverai un400.
Invio di allegati multimediali (immagini, video, file)
Puoi includere allegati (immagini, video, audio, documenti) nei tuoi messaggi. Ci sono due modi per farlo:
Opzione 1: Link a un file
Se il file è già ospitato online, fornisci l’URL (indirizzo web) da cui la piattaforma può scaricarlo:
{
"customData": {
"messageSid": "msg-789",
"fromId": "user-456",
"toId": "business-1",
"body": "Here is a photo of the issue.",
"channel": "support-portal",
"mediaUrl": "https://example.com/uploads/photo.jpg",
"mediaContentType": "image/jpeg"
},
"messageType": "text"
}
Opzione 2: Incorpora il file direttamente (Base64)
Se il file non è ospitato online, puoi incorporarlo direttamente nel messaggio come testo codificato (formato base64). Questa è una pratica comune nelle integrazioni tecniche in cui il tuo sistema genera file al volo. La piattaforma decodificherà e memorizzerà automaticamente il file:
{
"customData": {
"messageSid": "msg-790",
"fromId": "user-456",
"toId": "business-1",
"body": "Screenshot attached.",
"channel": "support-portal",
"mediaUrl": "data:image/png;base64,iVBORw0KGgo...",
"mediaContentType": "image/png"
},
"messageType": "text"
}
Nota: Incorporare i file direttamente rende i dati del messaggio molto più pesanti. Per i file di grandi dimensioni, è meglio ospitare il file online e inviare un link (Opzione 1) al suo posto.
Configurazione dei messaggi in uscita (dalla piattaforma alla tua piattaforma)
Quando la piattaforma invia una risposta su un canale personalizzato (che provenga dall’AI o sia stata scritta da te), invia automaticamente tale risposta a un URL sulla tua piattaforma, affinché il tuo sistema possa recapitarla all’utente finale.
Imposta prima l’URL del webhook. Devi salvare l’URL del webhook del canale personalizzato prima che le risposte possano essere recapitate. Se non viene salvato alcun URL, le risposte vengono comunque generate e archiviate, ma non vengono mai inviate; inoltre, non mostreranno uno stato “Fallito”, quindi nulla nella tua casella di posta segnalerà il problema. Configura sempre l’URL del webhook prima di andare online.
Indica all’app dove inviare le risposte
- Nella barra laterale sinistra, clicca su Impostazioni vicino alla parte inferiore.
- Nella barra laterale delle Impostazioni, sotto Canali, clicca su Canali.
- Trova la scheda Canale personalizzato in fondo alla pagina (dopo Android SMS Gateway, iMessage, il widget chat del sito web, Account Twilio e Conformità normativa).
- Inserisci l’URL del Webhook — l’URL sulla tua piattaforma a cui l’IA deve inviare i messaggi in uscita (il tuo sviluppatore lo configura per ricevere ed elaborare le risposte). Deve essere un URL HTTPS pubblico — gli indirizzi
http://e gli host non pubblici vengono rifiutati. - Clicca su Salva.
Cosa invia la piattaforma alla tua piattaforma
Quando la piattaforma invia una risposta, la tua piattaforma riceverà i seguenti dati:
{
"contactId": "abc123",
"messageId": "msg-456",
"userId": "your-user-id",
"body": "Thank you for your message! Here is the information you requested...",
"toId": "user-456",
"channel": "my-live-chat"
}
Cosa significa ogni campo
| Campo | Cosa contiene |
|---|---|
contactId |
l’ID interno della piattaforma per questo contatto |
messageId |
L’ID univoco di questo messaggio nell’app |
userId |
Il tuo ID utente |
body |
Il testo della risposta |
toId |
L’ID del contatto sulla tua piattaforma (corrisponde al fromId che hai inviato nel messaggio in entrata) |
channel |
L’etichetta del canale personalizzato che hai assegnato |
La tua piattaforma riceve questi dati e li utilizza per recapitare la risposta all’utente finale tramite il tuo sistema.
Come la piattaforma traccia la consegna
Dopo aver inviato la risposta alla tua piattaforma, la piattaforma aggiorna lo stato del messaggio:
- Inviato - La tua piattaforma ha ricevuto il messaggio correttamente.
- Non riuscito - La tua piattaforma ha restituito un errore o non è stato possibile raggiungerla. La piattaforma memorizza i dettagli dell’errore con il messaggio in modo che tu possa risolvere il problema.
Invio di messaggi dal proprio sistema all’App
Oltre a ricevere messaggi, è possibile inviare messaggi in uscita tramite un canale personalizzato direttamente dal proprio sistema. Questa funzione è utile quando si desidera avviare una conversazione o inviare un messaggio proattivo.
Requisiti del piano. L’invio e la sincronizzazione dei messaggi tramite API richiedono un piano che includa l’accesso alle API e almeno un canale di messaggistica. Se si riceve un errore
403“permission denied / feature not enabled”, il piano attuale non include questa funzionalità: è necessario eseguire l’upgrade del piano o contattare l’assistenza.
Dove inviare
POST https://api.youraiconnector.com/v1/send_custom_channel_message?apiKey=YOUR_API_KEY
Formato del messaggio
{
"customData": {
"fromId": "user-456",
"customChannel": "my-live-chat",
"body": "Hello! How can I help you today?",
"campaignId": "optional-campaign-id",
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com"
}
}
Campi obbligatori
| Campo | Cosa fa |
|---|---|
customData.fromId |
L’ID del contatto sulla tua piattaforma |
customData.customChannel |
Il nome del tuo canale personalizzato (es. “my-live-chat”) |
customData.body |
Il testo del messaggio da inviare |
I campi opzionali (campaignId, firstName, lastName, email) funzionano allo stesso modo dei messaggi in arrivo: aiutano la piattaforma a creare o aggiornare la scheda contatto.
Cosa si riceve in risposta
{
"success": true,
"messageId": "generated-message-id",
"contactId": "contact-id",
"message": "Message sent successfully"
}
Registrazione di messaggi inviati da un altro sistema
A volte hai già inviato un messaggio a un contatto da uno strumento diverso (ad esempio, un flusso di lavoro in un’altra piattaforma) e vuoi semplicemente che la piattaforma ne sia a conoscenza, in modo che l’AI abbia il contesto completo. Questo è diverso dall’invio: la piattaforma registra il messaggio ma non lo recapita nuovamente al contatto.
Dove inviare
POST https://api.youraiconnector.com/v1/sync_custom_channel_message?apiKey=YOUR_API_KEY
Includi customData.fromId (l’ID del contatto sulla tua piattaforma) e customData.body (il testo del messaggio già inviato).
Come si comporta
- Il messaggio viene registrato, non reinviato. La piattaforma lo archivia nella conversazione solo per contesto.
- L’AI viene messa in pausa su quel contatto per impostazione predefinita. Questo evita che il bot risponda sopra un messaggio già gestito da un umano. Per mantenere il bot attivo, passa
customData.pauseAi: false. - I nuovi contatti possono essere creati automaticamente. Includi
customData.customChannele il contatto verrà creato se non esiste ancora. - I duplicati vengono ignorati. Se riutilizzi lo stesso
messageSid, la piattaforma riconosce che il messaggio è già stato registrato e non apporta modifiche.
Requisito del piano. Come per l’invio, la registrazione dei messaggi tramite API richiede un piano che includa l’accesso alle API e almeno un canale di messaggistica. Un errore
403“permission denied / feature not enabled” indica che il tuo piano attuale non include questa funzionalità.
Esempi dal mondo reale
Live Chat sul sito web
Collega un widget di live chat sul tuo sito web alla piattaforma in modo che il tuo Agente AI possa rispondere alle domande dei visitatori:
- Un visitatore digita un messaggio nel widget della chat del tuo sito web.
- Il widget della chat invia il messaggio alla piattaforma.
- L’Agente IA genera una risposta.
- La risposta viene inviata al widget della chat, che la mostra al visitatore.
Perché è utile: I visitatori del tuo sito web ottengono risposte istantanee basate sull’IA alle loro domande senza che tu debba essere online.
Instrada le conversazioni via email attraverso la piattaforma in modo che il tuo Agente IA possa rispondere alle email:
- Configura un sistema che inoltri le email in arrivo alla piattaforma (utilizzando l’indirizzo del mittente dell’email come
fromId, l’oggetto e il corpo dell’email comebody, e"email"comechannel). - L’Agente IA legge l’email e genera una risposta.
- La risposta viene inviata al tuo sistema di posta elettronica, che la spedisce come una normale risposta email.
Perché è utile: Le domande comuni via email (prezzi, orari, disponibilità) vengono risolte istantaneamente dal tuo Agente IA.
Se il tuo sistema di posta elettronica supporta IMAP/SMTP o OAuth, il canale Email integrato potrebbe essere più semplice di un’integrazione personalizzata.
Integrazione CRM
Collega il tuo sistema CRM (gestione delle relazioni con i clienti) esistente alla piattaforma:
- Quando un lead invia un messaggio tramite il tuo CRM, inoltralo alla piattaforma.
- L’Agente IA risponde e tiene traccia della conversazione.
- La risposta dell’IA viene inviata al tuo CRM per la consegna.
- Lo storico completo della conversazione è disponibile sia nella piattaforma che nel tuo CRM.
Perché è utile: Il tuo team di vendita ottiene risposte assistite dall’IA per i lead senza dover abbandonare il proprio CRM.
Sistema di ticket di assistenza
Utilizza la piattaforma come primo soccorso basato sull’IA per l’assistenza clienti:
- Il tuo sistema di ticketing inoltra i nuovi ticket di supporto alla piattaforma.
- L’Agente IA invia una risposta iniziale (ad esempio, confermando la ricezione del ticket e ponendo domande di chiarimento).
- La risposta viene allegata al ticket nel tuo sistema di supporto.
- Il tuo team di supporto può rivedere ciò che ha detto l’IA e intervenire quando necessario.
Perché è utile: I clienti ricevono un riscontro immediato e un aiuto iniziale, anche al di fuori dell’orario lavorativo.
Risoluzione dei problemi
Messaggi non ricevuti dalla piattaforma
- Verifica che la tua chiave API sia corretta e attiva (controlla Impostazioni → Integrazioni → Chiave API).
- Assicurati di inviare una richiesta POST (non GET). Il tuo sviluppatore conoscerà la differenza.
- Controlla che il campo
customData.bodynon sia vuoto o composto solo da spazi bianchi. - Verifica che il campo
customData.fromIdsia incluso. - Leggi il messaggio di risposta per i dettagli specifici sull’errore.
Risposte non recapitate alla tua piattaforma
- Assicurati di aver inserito l’URL della tua piattaforma nella scheda Canale personalizzato sulla pagina Canali. Se non viene salvato alcun URL, le risposte vengono generate e archiviate ma mai inviate — e non verranno contrassegnate come “Non riuscite”, quindi controlla prima questo aspetto.
- Verifica che l’URL sia accessibile pubblicamente (non dietro un login o un firewall) e che restituisca una risposta di successo.
- Solo le risposte (messaggi in uscita) vengono inviate al tuo URL — i messaggi in entrata non attivano questo processo.
- Controlla i dettagli dell’errore sul messaggio nella tua casella di posta.
Contatto non creato
- Assicurati che il valore
fromIdsia coerente per lo stesso utente in tutti i suoi messaggi. La piattaforma utilizza questo valore per identificare i contatti — se cambia tra un messaggio e l’altro, la piattaforma creerà un nuovo contatto ogni volta. - Includi
firstName,lastNameeemailnel primo messaggio di un nuovo contatto per creare una scheda contatto completa.
Allegati multimediali non funzionanti
- Per i link ai file (URL), assicurati che il file sia accessibile pubblicamente (non è richiesto alcun login per accedervi).
- Includi sempre
mediaContentTypequando includimediaUrl. - Per i file incorporati (base64), verifica che il formato sia
data:MIME_TYPE;base64,ENCODED_DATA. - Assicurati che il tipo di file specificato corrisponda al contenuto effettivo del file.
Best practice
- Usa valori
fromIdcoerenti. Ogni utente sulla tua piattaforma dovrebbe avere sempre lo stessofromId. Questo assicura che la piattaforma raggruppi tutti i suoi messaggi in un’unica conversazione invece di creare contatti duplicati. - Scegli un nome
channelchiaro. Scegline uno descrittivo come"website-chat","email"o"zendesk"in modo da poter facilmente capire da dove provengono i messaggi quando visualizzi la tua casella di posta. - Includi i dettagli di contatto (
firstName,lastName,email) nel primo messaggio di un nuovo contatto. Questo crea immediatamente una scheda contatto completa e utile. - Implementa una logica di riprova. Fai in modo che la tua piattaforma riprovi a inviare i messaggi se la piattaforma non risponde al primo tentativo (gli intoppi di rete possono capitare).
- Usa valori
messageSidunivoci per ogni messaggio. Questo impedisce che lo stesso messaggio venga elaborato due volte se il tuo sistema lo invia più di una volta. - Usa
campaignIdper instradare i messaggi verso diversi Agenti IA quando hai più casi d’uso (ad esempio, richieste di vendita rispetto a domande di supporto). - Testa prima di andare live. Invia messaggi di prova in entrambe le direzioni e verifica che contatti, conversazioni e risposte dell’IA funzionino correttamente prima del lancio agli utenti reali.