Ce guide vous explique comment configurer un Workflow HubSpot qui déclenche automatiquement un appel sortant d’un AI Voice Agent. Pour illustrer cette configuration, nous utiliserons le cas d’usage suivant : déclencher un appel sept jours avant le rendez-vous d’un client. L’agent IA confirmera sa présence, répondra aux questions simples concernant le rendez-vous et recueillera toute demande de report ou d’annulation.
Fonctionnement
Quel que soit le cas d’usage, voici le principe de déclenchement de l’automatisation :
L’enregistrement répond aux critères d’inscription via la valeur d’une propriété HubSpot → est inscrit au processus → le processus envoie les données contextuelles à l’AI Voice Agent → l’AI Voice Agent lance un appel sortant vers l’enregistrement
Cette base peut être adaptée à pratiquement tous les cas d’usage.
Pour revenir à notre cas d’usage de rappel de rendez-vous, voici un flux d’appels type une fois que l’enregistrement est passé par le processus 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 lui demande s’il souhaite toujours maintenir le rendez-vous.
- Si OUI : il confirme les informations pertinentes (lieu, personne rencontrée) et met fin à l’appel.
- Si le client souhaite REPORTER le rendez-vous : l’agent lui demande sa nouvelle date préférée et l’informe qu’une personne le recontactera pour confirmer.*
- Si le client souhaite ANNULER : l’agent en prend note et l’informe que l’équipe le contactera.
- Si le client pose une question à laquelle l’agent ne peut pas répondre : il l’informe qu’un membre de l’équipe le rappellera.
* REMARQUE :
Les actions IA de HubSpot meetingAvailability et bookMeeting seront bientôt disponibles et permettront aux agents de reporter automatiquement des réunions sans intervention humaine.Prérequis
Ce guide suppose que les éléments suivants sont déjà en place :
- Vous avez créé un AI Voice Agent sortant configuré dans le tableau de bord Aircall pour le cas d’usage de rappel de rendez-vous.
- Vous disposez d’une propriété de contact HubSpot qui stocke la date du rendez-vous.
Personnalisation selon votre cas d’usage
Avant de commencer, tenez compte des éléments suivants :
- Champs obligatoires : le numéro de téléphone du contact et la date du rendez-vous sont les informations minimales requises pour déclencher un appel. Tous les autres champs sont facultatifs ; incluez uniquement ceux que votre agent IA utilise réellement pendant la conversation.
- Champs facultatifs : vous pouvez ajouter ou supprimer des champs contextuels (par exemple, le lieu, le représentant attribué ou le type de rendez-vous) selon les informations dont votre agent a besoin pour gérer efficacement l’appel.
- Délai : ce processus repose sur des rappels envoyés 7 jours à l’avance. Vous pouvez modifier ce délai selon le nombre de jours adapté à vos opérations.
- Autres types d’enregistrements : ce guide repose sur les fiches de contact HubSpot, mais la même approche peut être adaptée à d’autres objets. Il suffit de remplacer le type d’enregistrement et les propriétés associées dans le déclencheur du processus et l’action de code.
- Noms des propriétés : remplacez chaque espace réservé tel que [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 : récupérer vos identifiants
Vous allez travailler dans deux outils, HubSpot et Aircall. Avant de commencer, vérifiez donc que vous avez accès aux deux et que vous y êtes connecté. Vous devrez récupérer les identifiants suivants dans le tableau de bord Aircall :
- ID de l’AI Voice Agent
- Jeton d’authentification de base
Vous devrez les coller dans le code à l’étape 2. Les avoir à portée de main avant de commencer la configuration vous fera gagner du temps.
Votre AI Voice Agent possède une URL de Webhook unique qui lui sert d’identifiant. Vous pouvez la copier depuis le tableau de bord Aircall et l’utiliser dans votre processus.
Accédez à AI Voice Agent → Processus d’appel sortant → URL du Webhook → Copier
Votre jeton d’authentification de base sert à authentifier les requêtes envoyées par HubSpot à l’API Aircall, afin de vérifier que l’appel a bien été déclenché par votre processus. Il est généré à partir de votre ID d’API et de votre jeton d’API, que vous trouverez dans le tableau de bord Aircall en accédant à Intégrations → clés API.
Une fois les deux valeurs obtenues, associez-les au format API_ID:API_TOKEN et encodez le résultat en Base64. Cette chaîne encodée constitue votre jeton d’authentification de base.
Étape 2 : créer une action de code personnalisée dans HubSpot
Dans HubSpot, accédez à Automatisation > Workflows et créez un nouveau Workflow basé sur les contacts. Donnez-lui un nom descriptif, par exemple Rappel de rendez-vous — Appel sortant Aircall.
Configurer le déclencheur d’inscription
Utilisez un déclencheur basé sur un calendrier et lié à la propriété de date de votre rendez-vous :
| Paramètre | Valeur |
| Type de déclencheur | Selon un calendrier |
| Inscrire | Contact |
| Fréquence | Une fois |
| Date | [Votre propriété de date de rendez-vous, par exemple 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 exemple, de 9 h à 17 h) |
Le déclencheur basé sur la date détermine le moment où l’appel est lancé, mais il ne produira aucun effet si les contacts ne sont pas réellement inscrits au processus. L’approche la plus simple et la plus universelle consiste à inscrire les contacts lorsque la date de leur rendez-vous est connue, c’est-à-dire lorsque la propriété, auparavant vide, reçoit une valeur.
Pour configurer cela, ajoutez une condition au déclencheur d’inscription :
Propriété du contact → [votre propriété de date de rendez-vous] → est connue.
Ainsi, chaque fois qu’une date de rendez-vous est définie pour un contact, quelle que soit la manière dont elle a été ajoutée, ce contact est inscrit et le processus se charge du reste lorsqu’il reste 7 jours avant la date de rendez-vous stockée dans la propriété.
Laissez la réinscription activée. Si un contact reporte son rendez-vous et que la date est mise à jour, il sera inscrit à nouveau et recevra un appel de rappel pour la nouvelle date, conformément au comportement attendu.
Cliquez sur Enregistrer. Votre déclencheur est maintenant configuré.
Ajouter une action de code personnalisé
Dans le processus, ajoutez une action et sélectionnez Code personnalisé. Choisissez Node.js 18.x comme langage.
Sous « Propriété à inclure dans le code », ajoutez les propriétés HubSpot que vous souhaitez transmettre à l’AI Voice Agent. Le tableau ci-dessous présente les champs recommandés, les éléments auxquels ils correspondent dans le code et des conseils sur la propriété à utiliser :
| Propriété HubSpot | Nom de la variable dans le code | Élément à renseigner ici |
| [Propriété du prénom] | firstname | La propriété qui contient le prénom du contact (généralement firstname dans HubSpot) |
| [Propriété du nom] | lastname | La propriété qui contient 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 mobile ou principal à appeler, au format E.164 (par exemple, +447911123456). Utilisez la propriété dans laquelle votre équipe enregistre les numéros d’appel vérifiés. |
| [Propriété de la date du rendez-vous] | appointment_date | La propriété dans laquelle vous enregistrez la date du rendez-vous. Il s’agit de la même propriété que celle utilisée dans le déclencheur d’inscription. |
| [Propriété de l’heure du rendez-vous] (facultatif) | appointment_time | La propriété qui contient l’heure du rendez-vous, si vous l’enregistrez séparément de la date. |
| [Propriété du lieu] (facultatif) | appointment_location | L’adresse ou le lieu du rendez-vous, par exemple l’adresse d’une clinique, 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é correspondante dans votre CRM. |
Ajoutez ou supprimez des lignes selon le contexte dont votre agent IA a besoin. Incluez uniquement 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.
À noter :
- Les lignes event.inputFields du code doivent correspondre aux champs de saisie que vous venez de configurer ci-dessus sous « Propriété à inclure dans le code ». Vérifiez qu’elles correspondent également aux lignes de la charge utile context plus bas dans le code.
- Remplacez l’espace réservé basicAuth par votre jeton d’authentification de base
- Remplacez l’URL d’agent fictive par l’ID de votre agent/URL de 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 utilisera uniquement les données transmises dans la charge utile context. Si un champ est manquant ou vide, il n’y fera pas référence. Ne transmettez jamais de champ contenant des données fictives ou de test dans un processus actif.
La configuration de votre processus est maintenant terminée.
Étape 3 : effectuer des tests avant la mise en service
Avant d’activer le processus pour tous les contacts, suivez ces étapes :
- Inscrivez un contact de test interne avec un véritable numéro de téléphone mobile et une date de rendez-vous fictive définie au lendemain.
- Déclenchez manuellement le processus à l’aide de l’action Tester dans HubSpot.
- Écoutez l’appel et vérifiez que l’agent lit correctement le nom, la date, l’heure et tous les autres champs que vous avez inclus.
- Testez le parcours de reprogrammation en indiquant que vous souhaitez modifier la date.
Lorsque vous êtes satisfait de son fonctionnement, vous pouvez activer le processus.
Conseil: Utilisez la vue de l’historique des processus 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 bien été déclenché.