Ce guide vous explique comment configurer un workflow HubSpot qui déclenche automatiquement un appel sortant AI Voice Agent. Pour illustrer cela, nous utiliserons le cas d’usage suivant : déclencher un appel sept jours avant un rendez-vous client. L’agent IA confirmera la présence, répondra aux questions de base sur le rendez-vous et recueillera toute préférence de reprogrammation ou d’annulation.
Comment cela fonctionne
Quel que soit le cas d’usage, voici le principe de base du déclenchement de l’automatisation :
L’enregistrement répond aux critères d’inscription via la valeur d’une propriété HubSpot → s’inscrit dans le workflow → le workflow envoie la charge utile de contexte à AI Voice Agent → AI Voice Agent lance l’appel sortant vers l’enregistrement
Cette base peut être adaptée à pratiquement n’importe quel cas d’usage.
En nous concentrant sur notre cas d’usage de rappel de rendez-vous, voici un flux d’appel type une fois que l’enregistrement est passé par le workflow et que l’appel a été déclenché :
- L’agent salue le client par son nom et confirme la date et l’heure de son rendez-vous.
- Il demande si cela lui convient toujours.
- Si OUI : il confirme tous les détails pertinents (lieu, personne à rencontrer) et met fin à l’appel.
- S’il souhaite REPROGRAMMER : l’agent demande la nouvelle date souhaitée et indique qu’une personne assurera le suivi pour confirmer.*
- S’il souhaite ANNULER : l’agent le note et indique que l’équipe prendra contact.
- S’il pose une question à laquelle l’agent ne peut pas répondre : il l’informe qu’un membre de l’équipe le rappellera.
* REMARQUE: HubSpot AI Actions pour meetingAvailability et bookMeeting arrivent bientôt, permettant aux agents de reprogrammer automatiquement les réunions sans intervention humaine.
Hypothèses
Ce guide part du principe que les éléments suivants sont déjà en place :
- Vous avez créé un AI Voice Agent sortant configuré pour le cas d’usage de rappel de rendez-vous dans le Dashboard Aircall.
- Vous disposez d’une propriété de contact HubSpot qui stocke la date du rendez-vous.
Personnalisation pour votre cas d’usage
Avant de commencer, tenez compte des points suivants :
- Champs obligatoires : Le numéro de téléphone du contact et la date du rendez-vous sont le minimum nécessaire pour déclencher un appel. Tous les autres champs sont facultatifs ; n’incluez que ceux que votre agent IA utilise réellement pendant la conversation.
- Champs facultatifs : Vous pouvez ajouter ou supprimer des champs de contexte (par ex. lieu, représentant attribué, type de rendez-vous) selon les informations dont votre agent a besoin pour traiter l’appel efficacement.
- Délai : ce workflow est basé sur des rappels à 7 jours. Vous pouvez l’ajuster au nombre de jours qui correspond à vos opérations.
- Autres types d’enregistrements : Ce guide est conçu autour des enregistrements Contact HubSpot, mais la même approche peut être adaptée pour fonctionner avec d’autres objets ; il suffit de remplacer le type d’enregistrement et les propriétés associées dans le déclencheur du workflow et l’action de code.
- Noms de propriétés : Remplacez chaque espace réservé comme [your_appointment_date_property] par le nom interne réel de la propriété HubSpot que vous utilisez pour stocker ces données.
Étape 1 : Rassemblez vos identifiants
Vous travaillerez sur deux outils — HubSpot et Aircall — donc avant de commencer, assurez-vous d’avoir accès aux deux et d’y être connecté. Vous devrez récupérer les identifiants suivants dans le Dashboard Aircall :
- ID AI Voice Agent
- Jeton Basic Auth
Vous devrez les coller dans le code à l’étape 2, et cela vous fera gagner du temps de les avoir à portée de main avant de commencer la configuration.
Votre AI Voice Agent dispose d’une URL Webhook unique qui sert d’identifiant. Elle est disponible dans le Dashboard Aircall afin que vous puissiez la copier et l’utiliser dans votre workflow.
Accédez à AI Voice Agent → Workflow d’appel sortant → URL Webhook → Copier
Votre jeton Basic Auth est utilisé pour authentifier les requêtes de HubSpot vers l’API Aircall, en vérifiant que l’appel a bien été déclenché par votre workflow. Il est généré à partir de votre ID API Aircall et de votre jeton API, que vous pouvez trouver dans le Dashboard Aircall en accédant à :
Integrations & API → clés API.
Une fois les deux valeurs récupérées, combinez-les au format API_ID:API_TOKEN et encodez le résultat en Base64. Cette chaîne encodée est votre jeton Basic Auth.
Étape 2 : Créer une action de code personnalisé dans HubSpot
Dans HubSpot, accédez à Automatisation > Workflows et créez un nouveau workflow basé sur les contacts. Donnez-lui un nom descriptif, tel que Rappel de rendez-vous — Appel sortant Aircall.
Définir le déclencheur d’inscription
Utilisez un déclencheur basé sur un planning lié à votre propriété de date de rendez-vous :
| Paramètre | Valeur |
| Type de déclencheur | Selon un planning |
| Inscrire | Contact |
| Fréquence | Une fois |
| Date | [Votre propriété de date de rendez-vous, par ex. appointment_date] → Avant la date → Nombre de jours avant la date = 7 |
| Heure de la journée [Heure d’exécution] | Choisissez une plage adaptée à vos heures de travail (par ex. 9 h–17 h) |
Le déclencheur basé sur la date contrôle le moment où l’appel est lancé, mais il ne fera rien tant que des contacts ne seront pas réellement inscrits dans le workflow. L’approche la plus simple et la plus universelle consiste à inscrire les contacts lorsque leur date de rendez-vous devient connue, c’est-à-dire lorsque la propriété passe de vide à une valeur renseignée.
Pour configurer cela, ajoutez une condition au déclencheur d’inscription :
Propriété de contact → [your appointment date property] → est connue.
Ainsi, chaque fois qu’une date de rendez-vous est définie sur un contact (quelle qu’en soit l’origine), il sera inscrit et le workflow gérera le reste lorsqu’il sera à 7 jours de la date de rendez-vous stockée dans la propriété.
Laissez la réinscription activée. Si un contact reprogramme et que sa date de rendez-vous est mise à jour, il sera de nouveau inscrit et recevra un appel de rappel pour la nouvelle date, ce qui est le comportement attendu.
Cliquez sur enregistrer, et votre déclencheur est maintenant terminé.
Ajouter une action de code personnalisé
Dans le workflow, ajoutez une action et sélectionnez Custom code. Choisissez Node.js 18.x comme langage.
Sous « Property to include in code », ajoutez les propriétés HubSpot que vous souhaitez transmettre à AI Voice Agent. Le tableau ci-dessous présente les champs recommandés, leur correspondance dans le code et des indications sur la propriété à utiliser :
| Propriété HubSpot | Nom de variable dans le code | Que mettre ici |
| [Propriété du prénom] | firstname | La propriété qui stocke le prénom du contact (généralement firstname dans HubSpot) |
| [Propriété du nom] | lastname | La propriété qui stocke le nom du contact (généralement lastname) |
| [Propriété du numéro de téléphone] | phone | Le numéro de téléphone portable / mobile ou principal à appeler, au format E.164 (par ex. +447911123456). Utilisez la propriété dans laquelle votre équipe stocke les numéros d’appel vérifiés. |
| [Propriété de date de rendez-vous] | appointment_date | La propriété dans laquelle vous stockez la date du rendez-vous. C’est la même que celle utilisée dans le déclencheur d’inscription. |
| [Propriété d’heure du rendez-vous] (facultatif) | appointment_time | La propriété qui stocke l’heure du rendez-vous, si vous la stockez séparément de la date. |
| [Propriété du lieu] (facultatif) | appointment_location | L’adresse ou le lieu du rendez-vous, par ex. l’adresse d’une clinique, d’un bureau ou le nom d’une agence. |
| [Propriété du représentant attribué] (facultatif) | assigned_rep | Le nom de la personne ou du membre de l’équipe que le client rencontrera. Utilisez la propriété qui stocke cette information dans votre CRM. |
Ajoutez ou supprimez des lignes selon le contexte dont votre agent IA a besoin. N’incluez que les champs auxquels l’agent fera réellement référence pendant l’appel.
Coller le code
Remplacez le code par défaut par le code suivant.
Veuillez noter :
- Les lignes event.inputFields dans le code doivent correspondre aux champs d’entrée que vous venez de configurer ci-dessus sous « Property to include in code ». Assurez-vous qu’elles correspondent également aux lignes de charge utile de contexte plus bas dans le code.
- Mettez à jour l’espace réservé basicAuth avec votre jeton Basic Auth
- Mettez à jour l’espace réservé agent URL avec votre ID agent/URL Webhook
const axios = require('axios');
exports.main = async (event, callback) => {
const firstname = event.inputFields['firstname'];
const lastname = event.inputFields['lastname'];
const phone = event.inputFields['phone'];
const appt_date = event.inputFields['appointment_date'];
const appt_time = event.inputFields['appointment_time'];
const appt_address = event.inputFields['appointment_address'];
const legal_rep = event.inputFields['legal_representative'];
const basicAuth = 'YOUR_AIRCALL_BASIC_AUTH_TOKEN';
const agentUrl = 'https://api.aircall.io/v1/outbound-calls/agents/YOUR_AGENT_ID';
try {
const response = await axios.post(
agentUrl,
{
contact_phone: phone,
idempotency_key: `appt-reminder-${event.object.objectId}`,
context: {
first_name: firstname,
last_name: lastname,
appointment_date: appt_date,
appointment_time: appt_time,
appointment_address: appt_address,
legal_representative: legal_rep
},
expiration_seconds: 3600
},
{
headers: {
Authorization: `Basic ${basicAuth}`,
'Content-Type': 'application/json'
}
}
);
callback({ outputFields: { status: response.status, message: 'Call triggered' } });
} catch (error) {
const status = error.response?.status || 500;
const body = JSON.stringify(error.response?.data) || 'No response';
callback({ outputFields: { status, message: `${error.message} | ${body}` } });
}
};
Important: L’agent n’utilisera que ce qui est transmis dans la charge utile de contexte. Si un champ est manquant ou vide, il n’y fera pas référence. Ne transmettez jamais un champ contenant des données de test ou un espace réservé dans un workflow actif.
La configuration de votre workflow est maintenant terminée.
Étape 3 : Tester avant la mise en production
Avant d’activer le workflow pour tous les contacts, suivez ces étapes :
- Inscrivez un contact de test interne avec un vrai numéro de téléphone portable / mobile et une fausse date de rendez-vous fixée à demain.
- Déclenchez le workflow manuellement à l’aide de l’action Test dans HubSpot.
- Écoutez l’appel et vérifiez que l’agent lit le bon nom, la bonne date, la bonne heure et tous les autres champs que vous avez inclus.
- Testez le parcours de reprogrammation en répondant que vous souhaitez changer la date.
Une fois que vous êtes satisfait de son fonctionnement, vous pouvez activer le workflow.
Conseil: Utilisez la vue de l’historique du workflow de HubSpot pour vérifier si chaque action de code a réussi ou échoué, ainsi que le code de statut renvoyé par Aircall. Un statut 200 signifie que l’appel a été déclenché avec succès.