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 :
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.
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).
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.
Ouvrez votre terminal et accédez au répertoire racine du projet.
Exécutez l’une des commandes suivantes :
Pour les demo-minimal-js :
Falschen Code melden
Kopieren
KI fragen
cd demos/demo-minimal-js && npm i && npm start
Pour les demo-react-ts :
Falschen Code melden
Kopieren
KI fragen
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.
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.
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.
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 :
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.
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 :
Falschen Code melden
Kopieren
KI fragen
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);
Afin de lancer les extensions d’appel iFrame pour les utilisateurs finaux, HubSpot nécessite les paramètres iFrame suivants.
Falschen Code melden
Kopieren
KI fragen
{ 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.
L’indicateur isReady détermine si l’application est prête pour la production. Il doit être défini sur false lors des tests.
Falschen Code melden
Kopieren
KI fragen
# Example payload to add the call widget app settingscurl --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 :
Falschen Code melden
Kopieren
KI fragen
const myExtensionSettings = { isReady: true, name: "My app name", url: "My local/qa/prod URL",};localStorage.setItem("LocalSettings:Calling:CallingExtensions", JSON.stringify(myExtensionSettings));
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.
Falschen Code melden
Kopieren
KI fragen
# Example payload to add the call widget app settingscurl --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.
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.
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.
Envoie un message pour informer HubSpot que l’appel a pris fin.
Falschen Code melden
Kopieren
KI fragen
// After receiving the call ended event, the user can navigate away, can close the call widget.extensions.callEnded({ externalCallId: string, engagementId: number, callEndStatus: EndStatus,});
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).
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.
Falschen Code melden
Kopieren
KI fragen
// 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 propertiesconst data = { engagementId: number, hideWidget: boolean, engagementProperties: { [key: string]: string }, externalCallId: string,}extensions.callCompleted(data);
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.
Envoie un message pour informer HubSpot que l’application d’appel a rencontré une erreur.
Falschen Code melden
Kopieren
KI fragen
// 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é
Type
Description
message
Chaîne
Un message d’erreur à afficher dans la fenêtre contextuelle d’alerte.
Envoie un message pour informer HubSpot que l’application d’appel doit être redimensionnée.
Falschen Code melden
Kopieren
KI fragen
// 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);
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.
Message indiquant que HubSpot est prêt à recevoir des messages.
Falschen Code melden
Kopieren
KI fragen
// Example snippet for handling onReady eventonReady() { extensions.initialized(payload);}
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.
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 :
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 :
calleeID: number
calleeObjectTypeId: string
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.
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.
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 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 :
Falschen Code melden
Kopieren
KI fragen
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 :
Falschen Code melden
Kopieren
KI fragen
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);