Dernière modification : 28 août 2025
Le kit de développement logiciel pour les extensions d’appel permet aux applications de proposer une option d’appel personnalisée pour les utilisateurs HubSpot directement à partir d’une fiche d’informations du CRM, similaire à l’outil d’appels fourni par HubSpot. Lorsqu’un utilisateur passe un appel à l’aide de votre appli, HubSpot crée un engagement sur la chronologie d’activité de la fiche d’informations du CRM, puis échange des données avec votre application pour compléter les détails.
Une extension d’appel comprend trois éléments principaux :
- Le kit de développement logiciel pour les extensions d’appel, un kit de développement logiciel pour JavaScript qui permet la communication entre votre application et HubSpot.
- Les points de terminaison des paramètres d’appel, qui sont utilisés pour définir les paramètres d’appel pour votre application. Chaque compte HubSpot qui connectera votre application utilisera ces paramètres.
- L’iFrame d’appel, qui est l’endroit où votre application apparaît pour les utilisateurs HubSpot et est configuré à l’aide des points de terminaison des paramètres d’appel.
Remarque :
La documentation ci-dessous couvre les appels sortants via le kit de développement logiciel. En savoir plus sur l’utilisation du kit de développement logiciel pour recevoir des appels entrants (BÊTA).Exécuter l’application d’appel de démonstration
Vous pouvez tester le kit de développement logiciel pour les extensions d’appel sur deux applications de démonstration différentes :- Demo-minimal-js propose une implémentation minimale du kit de développement logiciel en utilisant JavaScript, HTML et CSS. Affichez la façon dont le kit de développement logiciel est instancié dans index.js.
- Demo-react-ts propose une implémentation réelle du kit de développement logiciel à l’aide de React, TypeScript et Styled Components pour servir de modèle à votre application. Affichez la façon dont le kit de développement logiciel est instancié dans useCti.ts.
Remarque :
Ces applications de démonstration ne sont pas entièrement fonctionnelles et utilisent des données factices pour offrir une expérience plus réaliste.Installer l’application d’appel de démonstration
Vous pouvez exécuter les applications de démonstration avec ou sans installation. Pour installer la démo sur votre environnement local :- Installez Node.js sur votre environnement.
- Clonez, bifurquez ou téléchargez le ZIP de ce référentiel.
- Ouvrez votre terminal et accédez au répertoire racine du projet.
-
Exécutez l’une des commandes suivantes :
- Pour les
demo-minimal-js
:
- Pour les
- Pour les
demo-react-ts
:
Remarque :
La commandenpm start
ouvrira automatiquement un nouvel onglet dans votre navigateur à l’adresse https://localhost:9025/ et vous devrez peut-être contourner un avertissement « Votre connexion n’est pas sécurisée » pour accéder à l’application.Lancer l’application d’appel de démonstration depuis HubSpot
- Accédez à vos fiches d’informations :
- Contacts : dans votre compte HubSpot, accédez à Contacts > Contacts.
- **Entreprise **: dans votre compte HubSpot, accédez à Contacts > Entreprises.
- Ouvrez la console de développeur de votre navigateur et exécutez la commande suivante :
- Si vous avez terminé les étapes d’installation, pour
demo-minimal-js
oudemo-react-ts
:
- Si vous avez terminé les étapes d’installation, pour
- Si vous avez ignoré les étapes d’installation :
- Pour les
demo-minimal-js
:
- Pour les
- Pour les
demo-react-ts
:
- Actualisez la page et cliquez sur l’icône Appel dans la barre latérale de gauche. Cliquez sur le menu déroulant Appel de et sélectionnez le nom de l’application de démonstration à l’étape 2 (par exemple : Demo App Local, Demo App JS, Demo App React).

- Cliquez sur Appel pour voir comment l’application de démonstration s’intègre à HubSpot via le kit de développement logiciel pour les extensions d’appel. Vous pouvez également voir les événements enregistrés sur la console de développeur de votre navigateur.

Installer le kit de développement logiciel pour les extensions d’appel sur votre application d’appel
Pour ajouter le kit de développement logiciel pour les extensions d’appel en tant que dépendance Node.js à votre application d’appel :- Pour npm, exécutez :
- Pour yarn, exécutez :
Utilisation du kit de développement logiciel pour les extensions d’appel
Le kit de développement logiciel pour les extensions d’appel expose une API simple pour HubSpot et une application d’appel pour échanger des messages. Les messages sont envoyés via des méthodes exposées par le kit de développement logiciel et reçus viaeventHandlers
. Vous pouvez trouver une liste complète des événements disponibles dans la section Événements.
Voici une description des événements :
- Numérotation : HubSpot envoie l’événement de numérotation.
- Appel sortant démarré : l’application informe HubSpot lorsque l’appel a démarré.
- Créer un engagement : HubSpot crée un engagement d’appel avec un minimum d’informations si l’application le demande.
- Engagement créé : HubSpot a créé un engagement.
- EngagementId envoyé à l’application : HubSpot envoie
engagementId
à l’application. - Fin de l’appel : l’application informe lorsque l’appel est terminé.
- Appel terminé : l’application informe lorsque l’utilisateur a terminé l’expérience utilisateur de l’application.
- Mettre à jour l’engagement : l’application récupère l’engagement avec
engagementId
, puis fusionne et met à jour l’engagement avec des détails d’appel supplémentaires. Découvrez-en davantage sur la mise à jour d’un engagement d’appel via l’API ou via le kit de développement logiciel.
CallingExtensions
. Vous pouvez définir le comportement de votre extension en fournissant l’objet d’une option lorsque vous créez votre instance d’extensions. L’objet de cette option fournit un champ eventHandlers
dans lequel vous pouvez spécifier le comportement de votre extension. Le bloc de code suivant illustre les options disponibles et les gestionnaires d’événements que vous pouvez définir :
Tester votre application
Afin de lancer les extensions d’appel iFrame pour les utilisateurs finaux, HubSpot nécessite les paramètres iFrame suivants.Via le point de terminaison des paramètres d’appel
Via votre outil d’API (par exemple : Postman), envoyez la charge utile suivante à l’API de paramètres de HubSpot. Assurez-vous d’obtenir l’élément APP_ID de votre application d’appel et de votre application DEVELOPER_ACCOUNT_API_KEY.Remarque :
L’indicateurisReady
détermine si l’application est prête pour la production. Il doit être défini sur false
lors des tests.Remplacer vos paramètres d’extension à l’aide de localStorage
Vous pouvez remplacer n’importe lequel de vos paramètres d’extension à des fins de test. Ouvrez la console du développeur de votre navigateur à partir d’un onglet HubSpot, modifiez les paramètres ci-dessous et exécutez la commande :Préparer votre application pour la production
Une fois que vous avez défini les paramètres de votre application à l’aide du point de terminaison des paramètres d’appel, utilisez le point de terminaison PATCH pour passerisReady
sur true.
Publier votre application d’appel dans le marketplace de HubSpot
Une fois votre application configurée, les utilisateurs peuvent l’installer sur leur compte en utilisant l’URL d’installation de l’application. Si vous souhaitez la lister publiquement pour que les autres utilisateurs de HubSpot puissent la trouver, vous pouvez également choisir de la lister sur le Marketplace des applications de HubSpot. Cela n’est pas nécessaire si l’application est réservée à un usage interne.Événements
Événements d’appel disponibles :Envoi de messages à HubSpot
L’objetextensions
fournit les gestionnaires d’événements suivants que vous pouvez appeler pour envoyer des messages à HubSpot ou pour spécifier un autre comportement associé. Consultez l’exemple ci-dessous.
initialized: Required
Envoyez un message indiquant que le téléphone logiciel est prêt pour l’interaction.Propriété | Type | Description |
---|---|---|
isLoggedIn | Booléen | Permet de vérifier si un utilisateur est connecté ou non. |
engagementId | Nombre | Un ID d’engagement créé par HubSpot. |
isAvailable | Nombre | Permet de vérifier si un utilisateur est disponible ou non. |
userAvailable
Envoie un message indiquant que l’utilisateur est disponible.userUnavailable
Envoie un message indiquant que l’utilisateur n’est pas disponible.userLoggedIn
Envoie un message indiquant que l’utilisateur s’est connecté.userLoggedOut
Envoie un message indiquant que l’utilisateur s’est déconnecté.incomingCall
Envoie un message pour informer HubSpot qu’un appel entrant a commencé.Propriété | Type | Description |
---|---|---|
externalCallId | Nombre | Une application d’appel a créé l’ID d’appel. Permet d’activer les appels dans le centre de support. |
callStartTime | Nombre | L’heure de début de l’appel, en millisecondes. |
createEngagement | Booléen | Si HubSpot doit créer un engagement pour cet appel ou non. Si la valeur est définie sur vrai, HubSpot répondra avec onCreateEngagementSucceeded ou onCreateEngagementFailed. |
fromNumber | Chaîne | Le numéro de téléphone du correspondant. Paramètre obligatoire. |
toNumber | Chaîne | Le numéro de téléphone du destinataire. |
outgoingCall
Envoie un message pour informer HubSpot qu’un appel sortant a commencé.Propriété | Type | Description |
---|---|---|
callStartTime | Nombre | L’heure de début de l’appel, en millisecondes. |
createEngagement | Booléen | Si HubSpot doit créer un engagement pour cet appel ou non. Si la valeur est définie sur vrai, HubSpot répondra avec onCreateEngagementSucceeded ou onCreateEngagementFailed. |
toNumber | Chaîne | Le numéro de téléphone du destinataire. |
fromNumber | Chaîne | Le numéro de téléphone du correspondant. Paramètre obligatoire. |
dialingContext | Objet | Le contexte de numérotation est utilisé pour la création de tickets et/ou d’engagements, le cas échéant. L’objet inclut toutes les propriétés de la onDialNumber charge utile. Cette propriété permet d’assurer la cohérence des données en renvoyant le contexte de numérotation complet entre HubSpot et votre application tierce. |
callAnswered
Envoie un message pour informer HubSpot qu’un appel sortant est en cours de prise en charge.Propriété | Type | Description |
---|---|---|
externalCallId | Nombre | Une application d’appel a créé l’ID d’appel. Permet d’activer les appels dans le centre de support. |
callEnded
Envoie un message pour informer HubSpot que l’appel a pris fin.Propriété | Type | Description |
---|---|---|
externalCallId | Nombre | Une application d’appel a créé l’ID d’appel. Permet d’activer les appels dans le centre de support. |
engagementId | Nombre | Un ID d’engagement créé par HubSpot. |
callEndStatus | Énumération | Le statut de l’appel lorsqu’il se termine. Statuts disponibles :
|
callCompleted
Envoie un message pour informer HubSpot que l’appel est terminé. Les propriétés d’engagement appartiennent à HubSpot et n’ont plus besoin d’être créées ou mises à jour manuellement (voir les éléments en surbrillance).Remarque :
La propriétéhideWidget
sera ignorée lorsque l’utilisateur se trouvera dans une file d’attente de tâches avec le type de tâche Call
.Propriété | Type | Description |
---|---|---|
engagementId | Nombre | Un ID d’engagement créé par HubSpot. |
hideWidget | Booléen | Permet d’indiquer si le widget doit être masqué lorsque l’appel est terminé. Paramètre facultatif. La valeur par défaut est true. |
engagementProperties | Chaîne | Permet de vous inscrire aux engagements détenus hs en ajoutant des propriétés. Entraîne une réponse de HubSpot avec onUpdateEngagementSucceeded ou onUpdateEngagementFailed. |
externalCallId | Nombre | Une application d’appel a créé l’ID d’appel. Permet d’activer les appels dans le centre de support. |
publishToChannel
Publie l’appel sur un canal connecté. Ceci n’est pas nécessaire pour les engagements appartenant à HubSpot.Propriété | Type | Description |
---|---|---|
externalCallId | Nombre | Une application d’appel a créé l’ID d’appel. Permet d’activer les appels dans le centre de support. |
engagementId | Nombre | Un ID d’engagement créé par HubSpot. |
navigateToRecord
Cet événement est appelé lors de la navigation vers une fiche d’informations.Propriété | Type | Description |
---|---|---|
engagementId | Nombre | Un ID d’engagement créé par HubSpot. |
objectCoordinates | Coordonnées de l’objet | Référence portalId , objectId , et objectTypeID . |
sendError
Envoie un message pour informer HubSpot que l’application d’appel a rencontré une erreur.Propriété | Type | Description |
---|---|---|
message | Chaîne | Un message d’erreur à afficher dans la fenêtre contextuelle d’alerte. |
resizeWidget
Envoie un message pour informer HubSpot que l’application d’appel doit être redimensionnée.Propriété | Type | Description |
---|---|---|
height | Nombre | La hauteur souhaitée du widget d’appel. |
width | Nombre | La largeur souhaitée du widget d’appel. |
Recevoir des messages de HubSpot
L’objetextensions
fournit les gestionnaires d’événements suivants que vous pouvez appeler pour recevoir des messages dans HubSpot ou pour spécifier un autre comportement associé. Consultez l’exemple ci-dessous.
onReady
Message indiquant que HubSpot est prêt à recevoir des messages.Propriété | Type | Description |
---|---|---|
engagementId | Nombre | Un ID d’engagement créé par HubSpot. |
iframeLocation | Énumération | widget : le widget glisser-déposer affiché dans les pages de fiches d’informations lorsque l’application d’appel ne prend pas en charge les appels entrants.remote : frame dans la barre de navigation lorsque l’application appelle prend en charge les appels entrants.window : iFrame dans la fenêtre d’appel lorsque l’application d’appel prend en charge les appels entrants. |
ownerId | Chaîne ou Nombre | L’ID de l’utilisateur connecté (dans HubSpot). |
PortalId | Nombre | L’ID du compte HubSpot. |
userId | Nombre | L’ID de l’utilisateur HubSpot. |
onDialNumber
Cet événement se déclenche lorsqu’un utilisateur de HubSpot déclenche un appel sortant. L’événementonDialNumber
fournira une charge utile qui comprendra tous les champs pertinents associés à l’appel. Ces champs sont détaillés dans le tableau ci-dessous :
Propriété | Type | Description |
---|---|---|
phoneNumber | Chaîne | Le numéro de téléphone de la personne que l’utilisateur HubSpot a appelée. |
ownerId | Chaîne ou Nombre | L’ID de l’utilisateur connecté (dans HubSpot). |
subjectId | Nombre | L’ID du sujet. |
objectId | Nombre | Le type d’objet du numéro de téléphone. |
objectType | Chaîne | Le type d’objet associé au numéro de téléphone composé (par exemple : le numéro de téléphone du contact ou de l’entreprise). Les valeurs possibles sont : "CONTACT" ou "COMPANY" . |
portalId | Nombre | L’ID du portail HubSpot. |
countryCode | Chaîne | Le code du pays du numéro de téléphone. |
calleeInfo | Tableau | Les informations sur la personne appelée. Doit inclure les éléments suivants :
|
startTimestamp | Nombre | L’horodatage du début de l’appel. |
toPhoneNumberSrc | Chaîne | Le nom de la propriété des numéros de téléphone’ dans HubSpot. La propriété peut être une valeur standard ou une propriété personnalisée. Par exemple, un contact peut avoir trois numéros de téléphone, l’un peut être libellé Bureau, un autre Personnel et le dernier Portable. |
onEngagementCreated
Obsolète. Utilisez onCreateEngagementSucceeded à la place.Propriété | Type | Description |
---|---|---|
engagementId | Nombre | Un ID d’engagement créé par HubSpot. |
onCreateEngagementSucceeded
HubSpot envoie un message pour informer le partenaire d’application d’appel que la mise à jour de l’engagement a réussi.onCreateEngagementFailed
HubSpot envoie un message pour informer le partenaire d’application d’appel que la création de l’engagement a échoué.onNavigateToRecordFailed
Cet événement est appelé en cas d’échec de la navigation vers une fiche d’informations.Propriété | Type | Description |
---|---|---|
engagementId | Nombre | Un ID d’engagement créé par HubSpot. |
objectCoordinates | Coordonnées de l’objet | Référence portalId , objectId , et objectTypeID . |
onPublishToChannelSucceeded
Cet événement est appelé lorsque la publication sur un canal réussit.Propriété | Type | Description |
---|---|---|
engagementId | Nombre | Un ID d’engagement créé par HubSpot. |
externalCallId | Nombre | Une application d’appel a créé l’ID d’appel. Permet d’activer les appels dans le centre de support. |
onPublishToChannelFailed
Cet événement est appelé en cas d’échec de la publication sur un canal.Propriété | Type | Description |
---|---|---|
engagementId | Nombre | Un ID d’engagement créé par HubSpot. |
externalCallId | Nombre | Une application d’appel a créé l’ID d’appel. Permet d’activer les appels dans le centre de support. |
onCallerIdMatchSucceeded
Cet événement est appelé lorsque la correspondance d’ID de l’appelant réussit.onCallerIdMatchFailed
Cet événement est appelé en cas d’échec de la correspondance d’ID de l’appelant.onVisibilityChanged
Message indiquant si l’utilisateur a minimisé ou masqué l’application d’appel.defaultEventHandler
Gestionnaire par défaut pour les événements.Kit de développement logiciel pour les appels | Questions fréquentes
Comment l’authentification des utilisateurs est-elle gérée ?
L’application d’appel doit gérer l’authentification.Les extensions d’appels sont-elles hébergées sur un réseau de diffusion de contenu ?
Oui. Vous pouvez installer le kit de développement logiciel pour les extensions d’appel via jsDeliver. Par exemple, pour installer call-extensions-sdk@0.2.2, vous pouvez utiliser https://cdn.jsdelivr.net/npm/@hubspot/calling-extensions-sdk@0.2.2/dist/main.js.Quand faut-il créer ou mettre à jour un engagement ?
Un utilisateur peut lancer un appel à partir de l’interface utilisateur HubSpot, mais également en dehors (par exemple : application mobile, numéro redirigé, etc.). Si un appel est lancé à partir de l’interface utilisateur de HubSpot, HubSpot créera une interaction d’appel et enverra l’interaction à l’application d’appel. Une fois l’appel terminé, l’application d’appel peut mettre à jour cette interaction avec des détails d’appel supplémentaires. Si un appel est lancé en dehors de l’interface utilisateur HubSpot, l’application doit créer l’interaction d’appel.Quels sont les périmètres d’accès requis dans le cadre de l’intégration ?
L’ajout des périmètres d’accès Contacts et Chronologie est requis. Ces périmètres d’accès garantissent que votre application a accès aux contacts, et peut créer et mettre à jour des interactions d’appel dans le CRM.Cette fonctionnalité peut-elle être ajoutée à une application déjà existante sur le marketplace ou dois-je créer une nouvelle application ?
Si vous disposez déjà d’une application existante qui répond au cas d’utilisation d’appel, vous pouvez ajouter directement cette fonctionnalité à votre application existante. Tous les clients qui ont déjà votre application auront accès à cette nouvelle fonctionnalité sans avoir à installer l’application à nouveau.Puis-je intégrer mon application de téléphone logiciel existante dans le kit de développement logiciel ?
Oui, l’intégration de votre application de téléphone logiciel existante devrait être très facile. Il suffit de suivre les étapes décrites dans la documentation ci-dessus pour que votre application soit opérationnelle.Les utilisateurs peuvent-ils utiliser plusieurs intégrations en même temps ?
Oui, les utilisateurs peuvent utiliser plusieurs intégrations d’appel tierces en même temps. Ils peuvent utiliser le sélecteur de fournisseur qui s’affiche après avoir cliqué sur le bouton d’appel pour basculer facilement entre les fournisseurs.Les utilisateurs gratuits peuvent-ils installer des intégrations d’applications ?
Oui, tous les utilisateurs peuvent installer l’application.Si un utilisateur a déjà installé mon application, l’intégration apparaît-elle automatiquement ?
Oui, si un utilisateur a déjà installé votre application et que vous mettez à jour la même application avec les extensions d’appel, l’intégration s’affichera automatiquement. Actuellement, il n’est pas possible pour le développeur d’activer l’application d’appel uniquement pour un sous-ensemble de clients.N’importe quel utilisateur peut-il installer ou désinstaller une application ?
Non, seuls les utilisateurs disposant des autorisations nécessaires peuvent installer et désinstaller une application. Découvrez comment consulter les autorisations d’un utilisateur.Puis-je créer une propriété d’appel personnalisée ?
Oui, vous pouvez créer une propriété d’appel personnalisée à l’aide de l’API de propriétés.Puis-je passer un appel à partir d’un objet personnalisé ?
Oui, les intégrations d’appel peuvent passer des appels à partir d’objets personnalisés tant qu’elles n’utilisent que le kit de développement logiciel pour créer l’appel. Chaque intégration devra vérifier qu’elle utilise uniquement le kit de développement logiciel d’appel pour créer des appels et notifier HubSpot lors de l’événementoutgoingCall
.
Tout d’abord, vérifiez que l’intégration utilise le kit de développement logiciel pour les appels pour créer des engagements dans l’événement outgoingCall :
createEngagement
est défini sur true, découvrez comment mettre à jour les informations de votre application ici.
Voici l’exemple pour l’ensemble de l’événement outgoingCall
: