Skip to navigation

Tạo link đánh giá

Scope yêu cầu: customer:write. Agent cần quyền tạo đánh giá (crm.feedback → create); nếu có customerId, khách hàng phải nằm trong phạm vi dữ liệu crm.feedback của agent. Tạo một feedback trạng thái PENDING theo bản mẫu đang ở phiên bản published hiện tại; token có hiệu lực trong tokenExpiresInMinutes của bản mẫu đó (xem Tìm bản mẫu đánh giá).

Đối tượng được đánh giá suy ra từ id truyền vào: có callId → CALL; có ticketId → TICKET; không có cả hai → CUSTOMER (bắt buộc customerId). Gửi cả callId lẫn ticketId → 400 FEEDBACK_SOURCE_INVALID. Với CALL/TICKET, customerId chỉ là dữ liệu tham khảo tuỳ chọn — không kiểm tra callId/ ticketId có tồn tại hay không.

refId (tuỳ chọn) duy nhất theo tenant. Gọi lại với cùng refId khi khách hàng chưa trả lời (kể cả khi đã hết hạn) sẽ trả về cùng feedbackId kèm token mới — token cũ ngừng hoạt động. Đã trả lời rồi → 409 CUSTOMER_FEEDBACK_ALREADY_CLOSED; trùng refId nhưng khác khách hàng/bản mẫu/cuộc gọi/ticket → 409 FEEDBACK_REF_CONFLICT.

token chỉ trả về đúng một lần. url có dạng https://{tên miền web của tenant}/{token} — gửi thẳng link này cho khách hàng.

Có thể gửi kèm header Idempotency-Key (tối đa 100 ký tự): gọi lại với cùng key và cùng body trong 24 giờ sẽ trả về đúng response lần đầu (cùng token/url, không tạo thêm lượt nào). Gọi lại khi lần gọi đầu còn đang xử lý → 409 DUPLICATE_REQUEST. Cùng key nhưng khác body = request mới. Lần gọi lỗi sẽ giải phóng key để dùng lại.

Headers

X-Api-KeystringRequired
Idempotency-KeystringOptional<=100 characters

Request

This endpoint expects an object.
templateIdstringRequired
customerIdstringOptionalformat: "^[0-9A-Z]{11}$"

Bắt buộc nếu không có callId/ticketId.

callIdstringOptional<=100 characters
ticketIdstringOptional<=100 characters
refIdstringOptional<=100 characters

Duy nhất theo tenant — dùng để gọi lại an toàn trước khi khách hàng trả lời.

Response

Token vừa tạo.

feedbackIdstringOptional
refIdstring or nullOptional
tokenstringOptional

Chỉ trả về đúng một lần.

urlstringOptional
statusenumOptional
Allowed values:
expiresAtlongOptional

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
409
Conflict Error
429
Too Many Requests Error
502
Bad Gateway Error