> For the complete documentation index, see [llms.txt](https://doc.caresoft.vn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.caresoft.vn/danh-sach-tinh-nang/workflow/nhom-hanh-dong-gui-webhook-test-webhook-va-dinh-dang-du-lieu-data-ops.md).

# Nhóm hành động Gửi Webhook, Test Webhook và Định dạng dữ liệu (Data Ops)

## 1. Giới thiệu tính năng&#x20;

Trong Workflow CareSoft, nhóm hành động Gửi Webhook (POST/GET), Test Webhook và Định dạng dữ liệu (Data Ops) tập trung vào hai mục đích chính:

* Kết nối với hệ thống bên ngoài bằng cách Gửi Webhook (POST/GET) để gửi hoặc nhận dữ liệu.
* Biến đổi, chuẩn hóa dữ liệu ngay trong workflow bằng hành động Định dạng dữ liệu, trước khi cập nhật CRM hoặc dùng cho bước tiếp theo.

**Khi nào dùng từng loại?**

* Dùng Gửi Webhook\
  Khi bạn cần giao tiếp với hệ thống khác (CRM, hệ thống đơn hàng, vận chuyển, BI, hệ thống nội bộ…).
* Dùng Định dạng dữ liệu\
  Khi bạn chỉ cần xử lý dữ liệu nội bộ (chỉnh chuỗi, tính toán, mã hóa, đổi định dạng thời gian…) mà không cần gọi ra ngoài.

**Điều kiện sử dụng**

Trước khi sử dụng nhóm hành động :

* Người dùng cần có quyền tạo hoặc chỉnh sửa Workflow.
* Workflow đã được tạo sẵn hoặc đang ở chế độ chỉnh sửa.
* Với Webhook:
  * Endpoint hỗ trợ HTTPS.
  * Hệ thống bên ngoài phải sẵn sàng tiếp nhận hoặc trả về dữ liệu.

## 2. Hành động: Gửi Webhook (POST / GET)

### 2.1  Ứng dụng phổ biến

Một số tình huống thường gặp:

* Đẩy contact / lead từ CareSoft sang CRM khi khách điền form.
* Gửi dữ liệu giao dịch sang hệ thống tạo đơn hoặc fulfillment.
* Gọi hệ thống khác để lấy thông tin bổ sung và cập nhật lại bản ghi trong CareSoft.

### 2.2 Thêm hành động “Gửi Webhook” vào Workflow

1. Truy cập [Workflow](/danh-sach-tinh-nang/workflow.md) trong CareSoft.
2. Mở workflow cần chỉnh sửa hoặc tạo workflow mới.
3. Trong màn hình thiết kế workflow, nhấn **“+”** để thêm hành động.
4. Chọn nhóm "Data Ops" → Gửi Webhook.

<figure><img src="/files/jN0qvzPNOhjxFJ5ZVFeq" alt=""><figcaption></figcaption></figure>

### 2.3 Thiết lập Webhook theo các phương thức Get / Post

#### **A. Gửi Webhook bằng POST**

Dùng khi: cần gửi dữ liệu trong phần nội dung (body).

Các bước cấu hình:

1. Phương thức: chọn POST

<figure><img src="/files/nP8tMNnHrkD0s60NEqgr" alt=""><figcaption></figcaption></figure>

2. URL Webhook

* Bắt buộc dùng HTTPS
* Có thể thêm query params, ví dụ: `?source=caresoft`

&#x20;

<figure><img src="/files/cH9TMypzRlRkXlZnzQJa" alt=""><figcaption></figcaption></figure>

3. Xác thực (Authentication)

* Không xác thực
* Khóa bí mật (API Key)

  * Nhập tên khóa
  * Chọn vị trí khóa: Query Parameters hoặc Request Header

  <figure><img src="/files/Dc5wa6LkDKVAm9C4UXVj" alt=""><figcaption></figcaption></figure>

4. Content-Type : chọn theo đúng dữ liệu gửi đi
5. Headers (không bắt buộc): nhấn Add Header để thêm
6. Request Body: nhập nội dung body (thường là JSON)

<figure><img src="/files/1rSh9nJRjdyXfTYkQj0K" alt=""><figcaption></figcaption></figure>

7. Định dạng dữ liệu: chọn định dạng thời gian hoặc kiểu dữ liệu phù hợp

<figure><img src="/files/Gf7ehdOi3n73hwyc78e3" alt=""><figcaption></figcaption></figure>

8. Nhấn "Lưu" ![](/files/Xu87IdhegmLgRyP9zKxh) để hoàn tất thiết lập.

#### **B. Gửi Webhook bằng GET**

Dùng khi: cần truyền dữ liệu thông qua tham số truy vấn (query parameters).

Các bước cấu hình:

1. Phương thức: chọn GET

<figure><img src="/files/8pVmQCCJOeD4OlgLpSXw" alt=""><figcaption></figcaption></figure>

2. URL Webhook (HTTPS, có thể kèm query params)

<figure><img src="/files/0Oqjj0b66S93KFZWmiJi" alt=""><figcaption></figcaption></figure>

3. Xác thực: Không xác thực hoặc Khóa bí mật

<figure><img src="/files/RM9eK1psuPN7NYwcHdkF" alt=""><figcaption></figcaption></figure>

4. Headers (tuỳ chọn)

<figure><img src="/files/tGEflww2EmRqX1iF0IOX" alt=""><figcaption></figcaption></figure>

5. Query Parameters: nhập các tham số cần gửi. Chọn "Thêm tham số" nếu cần

<figure><img src="/files/4tWdmMT1eID11iU6E4A2" alt=""><figcaption></figcaption></figure>

6. Định dạng dữ liệu: chọn kiểu định dạng phù hợp

<figure><img src="/files/mBzc0KdigahATmsht9hh" alt=""><figcaption></figcaption></figure>

7. Nhấn "Lưu" ![](/files/Xu87IdhegmLgRyP9zKxh) để hoàn tất thiết lập.

### 2.4 Test Webhook: kiểm tra phản hồi & chọn Outputs

Test webhook giúp bạn kiểm tra webhook trước khi đưa vào chạy thật và lấy dữ liệu cho các bước tiếp theo.

Cách thực hiện:

1. Nhập giá trị mẫu cho Query Parameters (Nếu cần)&#x20;

<figure><img src="/files/zNCWvHtPf7imLVOzZv42" alt=""><figcaption></figcaption></figure>

1. Nhấn "Test webhook"&#x20;
2. Hệ thống hiển thị response
3. Tại mục Outputs, chọn các trường dữ liệu bạn muốn sử dụng cho các hành động tiếp theo trong workflow

## 3. Hành động: Định dạng dữ liệu (Format Data)

#### 3.1  Định dạng dữ liệu dùng để làm gì?

Hành động Định dạng dữ liệu cho phép bạn xử lý dữ liệu ngay trong workflow, bao gồm:

* Chuẩn hóa dữ liệu CRM (viết hoa, cắt chuỗi, thay ký tự…)
* Tính toán số liệu (cộng, trừ, nhân, chia)
* Mã hóa dữ liệu (MD5, Base64, ký số)
* Xử lý thời gian (cộng thời gian, đổi định dạng ngày giờ)

**Luồng sử dụng phổ biến:**

1. Định dạng dữ liệu
2. Dùng dữ liệu đã định dạng để cập nhật bản ghi hoặc truyền sang bước tiếp theo

#### 3.2 Cập nhật bản ghi bằng dữ liệu đã định dạng (khuyến nghị)

1. Truy cập [Workflow](/danh-sach-tinh-nang/workflow.md) trong CareSoft.
2. Mở workflow cần chỉnh sửa hoặc tạo workflow mới.
3. Trong màn hình thiết kế workflow, nhấn **“+”** để thêm hành động.
4. Chọn nhóm "Data Ops" → Định dạng dữ liệu.
5. Ở panel bên trái, chọn Hàm xử lý dữ liệu

<figure><img src="/files/gLs4FfJJLl7CDieTIjm2" alt=""><figcaption></figcaption></figure>

6. Nhập giá trị tĩnh hoặc chèn biến bằng Insert variable

<figure><img src="/files/HNEzqEoGZaEXL3nwx3zS" alt=""><figcaption></figcaption></figure>

7. Nhấn Lưu để hoàn tất&#x20;

#### 3.3 Danh sách hàm xử lý dữ liệu

| Hàm                                           | Mô tả                   | Ví dụ                                |
| --------------------------------------------- | ----------------------- | ------------------------------------ |
| `add(a,b)`                                    | Cộng hai số             | `add(3,4)` → 7                       |
| `subtract(a,b)`                               | Trừ                     | `subtract(10,3)` → 7                 |
| `multiply(a,b)`                               | Nhân                    | `multiply(2,5)` → 10                 |
| `divide(a,b)`                                 | Chia                    | `divide(10,2)` → 5                   |
| `md5(input)`                                  | Băm MD5                 | `md5("abc")`                         |
| `base64_encode(input)`                        | Mã hóa Base64           | `base64_encode("hello")`             |
| `rsa_sha256(input, key)`                      | Ký RSA-SHA256           | Cần cấu hình khóa                    |
| `replace(input, from, to)`                    | Thay chuỗi              | `replace("abc_def","_","-")`         |
| `split_get(input, delimiter, index)`          | Tách chuỗi              | `split_get("a,b,c",",",1)`           |
| `regex_replace(input, pattern, replacement)`  | Thay bằng regex         | `regex_replace("abc123","[0-9]","")` |
| `add_time(input, number, time_unit)`          | Cộng thời gian          | Theo format datetime                 |
| `format_time(input, in_pattern, out_pattern)` | Đổi định dạng thời gian | Hỗ trợ timestamp                     |
| `substring(input, n)`                         | Cắt chuỗi               | `n>0` cắt đầu, `n<0` cắt cuối        |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://doc.caresoft.vn/danh-sach-tinh-nang/workflow/nhom-hanh-dong-gui-webhook-test-webhook-va-dinh-dang-du-lieu-data-ops.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
