# Smart Dialer

Tài liệu này cung cấp các luồng tích hợp SmartDialer vào ứng dụng của quý khách.

{% hint style="info" %}
Lưu ý: Địa chỉ HOST của các cuộc gọi API tới dịch vụ smartdialer sẽ là

&#x20;**`https://dialer-api.caresoft.vn`**
{% endhint %}

## 1. Danh sách chiến dịch

<mark style="color:green;">`GET`</mark> `/{domain}/api/v1/campaign/list`

Danh sách các chiến dịch đã được cấu hình trên hệ thống.

**Headers**

| Name          | Value              |
| ------------- | ------------------ |
| Content-Type  | `application/json` |
| Authorization | `Bearer <token>`   |

**Params**

| Name         | Type                         | Description              | Ghi chú                                                                                              |
| ------------ | ---------------------------- | ------------------------ | ---------------------------------------------------------------------------------------------------- |
| date\_from   | DateTime YYYY-MM-DD HH:mm:ss | Từ ngày (tạo chiến dịch) | Ngày đầu tiên trong năm                                                                              |
| date\_to     | DateTime YYYY-MM-DD HH:mm:ss | Age of the user          | Thời điểm hiện tại                                                                                   |
| status       | Int                          | Trạng thái chiến dịch    | <p>Là 1 trong các giá trị 0: Draff<br>1:  New<br>2: Ready<br>3: Running<br>4: Pause<br>5: Finish</p> |
| page         | int                          | Trang số                 | Mặc định 1                                                                                           |
| count        | int                          | Số bản ghi trên request  | Mặc định 25, tối đa 1000                                                                             |
| campaign\_id | Int                          | ID campaign              | Trong truờng hợp chỉ cần thông tin của 1 chiến dịch cụ thể có thể dùng theo cách này                 |

**Response**

{% tabs %}
{% tab title="200" %}

```json
{
    "numFound": "3",
    "data": [
        {
            "campaign_id": 5674,
            "name": "123456",
            "schedule_start": null,
            "schedule_stop": null,
            "statusType": "DRAFF",
            "actionType": "AUTODIAL",
            "status": 0,
            "action": 3
        },
        {
            "campaign_id": 5323,
            "name": "TestAT",
            "schedule_start": "2022-09-26 00:00:00",
            "schedule_stop": "2022-09-26 23:59:59",
            "statusType": "FINISHED",
            "actionType": "AUTODIAL",
            "status": 5,
            "action": 3
        },
        {
            "campaign_id": 5320,
            "name": "2409 at",
            "schedule_start": "2022-09-24 00:00:00",
            "schedule_stop": "2022-09-24 23:59:59",
            "statusType": "DRAFF",
            "actionType": "AUTODIAL",
            "status": 0,
            "action": 3
        }
    ]
}
```

{% endtab %}

{% tab title="400" %}

```json
{
  "error": "Invalid request"
}
```

{% endtab %}
{% endtabs %}

**Giải thích kết quả**

| Param           | Ý Nghĩa                      | Ghi chú                                                                       |
| --------------- | ---------------------------- | ----------------------------------------------------------------------------- |
| campaign\_id    | ID chiến dịch (khóa chính)   |                                                                               |
| name            | Tên chiến dịch               |                                                                               |
| schedule\_start | Thời điểm bắt đầu chiến dịch |                                                                               |
| schedule\_stop  | Thời điểm kết thúc           |                                                                               |
| status          | Trạng thái                   | <p>0: Draff<br>1:  New<br>2: Ready<br>3: Running<br>4: Pause<br>5: Finish</p> |
| action          | Loại chiến dịch              | <p>1: Preview<br>2: Predictive Call<br>3: Autocall</p>                        |

## 2. Kết quả cuộc gọi chiến dịch

<mark style="color:green;">`GET`</mark> `/{domain}/api/v1/smartdialer/call-logs`

Lấy danh sách kết quả chiến dịch tới khách hàng, Danh sách này thể hiện việc gọi được cho khách hàng hay không và giá trị cuộc gọi nếu gọi được là gì.&#x20;

**Headers**

| Name          | Value              |
| ------------- | ------------------ |
| Content-Type  | `application/json` |
| Authorization | `Bearer <token>`   |

**Params**

| Name               | Type                         | Description                                                                                                                                 |
| ------------------ | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| campaign\_id (\*)  | Int                          | ID chiến dịch                                                                                                                               |
| campaign\_type     | Varchar                      | <p>Kiểu chiến dịch Điền 1 trong 2 loại kiểu chiến dịch để lấy dữ liệu theo tất cả chiến dịch dạng đó <br>AUTO\_CALL<br>PREDICTIVE\_CALL</p> |
| start\_time\_since | DateTime YYYY-MM-DD HH:mm:ss | <p>Thời điểm bắt đầu lọc dữ liệu<br><em>\* Mặc định từ ngày đầu trong tháng</em></p>                                                        |
| start\_time\_to    | DateTime YYYY-MM-DD HH:mm:ss | <p>Thời điểm kết thúc lọc dữ liệu<br><em>\* Mặc định thời điểm hiện tại</em></p>                                                            |
| phone\_no          | Varchar(12)                  | Số điện thoại gọi đến                                                                                                                       |
| line               | Varchar(12)                  | Đầu số gọi ra                                                                                                                               |
| lst\_data          | Array                        | Danh sách ID dữ liệu caresoft đã trả về qua API tạo cuộc gọi từ trước. Vd: \[1134,456,2233]                                                 |
| status\_code       | Int                          | Mã trạng thái thoại 200: Gọi thành công Các mã khác: Cuộc gọi không thành công                                                              |
| page               | Int                          | Trang số                                                                                                                                    |
| count              | Int                          | <p>Số bản ghi trên 1 trang. <br><em>\* Giới hạn tối đa 500</em></p>                                                                         |

**Response**

{% tabs %}
{% tab title="200" %}

```json
{
    "status": true,
    "data": {       
        "numFound": 6,
        "data": [
            {
                "id": 511,
                "called": "0983914980",
                "line": "842999999968",
                "start_time": "2020-04-21 10:41:50",
                "end_time": "2020-04-21 10:41:58",
                "status_code": 200,
                "connect_time": "2020-04-21 10:41:53",
                "call_duration": 5,
                "ring_customer_duration": 2,
                "ticket_id": null,
                "customer_user_id": 63150012,
                "account_id": 1,
                "call_attempt_total": 0,
                "campaign_id": 476,
                "customer_input_dtmf": null,...             

```

{% endtab %}

{% tab title="400" %}

```json
{
  "error": "Invalid request"
}
```

{% endtab %}
{% endtabs %}

Kết quả trả về&#x20;

| STT           | Tên trường         | Chú thích                                                                                                                                                                                                        |
| ------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p><br>1</p>  | Campaign\_name     | Tên chiến dich                                                                                                                                                                                                   |
| 2             | Created\_at        | Ngày tạo chiến dich                                                                                                                                                                                              |
| 3             | Updated\_at        | Ngày cập nhật chiến dịch                                                                                                                                                                                         |
| <p>4<br></p>  | Last\_run          | Thời điểm chạy chiến dịch gần nhất                                                                                                                                                                               |
| 5             | Schedule\_start    | Thời gian bắt đầu chạy chiến dịch                                                                                                                                                                                |
| 6             | Schedule\_stop     | Thời điểm kết thúc chiến dịch                                                                                                                                                                                    |
| 7             | Time\_frame\_start | Thời gian chạy chiến dịch(trong ngày)                                                                                                                                                                            |
| 8             | Time\_frame\_stop  | Thời gian dừng chiến dịch (trong ngày)                                                                                                                                                                           |
| 9             | Campaign\_status   | <p>Trạng thái chiến dịch</p><ol><li>Mới tạo</li><li>Đang review</li><li>Sẵn sàng để chạy</li><li>Đang chạy</li><li>Đã kết thúc</li></ol><p>      -1.    Lỗi</p>                                                  |
| <p>10<br></p> | Campaign\_type     | <p>Loại chiến dịch<br>AUTO\_CALL: Gọi tự động<br>PREDICTIVE\_CALL: Gọi predictive</p><p>PREVIEW\_CALL: Gọi chủ động</p>                                                                                          |
| <p><br>11</p> | Data {}            | Mảng Kết quả chiến dich ( [Chi tiết mảng này tham khảo API chi tiết thông tin cuộc gọi theo DataID](https://docs.google.com/document/d/19HZGYFJET-hYVwdgjwbWDcjd7llazsn_JrUVXPhaNDg/edit#heading=h.gmzzluvz1ze)) |
| <p>12<br></p> | numFound           | Số lượng khách hàng đã thực hiện gọi cho chiến dịch                                                                                                                                                              |

## 3. Kết quả chi tiết chiến dịch&#x20;

<mark style="color:green;">`GET`</mark> `/{domain}/api/v1/smartdialer/call-log-details`

Danh sách chi tiết các cuộc gọi phát sinh của chiến dịch (Bao gồm cả các cuộc gọi không thành công và gọi lại theo cấu hình&#x20;

**Headers**

| Name          | Value              |
| ------------- | ------------------ |
| Content-Type  | `application/json` |
| Authorization | `Bearer <token>`   |

**Params**&#x20;

{% hint style="info" %}
Tương tự [mục kết quả chiến dịch](#id-2.-ket-qua-cuoc-goi-chien-dich)
{% endhint %}

**Response**

{% tabs %}
{% tab title="200" %}

```json
{
    "status": true,
    "data": {       
        "numFound": 6,
        "data": [
            {
                "id": 511,
                "called": "0983914980",
                "line": "842999999968",
                "start_time": "2020-04-21 10:41:50",
                "end_time": "2020-04-21 10:41:58",
                "status_code": 200,
                "connect_time": "2020-04-21 10:41:53",
                "call_duration": 5,
                "ring_customer_duration": 2,
                "ticket_id": null,
                "customer_user_id": 63150012,
                "account_id": 1,
                "call_attempt_total": 0,
                "campaign_id": 476,
                "customer_input_dtmf": null,
                "path": null,
                "path_download": null,   
                "call_attempt_index": 0,        
            "call_id": "20220707172702-DIALERGEVFF-387740",
            "ivr_list_id": null,
            "campaign_data_id": 206697139,
            
```

{% endtab %}

{% tab title="400" %}

```json
{
  "error": "Invalid request"
}
```

{% endtab %}
{% endtabs %}

**Kết quả trả về**

| Trường                   | Định nghĩa                                                   | Ghi chú                                                                                                                                        |
| ------------------------ | ------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| id                       | ID tự tăng của bản ghi                                       |                                                                                                                                                |
| called                   | Số điện thoại khách hàng                                     |                                                                                                                                                |
| line                     | Số hotline (Đầu số)                                          |                                                                                                                                                |
| start\_time              | Thời điểm bắt đầu                                            |                                                                                                                                                |
| end\_time                | Thời điểm kết thúc                                           |                                                                                                                                                |
| status\_code             | Mã trạng thái cuộc gọi (sip code)                            | Ví dụ: 200, thành công, 408: Khách hàng tắt nguồn. 600: khách hàng bận không nghe máy...                                                       |
| connect\_time            | Thời điểm khách nhấc máy nghe cuộc gọi                       |                                                                                                                                                |
| call\_duration           | Thời lượng cuộc gọi                                          | (Giây)                                                                                                                                         |
| ring\_customer\_duration | Thời gian khách chờ bắt máy                                  | (Giây)                                                                                                                                         |
| ticket\_id               | ID phiếu ghi liên quan                                       | Trong trường hợp cuộc gọi có kết nối tới chuyên viên                                                                                           |
| customer\_user\_id       | ID khách hàng                                                |                                                                                                                                                |
| call\_attempt\_total     | Tổng số lần gọi thực hiện gọi khách                          | Trong 1 phiên nếu số lần gọi lại là 3 và cuộc gọi thứ 2 khách mới bắt máy thì số này thế hiện là 2                                             |
| campaign\_id             | ID chiến dịch                                                |                                                                                                                                                |
| customer\_input\_dtmf    | Dãy số mà khách hàng bấm vào trong lúc nghe cuộc gọi         |                                                                                                                                                |
| path                     | Đường dẫn file ghi âm (Dùng nghe trực tiếp trên trình duyệt) | Trong trường hợp cuộc gọi kết nối tới chuyên viên và phát sinh trao đổi, nội dung cuộc gọi sẽ được lưu lại sau khi kết thúc cuộc gọi vài phút. |
| path\_download           | Đường dẫn tải về file ghi âm                                 |                                                                                                                                                |
| call\_id                 | ID cuộc gọi                                                  |                                                                                                                                                |
| campaign\_data\_id       | ID dữ liệu chiến dịch phát sinh ra cuộc gọi                  |                                                                                                                                                |
|                          |                                                              |                                                                                                                                                |

## 4. Tạo mới cuộc gọi vào 1 chiến dịch đang có&#x20;

Các phương thức có thể đẩy dữ liệu vào 1 chiến dịch đang chạy để thực hiện cuộc gọi&#x20;

### 4.1 Đẩy dữ liệu theo [contact\_id](https://docs.caresoft.vn/danh-muc/khach-hang#them-moi-khach-hang) trên CareSoft

<mark style="color:green;">`POST`</mark> `/{domain}/api/v1/campaign/data`

Thực hiện tạo cuộc gọi theo ID của khách hàng (ContactId) có trên CareSoft. Hệ thống sẽ lấy số điện thoại tồn tại trên ContactId để thực hiện cuộc gọi ra&#x20;

**Headers**

| Name          | Value              |
| ------------- | ------------------ |
| Content-Type  | `application/json` |
| Authorization | `Bearer <token>`   |

**Body** \
\&#xNAN;***SON format***

```json
{
  "campaign_id": 325,
  "contact_id": 2,
  "message": {
    "customerID": "09812212121",
    "name": "Nghia",
    "buy_date": "2018 july 20",
    "message": "Purchase success"
  }
}

```

| Name         | Type   | Description                            |
| ------------ | ------ | -------------------------------------- |
| campaign\_id | number | ID của chiến dịch ở bước 1             |
| contact\_id  | number | ID khách hàng trên CareSoft            |
| message      | String | Chuỗi nội dung tham số thay thế nếu có |

**Response**

{% tabs %}
{% tab title="200" %}

```json
{
    "status": true,
    "status_code": 200  
}
```

{% endtab %}

{% tab title="422" %}

```json
{
    "status": false,
    "status_code": 422,
    "data": {
        "campaign_id": 3225,
        "contact_id": 2,
        "paramsValue": {
            "phone": "09812212121",
            "name": "Nghia",
            "buy_date": "2018 july 20",
            "message": "Purchase success"
        }
    }
}

```

{% endtab %}
{% endtabs %}

### 4.2 Đẩy dữ liệu theo số điện thoại khách hàng

<mark style="color:green;">`POST`</mark> `/{domain}/api/v1/campaign/dataPhone`

Tạo cuộc gọi smartDialer theo số điện thoại của khách hàng. Trong trường hợp chưa tồn tại hệ thống sẽ tự tạo khách hàng tương ứng.&#x20;

**Headers**

| Name          | Value              |
| ------------- | ------------------ |
| Content-Type  | `application/json` |
| Authorization | `Bearer <token>`   |

**Body**\
\&#xNAN;***JSON Format***

```json
{
  "campaign_id": 325,
  "phone_no": "0971221122",
  "message": {
    "name": "Le Manh Hai",
    "buy_date": "2018 july 20",
    "message": "Purchase success"
  }
}
```

| Name         | Type    | Description                               |
| ------------ | ------- | ----------------------------------------- |
| campaign\_id | Int     | ID chiến dịch                             |
| phone\_no    | phoneNo | Số điện thoại của chiến dịch              |
| message      | Object  | Object chứa param thay thế của TTS nếu có |

**Response**

{% tabs %}
{% tab title="200" %}

```json
{
  "status": true,
  "status_code": 200
}
```

{% endtab %}

{% tab title="422" %}

```json
{
    "status": false,
    "status_code": 422,
    "data": {
        "campaign_id": 3225,
        "phone_no":”12”,
        "paramsValue": {
            "phone": "09812212121",
            "name": "Nghia",
            "buy_date": "2018 july 20",
            "message": "Purchase success"
        }
    }
}
```

{% endtab %}
{% endtabs %}

### 4.3 Đẩy dữ liệu theo email của khách hàng

<mark style="color:green;">`POST`</mark>  `/{domain}/api/v1/campaign/dataEmail`

Tạo cuộc gọi dựa theo email của khách hàng. Nếu trên hệ thống CareSoft tồn tại khách hàng trùng khớp với email truyền vào và khách đó có số điện thoại. hệ thống sẽ gọi ra theo số điện thoại tìm thấy theo kịch bản của chiến dịch.

**Headers**

| Name          | Value              |
| ------------- | ------------------ |
| Content-Type  | `application/json` |
| Authorization | `Bearer <token>`   |

**Body**\
\&#xNAN;***Json Format***

```json
{
  "campaign_id": 325,
  "email": "info@caresoft.vn",
  "message": {
    "name": "Nghia",
    "buy_date": "2018 july 20",
    "message": "Purchase success"
  }
}
```

| Name         | Type   | Description                                    |
| ------------ | ------ | ---------------------------------------------- |
| campaign\_id | Int    | ID chiến dịch                                  |
| `email`      | email  | Email của khách hàng                           |
| message      | Object | Các key thay thế của cuộc gọi TTS nếu cấu hình |

**Response**

{% tabs %}
{% tab title="200" %}

```json
{
  "status": true,
  "status_code": 200
}
```

{% endtab %}

{% tab title="400" %}

```json
{
  "status": false,
  "status_code": 422,
  "data": {
    "campaign_id": 3225,
    "email": "info@caresoft.vn",
    "paramsValue": {
      "phone": "09812212121",
      "name": "Nghia",
      "buy_date": "2018 july 20",
      "message": "Purchase success"
    }
  }
}
```

{% endtab %}
{% endtabs %}

### 4.4  Đẩy dữ liệu theo danh sách ID khách hàng&#x20;

<mark style="color:green;">`POST`</mark> `/{domain}/api/v1/campaign/dataMultiple`

Tạo hàng loạt cuộc gọi dựa theo 1 danh sách khách hàng có sẵn trên hệ thống CareSoft&#x20;

**Headers**

| Name          | Value              |
| ------------- | ------------------ |
| Content-Type  | `application/json` |
| Authorization | `Bearer <token>`   |

**Body**\
\&#xNAN;***Json Format***

```json
{
  "campaign_id": 325,
  "contact_id_list": [
    1000,
    10001,
    10002
  ],
  "message": {
    "contactid": "09812212121",
    "name": "Nghia",
    "buy_date": "2018 july 20",
    "message": "Purchase success"
  }
}
```

| Name              | Type   | Description                                                                                       |
| ----------------- | ------ | ------------------------------------------------------------------------------------------------- |
| `campaign_id`     | Int    | ID chiến dịch                                                                                     |
| contact\_id\_list | Array  | Danh sách ID của khách hàng trên caresoft được tạo từ bước 3, dạng mảng array tối đa 1000 dữ liệu |
| message           | Object | Chuỗi thông tin dạng Json để có thể parse trong template TTS                                      |

**Response**

{% tabs %}
{% tab title="200" %}

```json
{
  "status": true,
  "extra": {
    "id_list": [
      {
        "campaign_data_id": 522228,
        "contact_id": 63204924
      },
      {
        "campaign_data_id": 522229,
        "contact_id": 63204925
      }
    ]
  }
}
```

{% endtab %}

{% tab title="422" %}

```json
{
  "status": false,
  "message": "Not found campaign ID or incompatible type of campaign:12122"
}
```

{% endtab %}
{% endtabs %}

### 4.5 Đẩy dữ liệu theo danh sách số điện thoại&#x20;

<mark style="color:green;">`POST`</mark> `/{domain}/api/v1/campaign/dataMultiplePhone`

Tạo cuộc gọi theo danh sách số điện thoại

**Headers**

| Name          | Value              |
| ------------- | ------------------ |
| Content-Type  | `application/json` |
| Authorization | `Bearer <token>`   |

**Body**\
\&#xNAN;***JSON Format***

```json
{ "campaign_id": 521, "phone_no_list": [ "0971221122", "0971221123" ] }
```

| Name            | Type  | Description                   |
| --------------- | ----- | ----------------------------- |
| campaign\_id    | Int   | ID chiến dịch                 |
| phone\_no\_list | Array | Mảng số điện thoại khách hàng |

**Response**

{% tabs %}
{% tab title="200" %}

```json
{
    "status": true,
    "extra": {
        "id_list": [
            {
                "phone_no": "0971221122",
                "campaign_data_id": 522224,
                "contact_id": 63204924
            },
            {
                "phone_no": "0971221123",
                "campaign_data_id": 522225,
                "contact_id": 63204925
            }
        ]
    }
}
```

{% endtab %}

{% tab title="400" %}

```json
{
  "error": "Invalid request"
}
```

{% endtab %}
{% endtabs %}

### 4.6  Đẩy dữ liệu theo danh sách email&#x20;

<mark style="color:green;">`POST`</mark> `/{domain}/api/v1/campaign/dataMultipleEmail`

Tạo cuộc gọi theo danh  sách email (Nếu đã có contact ID trên CareSoft và các contact đó có dữ liệu)

**Headers**

| Name          | Value              |
| ------------- | ------------------ |
| Content-Type  | `application/json` |
| Authorization | `Bearer <token>`   |

**Body**

| Name          | Type  | Description     |
| ------------- | ----- | --------------- |
| `campaign_id` | Int   | ID chiến dịch   |
| email\_list   | Array | Danh sách Email |

**Response**

{% tabs %}
{% tab title="200" %}

```json
{
    "status": true,
    "extra": {
        "id_list": [
            {
                "campaign_data_id": 522226,
                "contact_id": 63155193,
                "email": "info@caresoft.vn"
            },
            {
                "campaign_data_id": 522227,
                "contact_id": 63204926,
                "email": "info2@caresoft.vn"
            }
        ]
    }
}

```

{% endtab %}

{% tab title="400" %}

```json
{
  "error": "Invalid request"
}
```

{% endtab %}
{% endtabs %}
