Gửi mẫu tin nhắn tương tác

Ngoài mẫu tin nhắn tiêu chuẩn và các loại mẫu tin nhắn có chứa file phương tiện, bạn có thể dùng đối tượng components để gửi cho người nhận những mẫu tin nhắn tương tác có nút tương tác.

Có 2 loại nút được xác định trước:

  • Kêu gọi hành động - Cho phép khách hàng gọi đến số điện thoại và truy cập vào trang web
  • Trả lời nhanh - Cho phép khách hàng gửi lại một tin nhắn văn bản đơn giản

Bạn có thể đính kèm các nút này vào tin nhắn văn bản hoặc tin nhắn có chứa file phương tiện. Sau khi các mẫu tin nhắn tương tác của bạn được tạo và phê duyệt, bạn có thể dùng những mẫu này trong tin nhắn thông báo cũng như tin nhắn dịch vụ/chăm sóc khách hàng.

Trước khi bạn bắt đầu

Bạn cần:

Sau khi mẫu tin nhắn được phê duyệt, bạn có thể sử dụng API để gửi tin nhắn.

Giới hạn

  • Đối với mẫu kêu gọi hành động, bạn có thể thêm 2 nút, tối đa một nút mỗi loại (gọi đến số điện thoại và truy cập vào trang web).
  • Đối với mẫu trả lời nhanh, bạn có thể thêm tối đa 3 nút.

Bước 1: Gửi yêu cầu POST đến /messages

POST /v1/messages
{
    "to": "recipient_wa_id",
    "type": "template",
    "template": {
        "namespace": "your-namespace",
        "language": {
            "policy": "deterministic",
            "code": "your-language-and-locale-code"
        },
        "name": "your-template-name",
        "components": [
            {
                "type" : "header",
                "parameters": [
                    {
                        "type": "text",
                        "text": "replacement_text"
                    }
                ]
            # end header
            },
            {
                "type" : "body",
                "parameters": [
                    {
                        "type": "text",
                        "text": "replacement_text"
                    },
                    {
                        "type": "currency",
                        "currency" : {
                            "fallback_value": "$100.99",
                            "code": "USD",
                            "amount_1000": 100990
                        }
                    },
                    {
                        "type": "date_time",
                        "date_time" : {
                            "fallback_value": "February 25, 1977",
                            "day_of_week": 5,
                            "day_of_month": 25,
                            "year": 1977,
                            "month": 2,
                            "hour": 15,
                            "minute": 33, #OR
                            "timestamp": 1485470276
                        }
                    },
                    {
                        ...
                        # Any additional template parameters
                    }
                ] 
            # end body
            },

            # The following part of this code example includes several possible button types, 
            # not all are required for an interactive message template API call.
            {
                "type": "button",
                "sub_type" : "quick_reply",
                "index": "0", 
                "parameters": [
                    {
                        "type": "payload",
                        # Business Developer-defined payload
                        "payload":"aGlzIHRoaXMgaXMgY29vZHNhc2phZHdpcXdlMGZoIGFTIEZISUQgV1FEV0RT"
                    }
                ]
            },
            {
                "type": "button",
                "sub_type" : "url",
                "index": "1", 
                "parameters": [
                    {
                        "type": "text",
                        # Business Developer-defined dynamic URL suffix
                        "text": "9rwnB8RbYmPF5t2Mn09x4h"
                    }
                ]
            },
            {
                "type": "button",
                "sub_type" : "url",
                "index": "2",
                "parameters": [
                    {                    
                        "type": "text",
                        # Business Developer-defined dynamic URL suffix
                        "text": "ticket.pdf"
                    }
                ]
            }
        ]
    }
}

Thông số

Bước 2: Kiểm tra phản hồi API của bạn

Nếu thành công, hệ thống sẽ trả về một đối tượng messages chứa id.

{
  "messages": [{
    "id": "gBEGkYiEB1VXAglK1ZEqA1YKPrU"
  }]
}

Nếu không thành công, hệ thống sẽ trả về một phản hồi có chứa đối tượng lỗi bao gồm chuỗi lỗi, mã lỗi và các thông tin khác.

Nếu bạn gửi mẫu cho tài khoản không thể nhận mẫu này, máy chủ Webhook đã đặt cấu hình sẽ nhận được lỗi 1026 (ReceiverIncapable) trong đối tượng lỗi.

Hãy xem phần Mã lỗi và mã trạng thái để biết thêm thông tin về lỗi.

Bước 3 (không bắt buộc): Xử lý hành động của người dùng

Khi người dùng nhấp vào nút trả lời nhanh, hệ thống sẽ gửi trả lại phản hồi cho doanh nghiệp. Hãy xem phần Lệnh gọi lại khi nhấp vào nút trả lời nhanh để biết thông tin. Người dùng cũng có thể chọn không nhấp vào nút và chỉ gửi cho bạn tin nhắn dạng tự do.

Lệnh gọi lại khi nhấp vào nút trả lời nhanh

Khi khách hàng nhấp vào nút trả lời nhanh, phản hồi sẽ được gửi. Bên dưới là ví dụ về định dạng của lệnh gọi lại. Lưu ý: Khách hàng có thể không nhấp được vào nút và trả lời tin nhắn tương tác hoặc chỉ gửi tin nhắn cho bạn. Đảm bảo rằng bạn cũng có thể hỗ trợ loại trường hợp này. Hãy xem Tài liệu về Webhook để biết thêm thông tin.
{
    "contacts": [
        {
            "profile": {
                "name": "Kerry Fisher"
            },
            "wa_id": "16505551234"
        }
    ],
    "messages": [
        {
            "button": {
                "payload": "No-Button-Payload",
                "text": "No"
            },
            "context": {
                "from": "16315558007",
                "id": "gBGGFmkiWVVPAgkgQkwi7IORac0"
            },
            "from": "16505551234",
            "id": "ABGGFmkiWVVPAgo-sKD87hgxPHdF",
            "timestamp": "1591210827",
            "type": "button"
        }
    ]
    # If there are any errors, an errors field (array) will be present        
    "errors": [ { ... } ]
}

Ví dụ

Các ví dụ này minh họa quy trình thiết lập mẫu tin nhắn tương tác, bắt đầu từ tạo mẫu trong Trình quản lý kinh doanh và gửi mẫu tin nhắn bằng lệnh gọi API đến điểm cuối messages.

Lời nhắc về chuyến đi

Ví dụ này minh họa quy trình tạo mẫu tin nhắn tương tác có chứa file phương tiện kèm theo nút trả lời nhanh.

1. Tạo mẫu tin nhắn tương tác có chứa file phương tiện trong Trình quản lý kinh doanh.

2. Lệnh gọi API messages thêm vào thông tin về thông số.

POST /v1/messages
{
    "to": "your-test-recipient-wa-id",
    "recipient_type": "individual",
    "type": "template",
    "template": {
        "namespace": "88b39973_f0d5_54e1_29cf_e80f1e3da4f2",
        "name": "upcoming_trip_reminder",
        "language": {
            "code": "en",
            "policy": "deterministic"
        },
        "components": [
            {
                "type": "header",
                "parameters": [
                    {
                        "type": "text",
                        "text": "12/26"
                    }
                ]
            },
            {
                "type": "body",
                "parameters": [
                    {
                        "type": "text",
                        "text": "*Ski Trip*"
                    },
                    {
                        "type": "date_time",
                        "date_time" : {
                            "fallback_value": "29th July 2019, 8:00am",
                            "day_of_month": "29",
                            "year": "2019",
                            "month": "7",
                            "hour": "8",
                            "minute": "00"
                        }
                    },
                    {
                            "type": "text",
                            "text": "*Squaw Valley Ski Resort, Tahoe*"
                    }
                ]
            },
            {
                "type": "button",
                "sub_type": "quick_reply",
                "index": 0,
                "parameters": [
                    {
                        "type": "payload",
                        "payload": "Yes-Button-Payload"
                    }
                ]
            },
            {
                "type": "button",
                "sub_type": "quick_reply",
                "index": 1,
                "parameters": [
                    {
                        "type": "payload",
                        "payload": "No-Button-Payload"
                    }
                ]
            }
        ]
    }
}

3. Khách hàng nhận được tin nhắn nhắc nhở về chuyến đi kèm theo nút trả lời nhanh.

Vận chuyển sản phẩm

Ví dụ này minh họa quy trình tạo mẫu tin nhắn tương tác có chứa file phương tiện kèm theo URL và nút số điện thoại.

1. Tạo mẫu tin nhắn tương tác có chứa file phương tiện trong Trình quản lý kinh doanh:

2. Lệnh gọi API messages thêm vào thông tin về thông số.

POST /v1/messages
{
    "to": "your-test-recipient-wa-id",
    "recipient_type": "individual",
    "type": "template",
    "template": {
        "namespace": "88b39973_f0d5_54e1_29cf_e80f1e3da4f2",
        "name": "oculus_shipment_update",
        "language": {
            "code": "en",
            "policy": "deterministic"
        },
        "components": [
            {
                "type": "header",
                "parameters": [{
                    "type": "image",
                    "image": {
                        "link": "link-to-your-image"
                    }
                }]
            },
            {
                "type": "body",
                "parameters": [
                    {
                        "type": "text",
                        "text": "Anand"
                    },
                    {
                        "type": "text",
                        "text": "Quest"
                    },
                    {
                        "type": "text",
                        "text": "113-0921387"
                    },
                    {
                        "type": "date_time",
                        "date_time" : {
                            "fallback_value": "23rd Nov 2019",
                            "day_of_month": "20",
                            "year": "2019",
                            "month": "9"
                        }
                    }
                ] 
            },
            {
                "type": "button",
                "index": "0",
                "sub_type": "url",
                "parameters": [
                    {
                        "type": "text",
                        "text": "1Z999AA10123456784"
                    }
                ]
            }
        ]
    }
}

3. Khách hàng nhận được tin nhắn vận chuyển sản phẩm kèm theo URL và nút gọi đến số điện thoại: