このワークフローについて
DialpadとSyncroの連携ワークフロー分析
このN8nワークフローテンプレート「Dialpad to Syncro」は、**Dialpad(クラウドベースのビジネス電話システム)とSyncro(MSP向けのITサービス管理プラットフォーム)**間の連携を自動化するように設計されています。これにより、着信電話がDialpad経由で受信された際に、発信者識別情報に基づいて、Syncroでサポートチケットを自動的に作成または更新できます。このワークフローは、電話番号を使用して顧客または連絡先をインテリジェントに照合し、追跡とレポート作成のために関連データをGoogleスプレッドシートに記録します。
ワークフローの機能
このワークフローの主な機能は以下の通りです。
- Dialpadからの着信Webhookイベント(着信コールによってトリガーされる)をリッスンします。
- 発信者の電話番号を使用してSyncroのデータベースを検索し、発信者を識別します。
- 発信者が既知の連絡先または顧客であるかを判断します。
- 連絡先に関連付けられたオープンチケットが既に存在するかどうかを確認します。
- 新規チケットを作成するか、既存のチケットにコメントを追加します。
- 監査および分析目的で、コールと対応するチケット情報をGoogleスプレッドシートに記録します。
この自動化は、すべての着信コールが追跡可能なサービスレコードを開始するようにすることで、カスタマーサービス業務を合理化し、手動入力を削減し、応答時間を改善します。
主な機能と能力
-
Webhookトリガー実行
- Dialpadからのリアルタイム
POSTリクエストをリッスンするため、イベント駆動型で応答性が高いです。
- Dialpadからのリアルタイム
-
動的な顧客/連絡先マッチング
- 発信者の電話番号(
+、先頭の1、または0などのフォーマットをクリーニングしたもの)を使用してSyncroのAPIを検索します。 - 個別の連絡先と会社レベルの顧客の両方を処理します。
- 発信者の電話番号(
-
条件付きロジック分岐
- 複数の
IFノードを使用して、以下の条件に基づいて決定を行います。- コールの方向(
inbound) - 検索結果の数(一致が1件存在するかどうか)
- オープンチケットの有無
- コールの方向(
- 複数の
-
チケット管理の自動化
- オープンチケットが存在しない場合は新規チケットを作成します。
- 既存のオープンチケットに重複を作成するのではなく、コール詳細を追加して更新します。
-
データエンリッチメントと変換
- Functionノードを使用して、生のAPIレスポンスから構造化データを抽出します。
- フルネーム、電話番号、会社名を含む動的なメッセージをフォーマットします。
-
Googleスプレッドシートによる外部ロギング
- 各アクション(チケット作成/更新)をGoogleスプレッドシートに記録します。
- コールID
- チケットID
- 監査、請求、またはパフォーマンス追跡に役立ちます。
- 各アクション(チケット作成/更新)をGoogleスプレッドシートに記録します。
-
環境設定
EnvVariablesSetノードを使用して、設定(ベースURLやユーザーIDなど)を一元管理し、メンテナンスを容易にします。
-
エラー耐性とフォールバックパス
- データ不足による実行停止を防ぐために、フォールバックパスとして
NoOp(No Operation)ノードが含まれています。
- データ不足による実行停止を防ぐために、フォールバックパスとして
主要ノードとその目的
| ノード名 | タイプ | 目的 |
|---|---|---|
| Webhook | Webhookトリガー | 着信コールが発生した際にDialpadからPOSTペイロードを受信 |
| IF (Direction Check) | IF条件 | inboundコールのみを処理対象とし、発信/内部コールは無視する |
| EnvVariables | Setノード | SyncroのベースURLやデフォルトのユーザーIDなどの環境定数を保存 |
| GetCustomer | HTTPリクエスト | クリーニングされた発信者番号を使用してSyncroの検索APIにクエリを実行 |
| Contacts | Functionノード | APIレスポンスを解析して連絡先レコードを抽出 |
| Customers | Functionノード | APIレスポンスを解析して顧客(会社)レコードを抽出 |
| IFContacts / IFCustomers | IF条件 | 連絡先または顧客がちょうど1件見つかったかどうかを確認 |
| GetTicket | HTTPリクエスト | 特定された連絡先に関連付けられたオープンチケットを検索 |
| IFMoreThanOne | IF条件 | オープンチケットが存在するかどうか(長さ > 0)を判断し、更新または作成を決定 |
| UpdateTicket | HTTPリクエスト | 既存のチケットにコールを記録する非公開コメントを追加 |
| CreateTicket / CreateTicketForCustomer | HTTPリクエスト | 連絡先または顧客の下に新規チケットを作成 |
| Set Nodes (ForGoogle)* | Setノード | 構造化データ(コールID + チケットID)をロギング用に準備 |
| **Google Sheets * ** | Google Sheetsノード | 追跡のためにスプレッドシートに行を追加 |
| **NoOp * ** | No Operationノード | アクションが取られないケースを処理するためのダミー出力として機能 |
ユースケースとメリット
✅ ユースケース
- MSP(マネージドサービスプロバイダー): エージェントがすべてのコール後に手動でチケットを作成する必要なく、クライアントとのやり取りを自動的に追跡します。
- ヘルプデスク: 通話前に発信者のコンテキストを事前入力することで、初回応答効率を向上させます。
- 営業およびサポートチーム: Syncro内のCRMライクなレコードに直接関連付けられた、すべての着信通信の詳細なログを維持します。
- コンプライアンスと監査: コールとサービスアクティビティをリンクする不変のログをGoogleスプレッドシートに保持します。
✅ メリット
- 手作業を削減: クライアントの検索やチケットのオープンを手動で行う必要がなくなります。
- 重複チケットを防止: スマートなロジックにより、システムが乱雑になるのを防ぎます。
- 説明責任を向上: すべてのコールがデジタルフットプリントを残します。
- コンテキスト認識を強化: エージェントは、通話に応答したり折り返したりする前に、最近のアクティビティを確認できます。
- スケーラブルで設定可能: SMS、ボイスメール、またはメールの統合を含めるように拡張できます。
ステップバイステップのワークフローロジック
-
トリガー:着信コール検出
- Dialpadは、
/moezdialpadWebhookエンドポイントにPOSTリクエストを送信します。 - ペイロードには、発信者番号(
external_number)、コールID、および方向が含まれます。
- Dialpadは、
-
フィルター:着信コールのみを処理
- 最初の
IFノードは、direction === 'inbound'かどうかを確認します。 - falseの場合は、
NoOp2にルーティングされます(何も行いません)。 - trueの場合は、次のステップに進みます。
- 最初の
-
環境変数のロード
EnvVariablesノードは以下を注入します。syncro_baseurl: Syncro APIのベースURL- 後で使用されるその他の静的値(例:ユーザーID)
-
Syncroで発信者を検索
GetCustomerは以下にHTTP GETリクエストを行います。{{syncro_baseurl}}/api/v1/search?query={cleaned_phone}- 電話番号は
.replace()を使用してクリーニングされ、+、先頭の1、または0が削除されます。
-
結果を連絡先と顧客に解析
- 2つの並列
Functionノード(ContactsとCustomers)が検索結果JSONを解析します。_index === 'contacts'または'customers'のエントリをフィルター処理します。- 主要なフィールド(名前、ID、顧客ID、電話番号)を抽出します。
- マッチした連絡先/顧客の配列を出力します。
- 2つの並列
-
ちょうど1件の一致を確認
IFContacts: 連絡先がちょうど1件見つかった場合 → チケットの確認に進みます。IFCustomers: 顧客がちょうど1件見つかった場合 → 顧客レベルのチケット作成に進みます。- それ以外の場合は、
NoOp/NoOp1にルーティングされます(アクションは取られません)。
-
オープンチケットの確認(連絡先ごと)
- 連絡先が見つかった場合、
GetTicketは以下をクエリします。/api/v1/tickets?contact_id=X&status=Not%20Closed - その連絡先のオープンチケットのリストを返します。
- 連絡先が見つかった場合、
-
決定:チケットを更新するか作成するか?
IFMoreThanOneは以下を評価します。- オープンチケットが少なくとも1件存在するか?
- YESの場合 →
UpdateTicketに進みます。 - NOの場合 →
CreateTicketに進みます。
-
既存チケットの更新
UpdateTicketは、最初のオープンチケットにコメントを投稿します。- 件名:「John Doe (+1234567890) からの電話」
- 本文:「John Doeが電話しました。」
- 非公開:true(内部メモ)
- デフォルトユーザーに割り当てられます。
- その後、
ForGoogle→Google Sheetsを介してデータを準備および記録します。
-
新規チケットの作成
- オープンチケットがない場合:
CreateTicketは以下を含む新規チケットを作成します。- マッチした連絡先からの顧客IDと連絡先ID
- 動的な件名行
- ステータス:「進行中」
- デフォルトユーザーに割り当てられます。
- その後、
ForGoogle1→Google Sheets1を介して記録します。
- オープンチケットがない場合:
-
顧客レベルのフォールバック処理
- 連絡先は見つからなかったが顧客が見つかった場合:
CreateTicketForCustomerは組織レベルでチケットを作成します。- 件名に会社名を含めます。
ForGoogle2→Google Sheets2を介して記録します。
- 連絡先は見つからなかったが顧客が見つかった場合:
-
Googleスプレッドシートへのロギング
- すべてのアクション(更新/作成)が成功すると、行が追加されます。
- 列A:コールID
- 列B:チケットID
- 3つの別々のブランチにより、すべてのパスが適切に記録されることが保証されます。
- すべてのアクション(更新/作成)が成功すると、行が追加されます。
まとめ
このDialpad to Syncroワークフローは、n8nがインテリジェントな自動化を通じてコミュニケーションプラットフォームとサービス管理システムをどのように連携できるかを示す好例です。Webhook、条件付きロジック、API統合、外部ロギングを組み合わせることで、カスタマーサービスワークフローを強化するための堅牢なソリューションを提供します。これにより、記録されないコールがなくなり、すべてのやり取りがより良いサポート成果に貢献することが保証されます。
使い方:JSON をダウンロードし、n8n で「ファイルからインポート」を選択します。