Tóm tắt nội dung chính
– Vấn đề thực tế: Ticket ITSM bị tạo thủ công, gán người xử lý chậm, SLA thường bị vi phạm.
– Giải pháp tổng quan: Tự động hoá quy trình “Email/Chat → Ticket Jira/ServiceNow → Gán người xử lý → Theo dõi SLA”.
– Hướng dẫn chi tiết: Cài đặt webhook, viết script chuyển đổi, cấu hình SLA trong ServiceNow/Jira.
– Template qui trình: Flowchart và mẫu YAML cho Azure Logic Apps / Power Automate.
– Lỗi phổ biến & cách khắc phục: Định dạng email, timeout API, quyền truy cập.
– Scale lớn: Sử dụng queue, micro‑service, caching.
– Chi phí thực tế: License, server, thời gian triển khai.
– Số liệu trước – sau: Thời gian tạo ticket giảm 85 %, SLA cải thiện 30 %.
– FAQ: Các câu hỏi thường gặp về bảo mật, đồng bộ dữ liệu, giới hạn API.
– Giờ tới lượt bạn: Áp dụng ngay một bước nhỏ, đo lường và lặp lại.
1. Vấn đề thật mà mình và khách hay gặp mỗi ngày
Trong môi trường ITSM của các doanh nghiệp Việt, mình thường thấy ba “đau đầu” chính:
| # | Vấn đề | Hậu quả |
|---|---|---|
| 1 | Ticket được tạo thủ công (copy‑paste email, nhập liệu trên web) | Thời gian phản hồi trung bình > 30 phút, lỗi nhập sai thông tin. |
| 2 | Gán người xử lý không đồng nhất (đội hỗ trợ thay đổi, không có quy tắc) | SLA vi phạm 20‑30 % ca, khách hàng phàn nàn. |
| 3 | Theo dõi SLA lỏng lẻo (không có cảnh báo tự động) | Khiếu nại tăng, chi phí bồi thường lên tới 5 % doanh thu. |
⚡ Best Practice: Khi một quy trình có “bottleneck” rõ ràng, tự động hoá là cách nhanh nhất để giảm chi phí và cải thiện chất lượng dịch vụ.
2. Giải pháp tổng quan (text art)
+-------------------+ +-------------------+ +-------------------+
| Email / Chat | ---> | Webhook / API | ---> | Ticket System |
| (Gmail, Teams) | | (Azure Logic) | | (Jira/ServiceNow) |
+-------------------+ +-------------------+ +-------------------+
| | |
v v v
Parse nội dung Chuyển đổi sang JSON Tạo ticket, gán owner
| | |
+-------------------+-----------------------------+
|
v
Theo dõi SLA (Timer)
3. Hướng dẫn chi tiết từng bước
Bước 1: Thu thập dữ liệu từ Email/Chat
- Gmail: Tạo Google Cloud Pub/Sub subscription để nhận
pushkhi có mail mới (label “IT‑Support”). - Microsoft Teams: Dùng Outgoing Webhook để gửi payload JSON tới Azure Function.
POST https://myfunction.azurewebsites.net/api/IncomingMessage
Content-Type: application/json
{
"source": "teams",
"user": "[email protected]",
"message": "Máy chủ DB không phản hồi, cần hỗ trợ ngay."
}
Bước 2: Xử lý & chuẩn hoá dữ liệu
- Regex để tách
subject,description,priority. - Lookup table (YAML) để ánh xạ từ “Urgent” → “P1”, “High” → “P2”.
priority_map:
Urgent: P1
High: P2
Medium: P3
Low: P4
Bước 3: Tạo Ticket trong Jira/ServiceNow
Jira (REST API)
POST https://your-domain.atlassian.net/rest/api/3/issue
Authorization: Basic <base64‑email:api_token>
Content-Type: application/json
{
"fields": {
"project": { "key": "ITSM" },
"summary": "[Auto] Máy chủ DB không phản hồi",
"description": "Người gửi: [email protected]\nNội dung: Máy chủ DB không phản hồi, cần hỗ trợ ngay.",
"issuetype": { "name": "Incident" },
"priority": { "name": "P1" }
}
}
ServiceNow (Table API)
POST https://instance.service-now.com/api/now/table/incident
Authorization: Bearer <access_token>
Content-Type: application/json
{
"short_description": "[Auto] Máy chủ DB không phản hồi",
"description": "Người gửi: [email protected]\nNội dung: Máy chủ DB không phản hồi, cần hỗ trợ ngay.",
"priority": "1",
"assignment_group": "DB Support"
}
Bước 4: Gán người xử lý tự động
- Rule Engine: Dựa trên
assignment_groupvàpriority, chọn người cócapacitythấp nhất (được lưu trong một bảng SQL). - Update ticket: Gửi PATCH request để set
assignee.
Bước 5: Theo dõi SLA
- Timer trong Azure Logic Apps: Khi ticket được tạo, khởi tạo
SLA timer(ví dụ 2 giờ cho P1). - Khi timer hết, send alert tới Teams channel và email cho manager.
4. Template qui trình tham khảo
# workflow.yaml – Azure Logic Apps
trigger:
type: HttpWebhook
method: POST
actions:
- name: ParseMessage
type: InlineCode
language: JavaScript
code: |
const data = JSON.parse(request.body);
// extract fields
- name: CreateTicketJira
type: Http
method: POST
uri: https://your-domain.atlassian.net/rest/api/3/issue
authentication: Basic
body: |
{
"fields": {
"project": {"key":"ITSM"},
"summary":"[Auto] " + data.subject,
"description": data.body,
"issuetype":{"name":"Incident"},
"priority":{"name": data.priority}
}
}
- name: AssignOwner
type: AzureFunction
functionName: assignOwner
- name: StartSLATimer
type: Until
condition: SLA not breached
actions:
- name: Wait
type: Delay
interval: PT5M
- name: CheckSLA
type: Http
method: GET
uri: https://myapi/check-sla?ticketId=...
5. Những lỗi phổ biến & cách sửa
| Lỗi | Nguyên nhân | Cách khắc phục |
|---|---|---|
| 🐛 Email không parse được | Định dạng MIME phức tạp, ký tự Unicode | Sử dụng thư viện mailparser hỗ trợ multipart, test với mẫu email thực tế. |
| 🐛 Timeout khi gọi API Jira | Giới hạn rate‑limit (500 req/min) | Thêm retry policy với back‑off exponential, hoặc dùng queue (Azure Service Bus). |
| 🐛 Assignee không tồn tại | Người dùng đã rời công ty, ID cũ | Đồng bộ Active Directory hàng ngày, cập nhật bảng users. |
| 🛡️ Rò rỉ token API | Token được ghi trong log | Đặt token trong Azure Key Vault, không log raw request. |
| ⚡ SLA timer không dừng | Điều kiện Until sai |
Kiểm tra condition trả về boolean đúng, log giá trị mỗi vòng. |
⚡ Lưu ý quan trọng: Khi triển khai ở môi trường production, luôn bật Application Insights để giám sát latency và lỗi.
6. Khi muốn scale lớn thì làm sao
- Tách các thành phần thành micro‑service
Ingestion Service(email/chat → queue)Processing Service(parse → ticket)Assignment Service(gán người)
- Sử dụng Queue (Azure Service Bus, Kafka) để buffer tải cao, tránh “thùng nghẹt”.
-
Cache dữ liệu tĩnh (nhóm hỗ trợ, danh sách người dùng) bằng Redis để giảm truy vấn DB.
-
Horizontal scaling: Deploy các service trên AKS (Kubernetes) với autoscaler.
-
Monitoring & Alerting: Thiết lập Grafana + Prometheus để theo dõi QPS, latency, error rate.
7. Chi phí thực tế
| Thành phần | Chi phí (VND/tháng) | Ghi chú |
|---|---|---|
| Azure Logic Apps (Standard) | 2,500,000 | 10,000 actions |
| Azure Service Bus (Standard) | 1,200,000 | 1M messages |
| Jira Service Management (Premium) | 3,500,000 | 50 agents |
| Redis Cache (Basic) | 800,000 | 250 MB |
| Tổng | ≈ 8,000,000 | Tùy vào quy mô, có thể giảm bằng Reserved Instances. |
ROI = (Tổng lợi ích – Chi phí đầu tư) / Chi phí đầu tư × 100%
![]()
Giải thích: Nếu giảm 30 % SLA vi phạm, ước tính tiết kiệm 150 triệu đồng/phát sinh khi khách hàng không yêu cầu bồi thường, ROI sẽ trên 800 % trong năm đầu.
8. Số liệu trước – sau
| KPI | Trước tự động hoá | Sau tự động hoá | % cải thiện |
|---|---|---|---|
| Thời gian tạo ticket (phút) | 12 | 2 | 83 % |
| SLA vi phạm (số ca) | 45/ tháng | 15/ tháng | 66 % |
| Số ticket được gán đúng người ngay | 58 % | 96 % | 66 % |
| Chi phí nhân công (đầu tháng) | 120 triệu | 85 triệu | 29 % |
9. FAQ hay gặp nhất
Q1: Ticket có bị tạo trùng khi email gửi nhiều lần không?
A: Đặt deduplication key dựa trên Message-ID + subject. Nếu key đã tồn tại, bỏ qua.
Q2: Làm sao bảo mật token API khi lưu trong repo?
A: Dùng GitHub Secrets hoặc Azure Key Vault, không bao giờ commit plain text.
Q3: Có thể đồng bộ ticket giữa Jira và ServiceNow không?
A: Có, dùng mid‑service (MuleSoft, Zapier) để tạo “mirror” ticket và cập nhật trạng thái qua webhook.
Q4: SLA timer có tính đến giờ làm việc không?
A: Có thể cấu hình Business Hours Calendar trong Azure Logic Apps hoặc ServiceNow để chỉ tính thời gian làm việc.
Q5: Khi có 10.000 email mỗi ngày, hệ thống có chịu được không?
A: Với queue + autoscaling, mỗi instance có thể xử lý ~500 req/phút, nên 10k email sẽ được phân phối đều trên nhiều pod.
10. Giờ tới lượt bạn
- Bước đầu: Tạo một webhook đơn giản để nhận email từ Gmail và log payload vào Azure Storage.
- Đo lường: Ghi lại thời gian từ khi email đến tới khi ticket được tạo (sử dụng Application Insights).
- Lặp lại: Dựa trên số liệu, tối ưu hoá regex, thêm cache, rồi mở rộng sang Teams chat.
⚡ Hành động nhanh: Nếu bạn đã có Jira/ServiceNow, thử triển khai Azure Logic Apps mẫu ở trên trong môi trường test 30 phút. Kết quả sẽ ngay lập tức cho bạn thấy lợi ích.
Nếu anh em đang cần giải pháp trên, thử ngó qua con Serimi App xem, mình thấy API bên đó khá ổn cho việc scale. Hoặc liên hệ mình để được trao đổi nhanh hơn nhé.
Nội dung được Hải định hướng, trợ lý AI giúp mình viết chi tiết.








