Nuovo
🔥 Prova per primo l'API di chiamata WhatsApp Business (Open Beta)!
arrow-icon
All Collections >
Canali >
Canale Personalizzato >
Guida Rapida al Canale Personalizzato

Guida Rapida al Canale Personalizzato

Avatar
JQ Lee
· 30 Jun 2025
5 min di lettura

Questa integrazione consente al tuo team di chattare con i tuoi clienti su qualsiasi canale di messaggistica tramite un'implementazione personalizzata.

Collegamento di un canale personalizzato

Passaggio 1: Vai a Impostazioni > Canali

Passaggio 2: Fai clic su Aggiungi canale > Canale personalizzato > Connetti

Passaggio 3: Inserisci l'URL del webhook di destinazione a cui verranno inviati i messaggi in uscita.

Passaggio 4: Seleziona il tipo di ID per il canale > clicca Avanti

I tipi di ID vengono utilizzati per l'identificazione dell'utente e per comunicare con il server di integrazione personalizzato.

Sono disponibili due tipi di ID:

  1. Numero di telefono: utilizzare questa opzione se il fornitore del servizio di messaggistica riconosce i contatti in base al loro numero di telefono.

    1. Formato di esempio: +60177872890

  2. ID personalizzato: utilizzare questa opzione se il fornitore del servizio di messaggistica riconosce i Contatti in base a un ID generato personalizzato.

    1. La lunghezza massima dei caratteri è 50.

    2. AZ,az,0-9,_,=, Sono consentiti+,/e@.

Passo 5: La seguente finestra di dialogo fornirà il Channel ID, il API Token e il Webhook URL, ad esempio.

  1. ID canale:gfd8g7fd89dgfd

  2. Token API:aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd

  3. URL del webhook:https://app.respond.io/custom/channel/webhook/

    Utilizzando un ID di tipo Numero di Telefono è possibile avviare una conversazione e inviare il primo messaggio a un Contatto.

Passa i messaggi a respond.io

Il Webhook URL viene utilizzato per inviare i Messaggi, gli Echo di Messaggistica e le Ricevute di Messaggistica alla piattaforma respond.io.

Il codice fornito attiverà il webhook su respond.io, creando un contatto se necessario e salvando il messaggio sotto quel contatto.

Esempio per i messaggi

curl -X POST \\  
  https://app.respond.io/custom/channel/webhook/ \\  
  -H 'autorizzazione: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\  
  -H 'controllo cache: no-cache' \\  
  -H 'tipo di contenuto: application/json' \\  
  -d '{  
  "channelId": "gfd8g7fd89dgfd",  
  "contactId": "+60177872890",  
  "eventi": \[  
    {  
      "tipo": "messaggio",  
      "mId": "xcvzzxcxczxczxc",  
      "timestamp": 2132131321000,  
      "messaggio": {  
        "tipo": "testo",  
        "testo": "Ciao mondo"  
      }  
    }  
  \],  
  "contatto": {  
    "Nome": "John",  
    "Cognome": "Doe",  
    "Immagine del profilo": "<https://static.independent.co.uk/s3fs-public/thumbnails/image/2015/07/08/14/pic.jpg>",  
    "Codice paese": "MIO",  
    "email": "john@respond.io",  
    "telefono": "+60177872890",  
    "lingua": "en"  
  }  
}'

Esempio per gli echi di messaggistica

curl -X POST \\  
  https://app.respond.io/custom/channel/webhook/ \\  
  -H 'autorizzazione: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\  
  -H 'controllo cache: no-cache' \\  
  -H 'tipo di contenuto: application/json' \\  
  -d '{  
  "channelId": "gfd8g7fd89dgfd",  
  "contactId": "+60177872890",  
  "eventi": \[  
    {  
      "tipo": "messaggio\_echo",  
      "mId": "xcvzzxcxczxczxc",  
      "timestamp": 2132131321000,  
      "messaggio": {  
        "tipo": "testo",  
        "testo": "Ciao mondo"  
      }  
    }  
  \],  
  "contatto": {  
    "Nome": "John",  
    "Cognome": "Doe",  
    "Immagine del profilo": "<https://static.independent.co.uk/s3fs-public/thumbnails/image/2015/07/08/14/pic.jpg>",  
    "Codice paese": "MIO",  
    "email": "john@respond.io",  
    "telefono": "+60177872890",  
    "lingua": "en"  
  }  
}'

Esempio di ricevute di messaggistica

curl -X POST \\  
  https://app.respond.io/custom/channel/webhook/ \\  
  -H 'autorizzazione: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\  
  -H 'controllo cache: no-cache' \\  
  -H 'tipo di contenuto: application/json' \\  
  -d '{  
  "channelId": "gfd8g7fd89dgfd",  
  "contactId": "+60177872890",  
  "eventi": \[  
    {  
      "tipo": "messaggio\_stato",  
      "mId": "xcvzzxcxczxczxc",  
      "timestamp": 2132131321000,  
      "stato": {  
        "valore": "inviato|consegnato|letto|fallito",  
        "messaggio": "Errore: invio fallito a causa di token non valido"  
      }  
  \]  
}'

Campo

Descrizione

Validazione

ID canale

ID canale univoco

Necessario. Campo univoco. È generato da respond.io.

ID contatto

ID contatto univoco

Necessario. ID contatto univoco respond.io. Massimo 50 caratteri.

eventi.tipo

Tipo di evento

Necessario. Tipi disponibili: messaggio, message_echo e message_status.

eventi.mld

ID messaggio

Necessario. ID messaggio univoco. Massimo 50 caratteri.

eventi.timestamp

Tempo di epoca UNIX (millisecondi)

Necessario. Ora dell'evento che ha attivato il callback.

eventi.tipo.messaggio

Tipo di messaggio

Necessario. Tipi di messaggio disponibili: testo, allegato, posizione e risposta rapida. Per altri esempi di tipi di messaggio, fare riferimento alla sezione Tipo di messaggio.

eventi.messaggio.testo

Testo del messaggio

Necessario. Lunghezza massima 7.000 caratteri.

eventi.stato.valore

Testo

Obbligatorio se event.type è message_status. Valori di stato disponibili: inviato, consegnato, letto e non riuscito.

eventi.stato.messaggio

Testo

Obbligatorio se events.status.value non riesce.

contatto.nome

Nome di battesimo

Opzionale. Massimo 50 caratteri.

contatto.cognome

Cognome

Opzionale. Massimo 50 caratteri.

contatto.profilePic

URL dell'immagine del profilo

Opzionale. La dimensione dell'avatar non deve superare i 100 kb. Risoluzione consigliata: 720x720.

contatto.locale

Codice locale

Opzionale. Per l'elenco dei valori fare riferimento qui.

contatto.codicepaese

Codice Paese

Opzionale. Codice paese a 2 lettere - Codice ISO ALPHA-2.

contatto.fuso orario

Fuso orario

Opzionale. (min: -24) (max: 24).

contatto.email

Indirizzo e-mail

Opzionale. Massimo 50 caratteri.

contatto.telefono

Numero di telefono

Opzionale. Massimo 18 caratteri.

contatto.lingua

Lingua

Opzionale. Norma ISO 639-1.

Risposta - Successo (stato HTTP → 200)

"OK"

Gestisci i messaggi in uscita da respond.io

respond.io chiamerà l'endpoint<API Base URL>/message

Assicurati di applicare il codiceOutgoing Messagesulla rotta/messagedel tuo server web.

Ecco l'esempio cURL di respond.io che chiama l'endpoint:

curl -X POST \\  
  <API Base URL>/messaggio \\  
  -H 'autorizzazione: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\  
  -H 'controllo cache: no-cache' \\  
  -H 'tipo di contenuto: applicazione/json' \\  
  -d '{  
	"channelId": "gfd8g7fd89dgfd",  
	"contactId": "+60177872890",  
	"messaggio": {  
		"tipo": "testo",  
		"testo": "Ciao mondo"  
	}  
}'

Risposta - Successo (stato HTTP → 200)

{  
	"mId": "1640141607842"  
}

L'autenticazione deve avvenire nell'endpoint prima di inviare il messaggio al fornitore di servizi di messaggistica.

Ecco un esempio di utilizzo di un middleware express per questo scopo:

const {validationResult} = require('express-validator');

const validateToken = (req, res, next) => {
    const apiToken = <<API Token>>
    const bearerToken = req.headers.authorization;

    if (!bearerToken)
        return res.send(401)

    const token = bearerToken.substring(7, bearerToken.length);

    se (apiToken !== token) {
        restituisci res.send(401)
    }
    successivo();
};

modulo.esportazioni = {
    validateToken
};

Abbiamo'incluso un esempio di canale personalizzato che puoi testare sul tuo server. Dai un'occhiata al nostro progetto GitHub qui.

Tipo di messaggio

Esempio di testo

{  
  "tipo": "testo",  
  "testo": "Benvenuto su respond.io",  
}

Campo

Descrizione

Validazione

tipo

Tipo di messaggio

Necessario. testo

testo

Testo del messaggio

Necessario. Lunghezza massima 7.000 caratteri.

Esempio per file multimediale

{  
  "tipo": "allegato",  
  "allegato": {  
    "tipo": "immagine|video|audio|file",  
    "url": "https://abc/japan.png",  
    "mimeType": "immagine/png",  
    "fileName":"logo aziendale.png",  
    "descrizione": "ultimo logo aziendale"  
  }  
}

Campo

Descrizione

Validazione

tipo

Tipo di messaggio

Necessario. attaccamento.

tipo di allegato

Tipo di allegato

Necessario. Tipi di allegati disponibili: immagine, video, audio e file.

allegato.url

URL

Necessario. Massimo 2.000 caratteri. Assicurati che sia un link pubblico, in modo che gli utenti o i contatti possano vederne il contenuto.

allegato.mimeType

Tipo MIME dell'allegato

Opzionale

allegato.nomefile

Nome del file

Opzionale. Il nome del file dovrebbe includere un'estensione. Massimo 256 caratteri (inclusa l'estensione del file). L'invio di un file senza estensione o con un'estensione errata potrebbe impedire al contatto o all'utente di aprire il file.

allegato.descrizione

Descrizione del file

Opzionale. Massimo 256 caratteri. Applicabile solo per attachment.type = image.

Assicurati che l'URL dell'allegato non venga scaricato forzatamente dal browser. L'intestazione della risposta HTTP's Content-Disposition dovrebbe avere il valore predefinito, ovvero inline.

Esempio per la posizione

{  
  "tipo": "posizione",  
  "latitudine": 0.123456,  
  "longitudine": -0.1234,  
  "indirizzo": "Sky Suites, Jalan P. Ramlee, Kuala Lumpur, 50250 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur"  
}

Campo

Descrizione

Validazione

tipo

Tipo di messaggio

Necessario. posizione.

latitudine

Coordinate

Necessario. Latitudine (±90°) entro intervalli validi.

longitudine

Coordinate

Necessario. Longitudine (±180°) entro intervalli validi.

indirizzo

Indirizzo della posizione

Opzionale. Massimo 256 caratteri.

Esempio per risposta rapida

{  
  "tipo": "risposta\_rapida",  
  "titolo": "Seleziona la tua lingua preferita",    
  "risposte": \[  
    "Malese",  
    "Inglese"  
  \]  
}

Campo

Descrizione

Validazione

tipo

Tipo di messaggio

Necessario. risposta rapida.

titolo

Titolo della risposta rapida

Necessario. Massimo 256 caratteri.

risposte

Rispondi al testo

Necessario. Massimo 10 risposte con massimo 256 caratteri per ciascuna risposta.

Codici di errore

Errore (Stato HTTP → 4xx)

Configurazione del canale

Passaggio 1: Fai clic su Impostazioni > Canali

Passaggio 2: Individua il canale personalizzato > fai clic su Gestisci

Passaggio 3: Nella pagina di configurazione del canale personalizzato vedrai le seguenti configurazioni:

  • Icona del canale - Carica un'immagine che fungerà da icona per il tuo canale personalizzato.

  • Nome canale - Il nome del canale può essere modificato e viene utilizzato internamente per identificare il canale.

  • URL webhook per messaggio in uscita — URL webhook per i messaggi in uscita verso questo canale.

  • URL webhook per messaggio in arrivo — URL webhook per i messaggi in arrivo su questo canale.

  • Tipo ID — Vengono utilizzati per l'identificazione dell'utente e per comunicare con il server di integrazione personalizzato.

  • ID canale — ID canale univoco per identificare il tuo canale personalizzato.

  • Token API — Identificatore univoco utilizzato per autenticare un utente per accedere a un'API.

Passaggio 4: Fare clic su Salva modifiche per aggiornare la configurazione del canale personalizzato.

FAQ e risoluzione dei problemi

Posso collegare le chat di altre piattaforme utilizzando un canale personalizzato?

Sì, puoi farlo. Ecco tre passaggi da seguire:

  1. In respond.io, inserisci il webhook URL di destinazione proveniente dall'altra piattaforma nel campo Webhook URL per messaggi in arrivo.

  2. Nell'altra piattaforma, imposta un URL webhook che punti a respond.io, consentendo ai Contatti di inviarti messaggi.

  3. Avrai bisogno di un Server di Integrazione Personalizzata per interpretare le API sia di respond.io che dell'altra piattaforma, consentendo lo scambio di messaggi tra di esse.

Assicuratevi di verificare con l'altra piattaforma che i primi due passaggi siano fattibili.

Domande frequenti sui webhook dei canali personalizzati

Perché il webhook restituisce uno stato 200 anche se il messaggio non riesce a essere recapitato a respond.io?

Quando si collega un canale personalizzato, i messaggi inviati a respond.io tramite webhook restituiranno sempre immediatamente un codice di stato 200, indipendentemente dal fatto che il messaggio sia stato trasmesso correttamente a respond.io. Ciò è dovuto alla natura dei webhook, che sono progettati per restituire una risposta immediata senza verificare il successo della consegna del messaggio.

Condividi questo articolo
Telegram
Facebook
Linkedin
Twitter

Articoli correlati 👩‍💻

Panoramica del canale personalizzato
Ottieni una panoramica del canale personalizzato e delle sue funzionalità.

Non riesci a trovare quello che stai cercando? 🔎