Chúng tôi sẽ ngừng cung cấp API Tại chỗ. Hãy tham khảo tài liệu về việc Ngừng cung cấp API Tại chỗ để biết chi tiết, đồng thời tìm hiểu cách chuyển sang API Đám mây thế hệ tiếp theo của chúng tôi.

We are making changes to the WhatsApp Business Platform pricing model. See Pricing Updates on the WhatsApp Business Platform.

Tin nhắn

/v1/messages

Sử dụng nút messages để gửi tin nhắn văn bản, file phương tiện, thông tin liên hệ, thông tin vị trí và tin nhắn tương tác, cũng như các mẫu tin nhắn cho khách hàng.

Hãy xem các hướng dẫn sau để biết thông tin về những loại tin nhắn cụ thể mà bạn có thể gửi: Tin nhắn văn bản, Tin nhắn có chứa file phương tiện, Tin nhắn có chứa thông tin liên hệ và thông tin vị trí, Tin nhắn tương tác, Mẫu tin nhắn, Mẫu tin nhắn có chứa file phương tiệnMẫu tin nhắn tương tác.

Trước khi bắt đầu

Bạn cần:

  • Tự xác thực và nhận mã xác thực để truy cập vào dịch vụ. Hãy xem tài liệu về Đăng nhập và xác thực để biết thêm thông tin về cách thực hiện việc này.
  • Để xác minh tài khoản WhatsApp mà bạn muốn nhắn tin và lấy ID người dùng WhatsApp, hãy xem tài liệu về Contacts để biết thêm thông tin về cách thực hiện việc này.
  • Đáp ứng các yêu cầu của dịch vụ kiểm soát giới hạn đối với tin nhắn.

Kể từ v2.39 trở lên, bạn không cần phải gọi nút contacts trước khi gửi tin nhắn.

Giới hạn

  • Các loại tin nhắn sau được hỗ trợ: văn bản, mẫu tin nhắn, hình ảnh, tài liệu và âm thanh.
  • Tin nhắn văn bản có thể dài tối đa 4096 ký tự.

Tạo

Bạn gửi tin nhắn bằng cách thực hiện lệnh gọi POST đến nút /messages bất kể loại tin nhắn là gì. Nội dung của phần nội dung tin nhắn JSON khác nhau tùy vào từng loại tin nhắn (văn bản, hình ảnh, v.v.).

Thông số

Sau đây là những thông số chính được dùng trong yêu cầu POST /messages:

TênMô tả (Nhấp vào mũi tên ở cột bên trái để xem các tùy chọn được hỗ trợ.)

audio

đối tượng

Bắt buộc khi type=audio.

Một đối tượng media có chứa âm thanh.

biz_opaque_callback_data

chuỗi

Không bắt buộc.

Một chuỗi tùy ý, hữu ích để theo dõi.


Ví dụ: bạn có thể chuyển ID mẫu tin nhắn vào trường này để theo dõi hành trình của khách hàng kể từ tin nhắn đầu tiên mà bạn gửi. Sau đó, bạn có thể theo dõi ROI của các loại mẫu tin nhắn khác nhau để xác định loại hiệu quả nhất.


Bất kỳ ứng dụng nào mà bạn đăng ký trường webhook messages trên Tài khoản WhatsApp Business đều có thể lấy chuỗi này, vì đây là chuỗi có trong đối tượng statuses của phần tải dữ liệu webhook.


API Đám mây không xử lý trường này, mà chỉ trả về trong webhook thông báo đã gửi/đã phân phối/đã đọc.


Tối đa 512 ký tự.


Chỉ API Đám mây.

contacts

đối tượng

Bắt buộc khi type=contacts.

Một đối tượng contacts.

context

đối tượng

Bắt buộc nếu trả lời bất kỳ tin nhắn nào trong cuộc trò chuyện.

Một đối tượng có chứa ID của tin nhắn trước đó mà bạn đang trả lời. Ví dụ:


{"message_id":"MESSAGE_ID"}


Chỉ API Đám mây.

document

đối tượng

Bắt buộc khi type=document.

Một đối tượng media có chứa tài liệu.

hsm

đối tượng

Chứa đối tượng hsm. Chúng tôi đã ngừng sử dụng tùy chọn này trong v2.39 của API Tại chỗ. Thay vào đó, hãy sử dụng đối tượng template.


Chỉ API Tại chỗ.

image

đối tượng

Bắt buộc khi type=image.

Một đối tượng media có chứa hình ảnh.

interactive

đối tượng

Bắt buộc khi type=interactive.

Một đối tượng interactive. Thành phần của mỗi đối tượng interactive thường tuân theo một mẫu nhất quán, đó là: header, body, footeraction.

location

đối tượng

Bắt buộc khi type=location.

Một đối tượng location.

messaging_product

chuỗi

Bắt buộc

Dịch vụ nhắn tin được dùng cho yêu cầu. Hãy sử dụng "whatsapp".


Chỉ API Đám mây.

preview_url

boolean

Bắt buộc nếu type=text.

Cho phép xem trước URL trong tin nhắn văn bản - Xem phần Gửi URL trong tin nhắn văn bản. Đây là trường không bắt buộc nếu tin nhắn không có URL. Giá trị:false (mặc định), true.


Chỉ API Tại chỗ. Người dùng API Đám mây có thể sử dụng chức năng tương tự với trường preview_url bên trong đối tượng văn bản.

recipient_type

chuỗi

Không bắt buộc.

Hiện tại, bạn chỉ có thể gửi tin nhắn cho cá nhân. Hãy đặt trường này thành individual.


Giá trị mặc định: individual

status

chuỗi

Trạng thái của tin nhắn. Bạn có thể sử dụng trường này để đánh dấu tin nhắn là read. Hãy xem hướng dẫn dưới đây để biết thông tin:


sticker

đối tượng

Bắt buộc khi type=sticker.

Một đối tượng media có chứa nhãn dán.


API Đám mây: Hỗ trợ nhãn dán gửi đi dạng tĩnh và có hoạt ảnh của bên thứ ba, ngoài mọi loại nhãn dán gửi đến. Nhãn dán tĩnh cần phải có kích thước 512x512 pixel và không được vượt quá 100KB. Nhãn dán có hoạt ảnh phải có kích thước 512x512 pixel và không được vượt quá 500KB.


API Tại chỗ: Chỉ hỗ trợ nhãn dán gửi đi dạng tĩnh của bên thứ ba, ngoài mọi loại nhãn dán gửi đến. Nhãn dán tĩnh cần phải có kích thước 512x512 pixel và không được vượt quá 100KB. Không hỗ trợ nhãn dán có hoạt ảnh.

template

đối tượng

Bắt buộc khi type=template.

Một đối tượng template.

text

đối tượng

Bắt buộc đối với tin nhắn văn bản.

Một đối tượng text.

to

chuỗi

Bắt buộc.

ID WhatsApp hoặc số điện thoại của khách hàng mà bạn muốn gửi tin nhắn. Hãy xem phần Định dạng số điện thoại.


Nếu cần, người dùng API Tại chỗ có thể lấy số này bằng cách gọi điểm cuối contacts.

type

chuỗi

Không bắt buộc.

Loại tin nhắn mà bạn muốn gửi. Nếu bạn bỏ qua, giá trị mặc định sẽ là text.

Đối tượng văn bản

TênMô tả

body

Bắt buộc.

Chứa nội dung của tin nhắn, trong đó có thể chứa URL và định dạng.

Đối tượng file phương tiện

Đối với API Tại chỗ, ID đối tượng file phương tiện được trả về khi bạn tải thành công file phương tiện lên ứng dụng WhatsApp Business tại chỗ/tham chiếu qua điểm cuối media.

NameDescription

id

string

Required when type is audio, document, image, sticker, or video and you are not using a link.


The media object ID. Do not use this field when message type is set to text.

link

string

Required when type is audio, document, image, sticker, or video and you are not using an uploaded media ID (i.e. you are hosting the media asset on your public server).

The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs.


Do not use this field when message type is set to text.


Cloud API users only:


  • See Media HTTP Caching if you would like us to cache the media asset for future messages.
  • When we request the media asset from your server you must indicate the media's MIME type by including the Content-Type HTTP header. For example: Content-Type: video/mp4. See Supported Media Types for a list of supported media and their MIME types.

caption

string

Optional.


Media asset caption. Do not use with audio or sticker media.


On-Premises API users:

  • For v2.41.2 or newer, this field is is limited to 1024 characters.
  • Captions are currently not supported for document media.

filename

string

Optional.


Describes the filename for the specific document. Use only with document media.


The extension of the filename will specify what format the document is displayed as in WhatsApp.

provider

string

Optional. On-Premises API only.

This path is optionally used with a link when the HTTP/HTTPS link is not directly accessible and requires additional configurations like a bearer token. For information on configuring providers, see the Media Providers documentation.

Đối tượng Contacts

Bên trong contacts, bạn có thể lồng các đối tượng sau: addresses, emails, name, org, phoneurls. Các đối tượng số nhiều sẽ được gói vào một mảng như minh họa trong ví dụ ở bên dưới.

NameDescription

addresses

object

Optional.

Full contact address(es) formatted as an addresses object. The object can contain the following fields:

streetstringOptional. Street number and name.

citystringOptional. City name.

statestringOptional. State abbreviation.

zipstringOptional. ZIP code.

countrystringOptional. Full country name.

country_codestringOptional. Two-letter country abbreviation.

typestringOptional. Standard values are HOME and WORK.

birthday

Optional.

YYYY-MM-DD formatted string.

emails

object

Optional.

Contact email address(es) formatted as an emails object. The object can contain the following fields:

emailstringOptional. Email address.

typestringOptional. Standard values are HOME and WORK.

name

object

Required.

Full contact name formatted as a name object. The object can contain the following fields:

formatted_namestringRequired. Full name, as it normally appears.

first_namestringOptional*. First name.

last_namestringOptional*. Last name.

middle_namestringOptional*. Middle name.

suffixstringOptional*. Name suffix.

prefixstringOptional*. Name prefix.


*At least one of the optional parameters needs to be included along with the formatted_name parameter.

org

object

Optional.

Contact organization information formatted as an org object. The object can contain the following fields:

companystringOptional. Name of the contact's company.

departmentstringOptional. Name of the contact's department.

titlestringOptional. Contact's business title.

phones

object

Optional.

Contact phone number(s) formatted as a phone object. The object can contain the following fields:

phonestringOptional. Automatically populated with the `wa_id` value as a formatted phone number.

typestringOptional. Standard Values are CELL, MAIN, IPHONE, HOME, and WORK.

wa_idstringOptional. WhatsApp ID.

urls

object

Optional.

Contact URL(s) formatted as a urls object. The object can contain the following fields:

urlstringOptional. URL.

typestringOptional. Standard values are HOME and WORK.

Ví dụ về một đối tượng contacts có các đối tượng số nhiều được lồng bên trong:

"contacts": [
    {
        "addresses": [
            {
                "city": "city name",
                "country": "country name",
                "country_code": "code",
                "state": "Contact's State",
                "street": "Contact's Street",
                "type": "Contact's Address Type",
                "zip": "Contact's Zip Code"
            }
        ],
        "birthday": "birthday",
        "emails": [
            {
                "email": "email",
                "type": "HOME"
            },
            {
                "email": "email",
                "type": "WORK"
            }
        ],
        "name": {
            "first_name": "first name value",
            "formatted_name": "formatted name value",
            "last_name": "last name value",
            "suffix": "suffix value"
        },
        "org": {
            "company": "company name",
            "department": "dep name",
            "title": "title"
        },
        "phones": [
            {
                "phone": "Phone number",
                "wa-id": "WA-ID value",
                "type": "MAIN"
            },
            {
                "phone": "Phone number",
                "type": "HOME"
            },
            {
                "phone": "Phone number",
                "type": "WORK"
            }
        ],
        "urls": [{
            "url": "some url",
            "type": "WORK"
        }]
    }
]

Đối tượng Location

NameDescription

latitude

Required.

Location latitude in decimal degrees.

longitude

Required.

Location longitude in decimal degrees.

name

Required.

Name of the location.

address

Required.

Address of the location.

Đối tượng Template

Bên trong template, bạn có thể lồng đối tượng componentslanguage.

Kể từ v2.27.8, namespace của mẫu phải là vùng tên được liên kết với WABA sở hữu số điện thoại trong ứng dụng WhatsApp Business tại chỗ hiện tại. Nếu không, hệ thống sẽ không gửi được tin nhắn.

Ngoài ra, từ v2.41 trở đi, namespace sẽ là trường không bắt buộc.

TênMô tả

namespace

Bắt buộc.

Vùng tên của mẫu.


Kể từ v2.27.8, đây phải là vùng tên liên kết với tài khoản WhatsApp Business. Tài khoản này sở hữu số điện thoại liên kết với ứng dụng API WhatsApp Business hiện tại. Nếu không, tin nhắn sẽ không gửi được.

name

Bắt buộc.

Tên mẫu.

language

Bắt buộc.

Chỉ định ngôn ngữ hiển thị cho mẫu. Chỉ chính sách ngôn ngữ deterministic mới áp dụng được cho mẫu tin nhắn chứa file phương tiện. Hãy xem phần Ngôn ngữ để biết thêm thông tin.

components

Không bắt buộc.

Mảng chứa các thông số của tin nhắn.

Đối tượng Components

Bên trong components, bạn có thể lồng đối tượng parameters. Ngoài ra, bạn có thể đặt typebutton.

TênMô tả

type

Bắt buộc.

Mô tả loại component.
Giá trị:header, body, footer

parameters

Không bắt buộc.

Mảng chứa nội dung của tin nhắn.

Đối tượng Parameter

TênMô tả

type

Bắt buộc.

Mô tả loại parameter.
Giá trị:text, currency, date_time, image, document, video


Loại file phương tiện (image, documentvideo) có cùng định dạng với các loại file dùng trong tin nhắn đa phương tiện tiêu chuẩn. Hãy xem tài liệu về File phương tiện để biết thêm thông tin. Hiện tại, mẫu tin nhắn đa phương tiện chỉ hỗ trợ tài liệu PDF.


Để biết thêm thông tin về currencydate_time, hãy xem phần Thông số có thể bản địa hóa. Thông số currencydate_time của tin nhắn template dùng fallback_value thay cho default. Xem mẫu Yêu cầu ở trên để biết ví dụ.

Loại nút

Bên trong đối tượng components, bạn có thể đặt typebutton. Sau đây là các thông số nút:

TênMô tả

sub_type

Bắt buộc.

Loại nút đang được tạo.
Giá trị:quick_reply, url, copy_code (available from 2.49 and onwards)

index

Bắt buộc.

Chỉ mục vị trí của nút. Bạn có thể có tối đa 10 nút bằng cách sử dụng giá trị chỉ mục 0-9.

parameters

Bắt buộc.

Thông số cho nút - được đặt khi tạo trong Trình quản lý kinh doanh. Thêm các thông số sau:

  • type (Bắt buộc): Cho biết loại thông số cho nút. Các giá trị được hỗ trợ là payload, textcoupon_code.
  • payload (Bắt buộc đối với các nút quick_reply): Ngoài văn bản hiển thị trên nút, phần tải dữ liệu do nhà phát triển xác định sẽ được trả về khi người dùng nhấp vào nút.
  • text (Bắt buộc đối với các nút url): Hậu tố do nhà phát triển cung cấp sẽ được thêm vào nút URL động đã được tạo trước đó.
  • coupon_code (Bắt buộc đối với nút copy_code) (được ra mắt từ phiên bản 2.49 trở đi): Mã phiếu giảm giá do nhà phát triển cung cấp sẽ được sao chép khi người dùng nhấp vào nút sao chép mã.

Ví dụ về loại button có sub_type quick_reply:

 {
    "type": "button",
    "sub_type": "quick_reply",
    "index": 0,
    "parameters": 
     [{
    	"type": "payload",
    	"payload": "Yes-Button-Payload"
     }]
 } 

Ví dụ về loại button có sub_type copy_code

    
 { 
    "type": "button", 
    "sub_type": "copy_code", 
    "index": 0, 
    "parameters": 
    [{ 
     "type": "coupon_code", 
     "coupon_code": "DISCOUNT20" 
    }] 
 }

Đối tượng Hsm

Đối tượng hsm đã ngừng hoạt động trong v2.39 của WhatsApp Business tại chỗ/tham chiếu. Thay vào đó, hãy sử dụng đối tượng template.

Tên Mô tả

namespace

Bắt buộc.

Vùng tên sẽ được sử dụng. Kể từ v2.2.7, nếu vùng tên không khớp với element_name, hệ thống sẽ không gửi được tin nhắn.

element_name

Bắt buộc.

Tên thành phần cho biết mẫu sẽ sử dụng trong vùng tên. Kể từ v2.2.7, nếu element_name không khớp với vùng tên, hệ thống sẽ không gửi được tin nhắn.

language

Bắt buộc.

Cho phép chỉ định ngôn ngữ tiền định. Hãy xem phần Ngôn ngữ để biết thêm thông tin.


Trường này được dùng để cho phép lựa chọn fallback, nhưng lựa chọn này đã ngừng hoạt động trong v2.27.8.

localizable_params

Bắt buộc.

Trường này là một mảng các giá trị sẽ áp dụng cho biến trong mẫu. Hãy xem phần Thông số có thể bản địa hóa để biết thêm thông tin.

Đối tượng Interactive

The interactive object generally contains 4 main components: header, body, footer, and action. Additionally, some of those components can contain one or more different objects:

  • Inside header, you can nest media objects.
  • Inside action, you can nest section and button objects.
NameDescription

type

string

Required.

The type of interactive message you want to send. Supported values:

  • list: Use it for List Messages.
  • button: Use it for Reply Buttons.
  • product: Use it for Single-Product Messages.
  • product_list: Use it for Multi-Product Messages.
  • catalog_message: Use it for Catalog Messages.
  • flow: Use it for Flows Messages.

header

object

Required for type product_list. Optional for other types.

Header content displayed on top of a message. You cannot set a header if your interactive object is of product type.


The header object contains the following fields:

documentobjectRequired if type is set to document. Contains the media object with the document.

imageobjectRequired if type is set to image. Contains the media object with the image.

videoobjectRequired if type is set to video. Contains the media object with the video.

textstringRequired if type is set to text. Text for the header. Formatting allows emojis, but not markdown. Maximum length: 60 characters.

typestringRequired. The header type you would like to use. Supported values are:

text – for List Messages, Reply Buttons, and Multi-Product Messages.

video – for Reply Buttons.

image – for Reply Buttons.

document – for Reply Buttons.

body

object

Optional for type product. Required for other message types.

An object with the body of the message.


The body object contains the following field:

textstringRequired if body is present. The content of the message. Emojis and markdown are supported. Maximum length: 1024 characters.

footer

object

Optional.

An object with the footer of the message.


The footer object contains the following field:

textstringRequired if footer is present. The footer content. Emojis, markdown, and links are supported. Maximum length: 60 characters.

action

object

Required.

An action object with what you want the user to perform after reading the message. See action object for full information.

Đối tượng Action

NameDescription

button

string

Required for List Messages.

Button content. It cannot be an empty string and must be unique within the message. Emojis are supported, markdown is not. Maximum length: 20 characters.

buttons

object

Required for Reply Button Messages.

A button object. The object can contain the following parameters:

type – The only supported option is reply for Reply Button Messages.

title – Button title. It cannot be an empty string and must be unique within the message. Emojis are supported, markdown is not. Maximum length: 20 characters.

id – Unique identifier for your button. This ID is returned in the webhook when the button is clicked by the user. Maximum length: 256 characters.


Bạn không được có khoảng trắng ở đầu hoặc cuối khi đặt ID.

sections

array of objects

Required for List Messages and Multi-Product Messages.

Array of section objects. There is a minimum of 1 and maximum of 10. See section object.

catalog_id

string

Required for Single-Product Messages and Multi-Product Messages.

Unique identifier of the Facebook catalog linked to your WhatsApp Business Account. This ID can be retrieved via Commerce Manager.

product_retailer_id

string

Required for Single-Product Messages and Multi-Product Messages.

Unique identifier of the product in a catalog. Maximum 100 characters for both Single-Product and Multi-Product messages.


To get this ID, go to Commerce Manager, select your Facebook Business account, and you will see a list of shops connected to your account. Click the shop you want to use. On the left-side panel, click Catalog > Items, and find the item you want to mention. The ID for that item is displayed under the item's name.

mode

string

Optional for Flows Messages.

The current mode of the Flow, either draft or published.


Default: published

flow_message_version

string

Required for Flows Messages.

Must be 3.

flow_token

string

Required for Flows Messages.

A token that is generated by the business to serve as an identifier.

flow_id

string

Required for Flows Messages.

Unique identifier of the Flow provided by WhatsApp.

flow_cta

string

Required for Flows Messages.

Text on the CTA button, eg. "Signup".


Maximum length: 20 characters (no emoji).

flow_action

string

Optional for Flows Messages.

navigate or data_exchange. Use navigate to predefine the first screen as part of the message. Use data_exchange for advanced use-cases where the first screen is provided by your endpoint.


Default: navigate

flow_action_payload

object

Optional for Flows Messages.

Required only if flow_action is navigate. The object can contain the following parameters:

screenstringRequired. The id of the first screen of the Flow.

dataobjectOptional. The input data for the first screen of the Flow. Must be a non-empty object.

Section Object

NameDescription

title

string

Required if the message has more than one section.

Title of the section. Maximum length: 24 characters.

rows

array of objects

Required for List Messages.

Contains a list of row objects. Limited to 10 rows across all sections.


Each row object contains the following fields:

titlestringRequired. Maximum length: 24 characters.

IDstringRequired. Maximum length: 200 characters.

descriptionstringOptional. Maximum length: 72 characters.

product_items

array of objects

Required for Multi-Product Messages.

Array of product objects. There is a minimum of 1 product per section and a maximum of 30 products across all sections.


Each product object contains the following field:

product_retailer_idstringRequired for Multi-Product Messages. Unique identifier of the product in a catalog. To get this ID, go to Commerce Manager, select your account and the shop you want to use. Then, click Catalog > Items, and find the item you want to mention. The ID for that item is displayed under the item's name.

Ví dụ

Tin nhắn thoại:

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "audio",
  "audio": {
      "id": "your-media-id",
  }
}

Tin nhắn tài liệu, sử dụng filename:

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "document",
  "document": {
      "id": "your-media-id",
      "filename": "your-document-filename"
  }
}

Tin nhắn tài liệu, sử dụng link:

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "document",
  "document": {
      "link": "http(s)://the-url"
      "provider": {
          "name" : "provider-name"
      }     
    }
}

Tin nhắn video, sử dụng link:

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "video",  
  "video": {
      "link": "http(s)://the-url"
      "provider": {
          "name" : "provider-name"
      }
    }
  }
}

Tin nhắn văn bản:

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "text",
  "text": {
      "body": "your-message-content"
  }
}

Tin nhắn tương tác (danh sách):

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "interactive",
  "interactive":{
    "type": "list",
    "header": {
      "type": "text",
      "text": "your-header-content-here"
    },
    "body": {
      "text": "your-text-message-content-here"
    },
    "footer": {
      "text": "your-footer-content-here"
    },
    "action": {
      "button": "cta-button-content-here",
      "sections":[
        {
          "title":"your-section-title-content-here",
          "rows": [
            {
              "id":"unique-row-identifier-here",
              "title": "row-title-content-here",
              "description": "row-description-content-here",           
            }
          ]
        },
        {
          "title":"your-section-title-content-here",
          "rows": [
            {
              "id":"unique-row-identifier-here",
              "title": "row-title-content-here",
              "description": "row-description-content-here",           
            }
          ]
        },
        ...
      ]
    }
  }

}

Tin nhắn tương tác (nút trả lời):

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "interactive",
  "interactive": {
    "type": "button",
    "header": { # optional
      "type": "text" | "image" | "video" | "document",
      "text": "your text"
      # OR
      "document": {
        "id": "your-media-id",
        "filename": "some-file-name"
      }
      # OR
      "document": {
        "link": "the-provider-name/protocol://the-url",
        "provider": {
          "name": "provider-name",
        },
        "filename": "some-file-name"
      },
      # OR
      "video": {
        "id": "your-media-id"
      }
      # OR
      "video": {
        "link": "the-provider-name/protocol://the-url",
        "provider": {
          "name": "provider-name"
        }
      }
      # OR
      "image": {
        "id": "your-media-id"
      }
      # OR
      "image": {
        "link": "http(s)://the-url",
        "provider": {
          "name": "provider-name"
        }
      }
    }, # end header
    "body": {
      "text": "your-text-body-content"
    },
    "footer": { # optional
      "text": "your-text-footer-content"
    },
    "action": {
      "buttons": [
        {
          "type": "reply",
          "reply": {
            "id": "unique-postback-id",
            "title": "First Button’s Title" 
          }
        },
        {
          "type": "reply",
          "reply": {
            "id": "unique-postback-id",
            "title": "Second Button’s Title" 
          }
        }
      ] 
    } # end action   
  } # end interactive

}

Tin nhắn tương tác (Tin nhắn gồm một sản phẩm và Tin nhắn gồm nhiều sản phẩm):

{ 
  "recipient_type": "individual",
  "to" : "{{Recipient-WA-ID}}",
  "type": "interactive",
  "interactive": {
    "type": "product",
    "body": {
      "text": "body text"
    },
    "footer": {
      "text": "footer text"
    },
    "action": {
      "
      
      _id": "catalog-ID",
      "product_retailer_id": "product-ID"
    }
  }
}

Tin nhắn tương tác (Tin nhắn gồm nhiều sản phẩm):

{ 
  "recipient_type": "individual",
  "to" : "whatsapp-id",
  "type": "interactive",
  "interactive": 
    {
    "type": "product_list",
    "Header":{
       "type": "text",
        "text": "text-header-content"
     },
     "body":{
        "text": "text-body-content"
      },
     "footer":{
        "text":"text-footer-content"
     },
     "action":{
        "catalog_id":"catalog-id",
        "sections": [
             {
             "title": "section-title",             
             "product_items": [
                  { "product_retailer_id": "product-SKU-in-catalog" },
                  { "product_retailer_id": "product-SKU-in-catalog" },
                            ...
              ]},
              {
              "title": "the-section-title",
              "product_items": [
                 { "product_retailer_id": "product-SKU-in-catalog" }
                           ...
              ]},
               ...
       ]
     },  
    }
}

Tin nhắn tương tác (Tin nhắn chứa danh mục):

{ 
  "recipient_type": "individual",
  "to" : "whatsapp-id",
  "type": "interactive",
  "interactive": 
    {
    "type": "catalog_message",
     "body":{
        "text": "text-body-content"
      },
     "footer":{
        "text":"text-footer-content"
     },
     "action":{
        "name": "catalog_message",
      	"parameters":{ 
      	  "thumbnail_product_retailer_id": "product-SKU-in-catalog"
      	}
     },  
    }
}

Tin nhắn tương tác (Quy trình):

{
  "recipient_type": "individual",
  "to": "{{Recipient-WA-ID}}",
  "type": "interactive",
  "interactive": {
    "type": "flow",
    "header": {
      "type": "text",
      "text": "Flow message header"
    },
    "body": {
      "text": "Flow message body"
    },
    "footer": {
      "text": "Flow message footer"
    },
    "action": {
      "name": "flow",
      "parameters": {
        "flow_message_version": "3",
        "flow_token": "AQAAAAACS5FpgQ_cAAAAAD0QI3s",
        "flow_id": "<FLOW_ID>",
        "flow_cta": "Book!",
        "flow_action": "navigate",
        "flow_action_payload": {
          "screen": "<SCREEN_ID>",
          "data": { # optional
            "user_name": "name",
            "user_age": 25
          }
        }
      }
    }
  }
}

Sau đây là ví dụ về payload trong một phản hồi; các đối tượng meta và lỗi được lược bỏ cho ngắn gọn.

{
  "messages": [{ 
    "id": "message-id" 
  }]    
}

Nếu yêu cầu thành công, bạn sẽ nhận được một phản hồi kèm ID tin nhắn. Nếu yêu cầu đó trả về một phần errors, hãy kiểm tra tin nhắn khởi điểm và sửa các lỗi đó trước khi gửi lại yêu cầu. Để biết thêm thông tin về lỗi, hãy xem phần Mã lỗi của ứng dụng WhatsApp Business tại chỗ/tham chiếuMã trạng thái HTTP.

Áp dụng cho các doanh nghiệp ở Brazil, Colombia và Singapore kể từ ngày 12/09/2023. Áp dụng cho mọi doanh nghiệp kể từ ngày 12/10/2023.

Nếu yêu cầu bị giữ lại để đánh giá chất lượng, phản hồi sẽ chứa một thuộc tính message_status kèm theo thông báo cho biết rằng tin nhắn không được gửi ngay mà sẽ được gửi hoặc bị hủy bỏ sau khi hệ thống xác thực chất lượng. Thuộc tính này sẽ chỉ tồn tại nếu tin nhắn bị giữ lại.

    {
      "messages": [{ 
        "id": "message-id",
        "message_status": "Message has been held because quality assessment is pending",
      }]    
    }
    

Định dạng trong tin nhắn văn bản

WhatsApp cho phép một số định dạng trong tin nhắn. Để định dạng tất cả hoặc một phần tin nhắn, hãy sử dụng các ký hiệu định dạng sau:

Định dạngKý hiệuVí dụ

In đậm

Dấu hoa thị (*)

Tổng số tiền của bạn là *10,5 USD*.

In nghiêng

Dấu gạch dưới (_)

Chào mừng bạn đến với _WhatsApp_!

Gạch ngang chữ

Dấu sóng (~)

Đúng là ~trên cả~ tuyệt vời!

Code

3 dấu huyền (```)

```print 'Hello World';```

Hiệu quả

Trong ngữ cảnh này, hiệu quả biểu thị số lượng tin nhắn có thể được gửi trong một giây cụ thể bất kỳ thông qua ứng dụng WhatsApp Business tại chỗ/tham chiếu. Hiệu quả tối đa có thể đạt được phụ thuộc vào nhiều yếu tố. Yếu tố quan trọng nhất là lựa chọn thiết lập ứng dụng của bạn và việc tin nhắn đang được gửi cho người dùng mới hay người dùng hiện tại - quy trình thiết lập phiên mã hóa sẽ lâu hơn một chút khi nhắn tin cho người dùng mới.

Thiết lập ứng dụngSố tin nhắn văn bản được hỗ trợ mỗi giây

Một đoạn

70

Nhiều đoạn (32 đoạn)

250

Câu hỏi thường gặp

Lưu ý: Vui lòng không gửi cùng một tin nhắn nhiều lần cho cùng một người nhận bằng API WhatsApp Business.

Có thể có nhiều lý do khiến tỷ lệ gửi không đạt 100%. Một số trường hợp thường gặp bao gồm người dùng có quyền truy cập không thường xuyên vào mạng, không hoạt động trong một khoảng thời gian hoặc để tạo trải nghiệm chất lượng cao cho người dùng.

Tin nhắn có thể gửi được bằng WhatsApp sẽ có tỷ lệ gửi rất cao. Tuy nhiên, có nhiều lý do khiến hệ thống có thể không gửi được tin nhắn. Bạn sẽ có quyền truy cập vào trạng thái chính xác của tin nhắn bằng cách giám sát lệnh gọi lại. Điều này khác với việc gửi tin nhắn bằng SMS, chẳng hạn trong trường hợp bạn không có quyền truy cập vào trạng thái gửi cuối cùng và việc gửi lại tin nhắn có thể thực sự mang lại kết quả khác.

Tin nhắn có thể vẫn chưa gửi được vì điện thoại của người dùng không hoạt động hoặc hết pin hay người dùng bị mất điện thoại rồi có điện thoại mới và đã vô hiệu hóa SIM. Có thể xảy ra lỗi liên quan đến khả năng kết nối mạng của ứng dụng kinh doanh. Cũng có thể lệnh gọi lại (Webhooks) hiện không được gửi. Bạn có thể dùng nút health để giám sát những tình huống này. Bạn có thể bật lệnh gọi lại cho hoạt động nhận trên máy chủ để biết rằng tin nhắn đã đến đám mây trên máy chủ WhatsApp.

Nếu và khi một người dùng kết nối lại với mạng, người dùng đó sẽ nhận được tất cả tin nhắn bạn đã gửi. Việc nhận nhiều tin nhắn có cùng nội dung sẽ để lại trải nghiệm không tốt cho người dùng. Có nhiều khả năng người dùng sẽ chặn bạn hoặc phàn nàn. Có nhiều khả năng bạn sẽ bị cấm.

Nếu gửi một tin nhắn và nhận được ID tin nhắn từ API thì bạn không cần phải làm gì nữa để gửi tin nhắn này. Đừng gửi lại cùng một nội dung cho cùng một người nhận.

Nếu bạn nhận thấy tỷ lệ gửi thấp trong một khoảng thời gian dài, vui lòng gửi phiếu hỗ trợ qua kênh Hỗ trợ trực tiếp.

Khi gửi một tin nhắn, ngay khi bạn nhận lại ID tin nhắn thì nghĩa là yêu cầu tin nhắn đã được lưu trữ trong cơ sở dữ liệu. Ứng dụng API WhatsApp Business sẽ không ngừng tìm cách gửi tin nhắn đó cho đến khi được máy chủ WhatsApp công nhận. Quá trình này không có thời điểm kết thúc. Sau đó, máy chủ WhatsApp sẽ tìm cách gửi tin nhắn đó đến điện thoại của người dùng. Nếu điện thoại của người dùng không có kết nối mạng, tin nhắn sẽ được lưu trữ trong 30 ngày trước khi bị máy chủ WhatsApp xóa bỏ.

Có! Với WhatsApp, bạn có thể định dạng văn bản đã chọn bên trong tin nhắn thành In đậm, In nghiêng, Gạch ngang hoặc Đơn cách.

Hiện tại, không có cách nào để xem số người dùng hoặc người dùng nào đã chặn doanh nghiệp của bạn. Dấu hiệu tốt nhất là nghe lệnh gọi lại trạng thái và nếu bạn không nhận được trạng thái delivered thì nghĩa là người dùng đã chặn doanh nghiệp của bạn hoặc họ không có kết nối mạng. Hãy xem tài liệu Webhook để biết thêm chi tiết.

Nếu một người dùng đã chặn doanh nghiệp của bạn, API Danh bạ sẽ tiếp tục trả về số điện thoại đó dưới dạng người dùng WhatsApp hợp lệ. Tuy nhiên, khi bạn gửi tin nhắn, người dùng đó sẽ không bao giờ nhận được tin nhắn. Nếu đó là tin nhắn trả phí thì bạn sẽ không bị tính phí.

Không, thứ tự tin nhắn đến nơi không được đảm bảo đúng như thứ tự tin nhắn đã gửi. Nếu thứ tự là yếu tố quan trọng trong trường hợp sử dụng của bạn, bạn nên nghe lệnh gọi lại đã gửi tin nhắn cho tin nhắn đầu tiên trước khi gửi tin nhắn thứ hai.

Khi sử dụng nút messages, bạn cần đặt tiêu đề Content-Type thành application/json để ứng dụng API WhatsApp Business phân tích chính xác nội dung tin nhắn. Bạn cũng cần đặt tiêu đề Authorization và tiêu đề này phải chứa một mã truy cập chưa hết hạn. Hãy xem tài liệu Đăng nhập và xác thực để biết thông tin về cách lấy mã và thời điểm mã hết hạn.

Có thể có các trường hợp mà bạn cần thêm thời gian để xử lý câu hỏi của khách hàng và chỉ có thể phản hồi sau 24 giờ. Bạn nên tạo mẫu tin nhắn để:

  • cung cấp kết quả cho người dùng, hoặc
  • nhắc người dùng trả lời để kích hoạt cửa sổ dịch vụ khách hàng.

Trong cả hai trường hợp, vui lòng đảm bảo rằng bạn đưa nhiều ngữ cảnh nhất có thể vào mẫu tin nhắn. Ví dụ:

  • "Chào {{1}}! Về vấn đề bạn đã báo cáo trước đây, chúng tôi rất tiếc phải thông báo rằng {{2}}. Chúng tôi xin lỗi vì mọi sự bất tiện mà sự việc này gây ra."
  • Chúng tôi có thông tin cập nhật về phiếu của bạn. Vui lòng phản hồi lại nếu bạn muốn tiếp tục được hỗ trợ."