WhatsApp Calling API có ghi âm và chuyển lời thoại: đừng trộn lớp chat inbound với lớp cuộc gọi
Trong changelog WhatsApp Business Platform ngày 30/06/2026, Meta đưa ra một tín hiệu đáng chú ý cho các đội support: Cloud API có thêm hướng dẫn call recording và call transcription trong WhatsApp Business Calling API. Bề mặt gọi chính thức này cũng bao gồm user-initiated calls, business-initiated calls, SIP, calling webhooks và calling pricing.
Nếu quy trình hỗ trợ WhatsApp của bạn có thoại, đây là tin tốt. Bản ghi âm và transcript giúp biến cuộc gọi thành bằng chứng có thể tìm kiếm: khách hỏi gì, agent hứa gì, bước tiếp theo là gì. Nhưng không nên hiểu nhầm rằng transcript cuộc gọi đã giải quyết toàn bộ bài toán customer context.
Nó giải quyết bài toán artifact sau cuộc gọi. Chat inbound vẫn là một lớp thiết kế khác.
Call intelligence không phải message intake
Transcript cuộc gọi được tạo trong hoặc sau phiên thoại. Nó hữu ích cho QA, tóm tắt, đào tạo và follow-up. Pipeline chat inbound có nhiệm vụ khác: nhận mọi tin nhắn khách hàng thật nhanh, xác minh chữ ký, lưu event, rồi route tới người phụ trách, CRM, queue hoặc AI worker.
Hai lớp này nên gặp nhau trong cùng customer timeline, nhưng không nên phụ thuộc lẫn nhau.
| Câu hỏi | WhatsApp Calling API recording/transcription | Signed inbound chat webhook |
|---|---|---|
| Đối tượng chính | Một cuộc gọi và bản ghi/transcript | Một event tin nhắn khách hàng |
| Thời điểm | Trong hoặc sau cuộc gọi | Ngay khi tin nhắn inbound đến |
| Dùng tốt nhất cho | QA, summary, compliance review, coaching, follow-up notes | Intake, routing, deduplication, CRM logging, AI triage |
| Lỗi cần tránh | Mất ngữ cảnh sau cuộc gọi | Mất tin nhắn đầu tiên trước khi vào queue |
| Phạm vi kênh | WhatsApp voice qua bề mặt official calling | WhatsApp, Telegram, LINE, TikTok, Zalo và X trong một event stream chuẩn |
Nếu đội của bạn gần như chỉ xử lý cuộc gọi WhatsApp, official Calling API có thể là trung tâm. Nhưng ở Việt Nam, support thường đi qua cả WhatsApp, Zalo, LINE, Telegram hoặc TikTok. Khi đó transcript cuộc gọi chỉ là một artifact trong timeline rộng hơn, không phải cửa vào duy nhất của hệ thống.
Ranh giới nên đặt ở đâu
Official WhatsApp Calling API nên nằm ở lớp voice. Dùng nó khi khách muốn gọi, khi bạn cần call button, khi agent cần routing cuộc gọi, hoặc khi QA cần recording và transcript.
Message intake nên nằm ở lớp event. Lớp này cần đơn giản và nghiêm ngặt:
- Nhận inbound delivery.
- Xác minh chữ ký.
- Lưu raw event theo ID.
- Route theo provider, account, conversation, sender và message type.
- AI, CRM và human queue chỉ chạy sau khi đã lưu.
Điều này quan trọng vì chat là bất đồng bộ. Khách có thể gửi “Sau cuộc gọi, giờ lấy hàng của tôi có thay đổi không?” rồi rời đi. Nếu đường inbound còn chờ transcript cuộc gọi, CRM lookup hoặc AI summary, hệ thống có thể bỏ lỡ chính tin nhắn cần được lưu đầu tiên.
UnifyPort nằm ở lớp nào
UnifyPort không thay thế WhatsApp Calling API chính thức. Nếu bạn cần WhatsApp voice calling, call recording hoặc official call transcription, hãy dùng lớp gọi chính thức của Meta cho phần đó.
Vai trò của UnifyPort hẹp hơn: nhận tin nhắn inbound từ tài khoản nhắn tin thông thường qua unofficial interface và giao chúng dưới dạng webhook event đã ký, đã chuẩn hóa. Cùng một handler có thể nhận WhatsApp, Telegram, LINE, TikTok, Zalo và X.
Tạo webhook endpoint, subscribe message.received, và đặt signing_secret:
curl -X POST https://api.unifyport.ai/v1/webhook-endpoints \
-H "X-Api-Key: <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"url": "https://support.example.com/webhook",
"status": "active",
"subscribed_events": ["message.received"],
"signing_secret": "<WEBHOOK_SIGNING_SECRET>"
}'
Khi tin nhắn WhatsApp đến, receiver nhận một event chuẩn:
{
"id": "evt_20260710_01",
"type": "message.received",
"provider": "whatsapp",
"account_id": "acc_support_whatsapp",
"occurred_at": "2026-07-10T02:30:00Z",
"data": {
"conversation": { "id": "84901234567", "type": "user", "title": "Minh Tran" },
"sender": { "id": "84901234567", "type": "user", "name": "Minh Tran" },
"message": {
"id": "wamid.HBgM20260710",
"type": "text",
"text": "Can someone confirm whether my pickup changed after the call?",
"direction": "inbound",
"sent_at": "2026-07-10T02:29:58Z"
},
"event": { "kind": "message_received" }
}
}
Nếu endpoint có signing_secret, delivery sẽ có X-Device-Timestamp và X-Device-Signature. Chữ ký là hex HMAC-SHA256 của <X-Device-Timestamp>.<raw request body>. Nhờ đó intake service có một cách xác minh duy nhất trước khi ghi vào storage hoặc chuyển cho AI.
Kiến trúc nên giữ đơn giản:
WhatsApp / LINE / Zalo / Telegram / TikTok / X message
-> UnifyPort message.received webhook
-> HMAC-SHA256 signature verification
-> Event store
-> Routing, CRM lookup, AI triage, or human queue
WhatsApp voice call
-> Official WhatsApp Calling API layer
-> Recording / transcript / summary artifact
-> Attach to the same customer timeline
Điểm quan trọng là customer timeline bắt đầu ở đâu. Hãy bắt đầu từ event inbound đầu tiên. Recording, transcript và summary được gắn vào sau như artifact liên quan.
Cách đội nhỏ ra quyết định
Với đội support 2-10 người, câu hỏi không phải là “có dùng call transcription không”. Câu hỏi là “hệ thống nào sở hữu bản ghi đầu tiên của khách hàng”.
Nếu WhatsApp voice là kênh chính, official calling stack có thể là trung tâm. Agent nhận cuộc gọi, recording và transcript gắn với cuộc gọi, workflow là voice-first.
Nếu chat là kênh chính, lớp intake không nên chờ voice tooling. Lưu tin nhắn trước, rồi enrich sau:
- Nếu khách gọi sau đó, gắn recording và transcript vào cùng conversation.
- Nếu AI draft câu trả lời, giữ
message.receivedgốc làm source. - Nếu agent trả lời, gửi qua tài khoản đã kết nối bằng
POST /v1/messages. - Nếu Zalo, LINE hoặc Telegram đi vào cùng queue, route theo
providerthay vì tạo thêm inbox.
Cập nhật ghi âm và chuyển lời thoại của Meta làm WhatsApp voice hữu ích hơn cho support. Nhưng nó không thay thế lớp chat intake sạch. Tách hai lớp này ra, đội của bạn có thể dùng cả hai mà không biến lớp này thành điểm nghẽn của lớp kia.