Mã thay thế

Mã thay thế là một từ hay cụm từ bắt đầu bởi dấu { và kết thúc bởi dấu }. Trong nội dung hành động của một kịch bản chatbot, bạn có thể sử dụng mã thay thế ở các ô nhập liệu kiểu chuỗi. Khi thực hiện hành động đó, hệ thống sẽ tự động thay thế "mã thay thế" bằng nội dung của mã đó. Ví dụ {customer.name} sẽ được thay bằng tên khách hàng, hay {customer.last_order.total} sẽ được thay bằng giá trị của đơn hàng cuối cùng của khách hàng.

Danh sách mã thay thế

Đối tượng Khách hàng (customer)

Khách hàng là người nhận nội dung tin nhắn chatbot hay là mục tiêu của một hành động của chatbot.

  • {customer.id}: mã số định danh của khách hàng này (mỗi khách hàng sẽ có một mã định danh khác nhau).

  • {customer.name}: tên đầy đủ của khách hàng.

  • {customer.full_name}: tương tự {customer.name}.

  • {customer.first_name}: tên của khách hàng.

  • {customer.last_name}: họ của khách hàng.

  • {customer.phone}: số điện thoại của khách hàng.

  • {customer.address}: địa chỉ của khách hàng.

  • {customer.email}: địa chỉ email của khách hàng.

  • {customer.note}: là ghi chú của khách hàng.

  • {customer.last_order.*}: là một đối tượng đơn hàng, là đơn hàng gần nhất của khách hàng này. Xem phần Đối tượng Đơn hàng.

Đối tượng Đơn hàng (order)

Đơn hàng chỉ có thể sử dụng đối với một số điều kiện kích hoạt kịch bản như: Khi thay đổi trạng thái đơn hàng, khi có đơn hàng mới. Hoặc có thể sử dụng gián tiếp thông qua {customer.last_order} ví dụ: {customer.last_order.total} hay {customer.last_order.created_date}.

  • {order.id}: mã số định danh của đơn hàng (mỗi đơn hàng sẽ có một mã định danh khác nhau).

  • {order.lines}: danh sách các sản phẩm của đơn hàng đó.

  • {order.total}: tổng giá trị thành tiền của đơn hàng sau khi giảm giá, khuyến mãi.

  • {order.subtotal}: tổng giá trị thành tiền của đơn hàng trước khi giảm giá, khuyến mãi.

  • {order.created_date}: ngày tạo đơn hàng.

  • {order.customer.*}: là một đối tượng, là khách hàng mua đơn hàng này. Xem phần Đối tượng Khách hàng.

Đối tượng Kênh (channel)

Kênh ví dụ Facebook Fanpage, Zalo OA, Shopee.

  • {channel.name}: là tên của kênh, đối với Fanpage là Tên Fanpage, đối với Zalo OA là tên ZaloOA...

Đối tượng Sản phẩm/Hàng hóa (product)

Mã thay thế này chỉ có tác dụng khi khách hàng comment vào bài viết chủ đề có chứa hashtag #sku_ bài viết Facebook. Ví dụ hastag #sku_12345 tức là khi khách hàng tương tác với bài viết này, mã thay thế sản phẩm sẽ tìm sản phẩm có SKU 12345.

  • {product.id}: là mã định danh sách sản phẩm, mỗi sản phẩm có một mã định danh khác nhau. (Nên dùng SKU là tiêu chuẩn của thế giới).

  • {product.name}: là tên sản phẩm.

  • {product.sku}: là SKU của sản phẩm.

  • {product.attribute}: là danh sách các thuộc tính và giá trị của thuộc tính của sản phẩm này.

  • {product.price}: là giá bán của sản phẩm.

  • {product.inventory}:

  • {product.unit}: là đơn vị tính của sản phẩm.

  • {product.description}: là thông tin mô tả của sản phẩm.

Đối tượng Ref

Ref (Reference) tức là mã ref được dùng trong trường hợp sử dụng link m.me của Facebook.

Ví dụ: đối với link https://m.me/doopagecrm?ref={"name": "cuong nguyen", "phone":"0389179333"} thì ref là phần {"name": "cuong nguyen", "phone":"0389179333"}. Ref phải có định dạng JSON. Như vậy, trong nội dung chatbot, ta có thể trích lấy được các thông tin từ ref bằng mã thay thế sau:

  • {ref.name}: lấy thuộc tính "name" trong mã ref. Đối với link m.me trong ví dụ trên thì mã này sẽ có giá trị là cuong nguyen.

  • {ref.phone}: lấy thuộc tính "phone" trong mã ref. Trong ví dụ link m.me ở trên thì mã này sẽ có giá trị là 0389179333.

  • {ref.any}: lấy thuộc tính "any" trong mã ref. Bạn có thể thay any bằng bất cứ thuộc tính nào, miễn thuộc tính đó được truyền vào ref trong link m.me dưới định dạng JSON.

Hàm xử lý Mã thay thế (nâng cao)

Nội dung này nếu người đọc có am hiểu về hàm xử lý Excel hoặc Python sẽ dễ dàng nắm được.

Mỗi mã thay thế có thể là một chuỗi các ký tự, hoặc một số thực. Trong trường hợp người sử dụng có nhu cầu xử lý mã thay thế nâng cao ví dụ như cắt chuỗi, gộp chuỗi, nối chuỗi, lấy căn bậc hai, hay tính toán một công thức từ mã thay thế... Hệ thống có hỗ trợ tất các các hàm xử lý chuỗi và số trong ngôn ngữ lập trình Python.

Ví dụ 1: trong nội dung ghi chú của khách hàng có giá trị Đơn #1345; 25/7/2017; 300.000VND;. Ghi chú này được ghi lại bởi một nhân viên trực chat hoặc có thể được import bằng file excel. Khi sử dụng mã thay thế {customer.note} thì mã đó sẽ được thay bằng toàn bộ Đơn #1345; 25/7/2017; 300.000VND;, có thể không khả dụng trong trường hợp chúng ta chỉ cần một phần trong đó. Trong trường hợp này bạn có thể tậng dụng hàm split để tách chuỗi customer.note bởi dấu ;, tuy nhiên, hàm split sẽ trả về giá trị là kiểu List bao gồm 3 phần tử: Đơn #1345, 25/7/2017, 300.000VND. Khi đó nếu bạn chỉ muốn lấy ví dụ phần tử thứ nhất, thì có thể dùng hàm pop. Kết quả:

  • {customer.note.split(';').pop(0)}: có giá trị là Đơn #1345.

  • {customer.note.split(';').pop(1)}: có giá trị là 25/7/2017.

  • {customer.note.split(';')}.pop(2)}: có giá trị là 300.000VND.

Ví dụ 2: hình ảnh một người sử dụng dấu | làm dấu phân cách để tách note khi gửi tin nhắn ZNS.

Danh sách các hàm xử lý

Hệ thống hỗ trợ tất cả các hàm xử lý Chuỗi, Số, List, Tuple, Dictionary trong Python. Hiện tại tất cả các mã thay thế của hệ thống đều có kiểu chuỗi (String).

Ngoài ra, bạn có thể tham khảo thêm

Kiếm thử hàm xử lý

Trong trường hợp phải viết xử lý phức tạp, bạn có thể kiểm thực xem kết quả xử lý của mình đã đúng hay chưa bằng công cụ sau:

Truy cập https://www.programiz.com/python-programming/online-compiler/

Sao chép và dán nội dung sau vào tab main.py:

print("Đơn #1345; 25/7/2017; 300.000VND;".split(";").pop(0))

Sau đó bấm Run, bạn sẽ thấy kết quả xử lý qua các hàm của bạn. Thông tin thêm, việc bao hàm xử lý của bạn bằng print() chỉ có ý nghĩa là in kết quả ra màn hình, hàm này không có giá trị gì khi sử dụng trong chatbot và cần phải bỏ đi. Chúng ta phải sử dụng "Đơn #1345; 25/7/2017; 300.000VND;" thay vì {customer.note} là bởi vì {customer.note} chỉ có thể được sử dụng trong chatbot. Khi thử nghiệm xong hàm xử lý, bạn hãy thay thế lại phần "Đơn #1345; 25/7/2017; 300.000VND;" bằng customer.note là được nhé. Đừng quên bao tất cả trong {} nhé.

Last updated