1. Giới thiệu
Lần cập nhật gần đây nhất: 11/5/2022
Chào mừng bạn đến với Business Messages!
Lớp học lập trình này giới thiệu về cách tích hợp với Thông báo của doanh nghiệp. Tính năng này 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 có thể bạn đang làm việc tại một nhà cung cấp phần mềm độc lập xây dựng các 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 chỉ tình cờ tìm thấy Business Messages và muốn tìm hiểu về nền tảng này.
Cho dù bạn đến đây vì lý do gì, 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 hoàn thiện một chút, bạn có thể 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?
Tin nhắn cho doanh nghiệp là một nền tảng trò chuyện, cung cấp trải nghiệm giống như ứng dụng trên thiết bị di động, cho phé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 đượ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 hoàn toàn có thể tự quyết định cách phản hồi người dùng. Những nhân viên hỗ trợ giỏi nhất sẽ cung cấp thông tin bối cảnh để đặt ra kỳ vọng, giữ chân khách hàng 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 trợ lý kỹ thuật số trên tính năng Tin nhắn doanh nghiệp cho một công ty hư cấu có tên là Bonjour Meal. Nhân viên hỗ trợ kỹ thuật số này sẽ trả lời một số câu hỏi đơn giản như "Quán của bạn đóng cửa lúc mấy giờ?" hoặc "Tôi có thể mua hàng trực tuyến không?".
Trong lớp học lập trình này, người dùng của bạn sẽ có thể mua các mặt hàng thông qua nhân viên hỗ trợ kỹ thuật số, chuyển người dùng đến một trình xử lý thanh toán để thu tiền, sau đó lên lịch đến lấy các mặt hàng hư cấu 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à trợ lý kỹ thuật số của bạn có thể trả lời
- Cung cấp các tính năng trò chuyện phong phú để người dùng luôn hào hứng tham gia cuộc trò chuyện
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 thử công khai ứng dụng cục bộ.
- Cách định cấu hình tài khoản Business Messages bằng webhook ứng dụng web để nhận tin nhắn từ người dùng
- Cách gửi các tính năng đa dạng thức như thẻ, băng chuyền và đề xuất trò chuyện bằng Business Messages API
- 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 trợ lý kỹ thuật số đầu tiên của bạn.
Bạn cần có
- Đăng ký tài khoản nhà phát triển miễn phí cho Business Communications
- Hãy tham khảo trang web dành cho nhà phát triển của chúng tôi để biết 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
- Kết nối Internet!
2. Thiết lập
Bật API
Trong lớp học lập trình này, vì 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 đó lên App Engine. Ngoài ra, nếu đang sử dụng ngrok, bạn không cần bật API Cloud Build.
Cách bật API Cloud Build:
- Mở Cloud Build API trong Google Cloud Console.
- 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 API Business Communications và Business Messages. 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 động Django Python EchoBot
Trong một thiết bị đầu cuối, hãy nhân bản Mẫu bot Django Echo vào thư mục 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 xác thực JSON đã tạo cho tài khoản dịch vụ vào thư mục tài nguyên của mẫu và đổi tên thông tin xác thực 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 một thiết bị đầu cuối, 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 cuối cùng:
Deployed service [default] to [https://PROJECT_ID.appspot.com]
Mã khởi động 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ẽ phản hồ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 webook
Giờ đây, khi dịch vụ đã được triển khai, bạn sẽ sử dụng URL của ứng dụng để đặt URL webhook trong 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ụ: URL có thể có dạng như sau: https://PROJECT_ID.appspot.com/callback/
Chuyển đến trang Cài đặt tài khoản của Business Communications Console. Ở góc trên cùng bên phải trong 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 một trình đơn thả xuống, hãy nhớ chọn dự án GCP của bạn.
Điền thông tin chi tiết về Đầu mối liên hệ phụ trách kỹ thuật, sau đó cập nhật Webhook bằng URL webhook cho ứng dụng đã triển khai.
Nhấp vào Lưu bên cạnh thông tin tham 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 Business Communications Console, hãy nhấp vào biểu trưng ở trên cùng bên trái để quay 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 cùng lúc với việc tạo nhân viên hỗ trợ. Chọn Tin nhắn cho doanh nghiệp 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 này 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 bằng tin nhắ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 mà bạn muốn người dùng nhìn thấy trong cuộc trò chuyện trên Business Messages. Trong trường hợp của bữa ăn Bonjour Meal hư cấu, Bonjour Rail là công ty đường sắt quản lý các nhà hàng Bonjour Meal. Vì vậy, tôi sẽ chỉ định Bonjour Rail làm thương hiệu và Bonjour Meal làm đại lý.
Nhân viên hỗ trợ là thực thể trò chuyện đại diện cho thương hiệu.
Nhấp vào Create agent (Tạo tác nhân) và để 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 để gửi một số yêu cầu đến API Truyền thông doanh nghiệp nhằm tạo thương hiệu và đại lý. Bạn có thể trực tiếp sử dụng API Thông tin liên lạc doanh nghiệp để tạo một đại lý và tạo một 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 khi 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ở tác nhân mà bạn vừa tạo, bạn sẽ thấy trang Tổng quan cho phép bạn bắt đầu xem lại thông tin chi tiết về tác nhân. Hãy xem URL thử nghiệm của nhân viên hỗ trợ. Những URL này được dùng để gọi giao diện trò chuyện trên thiết bị của bạn.
Bạn có thể sao chép URL kiểm thử bằng cách nhấp vào một trong hai khối. Tất nhiên, hãy sao chép URL kiểm thử cho thiết bị bạn có để kiểm thử. Gửi tin nhắn đã sao chép này đến thiết bị của bạn theo cách bạn muốn.
Khi bạn mở đường liên kết trên thiết bị di động, Trình chạy nhân viên hỗ trợ Business Messages sẽ được gọi với URL kiểm thử nhân viên hỗ trợ được điền sẵn.
Nhấn vào Khởi chạy để gọi giao diện trò chuyện của nhân viên hỗ trợ.
Tương tác với trợ lý và cảm nhận những gì trợ lý có thể làm. Trong hầu hết trường hợp, bạn sẽ thấy rằng giao diện trò chuyện sẽ chỉ lặp lại tin nhắn của bạn. Hãy gửi một tin nhắn như "Xin chào!" và bạn sẽ thấy nhân viên hỗ trợ sẽ gửi lại cho bạn chính tin nhắ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 một thẻ thông tin chi tiết
- Nếu gửi "khối", bạn sẽ gọi các 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 các thẻ thông tin chi tiết
Xin chúc mừng! Đây là cuộc trò chuyện đầu tiên của nhân viên hỗ trợ với bạn!
Bạn có thể sử dụng từng tính năng đa dạng thức để cung cấp ngữ cảnh phù hợp hơn cho người đang trao đổi với nhân viên hỗ trợ của bạn. Gửi thành phần đồ hoạ trong thẻ đa dạng thức để 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 lời chào mừng và sử dụng khối trò chuyện
Hãy thực hành một số thao tác trên Developer Console, xem cách chỉnh sửa lời chào của trợ lý và tận dụng các khối đề xuất để giúp người dùng giao tiếp.
Chuyển đến trang Tổng quan của nhân viên hỗ trợ rồi chọn Thông tin về nhân viên hỗ trợ. Cuộn xuống phần lời chào mừng và câu mở đầu cuộc trò chuyện.
Cập nhật thông báo chào mừng (trường nhập dữ liệu màu vàng) thành:
Chào mừng bạn đến với tác nhân khởi động Bonjour Meal. Tôi có thể lặp lại thông báo của bạn và cho bạn thấy một số tính năng đa dạng được hỗ trợ trên nền tảng này. Hãy thử những đề xuất nà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 trong hình trên để thêm cụm từ bắt đầu cuộc trò chuyện nhằm gọi khối đề xuất, băng chuyền và thẻ. Câu mở đầu cuộc trò chuyện mà bạn thêm cần có thành phần văn bản và thành phần postbackData. Văn bản là nội dung hiển thị cho người dùng, còn dữ liệu postBack là nội dung được gửi đến webhook của nhân viên hỗ trợ. Webhook sẽ phân tích cú pháp dữ liệu đăng lại và gửi phản hồi thích hợp cho người dùng.
Thông tin về nhân viên hỗ trợ trong bảng điều khiển sẽ có dạng như sau sau khi sửa đổi:
Ở 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 trợ lý. Bạn có nhận thấy thông báo chào mừng phản ánh nội dung bạn vừa thay đổi và các khối đề xuất bên dưới không?
Đây là một công cụ tuyệt vời để biết được trải nghiệm người dùng sẽ như thế nào. Bạn có thể sử dụng tính năng này trong khi xây dựng trợ lý và lập 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 ta sẽ không thể thấy những thay đổi này được phản ánh 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 của Business Messages. Bộ nhớ đệm được xoá sau mỗi 2 giờ, vì vậy, bạn có thể thử tính năng này vào ngày mai.
Trong thời gian chờ đợi, hãy cùng xem xét cách mọi thứ hoạt động.
4. Phân tích mã khởi động
Chế độ xem tổng quan về mã nguồn
Mã khởi động mà bạn triển khai sẽ phản hồi thông báo cho người dùng và có thể hiển thị một thẻ đa dạng thức, băng chuyền hoặc khối đề xuất. Hãy cùng tìm hiểu sâu hơn về mã nguồn để hiểu cách hoạt động của mã này. Sau đó, chúng ta sẽ tìm hiểu những gì cần thay đổi.
Mã khởi động là một dự án Django. Trong phần sau của loạt lớp 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 quan. Đừng lo nếu bạn chưa từng sử dụng Django. Django khá đơn giản và bạn sẽ tìm hiểu cách hoạt động của Django khi kết thúc lớp học lập trình này.
Ở cấp độ cao, Django sẽ định tuyến URL đến các thành phần hiển thị và logic thành phần hiển thị sẽ tạo một mẫu hiển thị trong trình duyệt. Hãy cùng xem urls.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 đường được xác định tại đây, vì vậy, Django có thể thực thi logic nếu hai URL đó được nhận dạng. Giả sử URL dự án là https://PROJECT_ID.appspot.com/, thì các tuyến mà dự án nhận biết được là:
- https://PROJECT_ID.appspot.com/
- https://PROJECT_ID.appspot.com/callback/
Cả hai tuyến đường URL đều tham chiếu đến bopis_views
trong bopis/views.py. Hãy xem những gì đang diễn ra trong tệp này. Để bắt đầu, trước tiên, hãy tìm hiểu 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>.")
...
Máy chủ web của bạn sẽ thực thi phần logic này 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á phức tạp ở đâ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. Bạn thực sự có thể mở URL gốc của dự án, nhưng không có gì nhiều để làm ở đó vì URL gốc sẽ đưa bạn trở lại lớp học lập trình này.
URL còn lại sẽ chuyển đến một hàm có tên là callback
, cũng trong bopis/views.py
. Hãy cùng xem hàm đó.
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 phân tích cú pháp nội dung yêu cầu cho message hoặc suggestionResponse và truyền thông tin đó vào một hàm có tên là route_message
, sau đó trả về một HttpResponse trở lại 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. Phần logic này là webhook của ứng dụng web, nhận tin nhắn từ người dùng tương tác với nhân viên hỗ trợ của bạn. Bạn có thể mở rộng webhook để gửi thông báo đến một công cụ tự động hoá như Dialogflow nhằm hiểu được nội dung mà người dùng có thể đang nói và tạo phản hồi từ suy luận đó. Bạn cũng có thể chuyển tiếp thư để người dùng có thể kết nối với nhân viên hỗ trợ trực tiếp. Xem sơ đồ sau:
Business Messages gửi nội dung tin nhắn dưới dạng tải trọng JSON đến webhook của bạn. Tại đây, nội dung tin nhắn sẽ được chuyển đến một nhân viên hỗ trợ trực tiếp hoặc một số logic để trả lời dưới dạng bot. Cơ chế định tuyến đó, trong trường hợp này, 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)
...
Phần 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 viết thường tất cả các ký tự. Sau khi chuẩn hoá, hàm này sẽ kiểm tra xem thông báo có phải là bất kỳ hằng số nào đượ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'
...
Tức là, bot sẽ phân tích cú pháp các tin nhắn chứa cụ thể bất kỳ chuỗi nào mà chúng ta đã đặt vào postback_data
của câu mở đầ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ì hàm này sẽ chỉ truyền thông báo đến một hàm có tên là echo_message
. Bạn có thể tưởng tượng... hàm này sẽ lặp lại thông báo.
Gửi tin nhắn
Đến đây, bạn đã có ý tưởng về cách ứng dụng web nhận được thông báo. Tất cả đều do webhook thực hiện.
Nhưng làm cách nào để ứng dụng gửi tin nhắn đi đến người dùng bằng Business Messages?
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 đến API Business Messages để phân phối tin nhắn đến người dùng.
API Tin nhắn doanh nghiệp có các thư viện trong 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 sử dụng cURL để gửi tin nhắn đến một mã cuộc trò chuyện cụ thể.
Trong 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 mã khởi động Bonjour Meal đã được triển khai cho App Engine trên dự án GCP của bạn hoặc chạy cục bộ thông qua ngrok.
Hãy xem hàm echo_message
và cách chúng ta tương tác với API để gửi thông báo đế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 bản sao bằng biến thông báo được truyền vào hàm echo_message
. Sau khi được tạo bản sao, đối tượng này sẽ được truyền đến send_message
cùng với mã 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ì hàm 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 đến cuộc trò chuyện này, tạo bản sao ứ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 đa dạng thức cũng sử dụng hàm send_message
này, nhưng thông báo mà các tính năng này tạo ra là dành riêng cho thẻ đa dạng thức, băng chuyền và khối đề xuất. Thẻ đa dạng thức và băng chuyền có thể bao gồm các 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 thành phần đó một cách thích hợp.
Giờ đây, chúng ta đã biết cách gửi thông báo, hãy tìm hiểu cách mẫu gửi thẻ thông tin chi tiết, 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 đa dạng này.
Khi bạn đã sẵn sàng, hãy tuỳ chỉnh tác nhân Bonjour Meal.
5. Tuỳ chỉnh nhân viên hỗ trợ
Nếu đã làm theo lớp học lập trình này cho đến nay, chúng ta sẽ thấy tác nhân tuyệt đẹp của mình.
Ồ, không đẹp lắm, thực sự trông hơi trống trải và không thực sự thể hiện rõ doanh nghiệp của chúng ta. May mắn thay, chúng ta có kiến thức cơ bản về mã hỗ trợ tác nhân và có các công cụ cần thiết để tuỳ chỉnh tác nhân theo bất kỳ cách nào chúng ta 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 bằng những nội dung sau:
- Thêm biểu trưng thực tế
- Cải thiện tin nhắn chào mừng
- Cung cấp thông tin về giờ làm việc
- Thông báo cho người dùng biết rằng tính năng mua hàng trên mạng sắp ra mắt
- Sử dụng khối đề xuất trò chuyện để hỗ trợ cuộc trò chuyện
Chúng ta sẽ tận dụng Business Communications Console để cập nhật biểu trưng, lời chào, nhưng bạn luôn có thể sử dụng trực tiếp Business Communications API để thực hiện việc này. Sau đó, chúng ta sẽ phải cập nhật mã nguồn để gửi thông báo phù hợp nhằm cung cấp thông tin về giờ làm việc và Bonjour Meal sẽ sớm cung cấp tính năng mua sắm trực tuyến. Sau khi hoàn tất, chúng ta sẽ quay lại Business Communications Console và tạo các khối đề xuất trò chuyện để giúp hướng dẫn cuộc trò chuyện đến các trải nghiệm theo lộ trình mà trợ lý kỹ thuật số hỗ trợ.
Thêm biểu trưng
Trong Business Communications Console, hãy chọn nhân viên hỗ trợ rồi chuyển đến phần Thông tin của nhân viên hỗ trợ. Chúng ta cần cập nhật Biểu trưng doanh nghiệp, như được tham chiếu bằng màu vàng bên dưới.
Nhấp vào Tải lên để chọn hình ảnh cần tải lên hoặc nhập từ URL.
Hãy xem nguyên tắc thiết kế biểu trưng trong tài liệu để tìm hiểu các phương pháp hay nhất mà chúng tôi đề xuất khi sử dụng biểu trưng của riêng bạn.
Hãy tải biểu trưng lên trong mã nguồn mà bạn đã sao chép ở đầu lớp học lập trình này. 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ổ bật lên trên trình duyệt web, một công cụ chỉnh sửa đơn giản sẽ xuất hiện để điều chỉnh chất lượng hình ảnh và cắt hình. Điều chỉnh độ phân giải và kích thước cắt hình ảnh để hình ảnh có kích thước nhỏ hơn hoặc bằng giới hạn 50 KB. 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ổ bật lên.
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 về người đại diện. Thay đổi này sẽ mất chút thời gian để phản ánh trên thiết bị của bạn vì thông tin về tác nhân được lưu vào 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 lời chào mừng
Chúng ta đã cập nhật thông báo chào mừng trong lớp học lập trình này. Hãy làm lại như vậy, 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 Bonjour Meal.
Trong Business Communications Console, hãy chọn nhân viên hỗ trợ rồi chuyển đến phần Thông tin về nhân viên hỗ trợ. Di chuyển xuống cho đến khi bạn thấy trường nhập Tin nhắn chào mừng để cập nhật tin nhắn.
Biết rằng chúng ta sẽ thêm câu mở đầu cuộc trò chuyện, chúng ta có thể tham chiếu đến các câu đó trong lời chào. Trong trường nhập, hãy thay thế bằng văn bản sau:
"Chào mừng bạn đến với Bonjour Meal. Tôi là trợ lý có thể giúp bạn giải đáp những câu hỏi mà bạn có thể gặp phải về dịch vụ Bonjour Meal. Hãy thử một số tuỳ chọn sau."
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 về người đại diện. Xin nhắc lại rằng thay đổi này sẽ mất chút thời gian để đượ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ứ diễn ra nhanh chóng!
Cung cấp thông tin về giờ hoạt động
Để cung cấp thông tin này cho người dùng, chúng tôi sẽ gửi một tin nhắn tuỳ chỉnh cho người dùng bằng Business Messages API.
Bạn có thể nhớ rằng các 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 này sẽ 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ố nào được mã hoá cứng hay không. Để đơn giản, hãy thêm một điều kiện bổ sung để kiểm tra xem thông báo đã chuẩn hoá có bằng hằng số mới mà chúng ta sẽ gọi là CMD_BUSINESS_HOURS_INQUIRY
và có chứa giá trị "business-hours-inquiry" hay không. Nếu điều kiện đánh giá là đúng, chúng ta sẽ gọi một hàm có tên là send_message_with_business_hours
.
Hàm route_message
hiện 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 thêm hai thay đổi; thay đổi đầu tiên 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 Tin nhắn doanh nghiệp.
Trước tiên, hãy xác định hằng số ở đầu tệp cùng với 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'
...
Bây giờ, hãy xác định send_message_with_business_hours
. Bạn có thể xác định hàm này ở bất kỳ vị trí nào trong tệp, theo cú pháp Python thích hợp. Vì hàm này chỉ gửi một thông báo, giống như echo_message
, bạn có thể sử 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 ta có thể trả lời người dùng về giờ làm việc này khi họ gửi tin nhắn sau: "business-hours-inquiry". Bạn có thể thấy kết quả như sau:
Sau khi bạn triển khai mã nguồn lên GCP, các thay đổi sẽ hiển thị ngay lập tức. Chúng tôi không lưu ứng dụng web vào bộ nhớ đệm trong Google Cloud Platform theo cách tương tự như cách lưu thông tin của tác nhân vào bộ nhớ đệm, vì vậy, bạn có thể kiểm thử trải nghiệm này ngay lập tức.
Mặc dù chúng ta đã có một số động lực để thực hiện các thay đổi về nguồn, nhưng hãy thực hiện thêm một sửa đổi nữa để cho phép người dùng hỏi về việc mua sắm trực tuyến. Nhân viên hỗ trợ kỹ thuật số sẽ trả lời rằng tính năng này chưa được cung cấp nhưng bạn có thể quay lại và kiểm tra sau.
Thông báo 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 ta sẽ thực hiện một sửa đổi tương tự như khi 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ẻ đa dạng thức cùng với 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 cho một hằng số có tên là CMD_ONLINE_SHOPPING_INQUIRY
với giá trị được đặt thành "online-shopping-inquiry". Hằng số này sẽ gọi send_online_shopping_info_message
nếu điều kiện là đú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 gửi thông báo này trong một thẻ đa dạng thức có hình ảnh, vì vậy, hãy sao chép hàm send_rich_card
để sử dụng làm mẫu 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 phù hợp. Văn bản dự phòng được sử dụng nếu thiết bị không thể nhận thẻ đa dạng thức 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 có liên quan. 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)
...
Thật 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 khi họ hỏi về việc mua sắm trực tuyến. Hiện tại, trợ lý kỹ thuật số của chúng tôi chưa hỗ trợ mua sắm trực tuyến. Vì vậy, chúng tôi sẽ gửi thông báo cho người dùng để thông báo 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 hỏi về việc mua sắm trực tuyến.
Tương tự như thay đổi trước đó mà chúng tôi đã thực hiện để cho phép người dùng hỏi về giờ làm việc, bạn có thể thấy thay đổi này ngay lập tức nếu đang sử dụng ngrok hoặc ngay khi triển khai mã này cho App Engine của GCP.
Trong phần tiếp theo, chúng ta sẽ sử dụng câu mở đầu cuộc trò chuyện và khối đề xuất để hướng cuộc trò chuyện đến kết quả tốt đẹp.
Sử dụng khối để định hướng cuộc trò chuyện
Chúng tôi đã thực hiện một số thay đổi đối với mã nguồn và triển khai nhân viên hỗ trợ kỹ thuật số đã cập nhật, nhưng chúng tôi không bao giờ mong đợi người dùng nhập "business-hours-inquiry" hoặc "online-shopping-info" để hỏi về doanh nghiệp. Hãy cập nhật câu mở đầu cuộc trò chuyện để khi mở cuộc trò chuyện, người dùng không chỉ được chào đón bằng một lời chào dễ thương mà còn được giới thiệu các câu mở đầu cuộc trò chuyện.
Chuyển đến Business Communications Console (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âu mở đầu cuộc trò chuyện cho "khối", "thẻ" và "băng chuyền". Mặc dù các tài khoản đó vẫn hoạt động, nhưng chúng không còn phù hợp với chức năng kinh doanh của chúng tôi nữa. Bạn có thể giữ lại các tính năng này để tiếp tục giới thiệu các tính năng đa dạng này hoặc xoá các tính năng này để trợ lý kỹ thuật số hiển thị các câu mở đầu cuộc trò chuyện dành riêng cho doanh nghiệp Bonjour Meal.
Chúng ta sẽ tạo hai câu mở đầu cuộc trò chuyện mới. Đối với câu hỏi đầu tiên, hãy đặt văn bản thành "Giờ hoạt động của bạn là gì?" và đặt Dữ liệu đăng lại thành "business-hours-inquiry". Đối với câu mở đầu cuộc trò chuyện thứ hai, hãy đặt văn bản thành "Tôi có thể mua hàng tại đây không?" và đặt Dữ liệu đăng lại thành "thông tin-mua-sắm-trực-tuyến".
Kết quả sẽ là cấu hình như ảnh chụp màn hình sau:
Cũng giống như các thay đổi khác được thực hiện trên Business Communications Console, bạn sẽ phải đợi một khoảng thời gian để các thay đổi này được áp dụng trên thiết bị di động của mình.
Giờ đây, khi đã hoàn tất phần câu mở đầu cuộc trò chuyện, chúng ta cũng cần có cách để hướng dẫn người dùng đến một lộ trình hài lòng 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 gửi tin nhắn để hướng dẫn người dùng đến các tính năng khác mà trợ lý kỹ thuật số có thể thực hiện. Vì vậy, chúng ta sẽ gửi một tin nhắn đề xuất người dùng làm việc khác với nhân viên hỗ trợ bất cứ khi nào họ hỏi về giờ làm việc hoặc mua sắm trực tuyến.
Ở cuối hàm, hãy thêm nội dung 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 BusinessMessagesSuggestion có giới hạn 25 ký tự, như mô tả trong tài liệu.
Với các câu mở đầu cuộc trò chuyện mới cập nhật và cách sử dụng chiến lược các khối đề xuất, 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.
6. Xin chúc mừng
Xin chúc mừng! Bạn đã tạo thành công trợ lý kỹ thuật số đầu tiên cho tính năng Tin nhắn cho doanh nghiệp!
Bạn đã triển khai một ứng dụng web để hỗ trợ trợ lý kỹ thuật số trên Business Messages, sử dụng Business Communications Console để sửa đổi trợ lý và định hình trải nghiệm người dùng với trợ lý kỹ thuật số bằng cách thay đổi mã nguồn.
Giờ đây, bạn đã biết các bước chính cần thiết để xây dựng trải nghiệm tương tác trên Business Messages và những điều thú vị có thể xảy ra từ đây trở đi. Bạn có thể mở rộng tác nhân để hỗ trợ tra cứu khoảng không quảng cáo hoặc giới thiệu một giỏ hàng để theo dõi những gì 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 trong trình đơn và sử dụng tính năng đề xuất để cho phép người dùng chọn các mục mà họ quan tâm.
Dưới đây là một đoạn giới thiệu về giao diện có thể xuất hiện.
Làm cách nào để tạo trải nghiệm trò chuyện tuyệt vời?
Những trợ lý tốt nhất cung cấp thông tin theo bối cảnh cho người dùng, đồng thời cung cấp chức năng thông qua cuộc trò chuyện để họ có thể tương tác và tương tác với doanh nghiệp như bình thường qua điện thoại hoặc thậm chí là trực tiếp. Hãy suy nghĩ về cách các chủ đề sau đây có thể áp dụng cho cuộc trò chuyện mà bạn muốn có với một doanh nghiệp mà bạn hợp tác.
Cung cấp ngữ cảnh và đặt kỳ vọng
Việc cung cấp ngữ cảnh có thể là bất kỳ nội dung nào, từ việc nêu rõ cách bạn có thể giúp người dùng cho đến việc giới thiệu nhân viên hỗ trợ kỹ thuật số bằng một tính cách mà người dùng có thể liên tưởng. Những nhân viên hỗ trợ thành công trên Business Messages sử dụng hình đại diện đại diện để cho người dùng biết họ đang trò chuyện với ai.
Việc đặt 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ợ tính năng tra cứu khoảng không quảng cáo, trước tiên, hãy cho người dùng biết rằng có thể không còn nhiều khoảng không quảng cáo trước khi đưa ra câu 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ừ các câu hỏi như kiểm tra trạng thái đơn đặt hàng đến kiểm tra xem một mặt hàng có còn hàng hay không, Tin nhắn cho doanh nghiệp có thể hỗ trợ các hoạt động 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 điện cho doanh nghiệp để được giải đáp thắc mắc, ngay cả khi câu trả lời đã có trên trang web của doanh nghiệp. Do đó, các doanh nghiệp phải đầu tư nhiều tài nguyên hơn để xử lý số lượng cuộc gọi, đặc biệt là trong mùa lễ.
Giữ chân người dùng
Cung cấp các điểm tiếp xúc trò chuyện để người dùng luôn tương tác trong cuộc trò chuyện. Giữa các thông báo, bạn có thể gọi chỉ báo nhập để cho người dùng biết rằng bạn đang xử lý câu trả lời cho họ.
Với các tính năng đa dạng như chỉ báo nhập, khối đề xuất, thẻ đa dạng và băng chuyền, bạn có thể hướng dẫn người dùng trải nghiệm theo lộ trình hài lòng để giúp họ hoàn thành một số nhiệm vụ nhất định, chẳng hạn như đặt hàng trong trình đơn gồm các mặt hàng. Mục tiêu là giảm lưu lượng truy cập cuộc gọi đến đường dây điện thoại của doanh nghiệp.
Điều quan trọng là 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 trả lời câu hỏi nhanh chóng. Trong một 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, điều này có thể dẫn đến trải nghiệm không tốt cho người dùng. May mắn là có một số cách để giải quyết vấn đề này, chẳng hạn như chuyển cuộc trò chuyện sang một nhân viên hỗ trợ trực tiếp. Chúng ta sẽ đề cập đến vấn đề này trong một lớp học lập trình sau này.
Tiếp theo là gì?
Khi đã sẵn sàng, hãy tham khảo 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
- Vòng đời của một nhân viên hỗ trợ: Từ khi tạo đến khi ra mắt
- Yêu cầu và nguyên tắc
- Nguyên tắc về biểu trưng
- Tất cả hướng dẫn
Tài liệu tham khảo
- SuggestedReply
- Tài liệu tham khảo về thông báo trong Business Messages
- Định nghĩa JSON cho RichCard