Sử dụng chiếc SmartPhone Android cũ để làm "Server mini" chạy ChatBOT, tại sao không?

smartphone
android
chatbot

(Quang Minh) #1

Chào anh em.
Đọc tít chắc anh em sẽ cầm sẵn gạch để chăng vào cái topic này vì chả có thằng dở hơi nào lại dùng một cái điện thoại, lại còn cũ, để làm Server. Ờ thì cũng kỳ quoặc, cái điện thoại của tôi ấy, nó thậm chí còn không thể vừa mở Zing mp3 vừa lướt Facebook Lite được … nó chỉ có 768 MB bộ nhớ RAM và phải gánh vác phiên bản Android 6 Marshmallow (cụ thể là CM13).

Rồi một buổi tối đẹp trời, nàng treo *seen tin nhắn của tôi :slight_smile:, tôi nghĩ mình phải đi đâu đó vắng teo đi một thời gian, để buồn, để lo âu, để vực dậy, để tiến tới cho cái tuổi 21 phía trước. Nhưng, tôi ngại rằng mình sẽ để lại một khoảng trống lớn với mọi người khi tôi tạm biến mất, một khoảng trống to đùng luôn. Bạn bè tôi cần tôi khi muốn cài lại Win, mẹ tôi cũng chỉ biết có tôi mới xoá được lệnh của máy in, và cả thằng cháu tôi nữa, nó muốn tôi dạy nó lập trình “gì cũng được”, miễn là lập trình… (và tôi gửi nó web hackertyper, nó thành thánh trong lớp từ ấy).

Vậy nên tôi làm một con Chatbot cho mình. :confused:
Việc của con bot là thông báo cho mọi người rằng nếu có việc gấp, hãy gọi điện thoại trực tiếp cho tôi, để họ không gào bắn nước miếng vào mặt tôi và chỉ trích “Tao nhắn trên Messenger sao mày không xem hả?”.

Okay. Bắt đầu nào, chúng ta cần gì nhỉ? Một chiếc điện thoại cũ mèm, nhưng phải đủ trình để chạy được Android 5 trở lên nhé. (Các bạn có thể tìm ROM phù hợp với máy của mình trên XDA, rất rất nhiều, lưu ý là nên đọc kỹ description của tác giả để tránh mấy lỗi vặt). Chúng ta cần Android 5 là vì sẽ cần cài đặt một ứng dụng có tên Termux để chạy được Server.
Tiếp theo là chút kiến thức về Nodejs, đủ để đọc hiểu thôi, vì sẽ có thư viện hỗ trợ, đừng sợ.
Gì nữa nhể? Ờm, hết rồi. Giờ bắt đầu xây dựng nào!

Ở máy tính sẽ cần có Nodejs, chắc chắn rồi, Git nữa, để đẩy project lên Github tiện lợi. Một trình editter như là notepad, sublime, atom… gì cũng được.

Đây sẽ là một Chatbot sử dụng Facebook cá nhân nhé, Chatbot cho Fanpage đã có rất nhiều bài viết rồi.

THIẾT LẬP PROJECT

Tôi dùng Command Prompt, vì nó ngầu.
Tạo một thư mục mới, để tên là chatbot nhé.

> mkdir chatbot
> cd chatbot
> npm init

Sau đó thì chỉ cần cung cấp các thông tin theo yêu cầu là được. Giờ bạn sẽ có file package.json có nội dung tương tự như sau :

{
  "name": "chatbot",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"AHiHi\""
  },
  "author": "Minh",
  "license": "ISC"
}

Theo như config này, thì file chính của chúng ta là index.js. Nên giờ ta cần tạo file này, nội dung của nó đơn giản như thế này đã:

console.log("Hello, World!");

Giờ quay lại với CMD, gõ

> node index.js

Vậy là bạn đã viết xong chương trình Hello World bằng Nodejs rồi đấy. :sunglasses:
Tiếp theo, chúng ta cần cài đặt module Facebook Chat API, dùng lệnh:

> npm install facebook-chat-api

Oke. Giờ quay lại với cái file index.js, chúng ta sẽ phải code cho nó để nó có thể trả lời được tin nhắn trên Facebook, có code mẫu sẵn ở trên Github luôn, như này nè:

var login = require("facebook-chat-api");
// Create simple echo bot
login({email: "FB_EMAIL", password: "FB_PASSWORD"}, function callback (err, api) {
    if(err) return console.error(err);
    api.listen(function callback(err, message) {
        api.sendMessage("Chào chế, mình đang bận, nói chuyện sau đê!", message.threadID);
    });
});

Đó, save lại rồi chạy là bot của bạn đã sẵn sàng rồi.

> node index.js

Chú ý nhé, những bạn nào mà dùng phương thức xác thực 2 lớp thì sẽ bị gặp lỗi với đoạn code trên, vậy nên các bạn cần phải sửa code chút xíu, để thêm cái phần nhập mã xác thực vào. Cụ thể code như này:

const login = require("facebook-chat-api");
const readline = require("readline");

var rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

// Create simple echo bot
login({email: "FB_EMAIL", password: "FB_PASSWORD"}, function callback (err, api) {
    if(err) {
        switch (err.error) {
            case 'login-approval':
            console.log('Enter code > ');
            rl.on('line', (line) => {
                err.continue(line);
                rl.close();
            });
            break;
            default:
            console.error(err);
        }
        return;
    }

    api.listen(function callback(err, message) {
        api.sendMessage("Chào chế, mình đang bận, nói chuyện sau đê!", message.threadID);
    });
});

Tất tần tật hướng dẫn, code tham khảo đều có trên https://github.com/Schmavery/facebook-chat-api.

Máy tôi chạy ổn rồi, máy các ông thì sao? Ổn rồi chứ? Giờ tiếp tục sang cái điện thoại cổ lỗ sĩ nhé.
Trước nó thay cái đồng hồ báo thức, giờ thì khác rồi. Các ông cài Termux cho nó, (link: https://termux.com/, trên CHPlay: https://play.google.com/store/apps/details?id=com.termux).
Mở Termux lên, cài đặt Git nè, Nodejs nè, Vim nữa (nếu cần).
Lệnh cho bạn nào chưa từng dùng Linux:

> apt install nodejs
> apt install git

Ở máy tính, các ông đẩy project kia lên Github (chưa có tài khoản Github? tạo ngay đi ơ kìa!)
Create new, đặt tên cho nó, ở đây tôi đặt là chatbot luôn

> git init
> type bul > README.md
> git add .
> git commit -m "Lần đầu của em"
> git remote add origin https://github.com/[username]/chatbot.git
> git push -u origin master

Giờ chuyển sang con máy Android ghẻ, clone cái git đó về và chạy thôi, xong luôn, ez.

> git clone https://github.com/[username]/chatbot.git
> cd chatbot
> node index.js

Giờ thì chỉ việc sạc cho nó đủ cái điện, giữ cho nó đủ cái WiFI là nó chạy cho ngon lành cả ngày lẫn đêm rồi. Không như Heroku, để im 2 3 tiếng là server ngủ gật.

Các bạn có thể tự mình tạo ra bot theo ý riêng, chẳng hạn trả lời theo khung giờ, trả lời dựa trên từ khoá, hay sử dụng API của SImsimi (cái con gà chết tiệt ấy) để cho nó chat với bạn bè này (khuyên là không nên, vì con này mất nết lắm)… vả nhiều thứ hay ho nữa.
Một vài ý nhỏ: bản ROM CM13 này mình cài cho máy Samsung S Adv i9070 có niên đại 7 năm rồi, để nó chạy bền bỉ mình nghĩ các bạn nên gỡ Gapp, vì các dịch vụ của Google chạy rất tốn tài nguyên, vì máy không dùng như điện thoại bình thường :confused:
Thế nhé. Chào! :grinning:

Tham khảo:




(Thuc Nguyen Tan) #2

làm sao máy tính bên ngoài truy cập vào website trên smartphone thông qua 3g của smart phone bạn?


(Đỗ Xuân Tuấn ) #3

Bác cho em hướng dẫn sử dụng API của con SimSim ấy với ạ


(Quang Minh) #4

Ở đây mình không tạo website, chỉ là một con Bot hoạt động liên tục trên điện thoại thôi.
Nhưng nếu muốn tạo website để có thể truy cập được mọi nơi thì thím cần setup một cài thứ trên Modem nhà thím, DNS, Apache… là được thôi


(Hieu Nguyen Van) #5

Ngầu quá nhỉ :sunglasses::sunglasses:
Một bài chia sẻ rất hay. Bạn nào thích mày mò thì có thể ngịch.
Còn muốn deploy và dùng lâu dài ổn định thì tại sao ko đẩy lên heroku nhỉ :slight_smile:


(lite2210) #6

Về cấu hình thì 1 cái điện thoại android cổ lỗ xĩ cũng ngang 1 con Pi cấu hình thấp. Tận dụng nó làm server cũng là 1 ‘Pet Project’ hay ho :+1:


(Thuc Nguyen Tan) #7

À vậy là không làm server 3g di động được :heart_eyes:,


(Đặng Trung Nhân) #8

Bác nên viết dạng blog đi, ở đây bài dễ trôi lắm


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?