วันพุธที่ 25 พฤษภาคม พ.ศ. 2559

NodeJS to BOT for Facebook

การใช้งาน NodeJS เพื่อมาทำ BOT ใช้สื่อสารใน Facebook

ก่อนอื่นเลยผมต้องขอกล่าวบอกว่าผมเองก็เพิ่งทำได้ครับ พอดีไปเห็นคลิปใน Youtube แล้วลองทำตามดู ปรากฏว่าทำไม่ได้เลยได้แต่โหลด Library มาแล้วก็มานั่งอ่านทำความเข้าใจจนทำได้ครับ

ส่วนนี้ผมจะนำเสนอการดึงค่า พยากรณ์อากาศ มาครับ เมื่อมีคนถามเราด้วย Keyword ที่เรากำหนดไว้ตัว โปรแกรมจะทำการ ดึงค่าจาก Server มาแสดงผลครับ เอาล่ะ มาเริ่มกันเลยดีกว่า

-สิ่งแรกเลยเราต้องไปโหลดโปรแกรม NodeJS ก่อนะครับ ที่ https://nodejs.org/en/

 สำหรับผมเองผมเลือก V4.4.5 LTS ครับเนื่องจากมีผู้ใช้งานกันเยอะถ้ามีปัญหาหรือติดขัดอย่างไรก็มีคนแก้ปัญหาได้เร็วครับ เพราะเจอเหมือนๆกัน 555+ แต่สำหรับ V6.2.0 เป็นตัวล่าสุดในปัจจุบันครับ ก็ตามแต่ที่ชอบนะครับผม

- เมื่อลงเสร็จแล้ว เรามาสร้างที่เก็บ Library ที่เราจะโหลดมาใช้กันครับ File ของเรากันดีกว่า

 Folder ที่เห็นอยู่คือผมสร้างไว้ก่อนแล้วครับแต่เรื่องที่เก็บ Library ไม่ต้องซีเรียสอะไรมากนะครับเพราะหากลบไปก็โหลดมาลงใหม่ได้

 

- ต่อมาเราจะมาโหลดตัว Library กันเพื่อเชื่อมต่อจาก NodeJS จากเครื่องเราไปยัง Facebook โหลดเลย https://www.npmjs.com

สำหรับตัว Library ที่เราจะใช้คือ facebook-chat-api ก็เคลิกเข้าไปครับ

เมื่อเข้ามาแล้ว ดูตรงหัวข้อ Install นะครับ เห็นคำสั่งไหม

   npm install facebook-chat-api

เมื่อเห็นแล้วให้ทำการเปิด Windows command ครับ 

ก็เรียก หน้าต่าง RUN ขึ้นมา แล้วพิม cmd ลงไป แล้ว กด Enter ด้วยครับ หลังจากที่ขึ้นมาแล้วหน้าต่าง command ให้พิมคำสั่งลงไปเลยครับ

   npm install facebook-chat-api

 มันจะทำการโหลดสักพักนึงครับไม่นาน


รอต่อไปครับจนกว่าจะขึ้นแบบรูปข้างล่าง


เมื่อขึ้นแบบรูปบนนี้แล้วนะครับ ให้ทำการหาตำแหน่งตรงไหนก็ได้ว่างๆ ในคอมพิวเตอร์

 

 คลิกขวาเลือก Text Document ครับ


พอได้มาแล้วให้ทำการเปลี่ยนชื่อมันใหม่และเปลี่ยนสกุลเป็น *.js ในที่นี้ผมขอใช้เป็น ABC.js ครับ



เมื่อเราทำการกด Enter มันจะถามเราว่าต้องการที่จะเปลี่ยนสกุล File ไหมเนื่องจากอาจจะไม่สามารถเรียกข้อมูลได้ให้เราตอบ YES เลยครับ

 

คลิกขวาที่ file ที่เราเปลียนชื่อครับ เลือก Edit เลย เพราะเราจะแก้ไขข้อมูลในนั้น

 

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(message.body, message.threadID);

});

});

ใส่ Code ตามนี้เลยครับ แล้ว แก้ไขส่วนของ 

FB_EMAIL เป็นเมลที่ใช้เข้า Facebook
FB_PASSWORD เป็นรหัสที่ใช้เข้า Facebook 

จากนั้น SAVE เลยคับ เพราะต่อไปเราจะทำสอบล่ะว่ามันจะ Login เข้า Facebook ได้ไหม ให้เราทำการเปิดที่เก็บ File ที่เราเพิ่ง SAVE ไปครับ เปิดมันขึ้นมาแล้วกด SHIFT + คลิกขวา

 เลือกที่ Open command window here เราจะได้หน้าต่าง command ขึ้นมาครับ หน้าต่าง Command อันนี้แตกต่างจากที่เราเรียกก่อนหน้าครับ เพราะหน้าต่าง Command  นี้ระบุตำแหน่งที่เราทำการคลิกขวาครับ นั่นก็คือ


 ในที่นี้ผมยกตัวอย่างของผมมันอยู่ที่ desktop นะครับ เพราะผมวาง FIle ABC.js ไว้ที่  Desktop เลยต้องมาเลือกที่ Desktop 

- จากนั้นพิม node ชื่อไฟ.js แล้วกด enter ครับ


สุดท้ายจะขึ้นมาแบบรูปล่างนี้นะครับ ถือว่าสามารถเชื่อมต่อกับ Facebook ได้ล่ะ ตัวโปรแกรมของเราตอนนี้ เมื่อมีใครคุยกับเราผ่าน Facebook ในช่อง แช็ทตัวโปรแกรมจะทำการรับตัวอักษรนั้นๆมา แล้วส่งกลับคืนไปครับ



จบขั้นตอนแรกในการเชื่อมต่อจาก NodeJS ไปยัง Facebook เดี๋ยวคครั้งหน้าผมจะมาต่อเรื่องทำอย่างไรจะดึงค่า พยากรณ์อากาศ มา เรื่องนี้ค่อนข้างยาวเลย ติดตามไว้เลยนะครับเดี๋ยวครั้งหน้าเจอกัน

7 ความคิดเห็น:

  1. ขอบคุณมากครับ ขอแก้ไขนิดนึงชื่อติดตั้ง package ผิดนะครับ อิอิ ผมทำตามทำไมถึงลงไม่ได้ลองดูแล้ว อ้าว ติดตั้ง package ผิด แก้ไขเป็น npm install facebook-chat-api

    ตอบลบ
    คำตอบ
    1. ขอบคุณมากครับผม ผมได้ทำการแก้ไขแล้วครับ

      ลบ
  2. ถามหน่อยซิครับ ตอนนี้ผมคิดไว้นะครับ ถ้าผมส่ง msg ไปที่ bot แล้วให้ bot ส่งคำสั่ง post ออกไปยังเวป thinkspeak พอจะเป็นไปได้ไหมครับ

    ถ้าได้ ผมต้องเขียน java ยังไงให้มัน post ออกไปยังเวปได้ครับ
    ขอบคุณครับ

    ตอบลบ
  3. เป็นไปได้ครับ เพราะผมเคยใช้งานผ่าน ESP8266 รับค่าจาก DHT 22 ที่วัดอุณหภูมิและความชื้น ส่ง msg ผ่านทาง HTTP ขึ้น Cloud ของ Thinkspeak ครับ

    ตอบลบ
  4. สอบถามเพิ่มเติมครับ ผมจะส่งเป็นภาษาไทยตอบกลับ แต่ไม่สามารถแสดงผลได้ครับ ต้องเซ็ทอะไรเพิ่มไหมครับ ขอบคุณครับ

    api.sendMessage("relay1 on\r\nรีเลย์1 ออน", event.threadID);

    ตอบลบ
  5. บอทจะตอบกลับมาว่า

    relay1 on
    ??????1 ???

    ภาษาไทย ไม่สามารถแสดงผลได้ครับ ต้องเซ็ทอะไรเพิ่มไหมครับ ขอบคุณครับ

    ตอบลบ
  6. The Borgata Hotel Casino & Spa | Atlantic City
    The Borgata Hotel Casino & Spa is the highest-scoring hotel bet365 우회 and casino in pci e 슬롯 the United 토토 꽁머니 States and 바카라사이트 the only casino in Atlantic City, NJ 윈윈 벳 먹튀 that accepts US

    ตอบลบ