Mua trực tuyến, đến lấy hàng tại cửa hàng: Bonjour Quản lý – Phần 1 – Bắt đầu

1. Giới thiệu

637766505206e0a1.png c604dca3ca211399.png

Lần cập nhật gần đây nhất: ngày 11 tháng 05 năm 2022

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

Lớp học lập trình này là phần giới thiệu cách tích hợp với ứng dụng Business Messages, cho phép khách hàng kết nối với các doanh nghiệp mà bạn quản lý thông qua Google Tìm kiếm và Maps. Có thể bạn là một doanh nghiệp muốn tích hợp trực tiếp với Business Messages, hoặc bạn đang làm việc tại một nhà cung cấp phần mềm độc lập chuyên xây dựng giải pháp nhắn tin cho các doanh nghiệp mà bạn hợp tác, hoặc có thể bạn vừa tình cờ tìm thấy Business Messages và muốn chỉnh sửa trên nền tảng này.

Bất kể điều gì đã mang đến cho bạn ở đây, lớp học lập trình này là một cách tuyệt vời để bắt đầu. Khi kết thúc, bạn sẽ có một nhân viên hỗ trợ kỹ thuật số đầu tiên mà người dùng có thể tương tác. Khi đã sẵn sàng ra mắt trên Business Messages sau khi trau chuốt hơn một chút, bạn sẽ có tiềm năng tiếp cận hàng triệu khách hàng.

Điều gì làm nên một nhân viên hỗ trợ kỹ thuật số giỏi?

Business Messages là một nền tảng trò chuyện, mang đến trải nghiệm giống như ứng dụng trên thiết bị di động, giúp người tiêu dùng kết nối với doanh nghiệp mà không cần cài đặt thêm ứng dụng. Nhân viên hỗ trợ kỹ thuật số là một phần logic mà khách hàng tương tác. Logic này được quản lý bằng một ứng dụng web được triển khai trên đám mây hoặc trong cơ sở hạ tầng của bạn. Bạn có toàn quyền quyết định cách trả lời người dùng. Nhân viên hỗ trợ giỏi nhất có thể cung cấp bối cảnh để đặt ra kỳ vọng, thu hút khách hàng tương tác và cung cấp chức năng hỗ trợ nhu cầu của người dùng.

Sản phẩm bạn sẽ tạo ra

Trong lớp học lập trình này, bạn sẽ xây dựng một nhân viên hỗ trợ kỹ thuật số trên Business Messages cho một công ty hư cấu có tên là Bonjourhalf. Nhân viên hỗ trợ kỹ thuật số này sẽ trả lời một vài câu hỏi đơn giản như "Bạn đóng cửa lúc mấy giờ?" hoặc "Tôi có thể mua hàng trên mạng không?".

Trong lớp học lập trình này, người dùng có thể mua các mặt hàng thông qua nhân viên hỗ trợ kỹ thuật số, giới thiệu người dùng đến công ty xử lý thanh toán để thu tiền, sau đó lên lịch đến lấy hàng của họ tại cửa hàng.

Trong lớp học lập trình này, ứng dụng của bạn sẽ

  • Trả lời câu hỏi thông qua khối đề xuất
  • Hướng dẫn người dùng đặt những câu hỏi mà nhân viên hỗ trợ kỹ thuật số có thể trả lời
  • Cung cấp các tính năng trò chuyện phong phú để thu hút người dùng tham gia trò chuyện

883b5a7f9f266276.png

Kiến thức bạn sẽ học được

  • Cách triển khai ứng dụng web trên App Engine trên Google Cloud Platform. Ngoài ra, bạn có thể sử dụng ngrok để kiểm tra công khai ứng dụng cục bộ của mình.
  • Cách thiết lập tài khoản Business Messages bằng webhook của ứng dụng web để nhận tin nhắn từ người dùng
  • Cách gửi các tính năng nhiều định dạng như thẻ, băng chuyền và nội dung đề xuất khi trò chuyện bằng API Business Messages
  • Cách Business Messages gửi tin nhắn của bạn

Lớp học lập trình này tập trung vào việc xây dựng nhân viên hỗ trợ kỹ thuật số đầu tiên của bạn.

Bạn cần

  • Đăng ký tài khoản nhà phát triển Business Communications miễn phí
  • Hãy tham khảo trang web dành cho nhà phát triển của chúng tôi để xem hướng dẫn về cách
  • Thiết bị Android chạy phiên bản 5 trở lên HOẶC thiết bị iOS có ứng dụng Google Maps
  • Có kinh nghiệm lập trình ứng dụng web
  • Đã có kết nối Internet!

2. Thiết lập

Bật API

Đối với lớp học lập trình này, vì chúng ta sẽ làm việc với một ứng dụng Django, nên chúng ta sẽ dựa vào Cloud Build API để triển khai ứng dụng cho App Engine. Ngoài ra, nếu đang sử dụng ngrok, bạn không cần bật Cloud Build API.

Cách bật Cloud Build API:

  1. Mở Cloud Build API trong Google Cloud Console.
  2. Nhấp vào Bật.

Tạo một tài khoản dịch vụ

Bạn cần tạo một tài khoản dịch vụ để truy cập vào Business Communications và Business Messages API. Làm theo các bước trong tài liệu tạo tài khoản dịch vụ trong Business Communications Developer Console.

Triển khai Mã khởi đầu Django Python EchoBot

Trong dòng lệnh, hãy sao chép Django Echo Bot Sample vào thư mục đang làm việc của dự án bằng lệnh sau:

$ git clone https://github.com/google-business-communications/bm-bonjour-meal-django-starter-code

Sao chép tệp thông tin đăng nhập JSON đã tạo cho tài khoản dịch vụ vào thư mục tài nguyên của mẫu rồi đổi tên thông tin đăng nhập thành "bm-agent-service-account-credentials.json".

bm-bonjour-meal-django-starter-code/bonjourmeal-codelab/step-1/resources/bm-agent-service-account-credentials.json

Trong dòng lệnh, hãy chuyển đến thư mục bước 1 của mẫu.

Chạy các lệnh sau trong một thiết bị đầu cuối để triển khai mẫu:

$ gcloud config set project PROJECT_ID*
$ gcloud app create
$ gcloud app deploy
  • PROJECT_ID là mã dự án của dự án mà bạn đã dùng để đăng ký với các API.

Lưu ý URL của ứng dụng đã triển khai trong kết quả của lệnh gần đây nhất:

Deployed service [default] to [https://PROJECT_ID.appspot.com]

Mã khởi đầu mà bạn vừa triển khai chứa một ứng dụng web có webhook để nhận tin nhắn từ Business Messages. Ứng dụng sẽ lặp lại tin nhắn cho người dùng và có thể giới thiệu một số tính năng phong phú có trong giao diện trò chuyện.

Định cấu hình sổ tay của bạn

Bây giờ, dịch vụ của bạn đã được triển khai, bạn sẽ sử dụng URL của ứng dụng để đặt URL webhook trên trang Cài đặt tài khoản trong Bảng điều khiển dành cho nhà phát triển Business Communications.

URL webhook sẽ là URL của ứng dụng + "/callback/". Ví dụ: https://PROJECT_ID.appspot.com/callback/

Hãy chuyển đến trang Cài đặt tài khoản trong Business Communications Console. Ở góc trên cùng bên phải dưới thanh điều hướng, bạn sẽ thấy tên dự án GCP của mình. Nếu bạn thấy trình đơn thả xuống, hãy nhớ chọn dự án GCP.

Điền thông tin chi tiết về Đầu mối liên hệ về kỹ thuật, sau đó cập nhật Webhook bằng URL webhook cho ứng dụng đã triển khai của bạn.

ceb66c905ded40be.png

Nhấp vào Lưu bên cạnh tệp đối chiếu của dự án GCP.

3. Tạo nhân viên hỗ trợ đầu tiên

Sử dụng Business Communications Developer Console

Trong Bảng điều khiển Business Communications, hãy nhấp vào biểu trưng ở trên cùng bên trái để được đưa trở lại trang tổng quan của bảng điều khiển, sau đó nhấp vào Tạo nhân viên hỗ trợ. Bạn tạo thương hiệu đồng thời với việc tạo nhân viên hỗ trợ của mình. Chọn Business Messages cho Loại nhân viên hỗ trợ và đảm bảo rằng Thông tin đối tác là chính xác.

Trong mục Thương hiệu, hãy nhập tên của thương hiệu mà bạn đang tạo.Thương hiệu là doanh nghiệp mà bạn đang hợp tác và người tiêu dùng có thể tương tác trò chuyện với nhân viên hỗ trợ. Trong phần Tên nhân viên hỗ trợ, hãy chỉ định nội dung bạn muốn người dùng thấy trong cuộc trò chuyện của Business Messages. Trong trường hợp hư cấu BonjourP, Bonjour Rail là công ty đường sắt quản lý các nhà hàng BonjourP. Vì vậy, tôi sẽ chỉ định Bonjour Rail là thương hiệu và Bonjour Thái là đại lý.

Nhân viên hỗ trợ là thực thể đàm thoại đại diện cho thương hiệu.

88a9798e6546eb4e.png

Nhấp vào Tạo tác nhân rồi để bảng điều khiển thực hiện một số thao tác. Yêu cầu này mất vài giây để đưa ra một số yêu cầu tới Business Communications API để tạo thương hiệu và nhân viên hỗ trợ. Bạn có thể sử dụng trực tiếp Business Communications API để tạo nhân viên hỗ trợ và tạo thương hiệu. Hãy xem tài liệu để biết yêu cầu curl sẽ trông như thế nào để thực hiện những việc tương tự như bảng điều khiển đang làm.

Trò chuyện lần đầu tiên

Mở nhân viên hỗ trợ bạn vừa tạo, bạn sẽ thấy trang Tổng quan cho phép bạn bắt đầu xem thông tin chi tiết về nhân viên hỗ trợ đó. Hãy xem URL thử nghiệm của nhân viên hỗ trợ. Những URL này dùng để gọi giao diện trò chuyện trên thiết bị của bạn.

f6bd8ded561db36f.png

Bạn có thể sao chép URL thử nghiệm bằng cách nhấp vào một trong hai khối. Tất nhiên, hãy sao chép URL thử nghiệm cho thiết bị bạn có sẵn để kiểm tra. Gửi tin nhắn đã sao chép này tới thiết bị của bạn theo bất kỳ cách nào bạn muốn.

Trên thiết bị di động, khi bạn nhấn vào đường liên kết này, Trình chạy nhân viên hỗ trợ Business Messages sẽ được kích hoạt và điền sẵn URL thử nghiệm của nhân viên hỗ trợ.

Nhấn vào Khởi chạy để gọi ra nền tảng trò chuyện của nhân viên hỗ trợ.

2bf9f282e09062de.png

Hãy tương tác với nhân viên hỗ trợ để tìm hiểu khả năng của nhân viên hỗ trợ đó. Trong hầu hết trường hợp, bạn sẽ thấy rằng giao diện trò chuyện sẽ chỉ đọc to tin nhắn của mình. Gửi những nội dung như "Hello, World!" để thấy nhân viên hỗ trợ sẽ gửi lại chính tin nhắn đó cho bạn.

Ứng dụng đã triển khai cũng chứa một số logic để giới thiệu các tính năng phong phú có trên Business Messages.

  • Nếu gửi "thẻ", bạn sẽ gọi ra một thẻ thông tin
  • Nếu gửi "khối", bạn sẽ gọi ra khối đề xuất
  • Nếu gửi "băng chuyền", bạn sẽ gọi một băng chuyền gồm nhiều thẻ thông tin

Xin chúc mừng! Đây là cuộc trò chuyện mở đầu của nhân viên hỗ trợ với bạn!

Mỗi tính năng phong phú có thể được sử dụng để cung cấp bối cảnh tốt hơn cho người giao tiếp với nhân viên hỗ trợ. Gửi thành phần đồ hoạ trong thẻ thông tin để truyền đạt ý tưởng hiệu quả hơn hoặc sử dụng khối đề xuất để định hướng cuộc trò chuyện.

Cập nhật thư chào mừng và sử dụng khối cuộc trò chuyện

Hãy làm quen với Play Console để thực hành, xem cách chỉnh sửa tin nhắn chào mừng của nhân viên hỗ trợ và tận dụng khối đề xuất để giúp người dùng giao tiếp.

Chuyển đến trang Overview (Tổng quan) của nhân viên hỗ trợ rồi chọn Thông tin của nhân viên hỗ trợ. Di chuyển xuống phần tin nhắn chào mừng và câu mở đầu cuộc trò chuyện.

4323f988216fa054.png

Cập nhật thông báo chào mừng (trường nhập màu vàng) để có nội dung:

Chào mừng bạn đến với dịch vụ hỗ trợ khởi đầu BonjourP. Tôi có thể đọc lại tin nhắn của bạn và cho bạn xem một số tính năng phong phú được hỗ trợ trên nền tảng này. Hãy thử làm theo những đề xuất sau đây!

Nhấp vào + Thêm cụm từ bắt đầu cuộc trò chuyện như được tham chiếu trong hộp màu tím ở hình ảnh ở trên để thêm cụm từ bắt đầu cuộc trò chuyện nhằm gọi các khối đề xuất, băng chuyền và thẻ. Cụm từ bắt đầu cuộc trò chuyện mà bạn thêm cần có một thành phần văn bản và thành phần postData. Văn bản là nội dung mà người dùng nhìn thấy, còn dữ liệu postBack là dữ liệu được gửi đến webhook của nhân viên hỗ trợ. Webhook phân tích cú pháp cho dữ liệu đăng lại và sẽ gửi phản hồi thích hợp cho người dùng. 906bc74668a1b215.png

Sau khi sửa đổi, Thông tin về nhân viên hỗ trợ trong bảng điều khiển sẽ có dạng như sau:

8e96b0a10edd20af.png

Ở bên phải bảng điều khiển, bạn sẽ thấy bản xem trước giao diện của nhân viên hỗ trợ. Lưu ý cách tin nhắn chào mừng phản ánh nội dung bạn vừa thay đổi thành tin nhắn và khối đề xuất bên dưới tin nhắn đó?

Đây là một công cụ rất hữu ích để giúp bạn hình dung được trải nghiệm người dùng sẽ như thế nào. Bạn có thể sử dụng công cụ này trong quá trình xây dựng nhân viên hỗ trợ và lên kế hoạch cho hành trình của người dùng mà bạn muốn hỗ trợ.

Rất tiếc, chúng tôi sẽ không thể thấy những thay đổi này ngay trong cuộc trò chuyện, vì dữ liệu trước đó được lưu vào bộ nhớ đệm trong cơ sở hạ tầng Business Messages. Bộ nhớ đệm được xoá khoảng 2 giờ một lần. Vì vậy, bạn có thể thử dùng tính năng này vào ngày mai.

Trong thời gian chờ đợi, hãy xem cách hoạt động của mọi thứ.

4. Phân tích mã khởi đầu

Chế độ xem 10.000 bộ của mã nguồn

Mã khởi đầu mà bạn đã triển khai sẽ lặp lại thông báo cho người dùng và có thể hiển thị thẻ thông tin, băng chuyền hoặc khối đề xuất. Hãy tìm hiểu kỹ hơn về mã nguồn để hiểu rõ cách hoạt động của mã nguồn này. Sau đó, chúng ta sẽ xác định những nội dung cần thay đổi.

Mã khởi đầu là một dự án Django. Trong phần sau của loạt bài học lập trình này, chúng ta sẽ sử dụng Google Datastore để lưu trữ dữ liệu như giỏ hàng và các cuộc trò chuyện liên kết. Đừng lo nếu bạn chưa từng sử dụng Django. Công cụ này khá đơn giản. Đến cuối lớp học lập trình này, bạn sẽ biết cách thức hoạt động của Django.

Ở cấp độ cao, Django sẽ định tuyến URL đến các chế độ xem và logic chế độ xem sẽ tạo ra một mẫu hiển thị trong trình duyệt. Hãy cùng xem url.py của dự án.

bm-django-echo-bot/bmcodelab/urls.py [Dòng 31-37]

from django.urls import include, path
import bopis.views as bopis_views

urlpatterns = [
    path('', bopis_views.landing_placeholder),
    path('callback/', bopis_views.callback),
]

Hai tuyến được định nghĩa ở đây và do đó Django có thể thực thi logic nếu hai URL đó được nhận dạng. Với URL của dự án là https://PROJECT_ID.appspot.com/, thì các tuyến mà dự án biết được là:

  • https://PROJECT_ID.appspot.com/
  • https://PROJECT_ID.appspot.com/callback/

Cả hai tuyến URL đều tham chiếu đến bopis_views từ bopis/views.py. Hãy xem điều gì đang xảy ra trong tệp này. Để bắt đầu, trước tiên, hãy tìm hiểu về bopis_views.landing_placeholder.

bm-django-echo-bot/bonjourmeal-codelab/step-1/bopis/views.py [Dòng 302-309]

... 
def landing_placeholder(request):
    return HttpResponse("<h1>Welcome to the Bonjour Meal Codelab</h1>
    <br/><br/>
    To message your Bonjour Meal agent, go to the Developer Console and retrieve
    the Test URLs for the agent you have created as described in the codelab
    <a href='https://codelabs.developers.google.com/codelabs/'>here</a>.")
...

Bit logic này được máy chủ web của bạn thực thi khi nhận được yêu cầu web trỏ đến thư mục gốc của dự án. Không có gì quá thú vị xảy ra ở đây: chúng ta chỉ cần trả về một HTTPResponse chứa một số HTML cho trình duyệt đã đưa ra yêu cầu. Đúng vậy, bạn thực sự có thể mở URL gốc của dự án, nhưng thực sự không có nhiều việc phải làm khi nó đưa bạn trở lại lớp học lập trình này.

Các URL khác sẽ định tuyến đến một hàm có tên là callback, cũng nằm trong bopis/views.py. Hãy cùng xem xét hàm này.

bm-django-echo-bot/bopis/views.py [Dòng 60-101]

...
def callback(request):
    """
    Callback URL. Processes messages sent from user.
    """
    if request.method == "POST":
        request_data = request.body.decode('utf8').replace("'", '"')
        request_body = json.loads(request_data)

        print('request_body: %s', request_body)

        # Extract the conversation id and message text
        conversation_id = request_body.get('conversationId')
        print('conversation_id: %s', conversation_id)

        # Check that the message and text body exist

        if 'message' in request_body and 'text' in request_body['message']:
            message = request_body['message']['text']

            print('message: %s', message)
            route_message(message, conversation_id)
        elif 'suggestionResponse' in request_body:
            message = request_body['suggestionResponse']['postbackData']

            print('message: %s', message)
            route_message(message, conversation_id)
        elif 'userStatus' in request_body:
            if 'isTyping' in request_body['userStatus']:
                print('User is typing')
            elif 'requestedLiveAgent' in request_body['userStatus']:
                print('User requested transfer to live agent')

        return HttpResponse("Response.")

    elif request.method == "GET":
        return HttpResponse("This webhook expects a POST request.")
...

Logic ở đây sẽ phân tích cú pháp nội dung yêu cầu cho thông báo hoặc suggestionResponse và chuyển thông tin đó vào một hàm có tên là route_message, sau đó trả về HttpResponse lại cho cơ sở hạ tầng Business Messages để xác nhận đã nhận được thông báo.

Đây là một hàm quan trọng. Logic này là webhook của ứng dụng web, giúp nhận tin nhắn từ những người dùng tương tác với nhân viên hỗ trợ. Bạn có thể mở rộng webhook để gửi tin nhắn đến một công cụ tự động hoá như Dialogflow, nhằm hiểu được người dùng đang nói gì và đưa ra phản hồi từ thông tin dự đoán đó. Bạn cũng có thể chuyển tiếp tin nhắn để người dùng có thể kết nối với nhân viên hỗ trợ. Xem sơ đồ sau:

b10113f9d037e6a5.png

Business Messages gửi nội dung tin nhắn dưới dạng gói dữ liệu JSON đến webhook của bạn. Tại đây, tin nhắn sẽ được chuyển đến một nhân viên hỗ trợ đang hoạt động hoặc đến một logic nào đó để phản hồi dưới dạng bot. Trong trường hợp của chúng ta ở đây, cơ chế định tuyến đó là route_message. Hãy coi xem.

bm-django-echo-bot/bopis/views.py [Dòng 105-122]

...
def route_message(message, conversation_id):
    '''
    Routes the message received from the user to create a response.

    Args:
        message (str): The message text received from the user.
        conversation_id (str): The unique id for this user and agent.
    '''
    normalized_message = message.lower()

    if normalized_message == CMD_RICH_CARD:
        send_rich_card(conversation_id)
    elif normalized_message == CMD_CAROUSEL_CARD:
        send_carousel(conversation_id)
    elif normalized_message == CMD_SUGGESTIONS:
        send_message_with_suggestions(conversation_id)
    else:
        echo_message(message, conversation_id)
...

bit logic này bắt đầu kiểm tra thông báo mà người dùng nhận được. Trước tiên, thông báo được chuẩn hoá bằng cách giảm tất cả ký tự. Sau khi chuẩn hoá, hệ thống sẽ kiểm tra xem thông báo có phải là hằng số được xác định ở đầu tệp hay không.

bm-django-echo-bot/bopis/views.py [Dòng 40-42]

...
# Set of commands the bot understands
CMD_RICH_CARD = 'card'
CMD_CAROUSEL_CARD = 'carousel'
CMD_SUGGESTIONS = 'chips'
...

Điều đó có nghĩa là bot này phân tích cú pháp các thông báo chứa cụ thể bất kỳ chuỗi nào mà chúng ta đã đặt vào postback_data của các câu bắt đầu cuộc trò chuyện ở bước trước trong lớp học lập trình này. Nếu không có chuỗi nào xuất hiện, thì công cụ này chỉ chuyển thông báo đến một hàm có tên là echo_message (có thể tưởng tượng là... sẽ đọc to thông báo).

Đang gửi tin nhắn

Bây giờ, bạn đã có ý tưởng về cách ứng dụng web nhận thông báo. Tất cả việc này đều được webhook thực hiện.

Nhưng làm cách nào để ứng dụng gửi tin nhắn đi cho người dùng bằng Business Messages?

a9475b1da93a83e8.png

Khi cơ sở hạ tầng của bạn phản hồi người dùng, bạn sẽ gửi phản hồi tới Business Messages API để gửi thông báo đến người dùng.

API Business Messages có các thư viện bằng Python, Node.js và Java. Chúng tôi cũng có một API REST mà bạn có thể gửi yêu cầu trực tiếp nếu cơ sở hạ tầng của bạn không sử dụng ngôn ngữ mà chúng tôi có thư viện. Hãy xem phần Gửi tin nhắn để biết cách cURL được dùng để gửi tin nhắn đến một mã cuộc trò chuyện cụ thể.

Với mục đích của lớp học lập trình này, chúng ta sẽ tập trung vào việc sử dụng thư viện ứng dụng Python đã được tích hợp vào đoạn mã khởi đầu Bonjourhalf đã được triển khai cho App Engine trong dự án GCP hoặc chạy trên thiết bị thông qua ngrok.

Hãy xem hàm echo_message và xem cách chúng ta tương tác với API để gửi tin nhắn đến Business Messages.

bm-django-echo-bot/bopis/views.py [Dòng 199-212]

...
def echo_message(message, conversation_id):
    '''
    Sends the message received from the user back to the user.

    Args:
        message (str): The message text received from the user.
        conversation_id (str): The unique id for this user and agent.
    '''
    message_obj = BusinessMessagesMessage(
        messageId=str(uuid.uuid4().int),
        representative=BOT_REPRESENTATIVE,
        text=message)

    send_message(message_obj, conversation_id)
...

Trong hàm này, một BusinessMessagesMessage được tạo thực thể với biến tin nhắn được truyền vào hàm echo_message. Sau khi tạo thực thể, đối tượng này được truyền vào send_message cùng với mã nhận dạng cuộc trò chuyện.

bm-django-echo-bot/bopis/views.py [Dòng 214-236]

...
def send_message(message, conversation_id):
    '''
    Posts a message to the Business Messages API, first sending
    a typing indicator event and sending a stop typing event after
    the message has been sent.

    Args:
        message (obj): The message object payload to send to the user.
        conversation_id (str): The unique id for this user and agent.
    '''
    credentials = ServiceAccountCredentials.from_json_keyfile_name(
        SERVICE_ACCOUNT_LOCATION,
        scopes=['https://www.googleapis.com/auth/businessmessages'])

    client = bm_client.BusinessmessagesV1(credentials=credentials)

    # Create the message request
    create_request = BusinessmessagesConversationsMessagesCreateRequest(
        businessMessagesMessage=message,
        parent='conversations/' + conversation_id)

    bm_client.BusinessmessagesV1.ConversationsMessagesService(
        client=client).Create(request=create_request)
...

Tất cả những gì chức năng send_message đang làm là sử dụng thông tin xác thực tài khoản dịch vụ của bạn để xác minh rằng bạn có thể gửi tin nhắn tới cuộc trò chuyện này, tạo thực thể của ứng dụng Business Messages và tạo yêu cầu gửi tin nhắn đến conversation ID đã cho.

Các tính năng nhiều định dạng cũng sử dụng chức năng send_message này, nhưng thông điệp mà các thông điệp này tạo ra dành riêng cho thẻ thông tin, băng chuyền và khối đề xuất. Thẻ thông tin và băng chuyền có thể chứa thành phần đồ hoạ trong khi khối đề xuất có postback_data để logic gọi lại có thể phân tích cú pháp một cách phù hợp.

Giờ thì chúng ta đã biết cách gửi tin nhắn, hãy tìm hiểu cách mẫu gửi thẻ nhiều định dạng, băng chuyền và khối đề xuất. Trong phần sau, chúng ta sẽ sửa đổi mã nguồn để gửi tin nhắn bằng một số tính năng phong phú này.

Khi bạn đã sẵn sàng, hãy tuỳ chỉnh nhân viên hỗ trợ BonjourP.

5. Tuỳ chỉnh nhân viên hỗ trợ

Nếu bạn đã theo dõi lớp học lập trình từ trước đến nay, chúng ta sẽ thấy nhân viên hỗ trợ tuyệt đẹp của chúng ta.

906bc74668a1b215.png

Được thôi, không đẹp lắm, nhưng thực ra trông hơi trần trụi và không thể hiện được doanh nghiệp của chúng tôi quá tốt. May mắn là chúng tôi có kiến thức cơ bản về mã hỗ trợ tác nhân người dùng và có các công cụ cần thiết để tuỳ chỉnh tác nhân người dùng theo cách mình muốn.

Trong phần còn lại của lớp học lập trình này, chúng ta sẽ mở rộng tác nhân hỗ trợ đó bằng các nội dung sau:

  • Thêm một biểu trưng thực
  • Cải tiến tin nhắn chào mừng
  • Cung cấp thông tin về giờ làm việc
  • Hãy cho người dùng biết rằng việc mua hàng trực tuyến sắp ra mắt
  • Sử dụng khối đề xuất trò chuyện để hỗ trợ việc trò chuyện

Chúng tôi sẽ tận dụng Bảng điều khiển Business Communications để giúp chúng tôi cập nhật biểu trưng, thông báo chào mừng. Tuy nhiên, bạn luôn có thể sử dụng trực tiếp API Business Communications để thực hiện điều tương tự. Sau đó, chúng tôi sẽ phải cập nhật mã nguồn để gửi các thông báo thích hợp nhằm cung cấp thông tin về giờ làm việc và Bonjour thực tế sẽ sớm cung cấp tính năng mua sắm trực tuyến. Khi việc này hoàn tất, chúng ta sẽ quay lại Business Communications Console và tạo khối đề xuất trò chuyện để giúp hướng cuộc trò chuyện đến những trải nghiệm lộ trình phù hợp mà nhân viên hỗ trợ kỹ thuật số hỗ trợ.

Trong Business Communications Console, hãy chọn nhân viên hỗ trợ của bạn rồi chuyển đến phần Agent information (Thông tin của nhân viên hỗ trợ). Chúng tôi sẽ cập nhật Biểu trưng doanh nghiệp, như thể hiện màu vàng ở bên dưới.

eb6b8ac6b62387ee.png

Nhấp vào Tải lên là bạn sẽ có thể chọn hình ảnh để tải lên hoặc nhập từ URL.

Xem nguyên tắc thiết kế biểu trưng trong tài liệu để tìm hiểu về các phương pháp hay nhất mà chúng tôi đề xuất để sử dụng biểu trưng của riêng bạn.

Hãy tải biểu trưng nằm trong mã nguồn mà bạn đã sao chép ở đầu lớp học lập trình này lên. Bạn có thể tìm thấy tệp này trong thư mục ./Assets/ của kho lưu trữ và tệp có tên là "bonjour_meal-logo.png". Bạn có thể kéo tệp vào cửa sổ phụ trên trình duyệt web. Một công cụ chỉnh sửa ánh sáng sẽ xuất hiện để điều khiển chất lượng và cắt ảnh. Điều chỉnh độ phân giải và cắt hình ảnh sao cho hình ảnh nhỏ hơn hoặc bằng giới hạn 50KB. Khi bạn đã hài lòng với hình ảnh, hãy nhấp vào dấu kiểm trong vòng tròn màu xanh dương để xác nhận, rồi nhấp vào Chọn ở cuối cửa sổ phụ.

1856081f59623ae2.png

Cuối cùng, hãy nhấp vào Lưu ở trên cùng bên phải của trang Thông tin của nhân viên hỗ trợ. Thay đổi này sẽ mất chút thời gian để được phản ánh trên thiết bị của bạn vì thông tin về nhân viên hỗ trợ được lưu trong bộ nhớ đệm trong máy chủ của chúng tôi và sẽ xuất hiện trong vòng 2 giờ kể từ khi thay đổi.

Cập nhật thư chào mừng

Cập nhật tin nhắn chào mừng là hoạt động mà chúng ta đã thực hiện trước đó trong lớp học lập trình này. Hãy làm lại một lần nữa, nhưng lần này, hãy định cấu hình thông báo chào mừng phù hợp hơn với hành trình của người dùng Bonjourhalf.

Trong Business Communications Console, hãy chọn nhân viên hỗ trợ của bạn rồi chuyển đến phần Thông tin của nhân viên hỗ trợ. Di chuyển xuống cho đến khi bạn thấy trường nhập dữ liệu Tin nhắn chào mừng để cập nhật thông báo.

6598fec47021136e.png

Chúng tôi sẽ thêm các cụm từ bắt đầu cuộc trò chuyện, nên chúng tôi có thể tham khảo những câu đó trong thư chào mừng. Trong trường nhập dữ liệu, hãy thay thế bằng văn bản sau:

"Chào mừng bạn đến với Bonjourhalf. Tôi là trợ lý có thể giúp bạn giải đáp thắc mắc về Bonjour thực phẩm. Hãy thử một số cách sau đây."

Cuối cùng, hãy nhấp vào Lưu ở trên cùng bên phải của trang Thông tin của nhân viên hỗ trợ. Xin nhắc lại rằng thay đổi này sẽ mất chút thời gian mới được phản ánh do cơ chế lưu vào bộ nhớ đệm của chúng tôi nhằm đảm bảo mọi thứ đều nhanh chóng!

Cung cấp thông tin về giờ làm việc

Để cung cấp thông tin này cho người dùng, chúng tôi sẽ gửi một thông báo tuỳ chỉnh cho người dùng bằng API Business Messages.

Bạn có thể nhớ lại rằng thông báo được phân tích cú pháp trong hàm route_message của views.py. Trước tiên, hàm chuẩn hoá chuỗi, sau đó bắt đầu kiểm tra xem thông báo đã chuẩn hoá có khớp với bất kỳ tham số được mã hoá cứng nào hay không. Để đơn giản, hãy thêm một điều kiện bổ sung, trong đó chúng ta kiểm tra xem thông báo đã chuẩn hoá có bằng với một hằng số mới mà chúng ta sẽ gọi là CMD_BUSINESS_HOURS_INQUIRY và chứa giá trị "business-hours-inquiry" hay không. Nếu điều kiện được đánh giá là true (đúng), chúng ta sẽ gọi một hàm có tên là send_message_with_business_hours.

Bây giờ, hàm route_message sẽ có dạng như sau:

bm-django-echo-bot/bopis/views.py

...
def route_message(message, conversation_id):
    '''
    Routes the message received from the user to create a response.

    Args:
        message (str): The message text received from the user.
        conversation_id (str): The unique id for this user and agent.
    '''
    normalized_message = message.lower()

    if normalized_message == CMD_RICH_CARD:
        send_rich_card(conversation_id)
    elif normalized_message == CMD_CAROUSEL_CARD:
        send_carousel(conversation_id)
    elif normalized_message == CMD_SUGGESTIONS:
        send_message_with_suggestions(conversation_id)
    elif normalized_message == CMD_BUSINESS_HOURS_INQUIRY:
        send_message_with_business_hours(conversation_id)
    else:
        echo_message(message, conversation_id)
...

Để mã hoạt động, chúng ta sẽ phải thực hiện 2 thay đổi nữa; thay đổi thứ nhất là xác định CMD_BUSINESS_HOURS_INQUIRY cùng với các hằng số khác, thay đổi thứ hai là xác định hàm send_message_with_business_hours và gửi tin nhắn bằng API Business Messages.

Trước tiên, hãy xác định hằng số ở đầu tệp bằng các khai báo hằng số khác:

bm-django-echo-bot/bopis/views.py

...
# Set of commands the bot understands
CMD_RICH_CARD = 'card'
CMD_CAROUSEL_CARD = 'carousel'
CMD_SUGGESTIONS = 'chips'
CMD_BUSINESS_HOURS_INQUIRY = 'business-hours-inquiry'
...

Và bây giờ, hãy định nghĩa send_message_with_business_hours. Bạn có thể xác định hàm này ở bất cứ đâu trong tệp, theo cú pháp Python thích hợp. Do hàm này chỉ gửi một tin nhắn, giống như echo_message, nên bạn có thể dùng hàm này làm mẫu để xác định hàm này.

bm-django-echo-bot/bopis/views.py

...
def send_message_with_business_hours(conversation_id):

    message = '''Thanks for contacting us! The hours for the store are:\n
    MON 8am - 8pm\n
    TUE 8am - 8pm\n
    WED 8am - 8pm\n
    THU 8am - 8pm\n
    FRI 8am - 8pm\n
    SAT 8am - 8pm\n
    SUN 8am - 8pm
    '''

    message_obj = BusinessMessagesMessage(
        messageId=str(uuid.uuid4().int),
        representative=BOT_REPRESENTATIVE,
        text=message)

    send_message(message_obj, conversation_id)
...

Nhờ đó, bot của chúng tôi có thể trả lời người dùng bằng giờ làm việc khi họ gửi tin nhắn sau: "yêu cầu giờ làm việc". Bạn có thể sẽ thấy những thông tin như sau:

125802166995afd5.png

Sau khi triển khai mã nguồn lên GCP, các thay đổi sẽ xuất hiện ngay lập tức. Chúng tôi không lưu ứng dụng web trong Google Cloud Platform vào bộ nhớ đệm giống như cách thông tin về nhân viên hỗ trợ được lưu vào bộ nhớ đệm, do đó, bạn có thể thử nghiệm ngay trải nghiệm này.

Mặc dù chúng ta đã có động lực để thay đổi nguồn thông tin, nhưng hãy sửa đổi thêm một chút để người dùng có thể thắc mắc về việc mua sắm trực tuyến. Nhân viên hỗ trợ kỹ thuật số của bạn sẽ trả lời và cho biết tính năng này chưa hoạt động nhưng sẽ quay lại để kiểm tra sau.

Cho người dùng biết rằng tính năng mua sắm trực tuyến sắp ra mắt

Chúng tôi sẽ thực hiện một sửa đổi tương tự như đã thực hiện để thông báo cho người dùng về giờ làm việc. Lần này, hãy đặt thông tin vào một thẻ thông tin cùng với một hình ảnh hấp dẫn.

Phân tích cú pháp thông báo đã chuẩn hoá và kiểm tra điều kiện của một hằng số có tên là CMD_ONLINE_SHOPPING_INQUIRY với giá trị được đặt thành "online-shopping-inquiry" (điều kiện này sẽ gọi ra send_online_shopping_info_message nếu điều kiện đó đúng).

bm-django-echo-bot/bopis/views.py

...
# Set of commands the bot understands
CMD_RICH_CARD = 'card'
CMD_CAROUSEL_CARD = 'carousel'
CMD_SUGGESTIONS = 'chips'
CMD_BUSINESS_HOURS_INQUIRY = 'business-hours-inquiry'
CMD_ONLINE_SHOPPING_INQUIRY = 'online-shopping-inquiry'
...
...
...
def route_message(message, conversation_id):
    '''
    Routes the message received from the user to create a response.

    Args:
        message (str): The message text received from the user.
        conversation_id (str): The unique id for this user and agent.
    '''
    normalized_message = message.lower()

    if normalized_message == CMD_RICH_CARD:
        send_rich_card(conversation_id)
    elif normalized_message == CMD_CAROUSEL_CARD:
        send_carousel(conversation_id)
    elif normalized_message == CMD_SUGGESTIONS:
        send_message_with_suggestions(conversation_id)
    elif normalized_message == CMD_BUSINESS_HOURS_INQUIRY:
        send_message_with_business_hours(conversation_id)
    elif normalized_message == CMD_ONLINE_SHOPPING_INQUIRY:
        send_online_shopping_info_message(conversation_id)
    else:
        echo_message(message, conversation_id)
...

Bây giờ, hãy xác định send_online_shopping_info_message. Chúng ta muốn thông báo này được gửi trong một thẻ thông tin có hình ảnh, vì vậy, hãy sao chép hàm send_rich_card để dùng làm mẫu nhằm xác định send_online_shopping_info_message.

Trước tiên, chúng ta nên cập nhật văn bản dự phòng để có thông báo thích hợp. Văn bản dự phòng được dùng nếu thiết bị không thể nhận thẻ thông tin vì lý do nào đó. Tiếp theo, chúng ta nên cập nhật BusinessMessagesRichCard để thêm tiêu đề, nội dung mô tả, nội dung đề xuất và trường nội dung nghe nhìn phù hợp. Hàm của chúng ta sẽ có dạng như sau:

bm-django-echo-bot/bopis/views.py

...
def send_online_shopping_info_message(conversation_id):
    fallback_text = ('Online shopping will be available soon!')

    rich_card = BusinessMessagesRichCard(
        standaloneCard=BusinessMessagesStandaloneCard(
            cardContent=BusinessMessagesCardContent(
                title='Online shopping info!',
                description='Thanks for your business, we are located in SF near the Golden Gate Bridge. Online shopping is not yet available, please check back with us in a few days.',
                suggestions=[],
                media=BusinessMessagesMedia(
                    height=BusinessMessagesMedia.HeightValueValuesEnum.MEDIUM,
                    contentInfo=BusinessMessagesContentInfo(
                        fileUrl=SAMPLE_IMAGES[4],
                        forceRefresh=False
                    ))
                )))

    message_obj = BusinessMessagesMessage(
        messageId=str(uuid.uuid4().int),
        representative=BOT_REPRESENTATIVE,
        richCard=rich_card,
        fallback=fallback_text)

    send_message(message_obj, conversation_id)
...

Tuyệt vời! Nhân viên hỗ trợ kỹ thuật số của chúng tôi hiện có thể trả lời người dùng có thắc mắc về hoạt động mua sắm trực tuyến. Hiện tại, nhân viên hỗ trợ kỹ thuật số của chúng tôi chưa hỗ trợ hoạt động mua sắm trực tuyến, vì vậy, chúng tôi sẽ gửi tin nhắn cho người dùng để thông báo cho họ rằng tính năng này sẽ sớm ra mắt. Đây là giao diện của nhân viên hỗ trợ kỹ thuật số khi người dùng thắc mắc về việc mua sắm trên mạng.

5cd63c57c1b84f9a.png

Giống như thay đổi mà chúng tôi đã thực hiện trước đây để cho phép người dùng hỏi về giờ làm việc, thay đổi này có thể được nhìn thấy ngay lập tức nếu bạn đang sử dụng ngrok hoặc ngay khi bạn triển khai mã cho GCP App Engine.

Trong phần tiếp theo, chúng ta sẽ sử dụng các câu mở đầu cuộc trò chuyện và khối đề xuất để đưa cuộc trò chuyện đến con đường hạnh phúc.

Sử dụng khối để hướng dẫn cuộc trò chuyện

Chúng tôi đã thay đổi một số mã nguồn và triển khai nhân viên hỗ trợ kỹ thuật số mới. Tuy nhiên, chúng tôi không bao giờ nghĩ người dùng phải nhập "business-hours-inquiry" hay "online-shopping-info" để hỏi về doanh nghiệp. Hãy cập nhật nội dung mở đầu cuộc trò chuyện sao cho khi cuộc trò chuyện được mở ra, người dùng không chỉ được chào đón bằng tin nhắn chào mừng dễ thương mà còn được trình bày để mở đầu cuộc trò chuyện.

Chuyển đến Business Communications Console rồi truy cập vào trang Thông tin của nhân viên hỗ trợ của nhân viên hỗ trợ. Trước đây, chúng ta đã xác định các cụm từ bắt đầu cuộc trò chuyện cho "khối", "thẻ" và "băng chuyền". Mặc dù vẫn hoạt động, nhưng chúng không còn liên quan đến chức năng kinh doanh của chúng tôi. Bạn có thể giữ nguyên họ để tiếp tục giới thiệu các tính năng phong phú này hoặc xoá chúng để nhân viên hỗ trợ kỹ thuật số của bạn hiển thị các câu mở đầu cuộc trò chuyện dành riêng cho doanh nghiệp BonjourP.

Chúng ta sẽ tạo hai câu mở đầu cuộc trò chuyện mới. Đối với yêu cầu đầu tiên, hãy đặt văn bản thành "Giờ hoạt động của bạn?" và đặt Dữ liệu đăng lại thành "yêu cầu giờ làm việc". Đối với điều kiện bắt đầu cuộc trò chuyện thứ hai, hãy đặt văn bản thành "Tôi có thể mua hàng ở đây không?" và đặt Dữ liệu đăng lại thành "online-shopping-info".

Kết quả sẽ là cấu hình như ảnh chụp màn hình sau:

ef6e6888acea93e3.png

Giống như những thay đổi khác được thực hiện trên Business Communications Console, thay đổi này sẽ mất một thời gian để có hiệu lực trước khi bạn có thể thấy những thay đổi được tạo trên thiết bị di động của mình.

Bây giờ, chúng ta đã hoàn tất các câu mở đầu cuộc trò chuyện, chúng ta cũng muốn có một cách để hướng người dùng đến một lộ trình vui vẻ sau khi cuộc trò chuyện bắt đầu. Bạn có thể sử dụng khối theo ngữ cảnh sau khi tin nhắn được gửi để hướng dẫn người dùng chuyển sang các tính năng khác mà tác nhân kỹ thuật số có khả năng. Vì vậy, những gì chúng ta sẽ làm là gửi một tin nhắn kèm theo gợi ý làm việc khác với nhân viên hỗ trợ bất cứ khi nào người dùng hỏi về giờ làm việc hoặc hoạt động mua sắm trực tuyến.

Ở cuối hàm, hãy thêm đoạn mã sau:

bm-django-echo-bot/bopis/views.py

...
def send_online_shopping_info_message(conversation_id):
...
    # at the end of the function, send a message with suggestions
    message_obj = BusinessMessagesMessage(
        messageId=str(uuid.uuid4().int),
        representative=BOT_REPRESENTATIVE,
        text='Let us know how else we can help you:',
        fallback='Please let us know how else we can help you.',
        suggestions=[
            BusinessMessagesSuggestion(
                reply=BusinessMessagesSuggestedReply(
                text='Business hours',
                postbackData='business-hours-inquiry')
            ),
        ])

    send_message(message_obj, conversation_id)
...

# Let's do the same with the business hours
def send_message_with_business_hours(conversation_id):
...
    # at the end of the function, send a message with suggestions
    message_obj = BusinessMessagesMessage(
        messageId=str(uuid.uuid4().int),
        representative=BOT_REPRESENTATIVE,
        text='Let us know how else we can help you:',
        fallback='Please let us know how else we can help you.',
        suggestions=[
            BusinessMessagesSuggestion(
                reply=BusinessMessagesSuggestedReply(
                text='Can I purchase online?',
                postbackData='online-shopping-inquiry')
            ),
        ])

    send_message(message_obj, conversation_id)
...

Xin lưu ý rằng trường văn bản trong BusinessMessagesMessagesĐề xuất có giới hạn là 25 ký tự, như được mô tả trong tài liệu này.

Với các câu bắt đầu cuộc trò chuyện mới cập nhật và việc sử dụng khối đề xuất một cách có chiến lược, sau đây là một số ảnh chụp màn hình về trải nghiệm người dùng dự kiến.

ef57695e2bacdd20.png

6. Xin chúc mừng

Xin chúc mừng! Bạn đã tạo thành công nhân viên hỗ trợ kỹ thuật số đầu tiên của Business Messages!

Bạn đã triển khai một ứng dụng web để hỗ trợ nhân viên hỗ trợ kỹ thuật số của mình trên Business Messages, sử dụng Business Communications Console để sửa đổi nhân viên hỗ trợ và định hình trải nghiệm người dùng với nhân viên hỗ trợ kỹ thuật số bằng cách thay đổi mã nguồn.

Giờ đây, bạn đã biết các bước quan trọng cần thiết để xây dựng trải nghiệm Business Messages mang tính tương tác và từ đó trở đi, các khả năng sẽ rất thú vị. Nhân viên hỗ trợ của bạn có thể được mở rộng để hỗ trợ tra cứu kho hàng hoặc giới thiệu giỏ hàng để theo dõi những sản phẩm mà người dùng có thể quan tâm. Bạn có thể sử dụng băng chuyền để giới thiệu các mục trên trình đơn và sử dụng các đề xuất, cho phép người dùng chọn những món mà họ quan tâm.

Đây là một đoạn hé lộ về những hình ảnh này có thể có.

57d2bb7b0ec38c81.png

Làm cách nào để tạo ra trải nghiệm trò chuyện hiệu quả?

Nhân viên hỗ trợ giỏi nhất cung cấp thông tin theo bối cảnh cho người dùng, đồng thời cung cấp cho họ chức năng thông qua cuộc trò chuyện để họ có thể tham gia và tương tác với doanh nghiệp như thường làm qua điện thoại hoặc thậm chí trực tiếp. Hãy suy nghĩ về cách các chủ đề sau có thể áp dụng cho cuộc trò chuyện mà bạn muốn thực hiện với doanh nghiệp mà bạn hợp tác.

Cung cấp bối cảnh và đặt kỳ vọng

Cung cấp bối cảnh có thể là bất cứ việc gì, từ việc nêu rõ cách bạn có thể giúp người dùng đến việc giới thiệu nhân viên hỗ trợ kỹ thuật số với một cá tính có liên quan đến người dùng. Những nhân viên hỗ trợ hiệu quả trên Business Messages sử dụng hình đại diện để cho người dùng biết họ đang nói chuyện với ai.

Việc thiết lập kỳ vọng phụ thuộc vào trải nghiệm người dùng mà bạn đang xây dựng. Ví dụ: Nếu nhân viên hỗ trợ của bạn hỗ trợ tra cứu kho hàng, trước tiên, hãy thông báo cho người dùng rằng tình trạng còn hàng có thể sắp hết trước khi trả lời.

Cung cấp chức năng cho người dùng

Người tiêu dùng luôn kết nối với doanh nghiệp. Từ những câu hỏi như kiểm tra trạng thái đơn đặt hàng cho đến kiểm tra xem một mặt hàng có còn hàng hay không, Business Messages có thể hỗ trợ các tương tác phức tạp của người dùng. Nhiều người dùng tiếp tục gọi cho doanh nghiệp qua điện thoại để được trả lời câu hỏi của họ ngay cả khi câu trả lời đã có trên trang web của doanh nghiệp. Kết quả là các doanh nghiệp phải đầu tư thêm nguồn lực để xử lý số lượng cuộc gọi, đặc biệt là trong những ngày lễ.

Giữ cho người dùng luôn tương tác

Đưa ra các điểm tiếp xúc trò chuyện để duy trì sự tương tác của người dùng. Giữa các tin nhắn, bạn có thể gọi ra các chỉ báo đang soạn tin nhắn để cho người dùng biết rằng bạn đang xử lý câu trả lời cho người dùng.

Với các tính năng phong phú như chỉ báo đang nhập, khối đề xuất, thẻ thông tin và băng chuyền, bạn có thể hướng dẫn người dùng thông qua trải nghiệm lộ trình phù hợp để giúp họ hoàn tất một số thao tác, chẳng hạn như đặt món từ trình đơn chứa các mục. Mục tiêu là giảm lưu lượng cuộc gọi đến đường dây điện thoại của doanh nghiệp.

Điều quan trọng là một cuộc trò chuyện phải cung cấp chức năng cho người dùng. Những người dùng kết nối với doanh nghiệp qua tính năng nhắn tin mong muốn câu hỏi của họ được giải đáp nhanh chóng. Trong tình huống không lý tưởng, nhân viên hỗ trợ kỹ thuật số không thể hỗ trợ cuộc trò chuyện và điều này có thể dẫn đến trải nghiệm người dùng kém. May mắn là có nhiều cách để giải quyết vấn đề này, chẳng hạn như chuyển cuộc trò chuyện cho một nhân viên hỗ trợ trực tiếp. Chúng ta sẽ đề cập đến những cách này trong lớp học lập trình sau.

Tiếp theo là gì?

Khi bạn đã sẵn sàng, hãy xem một số chủ đề sau để tìm hiểu về các hoạt động tương tác phức tạp hơn mà bạn có thể thực hiện trong Business Messages

Tài liệu tham khảo