最終更新日: 2025年8月28日
アプリで電話拡張SDK(英語)を使用すると、 HubSpotが提供する通話ツールと同様に、CRM内のレコードから直接、HubSpotユーザーに対してカスタムの通話オプションを提供できます。ユーザーがアプリを使用して電話をかけると、HubSpotはCRMレコードのアクティビティータイムライン上にエンゲージメントを作成し、アプリとデータをやり取りして詳細を入力します。
電話拡張は、次の3つのコンポーネントで構成されています。
- 電話拡張SDK。貴社のアプリとHubSpot間の通信を可能にするJavaScript SDK。
- コール設定エンドポイント。貴社のアプリのコール設定のために使用するAPIエンドポイント。この設定は、アプリに接続する各HubSpotアカウントで使用されます。
- コールiframe。貴社のアプリをHubSpotユーザーに対して表示する場所。コール設定APIエンドポイントを使用して設定されます。
注:
以下のドキュメントでは、SDKを使用したアウトバウンドコールについて説明します。SDKを使用した着信通話の受信(ベータ版)の詳細をご確認ください。デモ用コールアプリを実行する
2つの異なるデモ用アプリで電話拡張SDKをテストするオプションがあります。- Demo-minimal-jsでは、JavaScript、HTML、CSSを使用して必要最小限のSDKが実装されています。Index.jsでSDKをインスタンス化する方法を確認できます。
- Demo-react-tsでは、アプリのブループリントとしての役割を果たす、React、TypeScript、Styled Componentsを使用した実用的なSDKが実装されています。useCti.tsでSDKをインスタンス化する方法を確認できます。
注:
これらのデモ用アプリは完全に機能するコールアプリではありませんが、モックデータを使用してより現実に近いエクスペリエンスを実現します。デモ用コールアプリをインストールする
インストールの有無にかかわらず、デモ用アプリを実行できます。ローカル環境にデモをインストールするには:- お使いの環境にNode.jsをインストールします。
- このリポジトリーのZIPをダウンロード、複製、またはフォークします。
- ターミナルを開き、プロジェクトのルートディレクトリーに移動します。
-
次のコマンドのいずれかを実行します。
demo-minimal-js
の場合:
demo-react-ts
の場合:
注:
npm start
コマンドを実行すると、https://localhost:9025/に接続された新しいブラウザータブが自動的に開きます。アプリケーションにアクセスするには、「接続がセキュリティーで保護されていない」ことを通知するメッセージをバイパスする必要があります。HubSpotからデモ用コールアプリを起動する
- 次のようにしてレコードに移動します。
- コンタクト: HubSpotアカウントで、[コンタクト]>[コンタクト]に移動します。
- 会社: HubSpotアカウントで、[コンタクト]>[会社]に移動します。
- ブラウザーの開発者コンソールを開き、次のコマンドを実行します。
demo-minimal-js
またはdemo-react-ts
のインストール手順が完了している場合:
demo-minimal-js
の場合:
demo-react-ts
の場合:
- ページの表示を更新し、左のサイドバーでコールアイコンをクリックします**。[発信元]ドロップダウンメニューをクリックして、その中からデモ用アプリの名前**を選択します(例:Demo App Local、Demo App JS、Demo App React)。

- [コール]をクリックして、デモ用アプリが電話拡張SDKを介してHubSpotとどのように連携しているかを確認します。また、ブラウザーの開発者コンソールに記録されたイベントも表示できます。

電話拡張SDKをコールアプリにインストールする
電話拡張SDKをNode.jsの依存関係としてコールアプリに追加するには:- Npmの場合は次を実行します。
- Yarnの場合は次を実行します。
電話拡張SDKを使用する
電話拡張SDKは、メッセージを交換するために、HubSpot対応のシンプルなAPIとコールアプリを公開します。メッセージは、SDKで公開されるメソッドを介して送信され、eventHandlers
を介して受信されます。利用可能なイベントを網羅したリストが、「イベント」セクションに記載されています。
イベントの説明は次のとおりです。
- 番号をダイヤルする: HubSpotが番号のダイヤルイベントを送信します。
- 発信通話が開始された: 通話が開始されると、アプリがHubSpotに通知します。
- エンゲージメントを作成する: HubSpotは、アプリから要求された場合、最小限の情報でコールエンゲージメントを作成します。
- エンゲージメントが作成された: HubSpotがエンゲージメントを作成しました。
- EngagementIdがアプリに送信された: HubSpotが
engagementId
をアプリに送信します。 - 通話が終了した: 通話が終了するとアプリが通知します。
- 通話が完了した: ユーザーがアプリの利用を完了するとアプリが通知します。
- エンゲージメントを更新する: アプリは
engagementId
によってエンゲージメントをフェッチ(取得)し、その他の通話の詳細とエンゲージメントをマージして更新します。APIを介したコールエンゲージメントの更新、またはSDKを介したコールエンゲージメントの更新について詳細をご確認ください。
CallingExtensions
オブジェクトのインスタンスを作成します。拡張機能インスタンスを作成するときにオプションのオブジェクトを指定することで、拡張機能の動作を定義できます。このオプションのオブジェクトは、拡張機能の動作を指定できるeventHandlers
フィールドを提供します。次のコードブロックは、使用可能なオプションと定義可能なイベントハンドラーを示しています。
アプリをテストする
エンドユーザー向けの電話拡張iFrameを起動するには、HubSpotに次のiFrameパラメーターが必要です。コール設定APIエンドポイントを使用する
APIツール(Postmanなど)を使用して、次のペイロードをHubSpotの設定APIに送信します。必ずコールアプリのAPP_IDとアプリのDEVELOPER_ACCOUNT_API_KEYを取得してください。注:
isReady
フラグは、アプリが本番環境用に準備できているかどうかを示します。テスト中は、このフラグをfalse
に設定する必要があります。localStorageを使用して拡張機能の設定を上書きする
テスト目的で、拡張機能の設定を上書きできます。HubSpotタブからブラウザーの開発者コンソールを開き、以下の設定を編集して、コマンドを実行します。アプリを本番環境に向けて準備する
コール設定エンドポイントを使用してアプリを設定したら、PATCHエンドポイントを使用してisReady
をtrueに変更します。
コールアプリをHubSpotマーケットプレイスに公開する
アプリをセットアップしたら、ユーザーはアプリのインストールURLを使用してアカウントにアプリをインストールできます。他のHubSpotユーザーが見つけられるように公開する場合は、 HubSpotアプリマーケットプレイス に掲載することもできます。アプリが内部使用のみを目的としている場合は、これは必要ありません。イベント
使用可能な通話イベント:HubSpotにメッセージを送信する
extensions
オブジェクトは、HubSpotにメッセージを送信したり、他の動作を指定して関連付けたりするために呼び出すことができる、次のイベントハンドラーを提供します。以下の例を参照してください。
initialized:必須
ソフトフォンがインタラクションに対応できる状態であることを通知するメッセージを送信します。プロパティー | 型 | 説明 |
---|---|---|
isLoggedIn | ブール値 | ユーザーがログインしているかどうかをチェックします。 |
engagementId | 数値 | HubSpotによって作成されるエンゲージメントID。 |
isAvailable | 数値 | ユーザーが対応可能かどうかをチェックします。 |
userAvailable
ユーザーが対応可能であることを通知するメッセージを送信します。userUnavailable
ユーザーが対応不可であることを通知するメッセージを送信します。userLoggedIn
ユーザーがログインしたことを通知するメッセージを送信します。userLoggedOut
ユーザーがログアウトしたことを通知するメッセージを送信します。incomingCall
着信通話が開始されたことをHubSpotに通知するメッセージを送信します。プロパティー | 型 | 説明 |
---|---|---|
externalCallId | 文字列 | コールアプリによって作成されるコールID。ヘルプデスクでの通話を有効にするために使用されます。 |
callStartTime | 数値 | コールの開始時刻(ミリ秒単位)。 |
createEngagement | ブール値 | HubSpotにコールのエンゲージメントを作成させるかどうかを指定します。Trueの場合、HubSpotはonCreateEngagementSucceededまたはonCreateEngagementFailedを返します。 |
fromNumber | 文字列 | 発信者の電話番号。必須パラメーター |
toNumber | 文字列 | 受信者の電話番号。 |
outgoingCall
発信通話が開始されたことをHubSpotに通知するメッセージを送信します。プロパティー | 型 | 説明 |
---|---|---|
callStartTime | 数値 | コールの開始時刻(ミリ秒単位)。 |
createEngagement | ブール値 | HubSpotにコールのエンゲージメントを作成させるかどうかを指定します。Trueの場合、HubSpotはonCreateEngagementSucceededまたはonCreateEngagementFailedを返します。 |
toNumber | 文字列 | 受信者の電話番号。 |
fromNumber | 文字列 | 発信者の電話番号。必須パラメーター |
dialingContext | オブジェクト | 該当する場合、チケットやエンゲージメントの作成にダイヤルコンテキストが使用されます。このオブジェクトには、onDialNumber ペイロードのすべてのプロパティーが含まれます。このプロパティーにより、HubSpotとサード パーティー アプリの間で完全なダイヤルコンテキストが戻され、データの一貫性が確保されます。 |
callAnswered
発信通話に応答中であることをHubSpotに通知するメッセージを送信します。プロパティー | 型 | 説明 |
---|---|---|
externalCallId | 文字列 | コールアプリによって作成されるコールID。ヘルプデスクでの通話を有効にするために使用されます。 |
callEnded
通話が終了したことをHubSpotに通知するメッセージを送信します。プロパティー | 型 | 説明 |
---|---|---|
externalCallId | 文字列 | コールアプリによって作成されるコールID。ヘルプデスクでの通話を有効にするために使用されます。 |
engagementId | 数値 | HubSpotによって作成されるエンゲージメントID。 |
callEndStatus | 列挙 | 終了時のコールのステータス。有効なステータス:
|
callCompleted
コールが完了したことをHubSpotに通知するメッセージを送信します。エンゲージメントのプロパティーはHubSpotが所有するため、手動で作成または更新する必要がなくなりました(強調表示されている箇所を参照)。注:
ユーザーがCall
タスクタイプのタスクキューに入っている場合、hideWidget
プロパティーは無視されます。プロパティー | 型 | 説明 |
---|---|---|
engagementId | 数値 | HubSpotによって作成されるエンゲージメントID。 |
hideWidget | ブール値 | 通話の終了時にウィジェットを非表示にするかどうかを指定します。任意指定のパラメーターです。デフォルトではtrueに設定されます。 |
engagementProperties | 文字列 | プロパティーを追加して、HubSpot所有のエンゲージメントにオプトインします。これにより、HubSpotはonUpdateEngagementSucceededまたはonUpdateEngagementFailedを返するようになります。 |
externalCallId | 文字列 | コールアプリによって作成されるコールID。ヘルプデスクでの通話を有効にするために使用されます。 |
publishToChannel
接続されたチャネルにコールを公開します。これはHubSpotが所有するエンゲージメントには必要ありません。プロパティー | 型 | 説明 |
---|---|---|
externalCallId | 文字列 | コールアプリによって作成されるコールID。ヘルプデスクでの通話を有効にするために使用されます。 |
engagementId | 数値 | HubSpotによって作成されるエンゲージメントID。 |
navigateToRecord
このイベントは、レコードに移動するときに呼び出されます。プロパティー | 型 | 説明 |
---|---|---|
engagementId | 数値 | HubSpotによって作成されるエンゲージメントID。 |
objectCoordinates | オブジェクト座標 | portalId 、objectId 、objectTypeID を参照します。 |
sendError
コールアプリでエラーが発生したことをHubSpotに通知するメッセージを送信します。プロパティー | 型 | 説明 |
---|---|---|
message | 文字列 | アラートポップアップに表示されるエラーメッセージ。 |
resizeWidget
コールアプリのサイズを変更する必要があることをHubSpotに通知するメッセージを送信します。プロパティー | 型 | 説明 |
---|---|---|
height | 数値 | 望ましいコールウィジェットの高さ。 |
width | 数値 | 望ましいコールウィジェットの幅。 |
HubSpotからメッセージを受信する
extensions
オブジェクトは、HubSpotでメッセージを受信した際や、または他の関連する動作を指定するために呼び出すことができる、次のイベントハンドラーを提供します。以下の例を参照してください。
onReady
HubSpotがメッセージを受信できる状態であることを通知するメッセージ。プロパティー | 型 | 説明 |
---|---|---|
engagementId | 数値 | HubSpotによって作成されるエンゲージメントID。 |
iframeLocation | 列挙 | widget :コールアプリが インバウンドコールをサポートしていない場合コールレコードページに表示されるドラッグ&ドロップウィジット。remote :コールアプリがインバウンドコールをサポートしている場合にナビゲーション バーの枠に表示されるフレーム。window :コールアプリがインバウンドをサポートしている場合にコールウィンドウに表示されるフレーム。 |
ownerId | 文字列または数値 | HubSpotにログインしているユーザーのID。 |
PortalId | 数値 | HubSpotアカウントのID。 |
userId | 数値 | HubSpotユーザーのID。 |
onDialNumber
このイベントは、HubSpotでユーザーが発信通話を開始するとトリガーされます。onDialNumber
イベントのペイロードには、コールに関連付けられている全てのフィールドが含まれます。これらのフィールドについて、以下の表で詳しく説明します。
プロパティー | 型 | 説明 |
---|---|---|
phoneNumber | 文字列 | HubSpotユーザーが電話をかけた相手の電話番号。 |
ownerId | 文字列または数値 | (HubSpotに)ログインしているユーザーのID。 |
subjectId | 数値 | 件名のID。 |
objectId | 数値 | 電話番号のオブジェクトタイプ。 |
objectType | 文字列 | ダイヤルされた電話番号(コンタクトまたは会社の電話番号など)に関連付けられているオブジェクトタイプ。ここで考えられる値は、"CONTACT" または"COMPANY" です。 |
portalId | 数値 | HubSpotポータルのID。 |
countryCode | 文字列 | 電話番号の国コード。 |
calleeInfo | 配列 | 着信者に関する情報。以下を含める必要があります。
|
startTimestamp | 数値 | 通話開始時のタイムスタンプ。 |
toPhoneNumberSrc | 文字列 | ’ HubSpotでの電話番号のプロパティー名。プロパティーには、標準のプロパティー値またはカスタムプロパティーを指定できます。例えば、コンタクトに3つの連絡先電話番号がある場合、それぞれ「Office」、「Personal」、「Mobile」という関連付けラベルを設定できます。 |
onEngagementCreated
非推奨。代わりにonCreateEngagementSucceededを使用してください。プロパティー | 型 | 説明 |
---|---|---|
engagementId | 数値 | HubSpotによって作成されるエンゲージメントID。 |
onCreateEngagementSucceeded
HubSpotにより、エンゲージメントが正常に更新されたことを通知するメッセージがコール アプリ パートナーに送信されます。onCreateEngagementFailed
HubSpotにより、エンゲージメントを作成できなかったことを通知するメッセージがコール アプリ パートナーに送信されます。onNavigateToRecordFailed
このイベントは、レコードへの移動が失敗したときに呼び出されます。プロパティー | 型 | 説明 |
---|---|---|
engagementId | 数値 | HubSpotによって作成されるエンゲージメントID。 |
objectCoordinates | オブジェクト座標 | portalId 、objectId 、objectTypeID を参照します。 |
onPublishToChannelSucceeded
このイベントは、チャネルへの公開が成功すると呼び出されます。プロパティー | 型 | 説明 |
---|---|---|
engagementId | 数値 | HubSpotによって作成されるエンゲージメントID。 |
externalCallId | 文字列 | コールアプリによって作成されるコールID。ヘルプデスクでの通話を有効にするために使用されます。 |
onPublishToChannelFailed
このイベントは、チャネルへの公開に失敗したときに呼び出されます。プロパティー | 型 | 説明 |
---|---|---|
engagementId | 数値 | HubSpotによって作成されるエンゲージメントID。 |
externalCallId | 文字列 | コールアプリによって作成されるコールID。ヘルプデスクでの通話を有効にするために使用されます。 |
onCallerIdMatchSucceeded
このイベントは、発信者IDの照合が成功すると呼び出されます。onCallerIdMatchFailed
このイベントは、発信者IDの照合に失敗したときに呼び出されます。onVisibilityChanged
ユーザーがコールアプリを最小化または非表示にしたかどうかを通知するメッセージ。defaultEventHandler
イベントのデフォルトのハンドラー。電話拡張SDK | よくある質問
ユーザー認証はどのように処理されますか?
コールアプリが認証を処理します。電話拡張はCDNでホスティングされるのですか?
はい。電話拡張SDKはjsDeliver経由でインストールできます。例えば、calling-extensions-sdk@0.2.2をインストールするには、https://cdn.jsdelivr.net/npm/@hubspot/calling-extensions-sdk@0.2.2/dist/main.jsを使用できます。エンゲージメントはどのタイミングで作成または更新されるのですか?
ユーザーは、HubSpot UI内からもHubSpot UI外(モバイルアプリ、リダイレクトされた番号など)からも通話を開始できます。コールがHubSpot UI内から開始された場合、HubSpotはコールエンゲージメントを作成し、コールアプリにエンゲージメントを送信します。通話が終了すると、コールアプリはコールのその他の詳細を追加し、このエンゲージメントを更新できます。通話がHubSpot UIの外部で開始された場合、アプリは通話エンゲージメントを作成します。連携の一部として必要なスコープは何ですか?
連絡先とタイムラインのスコープを追加する必要があります。これらのスコープにより、アプリケーションは連絡先にアクセスでき、CRMでコールエンゲージメントを作成および更新することができます。この機能をマーケットプレイスの既存のアプリケーションに追加することはできますか?それとも新しいアプリを作成して追加するのですか?
コール ユース ケースに対応する既存のアプリを既に持っている場合は、この機能を既存のアプリに直接追加できます。既にアプリをインストールしている全てのお客さまは、アプリを再度インストールしなくても、この新しい機能を利用できます。既存のソフト フォン アプリケーションをSDKで連携させることはできますか?
はい。既存のソフト フォン アプリケーションとの連携は非常に簡単です。上記のドキュメントの手順に従って、アプリケーションを起動して利用を開始してください。ユーザーは複数の連携を同時に使用できますか?
はい。ユーザーは複数のサードパーティーのコール連携を同時に使用できます。コールボタンをクリックした後に表示されるサービスプロバイダーを切り替える機能を使用して、サービスプロバイダーをシームレスに切り替えることができます。無料ユーザーはアプリ連携をインストールできますか?
はい。全てのユーザーがアプリをインストールできます。ユーザーが既にアプリをインストールしている場合、連携は自動的に表示されますか?
はい。ユーザーが既にアプリをインストールしており、電話拡張機能で同じアプリを更新している場合、連携が自動的に表示されます。現在、開発者がコールアプリを一部の顧客のみに有効にする方法はありません。どのユーザーでもアプリをインストールまたはアンインストールできますか?
いいえ。必要な権限を持つユーザーのみ、アプリをインストールおよびアンインストールできます。ユーザーの権限を確認する方法について詳細をご確認ください。カスタムのコールプロパティーを作成することはできますか?
はい。プロパティーAPIを使用してカスタムのコールプロパティーを作成できます。カスタムオブジェクトから電話をかけることはできますか?
はい。コール連携がSDKのみを使用してコールを行っている限り、カスタムオブジェクトから電話を発信できます。各連携では、通話拡張SDKのみを使用してコールが行われていること、outgoingCall
イベントでHubSpotに通知されることを確認する必要があります。
まず、outgoingCallイベントでエンゲージメントを作成するのに、連携で電話拡張SDKが使用されていることを確認します。
createEngagement
がtrueの場合、こちらからアプリ情報を更新する方法をご覧ください。
outgoingCall
イベント全体の例を以下に示します。