캠페인은 연락처 목록에 순차적으로 연락하고, 아웃바운드 통화를 시작하고, 각 연락처를 사용 가능한 상담사에게 연결하는 아웃바운드 자동 다이얼러 기능을 의미합니다. 캠페인 엔드포인트는 캠페인 관련 데이터에 대한 액세스를 제공하여 캠페인 및 연락처 객체를 검색할 수 있도록 합니다.
캠페인 객체는 플랫폼 내의 단일 캠페인을 나타냅니다.
Contact 객체는 특정 캠페인 내의 개별 캠페인 연락처를 나타냅니다.
캠페인 엔드포인트를 사용하면 사용자가 기존 캠페인의 연락처를 추가, 업데이트, 삭제할 수 있습니다. 사용 가능한 엔드포인트는 다음과 같습니다.
캠페인 연락처 상태
상태 필드는 다음 상태 중 하나일 수 있습니다.
| 캠페인 연락처 상태 | 설명 |
|---|---|
| 예정 | 다음에 전화를 걸 연락처입니다. |
| Dialing(전화 거는 중) | 지금 연락처에 전화를 걸고 있습니다. |
| 큐에 추가됨 | 특정 연락처에 대한 통화가 대기열에 추가됩니다. |
| 연결됨 | 문의가 상담사와 연결되었습니다. |
| 완료됨 | 통화가 완료되었습니다. |
| 이전됨 | 통화가 트랜스퍼되었습니다. |
| 전송 및 완료됨 | 통화가 트랜스퍼된 후 완료되었습니다. |
| 수령하지 않음 | 최종 사용자가 응답하지 않거나 최종 사용자에게 도달하지 못했습니다. |
| 연락처에 도달하지 않음 | 통화가 연락처에 연결되지 않았습니다. |
| Abandoned by Contact(고객이 포기) | 미리보기의 경우 최종 사용자가 상담사에게 연결되기 전에 전화를 끊습니다. 프로그레시브와 예측 모두에서 최종 사용자가 상담사에게 연결된 후 5초 이내에 전화를 끊습니다. |
| 건너뜀 | 상담사가 연락처를 건너뛰었으며 다른 상담사에게 연결할 수 있습니다. |
| 건너뛰고 닫음 | 미리보기에서 상담사가 연락처를 건너뛰고 닫습니다. 이제 이 캠페인에서 이 연락처가 항상 건너뛰어집니다. |
| 잘못된 번호 | 전화번호가 잘못된 연락처 |
| 이동통신사 오류 | 이 오류는 이동통신사에 의해 발생합니다. |
| 다이얼러에 의해 포기됨 | 다이얼러에서 연락처가 버려졌습니다. |
| 음성메시지 통화 종료 | 예측 모드에서 다이얼러는 최종 사용자가 머신 (예: 음성사서함)이라고 판단합니다. |
| 다이얼러 일반 오류 | 다이얼러 오류로 인해 통화에 실패했습니다. |
| 다시 걸기 예약됨 | 임시 상태입니다. 향후 다시 걸기 예약됨 |
| Do Not Call | 전화번호가 수신 거부 전화번호 목록에 있습니다. |
| 잘못된 아웃바운드 번호 | 잘못된 발신 번호가 있는 연락처 |
| 차단된 전화번호 | 잘못되었거나 차단된 국제 번호가 있는 연락처 |
캠페인에 연락처 하나 추가
| 매개변수 | 필수 | 데이터 유형 | 정의 |
|---|---|---|---|
| 캠페인_id | TRUE | 정수 | 연락처를 추가할 캠페인의 ID입니다. |
엔드포인트:
Method: POST
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/outbound_dialer/campaigns/{campaign_id}/contacts
헤더:
| 키 | 값 | 설명 |
|---|---|---|
| Content-Type | application/json |
본문:
{
"name": "string",
"email": "customer@somedomain.com",
"phone_number": "+1 111-111-1111",
"outbound_number": "+1 760-867-5309",
"external_unique_id": "UID_123456"
}
요청 및 응답 예시
다음 섹션에서는 엔드포인트에 대한 요청의 예를 제공합니다.
캠페인에 연락처 하나 추가
이 예시에서는 특정 캠페인 ID에 연락처를 추가하는 방법을 보여줍니다.
요청
헤더:
| 키 | 값 | 설명 |
|---|---|---|
| Content-Type | application/json |
질문:
| 키 | 값 | 설명 |
|---|---|---|
| 캠페인_id | 정수 | 연락처를 추가할 캠페인의 ID입니다. |
본문:
{
"name": "string",
"email": "customer@somedomain.com",
"phone_number": "+1 111-111-1111",
"outbound_number": "+1 760-867-5309",
"external_unique_id": "UID_123456"
}
응답
{
"valid_contacts": [
{
"name": "string",
"email": "customer@somedomain.com",
"phone_number": "+1 111-111-1111",
"outbound_number": "+1 760-867-5309",
"external_unique_id": "UID_123456"
}
],
"invalid_contacts": []
}
상태 코드: 200
캠페인의 연락처 가져오기
| 매개변수 | 필수 | 데이터 유형 | 정의 |
|---|---|---|---|
| 캠페인_id | TRUE | 정수 | 연락처를 가져올 캠페인의 ID입니다. |
엔드포인트:
Method: GET
Type:
URL: https://{subdomain}.{domain}/apps/api/v1/outbound_dialer/campaigns/{campaign_id}/contacts
헤더:
| 키 | 값 | 설명 |
|---|---|---|
| Content-Type | application/json |
질문:
| 키 | 값 | 설명 |
|---|---|---|
| 캠페인_id | 정수 | 연락처를 추가할 캠페인의 ID입니다. |
요청 및 응답 예시
다음 섹션에서는 엔드포인트에 대한 요청의 예를 제공합니다.
캠페인의 연락처 가져오기
다음 예시에서는 지정된 캠페인 ID의 연락처를 가져오는 방법을 보여줍니다.
요청
헤더:
| 키 | 값 | 설명 |
|---|---|---|
| Content-Type | application/json |
질문:
| 키 | 값 | 설명 |
|---|---|---|
| 캠페인_id | 정수 | 조회할 캠페인의 캠페인 ID |
응답
[
{
"name": "string",
"email": "customer@somedomain.com",
"phone_number": "+1 111-111-1111",
"outbound_number": "+1 760-867-5309",
"external_unique_id": "UID_123456"
}
]
상태 코드: 200
캠페인에 여러 연락처 가져오기
| 매개변수 | 필수 | 데이터 유형 | 정의 |
|---|---|---|---|
| 파일 | TRUE | 문자열 | 캠페인에 추가할 여러 연락처가 포함된 json 파일입니다. |
| 캠페인_id | TRUE | 정수 | 연락처를 추가할 캠페인의 ID입니다. |
엔드포인트:
Method: POST
Type: FORM DATA
URL: https://{subdomain}.{domain}/apps/api/v1/outbound_dialer/campaigns/{campaign_id}/contacts/import
헤더:
| 키 | 값 | 설명 |
|---|---|---|
| Content-Type | multipart/form-data |
본문:
'FORM DATA'
파일 콘텐츠:
[
{
"name": "string",
"email": "customer@somedomain.com",
"phone_number": "+1 111-111-1111",
"outbound_number": "+1 760-867-5309",
"external_unique_id": "UID_123456"
}
]
요청 및 응답 예시
다음 섹션에서는 엔드포인트에 대한 요청의 예를 제공합니다.
파일에서 여러 연락처 가져오기
이 예에서는 엔드포인트에 게시된 파일을 기반으로 캠페인에 연락처를 추가하는 방법을 보여줍니다. 파일이 양식 데이터로 게시됩니다.
요청
헤더:
| 키 | 값 | 설명 |
|---|---|---|
| Content-Type | multipart/form-data |
질문:
| 키 | 값 | 설명 |
|---|---|---|
| 캠페인_id | 정수 | 연락처를 추가할 캠페인 ID |
파일 콘텐츠:
[
{
"name": "string",
"email": "customer@somedomain.com",
"phone_number": "+1 111-111-1111",
"outbound_number": "+1 760-867-5309",
"external_unique_id": "UID_123456"
}
]
응답
None
상태 코드: 202 (수락됨)
작업
| 매개변수 | 필수 | 데이터 유형 | 정의 |
|---|---|---|---|
| job_id | TRUE | 정수 | 가져올 작업 ID |
| 캠페인_id | TRUE | 정수 | 작업 ID가 속한 캠페인 ID입니다. |
엔드포인트:
Method: GET
Type:
URL: https://{{subdomain}}.{{domain}}/apps/api/v1/outbound_dialer/campaigns/{campaign_id}/contacts/jobs/{job_id}
헤더:
| 키 | 값 | 설명 |
|---|---|---|
| Content-Type | application/json |
요청 및 응답 예시
다음 섹션에서는 엔드포인트에 대한 요청의 예를 제공합니다.
완료됨
다음 예에서는 작업을 검색하고 작업이 성공적으로 완료되었는지 확인하는 방법을 보여줍니다.
요청
헤더:
| 키 | 값 | 설명 |
|---|---|---|
| Content-Type | application/json |
질문:
| 키 | 값 | 설명 |
|---|---|---|
| 캠페인_id | 1 | 작업이 속한 캠페인 ID |
| job_id | 530 | 상태를 확인할 작업 ID |
응답
{
"id": 530,
"status": "completed",
"type": "Jobs::Bulk::Campaign::ParentJob"
}
상태 코드: 200
가져오기가 아직 진행 중입니다
다음 예에서는 작업을 검색하고 가져오기가 아직 진행 중인지 확인하는 방법을 보여줍니다.
요청
헤더:
| 키 | 값 | 설명 |
|---|---|---|
| Content-Type | application/json |
질문:
| 키 | 값 | 설명 |
|---|---|---|
| 캠페인_id | 1 | 작업이 속한 캠페인 ID |
| job_id | 530 | 상태를 확인할 작업 ID |
응답
{
"id": 530,
"status": "in_progress",
"type": "Jobs::Bulk::Campaign::ParentJob"
}
상태 코드: 200
실패한 작업
다음 예에서는 작업을 가져오고 작업이 실패했는지 확인하는 방법을 보여줍니다.
요청
헤더:
| 키 | 값 | 설명 |
|---|---|---|
| Content-Type | application/json |
질문:
| 키 | 값 | 설명 |
|---|---|---|
| 캠페인_id | 1 | 작업이 속한 캠페인 ID |
| job_id | 523 | 상태를 확인할 작업 ID |
응답
{
"error_details": "NativePowerDial::ContactService::DuplicateContactPhoneOnCampaign",
"error_message": "Internal Error",
"id": 523,
"status": "failed",
"type": "Jobs::Bulk::Campaign::StartImport"
}
상태 코드: 200
단일 연락처 업데이트
| 매개변수 | 필수 | 데이터 유형 | 정의 |
|---|---|---|---|
| 캠페인_id | TRUE | 정수 | 작업 ID가 속한 캠페인 ID입니다. |
엔드포인트:
Method: PATCH
Type: RAW
URL: https://{{subdomain}}.{{domain}}/apps/api/v1/outbound_dialer/campaigns/{campaign_id}/contact
헤더:
| 키 | 값 | 설명 |
|---|---|---|
| Content-Type | application/json |
본문:
{
"contact_id": 16312,
"name": "string",
"email": "customer@somedomain.com",
"phone_number": "+1 111-111-1111",
"external_unique_id": "UID_123456"
}
요청 및 응답 예시
다음 섹션에서는 엔드포인트에 대한 요청의 예를 제공합니다.
캠페인의 연락처 업데이트
이 예시에서는 특정 캠페인에 있는 연락처를 업데이트하는 방법을 보여줍니다.
요청
헤더:
| 키 | 값 | 설명 |
|---|---|---|
| Content-Type | application/json |
본문:
{
"contact_id": 7,
"name": "Bob Smith",
"email": "customer@somedomain.com",
"phone_number": "+1 111-111-1111",
"external_unique_id": "UID_123456"
}
응답
{
"id": 7,
"name": "Bob Smith",
"campaign_id": 6,
"assigned_call_id": null,
"assigned_participant_id": null,
"outbound_number": "+1-(201)-471-6992",
"priority": null,
"created_at": "2024-08-05T14:51:49.000Z",
"updated_at": "2024-08-05T21:01:16.000Z",
"status": "Upcoming",
"user_custom_metadata": {
"NAME (REQUIRED)": "Bob Smith",
"PHONE (REQUIRED)": "+1 111-111-1111",
"EMAIL (REQUIRED)": "customer@somedomain.com"
}
}
상태 코드: 200
단일 연락처 삭제
| 매개변수 | 필수 | 데이터 유형 | 정의 |
|---|---|---|---|
| 캠페인_id | TRUE | 정수 | 작업 ID가 속한 캠페인 ID입니다. |
엔드포인트:
Method: DELETE
Type: RAW
URL: https://{{subdomain}}.{{domain}}/apps/api/v1/outbound_dialer/campaigns/{campaign_id}/contact
헤더:
| 키 | 값 | 설명 |
|---|---|---|
| Content-Type | application/json |
본문:
{
"contact_id": integer,
"phone_number": "string",
"external_unique_id": "string"
}
요청 및 응답 예시
다음 섹션에서는 엔드포인트에 대한 요청의 예를 제공합니다.
연락처 ID로 연락처 삭제
이 예에서는 연락처의 연락처 ID를 기반으로 캠페인에서 연락처를 삭제하는 방법을 보여줍니다.
요청
헤더:
| 키 | 값 | 설명 |
|---|---|---|
| Content-Type | application/json |
본문:
{
"contact_id": 7,
}
질문:
| 키 | 값 | 설명 |
|---|---|---|
| 캠페인_id | 1 | 작업이 속한 캠페인 ID |
응답
{
"id": 7,
"name": "Bob Smith",
"campaign_id": 6,
"assigned_call_id": null,
"assigned_participant_id": null,
"outbound_number": "+1-(201)-471-6992",
"priority": null,
"created_at": "2024-08-05T14:51:49.000Z",
"updated_at": "2024-08-05T21:01:16.000Z",
"status": "Upcoming",
"user_custom_metadata": {
"NAME (REQUIRED)": "Bob Smith",
"PHONE (REQUIRED)": "+1 111-111-1111",
"EMAIL (REQUIRED)": "customer@somedomain.com"
}
}
상태 코드: 200