워크플로 소개
Dialpad to Syncro 통합 워크플로우 분석
**"Dialpad to Syncro"**라는 제목의 이 N8n 워크플로우 템플릿은 **Dialpad(클라우드 기반 비즈니스 전화 시스템)**와 Syncro(MSPs를 위한 IT 서비스 관리 플랫폼) 간의 통합을 자동화하도록 설계되었습니다. 이를 통해 비즈니스는 발신자 식별을 기반으로 Dialpad를 통해 수신 전화가 걸려올 때 Syncro에서 지원 티켓을 자동으로 생성하거나 업데이트할 수 있습니다. 이 워크플로우는 전화번호를 사용하여 고객 또는 연락처를 지능적으로 일치시키고 추적 및 보고를 위해 Google 스프레드시트에 관련 데이터를 기록합니다.
워크플로우 기능
이 워크플로우의 주요 기능은 다음과 같습니다.
- Dialpad에서 들어오는 웹훅 이벤트(수신 전화로 트리거됨)를 수신합니다.
- 발신자의 전화번호를 사용하여 Syncro 데이터베이스를 검색하여 발신자를 식별합니다.
- 발신자가 알려진 연락처인지 고객인지 결정합니다.
- 해당 연락처와 연결된 열린 티켓이 이미 있는지 확인합니다.
- 새 티켓을 생성하거나 기존 티켓에 댓글을 추가합니다.
- 감사 및 분석을 위해 Google 스프레드시트에 통화 및 해당 티켓 정보를 기록합니다.
이 자동화는 모든 수신 전화가 추적 가능한 서비스 기록을 시작하도록 보장하여 수동 입력을 줄이고 응답 시간을 개선함으로써 고객 서비스 운영을 간소화합니다.
주요 기능 및 역량
-
웹훅 트리거 실행
- Dialpad의 실시간
POST요청을 수신하여 이벤트 기반으로 응답성이 뛰어납니다.
- Dialpad의 실시간
-
동적 고객/연락처 일치
- 발신자의 전화번호(형식
+, 선행1또는0제거)를 사용하여 Syncro API를 검색합니다. - 개별 연락처와 회사 수준 고객을 모두 처리합니다.
- 발신자의 전화번호(형식
-
조건부 논리 분기
- 여러
IF노드를 사용하여 다음을 기반으로 결정을 내립니다.- 통화 방향 (
inbound) - 검색 결과 길이(일치하는 항목이 하나 있는지 여부)
- 열린 티켓 존재 여부
- 통화 방향 (
- 여러
-
티켓 관리 자동화
- 열린 티켓이 없으면 새 티켓을 생성합니다.
- 중복을 생성하는 대신 기존 열린 티켓에 통화 세부 정보를 추가합니다.
-
데이터 강화 및 변환
- Function 노드를 사용하여 원시 API 응답에서 구조화된 데이터를 추출합니다.
- 전체 이름, 전화번호 및 회사 이름을 사용하여 동적 메시지를 형식화합니다.
-
Google 스프레드시트를 통한 외부 로깅
- 각 작업(티켓 생성/업데이트)을 Google 스프레드시트에 다음 정보와 함께 기록합니다.
- 통화 ID
- 티켓 ID
- 감사, 청구 또는 성능 추적에 유용합니다.
- 각 작업(티켓 생성/업데이트)을 Google 스프레드시트에 다음 정보와 함께 기록합니다.
-
환경 구성
- 유지 관리를 용이하게 하기 위해
EnvVariablesSet 노드를 사용하여 구성(기본 URL 및 사용자 ID 등)을 중앙 집중화합니다.
- 유지 관리를 용이하게 하기 위해
-
오류 복원력 및 대체 경로
- 데이터 누락으로 인해 실행이 중단되는 것을 방지하기 위해 대체 경로로
NoOp(No Operation) 노드를 포함합니다.
- 데이터 누락으로 인해 실행이 중단되는 것을 방지하기 위해 대체 경로로
주요 노드 및 목적
| 노드 이름 | 유형 | 목적 |
|---|---|---|
| Webhook | Webhook Trigger | 수신 전화 발생 시 Dialpad에서 POST 페이로드를 수신합니다. |
| IF (Direction Check) | IF Condition | inbound 통화만 처리되도록 보장합니다. 아웃바운드/내부 통화는 무시합니다. |
| EnvVariables | Set Node | Syncro 기본 URL 및 기본 사용자 ID와 같은 환경 상수를 저장합니다. |
| GetCustomer | HTTP Request | 정리된 발신자 번호를 사용하여 Syncro 검색 API를 쿼리합니다. |
| Contacts | Function Node | API 응답을 구문 분석하여 연락처 레코드를 추출합니다. |
| Customers | Function Node | API 응답을 구문 분석하여 고객(회사) 레코드를 추출합니다. |
| IFContacts / IFCustomers | IF Conditions | 정확히 하나의 연락처 또는 고객이 발견되었는지 확인합니다. |
| GetTicket | HTTP Request | 식별된 연락처와 연결된 열린 티켓을 검색합니다. |
| IFMoreThanOne | IF Condition | 열린 티켓이 있는지(길이 > 0) 확인한 다음 업데이트 또는 생성 여부를 결정합니다. |
| UpdateTicket | HTTP Request | 통화를 기록하는 숨겨진 댓글을 기존 티켓에 추가합니다. |
| CreateTicket / CreateTicketForCustomer | HTTP Request | 연락처 또는 고객에게 새 티켓을 생성합니다. |
| Set Nodes (ForGoogle)* | Set Node | 로깅을 위해 구조화된 데이터(통화 ID + 티켓 ID)를 준비합니다. |
| **Google Sheets * ** | Google Sheets Node | 추적을 위해 스프레드시트에 로그 항목을 추가합니다. |
| **NoOp * ** | No Operation Node | 조치가 취해지지 않은 경우를 처리하기 위한 더미 출력 역할을 합니다. |
사용 사례 및 이점
✅ 사용 사례
- MSP(관리 서비스 제공업체): 에이전트가 모든 통화 후에 수동으로 티켓을 생성할 필요 없이 클라이언트 상호 작용을 자동으로 추적합니다.
- 헬프 데스크: 통화하기 전에 발신자에 대한 컨텍스트를 미리 채워 첫 응답 효율성을 개선합니다.
- 영업 및 지원팀: Syncro의 CRM과 유사한 레코드에 직접 연결된 모든 수신 통신의 상세 로그를 유지합니다.
- 규정 준수 및 감사: 통화와 서비스 활동을 연결하는 불변 로그를 Google 스프레드시트에 보관합니다.
✅ 이점
- 수동 작업 감소: 클라이언트 조회 및 티켓 열기의 필요성을 제거합니다.
- 중복 티켓 방지: 스마트 로직으로 시스템이 복잡해지는 것을 방지합니다.
- 책임성 향상: 모든 통화는 디지털 흔적을 남깁니다.
- 컨텍스트 인식 향상: 에이전트는 통화에 응답하거나 다시 걸기 전에 최근 활동을 볼 수 있습니다.
- 확장 가능 및 구성 가능: SMS, 음성 메일 또는 이메일 통합을 포함하도록 확장할 수 있습니다.
단계별 워크플로우 로직
-
트리거: 수신 전화 감지
- Dialpad는
/moezdialpad웹훅 엔드포인트로POST요청을 보냅니다. - 페이로드에는 발신자 번호(
external_number), 통화 ID 및 방향이 포함됩니다.
- Dialpad는
-
필터: 수신 통화만 처리
- 첫 번째
IF노드는direction === 'inbound'인지 확인합니다. - 거짓이면
NoOp2(아무 작업도 수행하지 않음)로 라우팅됩니다. - 참이면 다음 단계로 진행됩니다.
- 첫 번째
-
환경 변수 로드
EnvVariables노드는 다음을 주입합니다.syncro_baseurl: Syncro API의 기본 URL- 나중에 사용되는 기타 정적 값(예: 사용자 ID)
-
발신자 Syncro 검색
GetCustomer는 다음으로 HTTP GET 요청을 보냅니다.{{syncro_baseurl}}/api/v1/search?query={cleaned_phone}- 전화번호는
.replace()를 사용하여+, 선행1또는0을 제거하도록 정리됩니다.
-
결과를 연락처 및 고객으로 구문 분석
- 두 개의 병렬
Function노드(Contacts및Customers)가 검색 결과 JSON을 구문 분석합니다._index === 'contacts'또는'customers'인 항목 필터링- 주요 필드 추출: 이름, ID, customer_id, 전화번호
- 일치하는 연락처/고객 배열을 출력합니다.
- 두 개의 병렬
-
정확히 하나의 일치 확인
IFContacts: 정확히 하나의 연락처가 발견되면 → 티켓 확인으로 진행IFCustomers: 정확히 하나의 고객이 발견되면 → 고객 수준 티켓 생성으로 진행- 그렇지 않으면
NoOp/NoOp1(조치 없음)으로 라우팅됩니다.
-
열린 티켓 확인(연락처별)
- 연락처가 발견되면
GetTicket은 다음을 쿼리합니다./api/v1/tickets?contact_id=X&status=Not%20Closed - 해당 연락처의 열린 티켓 목록을 반환합니다.
- 연락처가 발견되면
-
결정: 티켓 업데이트 또는 생성?
IFMoreThanOne은 다음을 평가합니다.- 열린 티켓이 하나 이상 있습니까?
- 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
- 세 개의 별도 분기는 모든 경로가 적절하게 기록되도록 합니다.
- 모든 성공적인 작업(업데이트/생성)은 행을 추가하는 결과를 낳습니다.
요약
이 Dialpad to Syncro 워크플로우는 n8n이 지능형 자동화를 통해 통신 플랫폼과 서비스 관리 시스템을 어떻게 연결할 수 있는지 보여주는 예입니다. 웹훅, 조건부 논리, API 통합 및 외부 로깅을 결합하여 고객 서비스 워크플로우를 개선하기 위한 강력한 솔루션을 제공합니다. 모든 통화가 기록되고 모든 상호 작용이 더 나은 지원 결과를 위해 기여하도록 보장합니다.
사용 방법: JSON을 다운로드한 뒤 n8n에서 “파일에서 가져오기”를 선택하세요.