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 :
  1. 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.
  2. 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.
  3. 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.
Si vous n’avez pas d’application, vous pouvez en créer une depuis votre compte de développeur HubSpot. Si vous n’avez pas encore de compte de développeur HubSpot, vous pouvez vous inscrire ici.

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 :
  1. Installez Node.js sur votre environnement.
  2. Clonez, bifurquez ou téléchargez le ZIP de ce référentiel.
  3. Ouvrez votre terminal et accédez au répertoire racine du projet.
  4. Exécutez l’une des commandes suivantes :
    • Pour les demo-minimal-js :
cd demos/demo-minimal-js && npm i && npm start
  • Pour les demo-react-ts :
cd demos/demo-react-ts && npm i && npm start
Celles-ci basculeront vers le répertoire de démonstration souhaité, installeront les dépendances Node.js requises pour le projet à l’aide de l’ILC npm et démarreront l’application.

Remarque :

La commande npm 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

  1. Accédez à vos fiches d’informations :
    • Contacts : dans votre compte HubSpot, accédez à Contacts > Contacts.
    • **Entreprise **: dans votre compte HubSpot, accédez à Contacts > Entreprises.
  2. 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 ou demo-react-ts :
localStorage.setItem('LocalSettings:Calling:installDemoWidget', 'local');
  • Si vous avez ignoré les étapes d’installation :
    • Pour les demo-minimal-js :
localStorage.setItem('LocalSettings:Calling:installDemoWidget', 'app:js');
  • Pour les demo-react-ts :
localStorage.setItem('LocalSettings:Calling:installDemoWidget', 'app');
  1. 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).
call-app-in-record
  1. 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.
calling-sdk-in-app

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 :
npm i --save @hubspot/calling-extensions-sdk
  • Pour yarn, exécutez :
yarn add @hubspot/calling-extensions-sdk

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 via eventHandlers. Vous pouvez trouver une liste complète des événements disponibles dans la section Événements. Voici une description des événements :
  1. Numérotation : HubSpot envoie l’événement de numérotation.
  2. Appel sortant démarré : l’application informe HubSpot lorsque l’appel a démarré.
  3. Créer un engagement : HubSpot crée un engagement d’appel avec un minimum d’informations si l’application le demande.
  4. Engagement créé : HubSpot a créé un engagement.
  5. EngagementId envoyé à l’application : HubSpot envoie engagementId à l’application.
  6. Fin de l’appel : l’application informe lorsque l’appel est terminé.
  7. Appel terminé : l’application informe lorsque l’utilisateur a terminé l’expérience utilisateur de l’application.
  8. 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.
Pour commencer, créez une instance de l’objet 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 :
import CallingExtensions from "@hubspot/calling-extensions-sdk";

const options = {
  /** @property {boolean} debugMode - Whether to log various inbound/outbound debug messages to the console. If false, console.debug will be used instead of console.log */
  debugMode: boolean,
  // eventHandlers handle inbound messages
  eventHandlers: {
    onReady: () => {
      /* HubSpot is ready to receive messages. */
    },
    onDialNumber: event => {
      /* HubSpot sends a dial number from the contact */
    },
    onCreateEngagementSucceeded: event => {
      /* HubSpot has created an engagement for this call. */
    }
    onEngagementCreatedFailed: event => {
      /* HubSpot has failed to create an engagement for this call. */
    }
    onUpdateEngagementSucceeded: event => {
      /* HubSpot has updated an engagement for this call. */
    },
    onUpdateEngagementFailed: event => {
      /* HubSpot has failed to update an engagement for this call. */
    }
    onVisibilityChanged: event => {
      /* Call widget's visibility is changed. */
    }
  }
};

const extensions = new CallingExtensions(options);

Tester votre application

Afin de lancer les extensions d’appel iFrame pour les utilisateurs finaux, HubSpot nécessite les paramètres iFrame suivants.
{
   name: string /* The name of your calling app to display to users. */,
   url: string  /* The URL of your calling app, built with the Calling Extensions SDK */,
   width: number /* The iFrame's width */,
   height: number /* The iFrame's height */,
   isReady: boolean /* Whether the widget is ready for production (defaults to true) */,
   supportsCustomObjects : true /* Whether calls can be placed from a custom object */
}

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’indicateur isReady détermine si l’application est prête pour la production. Il doit être défini sur false lors des tests.
# Example payload to add the call widget app settings
curl --request POST \
 --url 'https://api.hubapi.com/crm/v3/extensions/calling/APP_ID/settings?hapikey=DEVELOPER_ACCOUNT_API_KEY' \
 --header 'accept: application/json' \
 --header 'content-type: application/json' \
 --data '{"name":"demo widget","url":"https://mywidget.com/widget","height":600,"width":400,"isReady":false}'

# Note that this endpoint also supports PATCH, GET and DELETE

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 :
const myExtensionSettings = {
  isReady: true,
  name: 'My app name',
  url: 'My local/qa/prod URL',
};

localStorage.setItem(
  'LocalSettings:Calling:CallingExtensions',
  JSON.stringify(myExtensionSettings)
);

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 passer isReady sur true.
# Example payload to add the call widget app settings

curl --request PATCH \
 --url 'https://api.hubapi.com/crm/v3/extensions/calling/APP_ID/settings?hapikey=DEVELOPER_ACCOUNT_API_KEY' \
 --header 'accept: application/json' \
 --header 'content-type: application/json' \
 --data '{"isReady":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’objet extensions 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.
const payload = {
  isLoggedIn: boolean,
  engagementId: number,
  isAvailable: boolean,
};

extensions.initialized(payload);
PropriétéTypeDescription
isLoggedInBooléenPermet de vérifier si un utilisateur est connecté ou non.
engagementIdNombreUn ID d’engagement créé par HubSpot.
isAvailableNombrePermet de vérifier si un utilisateur est disponible ou non.

userAvailable

Envoie un message indiquant que l’utilisateur est disponible.
extensions.userAvailable();

userUnavailable

Envoie un message indiquant que l’utilisateur n’est pas disponible.
extensions.userUnavailable();

userLoggedIn

Envoie un message indiquant que l’utilisateur s’est connecté.
// This message is only needed when user isn't logged in when initialized
extensions.userLoggedIn();

userLoggedOut

Envoie un message indiquant que l’utilisateur s’est déconnecté.
extensions.userLoggedOut();

incomingCall

Envoie un message pour informer HubSpot qu’un appel entrant a commencé.
const callInfo = {
  externalCallId: string,
  callStartTime: number,
  createEngagement: boolean,
  fromNumber: string,
  tonumber: string,
};
extensions.incomingCall(callInfo);
PropriétéTypeDescription
externalCallIdNombreUne application d’appel a créé l’ID d’appel. Permet d’activer les appels dans le centre de support.
callStartTimeNombreL’heure de début de l’appel, en millisecondes.
createEngagementBooléenSi 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.
fromNumberChaîneLe numéro de téléphone du correspondant. Paramètre obligatoire.
toNumberChaîneLe numéro de téléphone du destinataire.

outgoingCall

Envoie un message pour informer HubSpot qu’un appel sortant a commencé.
const callInfo = {
  phoneNumber: string /** @deprecated Use toNumber instead **/,
  callStartTime: number,
  createEngagement: true,
  toNumber: string,
  fromNumber: string,
  dialingContext: onDialEventPayload,
};
extensions.outgoingCall(callInfo);
PropriétéTypeDescription
callStartTimeNombreL’heure de début de l’appel, en millisecondes.
createEngagementBooléenSi 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.
toNumberChaîneLe numéro de téléphone du destinataire.
fromNumberChaîneLe numéro de téléphone du correspondant. Paramètre obligatoire.
dialingContextObjetLe 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.
const payload = {
  externalCallId: string,
};
extensions.callAnswered();
PropriétéTypeDescription
externalCallIdNombreUne 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.
// After receiving the call ended event, the user can navigate away, can close the call widget.
extensions.callEnded({
  externalCallId: string,
  engagementId: number,
  callEndStatus: EndStatus,
});
PropriétéTypeDescription
externalCallIdNombreUne application d’appel a créé l’ID d’appel. Permet d’activer les appels dans le centre de support.
engagementIdNombreUn ID d’engagement créé par HubSpot.
callEndStatusÉnumérationLe statut de l’appel lorsqu’il se termine. Statuts disponibles :
  • COMPLETED
  • FAILED
  • CANCELED
  • BUSY
  • NO_ANSWER
  • REJECTED
  • MISSED

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.
// After receiving the call completed event, HubSpot will
//   1) insert the engagement into the timeline
//   2) set the default associations on the engagement
//   3) closes the widget unless `hideWidget` is set to false.
//   4) update the engagement with any engagement properties
const data = {
  engagementId: number,
  hideWidget: boolean,
  engagementProperties: { [key: string]: string },
  externalCallId: string,
}
extensions.callCompleted(data);
PropriétéTypeDescription
engagementIdNombreUn ID d’engagement créé par HubSpot.
hideWidgetBooléenPermet d’indiquer si le widget doit être masqué lorsque l’appel est terminé. Paramètre facultatif. La valeur par défaut est true.
engagementPropertiesChaînePermet 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.
externalCallIdNombreUne 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.
const payload = {
  externalCallId,
  engagementId,
};
extensions.publishToChannel(payload);
PropriétéTypeDescription
externalCallIdNombreUne application d’appel a créé l’ID d’appel. Permet d’activer les appels dans le centre de support.
engagementIdNombreUn ID d’engagement créé par HubSpot.
Cet événement est appelé lors de la navigation vers une fiche d’informations.
onNavigateToRecord {
    const {
      engagementId: number,
      objectCoordinates: object coordinates
    } = data;
      ...
}
PropriétéTypeDescription
engagementIdNombreUn ID d’engagement créé par HubSpot.
objectCoordinatesCoordonnées de l’objetRéférence portalId, objectId, et objectTypeID.

sendError

Envoie un message pour informer HubSpot que l’application d’appel a rencontré une erreur.
// After receiving the sendError event, HubSpot will display an alert popup to the user with the error message provided.
const data = {
  message: string,
};
extensions.sendError(data);
PropriétéTypeDescription
messageChaîneUn 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.
// After receiving the resizeWidget event, HubSpot will use the provided height and width to resize the call widget.
const data = {
  height: number,
  width: number,
};
extensions.resizeWidget(data);
PropriétéTypeDescription
heightNombreLa hauteur souhaitée du widget d’appel.
widthNombreLa largeur souhaitée du widget d’appel.

Recevoir des messages de HubSpot

L’objet extensions 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.
// Example snippet for handling onReady event
onReady() {
    extensions.initialized(payload);
}
PropriétéTypeDescription
engagementIdNombreUn ID d’engagement créé par HubSpot.
iframeLocationÉnumérationwidget : 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.
ownerIdChaîne ou NombreL’ID de l’utilisateur connecté (dans HubSpot).
PortalIdNombreL’ID du compte HubSpot.
userIdNombreL’ID de l’utilisateur HubSpot.

onDialNumber

Cet événement se déclenche lorsqu’un utilisateur de HubSpot déclenche un appel sortant. L’événement onDialNumber 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 :
onDialNumber(data) {
  const {
    phoneNumber: string,
    ownerId: number,
    subjectId: number,
    objectId: number,
    objectType: CONTACT | COMPANY,
    portalId: number,
    countryCode: string,
    calleeInfo {
        calleeId: number,
        calleeObjectTypeId: string,
    },
    startTimestamp: number,
    toPhoneNumberSrc: string,
   } = data;
    ...
}
PropriétéTypeDescription
phoneNumberChaîneLe numéro de téléphone de la personne que l’utilisateur HubSpot a appelée.
ownerIdChaîne ou NombreL’ID de l’utilisateur connecté (dans HubSpot).
subjectIdNombreL’ID du sujet.
objectIdNombreLe type d’objet du numéro de téléphone.
objectTypeChaîneLe 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".
portalIdNombreL’ID du portail HubSpot.
countryCodeChaîneLe code du pays du numéro de téléphone.
calleeInfoTableauLes informations sur la personne appelée. Doit inclure les éléments suivants :
  • calleeID: number
  • calleeObjectTypeId: string
startTimestampNombreL’horodatage du début de l’appel.
toPhoneNumberSrcChaîneLe 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.
/** @deprecated Use onCreateEngagementSucceeded instead **/
onEngagementCreated(data) {
    const {
      engagementId: number,
    } = data;
      ...
}
PropriétéTypeDescription
engagementIdNombreUn 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.
onCreateEngagementSucceeded: (event) => {};

onCreateEngagementFailed

HubSpot envoie un message pour informer le partenaire d’application d’appel que la création de l’engagement a échoué.
onCreateEngagementFailed: (event) => {};

onNavigateToRecordFailed

Cet événement est appelé en cas d’échec de la navigation vers une fiche d’informations.
onNavigateToRecordFailed {
    const {
      engagementId: number,
      objectCoordinates: object coordinates
    } = data;
      ...
}
PropriétéTypeDescription
engagementIdNombreUn ID d’engagement créé par HubSpot.
objectCoordinatesCoordonnées de l’objetRéférence portalId, objectId, et objectTypeID.

onPublishToChannelSucceeded

Cet événement est appelé lorsque la publication sur un canal réussit.
onPublishToChannelSucceeded{
    const {
      engagementId: number,
      externalCallId: string
    } = data;
      ...
}
PropriétéTypeDescription
engagementIdNombreUn ID d’engagement créé par HubSpot.
externalCallIdNombreUne 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.
onPublishToChannelFailed{
    const {
      engagementId: number,
      externalCallId: string
    } = data;
      ...
}
PropriétéTypeDescription
engagementIdNombreUn ID d’engagement créé par HubSpot.
externalCallIdNombreUne 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.
onCallerIdMatchSucceeded: (event) => {};

onCallerIdMatchFailed

Cet événement est appelé en cas d’échec de la correspondance d’ID de l’appelant.
onCallerIDMatchFailed: (event) => {};

onVisibilityChanged

Message indiquant si l’utilisateur a minimisé ou masqué l’application d’appel.
onVisibilityChanged(data) {
    const { isMinimized, isHidden } = data;
    ...
}

defaultEventHandler

Gestionnaire par défaut pour les événements.
defaultEventHandler(event) {
   console.info("Event received. Do you need to handle it?", event);
}

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énement outgoingCall. 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 :
outgoingCall({ createEngagement: true });
Si 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 :
const callInfo = {
  phoneNumber: string, // optional unless call is initiated by the widget
  createEngagement: true // whether HubSpot should create an engagement for this call
  callStartTime: number // optional unless call is initiated by the widget
};
extensions.outgoingCall(callInfo);