respond-io
New
🚀 TikTok Business Messaging est en direct! Transformez les conversations en conversions de manière transparente. En savoir plus.
arrow-icon

Accueil >

Canaux >
Canal personnalisé >
Démarrage rapide du canal personnalisé

Démarrage rapide du canal personnalisé

Avatar
JQ Lee
· 04 Apr 2025
5 min de lecture

Cette intégration permet à votre équipe de discuter avec vos clients sur n'importe quel canal de messagerie via une implémentation personnalisée.

Connexion d'un canal personnalisé

Étape 1 : Allez dans Paramètres > Chaînes

Étape 2 : Cliquez sur Ajouter une chaîne > Chaîne personnalisée > Connecter

Étape 3: Saisissez l'URL du Webhook de destination où les messages sortants seront envoyés.

Étape 4: Sélectionnez le type d'ID pour la chaîne > cliquez sur Suivant

Les types d’ID sont utilisés pour l’identification de l’utilisateur et sont utilisés pour communiquer avec votre serveur d’intégration personnalisé.

Il existe deux types d'identifiants disponibles :

  1. Numéro de téléphone: utilisez cette option si le fournisseur de services de messagerie reconnaît les contacts en fonction de leur numéro de téléphone.

    1. Format d'échantillon : +60177872890

  2. ID personnalisé: utilisez cette option si le fournisseur de services de messagerie reconnaît les contacts en fonction d'un ID généré personnalisé.

    1. La longueur maximale des caractères est de 50.

    2. AZ,az,0-9,_,=,+,/et@sont autorisés.

Étape 5: La boîte de dialogue suivante fournira l'ID de canal,Jeton APIetURL Webhookpar exemple

  1. ID de la chaîne :gfd8g7fd89dgfd

  2. Jeton API :aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd

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

    L'utilisation d'un type d'ID de numéro de téléphone vous permet d'initier une conversation et d'envoyer le premier message à un contact.

Transférer des messages à respond.io

L'URL Webhookest utilisée pour publier lesMessages,Échos de messagerieetReçus de messageriesur la plateforme respond.io.

Le code fourni déclenchera le webhook sur respond.io, créant un contact si nécessaire et enregistrant le message sous ce contact.

Exemple de messages

curl -X POST \\  
  https://app.respond.io/custom/channel/webhook/ \\  
  -H 'autorisation : porteur aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\  
  -H 'contrôle du cache : no-cache' \\  
  -H 'type de contenu : application/json' \\  
  -d '{  
  "channelId": "gfd8g7fd89dgfd",  
  "contactId": "+60177872890",  
  "événements": \[  
    {  
      "type": "message",  
      "mId": "xcvzzxcxczxczxc",  
      "timestamp": 2132131321000,  
      "message": {  
        "type": "texte",  
        "texte": "Bonjour tout le monde"  
      }  
    }  
  \],  
  "contact": {  
    "firstName": "John",  
    "lastName": "Doe",  
    "profilePic": "",  
    "countryCode": "MY",  
    "email": "[email protected]",  
    "téléphone": "+60177872890",  
    "langue": "en"  
  }  
}'

Exemple d'échos de messagerie

curl -X POST \\  
  https://app.respond.io/custom/channel/webhook/ \\  
  -H 'autorisation : porteur aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\  
  -H 'contrôle du cache : no-cache' \\  
  -H 'type de contenu : application/json' \\  
  -d '{  
  "channelId": "gfd8g7fd89dgfd",  
  "contactId": "+60177872890",  
  "événements": \[  
    {  
      "type": "message\_echo",  
      "mId": "xcvzzxcxczxczxc",  
      "timestamp": 2132131321000,  
      "message": {  
        "type": "texte",  
        "texte": "Bonjour tout le monde"  
      }  
    }  
  \],  
  "contact": {  
    "firstName": "John",  
    "lastName": "Doe",  
    "profilePic": "",  
    "countryCode": "MY",  
    "email": "[email protected]",  
    "phone": "+60177872890",  
    "language": "en"  
  }  
}'

Exemple de reçus de messagerie

curl -X POST \\  
  https://app.respond.io/custom/channel/webhook/ \\  
  -H 'autorisation : porteur aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\  
  -H 'contrôle du cache : no-cache' \\  
  -H 'type de contenu : application/json' \\  
  -d '{  
  "channelId": "gfd8g7fd89dgfd",  
  "contactId": "+60177872890",  
  "événements": \[  
    {  
      "type": "message\_status",  
      "mId": "xcvzzxcxczxczxc",  
      "timestamp": 2132131321000,  
      "status": {  
        "value": "envoyé|remis|lu|échoué",  
        "message": "Erreur : échec de l'envoi en raison d'un jeton non valide"  
      }  
  \]  
}'

Champ

Libellé

Validation

identifiant de canal

ID de chaîne unique

Requis. Domaine unique. Est généré par respond.io.

contactId

ID de contact unique

Requis. Identifiant de contact unique respond.io. Max 50 caractères.

événements.type

Type d'événement

Requis. Types disponibles : message, message_echo et message_status.

événements.mld

ID du message

Requis. ID de message unique. Max 50 caractères.

événements.horodatage

Heure d'époque UNIX (millisecondes)

Requis. Heure de l'événement qui a déclenché le rappel.

événements.message.type

Type de message

Requis. Types de messages disponibles : texte, pièce jointe, emplacement et réponse rapide. Consultez la section Type de message pour d’autres exemples de types de messages.

événements.message.texte

Texte du message

Requis. Longueur maximale de 7 000 caractères.

événements.status.value

Texte du texte

Obligatoire si event.type est message_status. Valeurs d'état disponibles : envoyé, livré, lu et échoué.

événements.état.message

Texte du texte

Obligatoire si events.status.value échoue.

contact.prénom

Prénom

Facultatif. Max 50 caractères.

contact.nom

Nom de famille

Facultatif. Max 50 caractères.

contact.profilePic

URL de la photo de profil

Facultatif. La taille de l'avatar ne doit pas dépasser 100 Ko. Recommandé 720x720.

contact.locale

Code local

Facultatif. Consultez ici la liste des valeurs.

contact.countryCode

Code du pays

Facultatif. Code pays à 2 lettres - Code ISO ALPHA-2.

contact.fuseau horaire

Fuseau horaire

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

contact.email

Adresse e-mail

Facultatif. Max 50 caractères.

contact.téléphone

Numéro de téléphone

Facultatif. Max 18 caractères.

contact.langue

Langue

Facultatif. ISO 639-1.

Réponse - Succès (statut HTTP → 200)

"D'ACCORD"

Gérer les messages sortants de respond.io

respond.io appellera le point de terminaison<API Base URL>/message

Assurez-vous d'appliquer le codeMessage sortantsur la route/messagede votre serveur Web.

Voici l'exemple cURL de respond.io appelant le point de terminaison :

curl -X POST \\  
  /message \\  
  -H 'autorisation : porteur aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\  
  -H 'contrôle du cache : no-cache' \\  
  -H 'type de contenu : application/json' \\  
  -d '{  
	"channelId": "gfd8g7fd89dgfd",  
	"contactId": "+60177872890",  
	"message": {  
		"type": "texte",  
		"texte": "Bonjour le monde"  
	}  
}'

Réponse - Succès (statut HTTP → 200)

{  
	"mId": "1640141607842"  
}

L'authentification doit avoir lieu au point de terminaison avant d'envoyer le message au fournisseur de services de messagerie.

Voici'un exemple d'utilisation d'un middleware express à cette fin :

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

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

    si (!bearerToken)
        renvoie res.send(401)

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

    si (apiToken !== token) {
        renvoie res.send(401)
    }
    next();
};

module.exports = {
    validateToken
};

Nous avons'inclus un exemple de canal personnalisé que vous pouvez tester sur votre serveur. Découvrez notre projet GitHub ici.

Type de messages

Exemple de texte

{  
  "type": "texte",  
  "texte": "Bienvenue sur respond.io",  
}

Champ

Libellé

Validation

taper

Type de message

Requis. texte

texte

Texte du message

Requis. Longueur maximale de 7 000 caractères.

Exemple de fichier multimédia

{  
  "type": "pièce jointe",  
  "pièce jointe": {  
    "type": "image|vidéo|audio|fichier",  
    "url": "https://abc/japan.png",  
    "mimeType": "image/png",  
    "fileName":"company logo.png",  
    "description": "dernier logo de l'entreprise"  
  }  
}

Champ

Libellé

Validation

taper

Type de message

Requis. pièce jointe.

type de pièce jointe

Type de pièce jointe

Requis. Types de pièces jointes disponibles : image, vidéo, audio et fichier.

pièce jointe.url

URL

Requis. Max 2 000 caractères. Assurez-vous qu'il s'agit d'un lien public afin que les utilisateurs ou les contacts puissent voir le contenu.

pièce jointe.mimeType

Type MIME de la pièce jointe

Optionnel

attachment.fileName

Nom du fichier

Facultatif. Le nom du fichier doit inclure une extension. Max 256 caractères (extension de fichier incluse). L'envoi d'un fichier sans extension ou avec une extension incorrecte peut empêcher le contact ou l'utilisateur d'ouvrir le fichier.

pièce jointe.description

Description du fichier

Facultatif. Max 256 caractères. Applicable uniquement pour attachment.type = image.

Assure-toi que l'URL de la pièce jointe n'est pas téléchargée de force par le navigateur. L'en-tête de réponse HTTP's Content-Disposition doit avoir la valeur par défaut, qui est inline.

Exemple d'emplacement

{  
  "type": "emplacement",  
  "latitude": 0,123456,  
  "longitude": -0,1234,  
  "adresse": "Sky Suites, Jalan P. Ramlee, Kuala Lumpur, 50250 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur"  
}

Champ

Libellé

Validation

taper

Type de message

Requis. emplacement.

latitude

Coordonnées

Requis. Latitude (±90°) dans les plages valides.

longitude

Coordonnées

Requis. Longitude (±180°) dans les plages valides.

adresse

Adresse du lieu

Facultatif. Max 256 caractères.

Exemple de réponse rapide

{  
  "type": "quick\_reply",  
  "title": "Sélectionnez votre langue préférée",    
  "replies": \[  
    "Malais",  
    "Anglais"  
  \]  
}

Champ

Libellé

Validation

taper

Type de message

Requis. réponse_rapide.

Titre:

Titre de la réponse rapide

Requis. Max 256 caractères.

réponses

Texte de réponse

Requis. Max 10 réponses avec max. 256 caractères pour chaque réponse.

Codes d'erreur

Erreur (état HTTP → 4xx)

Configuration du canal

Étape 1 : Cliquez sur Paramètres > Chaînes

Étape 2 : Localisez le canal personnalisé > cliquez sur Gérer

Étape 3 : Dans la page Configuration du canal personnalisé , vous verrez les configurations suivantes :

  • Icône de chaîne - Téléchargez une image qui sert d'icône pour votre chaîne personnalisée.

  • Nom du canal - Le nom du canal peut être modifié et est utilisé en interne pour identifier le canal.

  • URL du webhook pour le message sortant — L'URL du webhook pour les messages sortants vers ce canal.

  • URL du webhook pour les messages entrants — L'URL du webhook pour les messages entrants sur ce canal.

  • Type d'ID — Ceux-ci sont utilisés pour l'identification de l'utilisateur et sont utilisés pour communiquer avec votre serveur d'intégration personnalisé.

  • ID de chaîne — ID de chaîne unique pour identifier votre chaîne personnalisée.

  • Jeton API — Un identifiant unique utilisé pour authentifier un utilisateur afin d'accéder à une API.

Étape 4: Cliquez sur Enregistrer les modifications pour mettre à jour la configuration du canal personnalisé.

FAQ et dépannage

Puis-je connecter des chats d'autres plateformes à l'aide d'un canal personnalisé ?

Oui, tu peux. Voici trois étapes à suivre :

  1. Dans respond.io, saisissez l'URL du webhook de destination de l'autre plateforme dans le champ URL du webhook pour le message entrant .

  2. Sur l'autre plateforme, configurez une URL de webhook pointant vers respond.io, permettant aux contacts de vous renvoyer des messages.

  3. Tu auras besoin d'un Serveur d'Intégration Personnalisé pour interpréter les APIs de respond.io et de l'autre plateforme, permettant l'échange de messages entre eux.

Assurez-vous de confirmer auprès de l’autre plateforme que les deux premières étapes sont réalisables.

FAQ sur les webhooks de canaux personnalisés

Pourquoi le webhook renvoie-t-il un statut 200 même si le message ne parvient pas à être remis à respond.io ?

Lors de la connexion d'un canal personnalisé, les messages envoyés à respond.io via des webhooks renverront toujours immédiatement un code d'état 200, que le message ait été transmis avec succès à respond.io ou non. Cela est dû à la nature des webhooks, qui sont conçus pour renvoyer une réponse immédiate sans vérifier le succès de la livraison du message.

Partager cet article
Telegram
Facebook
Linkedin
Twitter

Articles connexes 👩‍💻

Vue d'ensemble du canal personnalisé
Obtenez un aperçu du canal personnalisé et de ses capacités.

Vous ne trouvez pas ce que vous recherchez? 🔎