Thứ Hai, 19 tháng 9, 2016

Giới thiệu về Facebook Messager Platform - Cộng nghệ truyền tải message trực tiếp thông qua Facebook Messenger

Giới thiệu về Facebook Messager Platform - Cộng nghệ truyền tải message trực tiếp thông qua Facebook Messenger

Tác giả: Trần Văn Thành

 

Mục đích: Thông qua việc xử lý ngôn ngữ tự nhiên (đã giới thiệu tại bài Giới thiệu về Natural Language Processing (NLP) và API.ai – Công nghệ tích hợp xử lí ngôn ngữ tự nhiên – http://www.kieutrongkhanh.net/2016/09/gioi-thieu-ve-natural-language.html), chúng tôi sẽ giới thiệu tổng quan về Facebook Messenger Platform. Hơn thế nữa, chúng tôi sẽ hướng dẫn sử dụng Facebook Messenger Platform kết hợp với xử lý ngôn ngữ tự nhiên để tạo một chatbot (chat tự động)

Yêu cầu về các kiến thức

            - Nắm vững kiến thức về Web Service - RESTful (có thể tham khảo tại địa chỉ http://www.kieutrongkhanh.net/2016/08/gioi-thieu-ve-restful-web-services-cong.html và nội dung Web Service tại địa chỉ http://www.kieutrongkhanh.net/search/label/Web%20Services )

            - Nắm vững ít nhất 1 ngôn ngữ lập trình hướng đối tượng

            - Nắm vững các khái niệm về NLP và API.ai (tham khảo tại địa chỉ http://www.kieutrongkhanh.net/2016/09/gioi-thieu-ve-natural-language.html)

 

I.        Giới thiệu về Facebook Messenger Platform và bộ API Send/Receive:

1.       Giới thiệu về Facebook Messenger Platform:

            Facebook Messenger Platform là công nghệ mới được Facebook giới thiệu tại sự kiện H8 diễn ra vào tháng 4 năm 2016. Platform này giúp cho các lập trình viên có công cụ để truyền tải nhưng tin nhắn trực tiếp tới người sử dụng trên chính Page của Facebook. Qua đó, Facebook muốn đẩy mạnh việc phát triển E - commerce trên chính Page của nó cũng như việc góp phần đẩy mạnh sự phát triển của chatbot hiện tại. 

Hình bên dưới thể hiện mô hình tổng quát giữa FaceBook Messenger với Server ứng dụng của người phát triển chat bot

Facebook Messenger Platform sẽ thực hiện việc giao tiếp với server của người phát triển chat bot với ứng dụng Messenger thông qua việc gửi message đến Webhook kết hợp với việc sử dụng RESTful api. Từ đây, những thay đổi trên Page sẽ được thông báo trực tiếp tới server thông qua Webhook. Webhook đóng vai trò trung gian truyền tải nhưng message giữa người dùng và server.

2.        Giới thiệu về bộ API Send/Receive:

            Messenger Platform sẽ thực hiện giao tiếp thông qua RESTful api, mà cụ thể hơn Graph api của Facebook. Send/Recieve api là một trong những phần quan trọng, cung cấp những phương thức truyền nhận thông tin từ người dùng tới server cũng như từ server tới người dùng. Lập trình viên muốn phát triển hệ thống chatbot chỉ cần tập trung vào việc xây dựng server, xử lý ngôn ngữ tự nhiên mà không nhất thiết phải tiến hành phát triển ứng dụng mobile hay ứng dụng web để giao tiếp với người dùng. Lập trình viên sử dụng send/receive API để giảm thiểu thời gian và chi phí trong quá trình phát triển.

            Điểm mạnh của bộ API này là được hỗ trợ về việc hiển thị giao diện cho người dùng, người dùng sẽ không cần tốn thời gian để tìm và download ứng dụng mới theo cách truyền thống, người dùng chỉ cần tiến hành những việc xem, đặt hàng, thanh toán, … trực tiếp trên Messenger. Lập trình viên cũng không phải tốn thời gian vào việc xây dựng, phát triển hay quảng cáo ứng dụng. Tuy nhiên, việc quá phụ thuộc vào một platform cụ thể như Messenger cũng là điểm yếu và hạn chế trong quá trình phát triển ứng dụng vì họ buộc phải tuân thủ luật của người thiết kế và cung cấp platform.

 

II.    Hướng dẫn tạo một chatbot đơn giản

            Chúng ta sẽ áp dụng bộ API Send/Recieve để tạo một chatbot đơn giản. Trong bài hướng dẫn, chúng tôi sử dụng ngôn ngữ nodejs để tiến hành demo. Tuy nhiên, quí vị có thể sử dụng bất kì ngôn ngữ nào có hỗ trợ việc tạo gửi http request để áp dụng.

 

1.           Tạo lập liên kết giữa Webhook và Server

            Đầu tiên, chúng ta tiến hành tạo project NodeJS. Ở đây, chúng tôi sử dụng bộ công cụ Webstorm để phát triển ứng dụng kết hợp với framework là Express trong NodeJS.

 

            Tiếp đến, chúng ta tạo một module đảm nhiệm việc xử lý các request mà server sẽ nhận được khi webhook forward request từ ứng dụng Messenger.

            Chúng ta tiếp tục việc khai báo đường dẫn của module này, trong file app.js; Ở bước thiết lập này, chúng ta sẽ tạo dường dẫn vào module trước đó là “/webhook”. Trong nội dung demo, chúng tôi đang thiết lập đường dẫn đến local của server là “http://localhost:3000/webhook“.

           

            Việc thiết lập port cho server sẽ được thực hiện ở trong file www.js

            Đến đây, chúng ta đã hoàn thành việc tạo server phục vụ cho việc xử lý. Chúng ta chạy thử project.

            Kế tiếp, chúng ta sẽ public server vừa cấu hình lên mạng internet thông qua một tunnels có tên NGROK. Quí vị có thể tải tunnel này tại địa chỉ https://ngrok.com

Chúng ta thực hiện chạy Ngrok trực tiếp trên Webstorm thông qua terminal

            Như vậy, chúng ta đã hoàn thành việc public server với đường link như hình bên dưới

            Bước tiếp theo, chúng ta thực hiện tạo ứng dụngtrên trang Facebook Developer. Sau khi tạo lập, chúng ta add Product cần thiết ví dụ như “Messenger” và “Webhook”

 

Để setup Webhook cho Messenger, chúng ta cần có đường dẫn sử dụng giao thức https và verify token.

·        Với đường dẫn https, chúng ta đã có được thông qua ngrok.

·        Verify token là một chuỗi kí tự để giúp Facebook có thể hoàn thành việc xác nhận liên kết với server của chúng ta. Face book cho phép chúng ta định nghĩa chuỗi kí tự đó.

Chúng ta bổ sung code vào module để giúp cho Webhook có thể xác nhận được server của chúng ta.

Tiến hành chạy lại project để verify với Wehook.

 

Sau khi verify, chúng ta sẽ chọn page được subcribes bởi Webhook nhằm yêu cầu Webhook notify sự thay đổi đến server khi có sự tương tác của người dùng trên page

 

           

Chúng ta vừa hoàn thành việc liên kết giữa Webhook và server.

 

2.       Tạo lập các pattern xử lý ngôn ngữ bằng api.ai

            Thực hiện tạo các Intent như trong hình vẽ bên dưới (tham khảo về Intent và cách thức tạo tại địa chỉ http://www.kieutrongkhanh.net/2016/09/gioi-thieu-ve-natural-language.html)

            Trong bài này, chúng ta chọn Intent Greeting để demo. Quí vị áp dụng cách này cho những Intent khác

3.       Xử lý các request từ Webhook

            Chúng ta sẽ xử lý ứng dụng theo mô hình như sau

           

            Tổng quan, Chúng ta sẽ phải xử lý các request từ Webhook để xác định yêu cầu của người dùng thông qua api.ai. Từ kết quả nhận được, hệ thống của chúng ta được xây dựng để đáp ứng các yêu cầu của người tùy theo các Intent

Code demo được thể hiện như sau

·        Để có thể cùng sử dụng được API.ai và Facebook API, chúng ta cần 2 token bao gồm API.ai token và Facebook page access token.

·        Trong code chúng ta sẽ đặt 02 giá trị này dưới dạng hằng số - constant.

../../../../../../../Desktop/Screen%20Shot%202016-09-19%20at%208.33.4

                                                                                                      

·        Những request được gửi đến từ Webhook sẽ được tiếp tục gửi lên Api.ai

 

·        Tùy theo kết quả trả về, chúng ta sẽ phân biệt Context qua cách đặt tên Intent. Những Intent cùng context sẽ được đặt thành một nhóm prefix riêng biệt. Trong context, chúng ta sẽ sử dụng action để phân biệt giữa Intent với nhau. Với cách thức như đã nêu, chúng ta có thể dễ dàng xử lý từng trường hợp của Intent cũng như phân biệt được các Context với nhau.

·        Chúng ta chạy thử project. Kết quả khi chạy ứng dụng server thông qua Facebook Messenger như sau

 

            Chúng ta vừa hoàn tất việc xây dựng ứng dụng chat bot áp dụng bộ Send/Receive API của Facebook của Messenger Platform.

Hơn thế nữa, Send/Receive API ngày càng được nâng cấp cung cấp càng nhiều những kiểu định dạng trả về cho người dùng. Quí vị có thể áp dụng chúng để tạo ra các chatbot tùy theo nhu cầu.

Rất mong sự đóng góp của quí vị và hẹn gặp quí vị ở một chủ đề khác.

Không có nhận xét nào:

Đăng nhận xét