Cette intégration permet à votre équipe de discuter avec vos clients sur n'importe quel canal de messagerie via une implémentation personnalisée.
É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 :
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.
Format d'échantillon : +60177872890
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é.
La longueur maximale des caractères est de 50.
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
ID de la chaîne :gfd8g7fd89dgfd
Jeton API :aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd
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.
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"
respond.io appellera le point de terminaison<API Base URL>/message
Assurez-vous d'appliquer le codeMessage sortantsur la route
/message
de 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.
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. |
Erreur (état HTTP → 4xx)
É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é.
Oui, tu peux. Voici trois étapes à suivre :
Dans respond.io, saisissez l'URL du webhook de destination de l'autre plateforme dans le champ URL du webhook pour le message entrant .
Sur l'autre plateforme, configurez une URL de webhook pointant vers respond.io, permettant aux contacts de vous renvoyer des messages.
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.
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.