Questa integrazione consente al team di chattare con i propri clienti su qualsiasi canale di messaggistica tramite un'implementazione personalizzata.
Step 1: Vai a Impostazioni > Canali
Step 2: Click Add Channel > Custom Channel > Connect
Step 3: Inserisci l'URL di destinazione Webhook dove verranno inviati i messaggi in uscita.
Step 4: Selezionare il tipo di ID per il canale > fare clic su Next
I tipi di ID vengono utilizzati per l'identificazione dell'utente e vengono utilizzati per comunicare con il server di integrazione personalizzato.
Ci sono due tipi di ID disponibili:
Numero di telefono: Usalo se il fornitore di servizi di messaggistica riconosce i contatti in base al proprio numero di telefono.
Formato del campione: +60177872890
ID Personalizzato: Usalo se il provider di servizi di messaggistica riconosce Contatti basati su un ID generato su misura.
La lunghezza massima del carattere è 50.
A-Z
,a-z
,0-9
,_
,=
,+
,/
e@
sono ammessi.
Step 5: La seguente finestra di dialogo fornirà l'ID canale,API Token, eWebhook URLes.
ID canale:gfd8g7fd89dgfd
API Token:aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd
URL Webhook:https://app.respond.io/custom/channel/webhook/
Utilizzando un tipo di ID numero di telefono consente di avviare una conversazione e inviare il primo messaggio a un contatto.
Webhook URLviene utilizzato per pubblicare i messaggi,Messaggistica EchoeseMessaggistica Ricevutealla risposta. o piattaforma.
Il codice fornito attiverà il webhook su respond.io, creando un Contatto se necessario e salvando il messaggio sotto quel contatto.
Esempio di messaggi
curl -X POST \\
https://app.respond. o/custom/channel/webhook/ \\
-H 'authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'cache-control: no-cache' \\
-H 'content-type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"events": \[
{
"type": "message",
"mId": "xcvzzxcxczxczxc",
"timestamp": 2132131321000,
"message": {
"type": "text",
"testo": "Ciao Mondo"
}
}
\],
"contact": {
"firstName": "John",
"lastName": "Doe",
"profilePic": "",
"countryCode": "MY",
"email": "john@respond. o",
"telefono": "+60177872890",
"lingua": "it"
}
}'
Esempio di Echi di Messaggistica
curl -X POST \\
https://app.respond. o/custom/channel/webhook/ \\
-H 'authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'cache-control: no-cache' \\
-H 'content-type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"events": \[
{
"type": "message\_echo",
"mId": "xcvzzxcxczxczxc",
"timestamp": 2132131321000,
"message": {
"type": "text",
"testo": "Ciao Mondo"
}
}
\],
"contact": {
"firstName": "John",
"lastName": "Doe",
"profilePic": "",
"countryCode": "MY",
"email": "john@respond. o",
"telefono": "+60177872890",
"lingua": "it"
}
}'
Esempio di ricevimento di messaggi
curl -X POST \\
https://app.respond. o/custom/channel/webhook/ \\
-H 'authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'cache-control: no-cache' \\
-H 'content-type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"events": \[
{
"type": "message\_status",
"mId": "xcvzzxcxczxczxc",
"timestamp": 2132131321000,
"status": {
"value": "sent delivered read failed",
"message": "Errore: Invio non riuscito a causa di token non valido"
}
\]
}'
Campo | Descrizione | Convalida |
---|---|---|
channelId | Id Univoco Del Canale | Obbligatorio. Campo unico. Viene generato da respond.io. |
contactId | Id Contatto Unico | Obbligatorio. ID contatto unico respond.io. Massimo 50 caratteri. |
events.type | Tipo Di Evento | Obbligatorio. Tipo disponibile: messaggio, message_echo e message_status. |
events.mld | Id Messaggio | Obbligatorio. ID messaggio univoco. Massimo 50 caratteri. |
events.timestamp | Tempo Epoch UNIX (millisecondi) | Obbligatorio. Tempo dell'evento che ha innescato la richiamata. |
events.message.type | Tipo Di Messaggio | Obbligatorio. Tipi di messaggi disponibili: testo, allegato, posizione e quick_reply. Consultare la sezione Tipo messaggio per altri campioni di tipo messaggio. |
events.message.text | Testo Messaggio | Obbligatorio. Lunghezza massima 7.000 caratteri. |
events.status.value | Testo | Richiesto se event.type è stato message_status. Valori di stato disponibili: inviati, consegnati, letti e falliti. |
events.status.message | Testo | Richiesto se events.status.value non è riuscito. |
contact.firstName | Nome | Facoltativo. Massimo 50 caratteri. |
contact.lastName | Cognome | Facoltativo. Massimo 50 caratteri. |
contact.profilePic | Url Del Profilo Pic | Facoltativo. La dimensione dell'avatar non deve essere superiore a 100 kb. Raccomandato 720x720. |
contact.locale | Codice Locale | Facoltativo. Fare riferimento qui per l'elenco di valori. |
contact.countryCode | Codice Paese | Facoltativo. Codice paese 2 lettere - Codice ISO ALPHA-2. |
contact.timezone | Fuso Orario | Facoltativo. (min: -24) (max: 24). |
contact.email | Indirizzo Email | Facoltativo. Massimo 50 caratteri. |
contact.phone | Numero Di Telefono | Facoltativo. Massimo 18 caratteri. |
contact.language | Lingua | Facoltativo. ISO 639-1. |
Risposta - Successo (stato HTTP → 200)
"OK"
respond.io chiamerà l'endpoint<API Base URL>/message
Assicurati di applicare il codicedel messaggioin uscita sul percorso
/message
del tuo server web.
Ecco l'esempio cURL di respond.io che chiama l'endpoint:
curl -X POST \\
/message \\
-H 'authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'cache-control: no-cache' \\
-H 'content-type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"message": {
"type": "text",
"text": "Ciao Mondo"
}
}'
Risposta - Successo (stato HTTP → 200)
{
"mId": "1640141607842"
}
L'autenticazione deve avvenire all'endpoint prima di inviare il messaggio al provider di servizi di messaggistica.
Qui'è un esempio di utilizzo di un middleware espresso per questo scopo:
const {validationResult} = require('express-validator');
const validateToken = (req, res, next) => {
const apiToken = <>
const bearerToken = req. eaders.authorization;
if (!bearerToken)
return res. end(401)
const token = bearerToken.substring(7, bearerToken. ength);
if (apiToken !== token) {
return res. end(401)
}
next();
};
module.exports = {
validateToken
};
Noi've abbiamo incluso un esempio di Canale Personalizzato che puoi testare sul tuo server. Scopri il nostro progetto GitHub qui.
Esempio di testo
{
"type": "text",
"text": "Welcome to respond.io",
}
Campo | Descrizione | Convalida |
---|---|---|
tipo | Tipo Di Messaggio | Obbligatorio. testo |
testo | Testo Messaggio | Obbligatorio. Lunghezza massima 7.000 caratteri. |
Esempio di file multimediali
{
"type": "attachment",
"attachment": {
"type": "image video audio file",
"url": "https://abc/japan. ng",
"mimeType": "image/png",
"fileName":"logo aziendale. ng",
"description": "ultimo logo aziendale"
}
}
Campo | Descrizione | Convalida |
---|---|---|
tipo | Tipo Di Messaggio | Obbligatorio. allegato. |
allegato.type | Tipo Di Allegato | Obbligatorio. Tipi di allegati disponibili: immagine, video, audio e file. |
attachment.url | URL | Obbligatorio. Massimo 2.000 caratteri. Assicurarsi che sia un link pubblico in modo che gli utenti o i contatti siano in grado di vedere il contenuto. |
attachment.mimeType | Tipo MIME dell' allegato | Facoltativo |
allegato.fileName | Nome File | Facoltativo. Il nome del file dovrebbe includere un'estensione. Max 256 caratteri (inclusa l'estensione del file). L'invio di un file senza l'estensione o con l'estensione sbagliata potrebbe rendere impossibile l'apertura del file al contatto o all'utente. |
allegato.descrizione | Descrizione File | Facoltativo. Massimo 256 caratteri. Applicabile solo per allegato.type = immagine. |
Assicurati che l'URL dell'allegato sia't scaricato forzatamente dal browser. L'intestazione della risposta HTTP's Content-Disposition
dovrebbe avere il valore predefinito, che è inline
.
Esempio di posizione
{
"type": "location",
"latitude": 0.123456,
"longitude": -0.1234,
"address": "Sky Suites, Jalan P. Ramlee, Kuala Lumpur, 50250 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur"
}
Campo | Descrizione | Convalida |
---|---|---|
tipo | Tipo Di Messaggio | Obbligatorio. posizione. |
latitudine | Coordinate | Obbligatorio. Latitudine (±90°) entro intervalli validi. |
longtitude | Coordinate | Obbligatorio. Longitudine (±180°) entro intervalli validi. |
indirizzo | Indirizzo Posizione | Facoltativo. Massimo 256 caratteri. |
Esempio di risposta rapida
{
"type": "quick\_reply",
"title": "Seleziona la tua lingua preferita",
"replies": \[
"Malay",
"English"
\]
}
Campo | Descrizione | Convalida |
---|---|---|
tipo | Tipo Di Messaggio | Obbligatorio. quick_reply. |
titolo | Titolo Risposta Rapida | Obbligatorio. Massimo 256 caratteri. |
risposte | Testo Rispondi | Obbligatorio. Max 10 risposte con max. 256 caratteri per ogni risposta. |
Error (HTTP Status → 4xx)
Step 1: Click Settings > Channels
Passo 2: Individua il canale personalizzato > clicca Gestisci
Passo 3: Nella pagina Configurazione personalizzata dei canali vedrai le seguenti configurazioni:
Icona Canale - Carica un'immagine che serve come icona per il tuo canale personalizzato.
Nome del canale - Il nome del canale può essere modificato ed è usato internamente per identificare il canale.
URL Webhook per il messaggio in uscita — L'URL webhook per i messaggi in uscita a questo canale.
URL del Webhook per il messaggio in arrivo — L'URL del webhook per i messaggi in arrivo a questo canale.
ID Type — Questi sono utilizzati per l'identificazione dell'utente e sono utilizzati per comunicare con il server di integrazione personalizzato.
ID Canale — Unico ID Canale per identificare il tuo canale personalizzato.
API Token — Un identificatore univoco utilizzato per autenticare un utente per accedere a un'API.
Step 4: Fare clic su Salva le modifiche per aggiornare la configurazione personalizzata del canale.
Sì, puoi. Ecco tre passi da seguire:
In respond.io, inserisci l'URL di destinazione webhook dall'altra piattaforma nel campo Webhook URL for Incoming message.
Nell'altra piattaforma, imposta un URL webhook che punta a respond.io, permettendo ai Contatti di inviarti dei messaggi.
'richiederà un Server di integrazione personalizzato per interpretare le API di respond.io e l'altra piattaforma, abilitando lo scambio di messaggi tra loro.
Assicurarsi di confermare con l'altra piattaforma che i primi due passi sono fattibili.
Quando si collega un canale personalizzato, i messaggi inviati per rispondere. o attraverso webhooks restituirà sempre un codice di stato 200 immediatamente, indipendentemente dal fatto che il messaggio sia stato passato 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.