Showing posts with label bot. Show all posts

ทดลองสร้าง Line @ Bot แบบมั่วๆ

Line ได้ออก API สำหรับ Line @ และ Line Official มาได้สักพักนึงแล้วโดยใช้ชื่อว่า Messaging Api ซึ่งวันนี้เพิ่งมีโอกาสได้ลองเล่น API แบบจริงจังเลยมาเขียนบล็อกแชร์ประสบการณ์การใช้งาน API ของ Line ในการสร้าง Chat Bot แบบขำๆขึ้นมา

สิ่งที่ต้องการในการสร้าง Bot

- Server 1 ตัว (ใช้ Ubuntu 14.04)
- Nginx  (ใช้อะไรก็ได้แล้วแต่ถนัด)
- HTTPS ที่ valid cert อันนี้ต้องมีไม่งั้นใช้ไม่ได้ ในที่นี้ใช้ Let's Encrypt (ลองใช้ Cloudflare ที่ใช้ค่า - Default แล้วโดนบล็อกข้อมูลที่ส่งมาจาก Line เลยขี้เกียจหาวิธีแก้)
- PHP 5
- Python 3
- ChatterBot (เอาไว้สร้าง Bot Chat)
- MongoDB (เอาไว้เก็บข้อมูลของ ChatterBot)
- Sample-Line-Bot (https://github.com/kittinan/Sample-Line-Bot)

ติดตั้ง Nginx, php และ config https ไว้ให้พร้อมใช้งาน

Line Messaging API Architecture


ขออนุญาติก็อบรูปใน Line Developer มาให้ดู ซึ่งการทำงานก็ไม่มีไรมาก
เมื่อผู้ใช้ส่งข้อความมาที่ Line @ เรา Line ก็จะส่งข้อความนั้นมายัง Server ที่เราเซตเอาไว้



สมัครใช้งาน Line Messaging API

ตาม Link นี้เลย https://developers.line.me/messaging-api/getting-started ค่อยๆอ่าน แล้วทำตามอย่าข้ามขั้นตอนเด็ดขาด ไม่งั้นปวดหัวสุดๆ

สร้าง Chat Bot ด้วย ChatterBot

Install MongoDB

วิธีการตาม Link นี้เลย https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-ubuntu-14-04


sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
sudo echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org

เสร็จสิ้นการลง MongoDB

Install Python 3

ใน Ubuntu 14.04 นั้นลง Python 3 มาไว้อยู่แล้ว โดยแค่ลงเพิ่มอีก 2 package คือ python pip กับ python levenshtein

sudo apt-get install python3-pip python3-levenshtein python3-nltk python3-setuptools

Install ChatterBot ผ่าน python pip

sudo pip3 install chatterbot
sudo python3 -m nltk.downloader -d /usr/local/share/nltk_data brown movie_reviews conll2000 punkt averaged_perceptron_tagger

เมื่อลง Package ที่ต้องการต่างๆเรียบร้อยแล้วให้ clone https://github.com/kittinan/Sample-Line-Bot มายังเครื่อง เพื่อที่เราจะเริ่มทำการ train bot ให้ตอบแชทได้

เมื่อ clone มาเสร็จแล้วให้ไปยัง folder python แล้วรัน

python3 trainer.py sample_conversation.json

โดย sample_conversation.json นั้นเป็นตัวอย่างข้อมูลการสนทนา ถาม-ตอบ ซึ่งอยู่ใน format json array โดยส่วนตัวผมใช้ข้อมูลการ Chat กับเพื่อนใน Facebook ในการ train model ของ chat bot


เมื่อ train model เสร็จแล้วให้ทดสอบว่า chat bot ทำงานได้ถูกต้องโดยการรัน

python3 chat.py "ดีครับ"
python3 chat.py "ชื่อไร"

Bot ก็จะตอบมาดังภาพ


ดูรายละเอียด ChatterBot  เพิ่มเติม ได้ที่ http://chatterbot.readthedocs.io/en/stable/

ประกอบร่าง  Line API กับ ChatterBot

เข้าไป Line Business Center แล้วเข้า Messaging API Developer


ตั้งค่า Webhook URL ให้ชี้มายัง Domain Server ของเรา (Line บังคับให้ใช้ได้เฉพาะ https ที่  valid เท่านั้น) ดังภาพ

แล้ว Copy Channel Access Token มาใส่ในไฟล์ config.yml

แล้ว Install Dependencies ของ code php ให้เรียบร้อย ผ่านทาง composer

composer install

ลองไปคุยกับ bot ใน Line  bot ก็จะตอบข้อความเราตาม model ที่ train ไว้ดังภาพ



ปล.
- กราบขออภัยที่ไม่ได้ลงลึกในรายละเอียดการติดตั้งในส่วนต่างๆ
- คราวหน้าเราจะมาสร้าง model ของ chatbot จาก ข้อความที่เราเคย chat กับเพื่อนใน facebook กัน

วิธีเปิดบอท Rag บนโทรศัพท์ Android

วันนี้จะมาเล่าวิธีการเปิดบอท Rag ในโทรศัพท์นะครับ

สิ่งที่ต้องการ

- เครื่อง Android ที่ลง Linux เรียบร้อย วิธีลงดูได้จากบทความนี้ (วิธีการรัน Linux บนโทรศัพท์ Android)

- Bot Openkore ที่สามารถรันได้ตามปกติบนคอมอยู่แล้ว ในที่นี้ผมใช้ของท่าน Unstle (https://github.com/DunstleOS/openkore/) และใช้ Key ที่ท่าน unknown-item แจกใน tRO Mega Thread

- Firezilla (เอาไว้อัพไฟล์ Bot เข้า Android) หรือถ้าใครใช้ git เป็นก็อัพผ่าน git ก็ได้สะดวกดี


การติดตั้ง

ในที่นี้เลือกใช้ Linux Distribution :  Debian Jessie นะครับ

เปิดโปรแกรม JuiceSSH (ที่ได้ลงไว้ในบทความ วิธีการรัน Linux บนโทรศัพท์ Android) และเชื่อมต่อให้เรียบร้อย

เริ่มการติดตั้ง Package ที่ Bot ต้องการ โดยสามารถดูได้จาก http://openkore.com/index.php/How_to_run_OpenKore โดยผมได้รวบรวมเป็นคำสั่งเดียวดังนี้

sudo apt-get install g++ libreadline6-dev libcurl4-gnutls-dev unzip make libncurses5-dev -y

ภาพเมื่อลง Package ที่ Bot ต้องการเสร็จ


เมื่อติดตั้งเสร็จแล้วเราจะอัพ Bot เข้า Android

วิธีการอัพไฟล์ด้วย Filezilla

เราจะใช้ Filezilla อัพ Bot เข้า Android โดยไปที่ File > Site Manager กด New Site แล้วตั้งชื่อไรก็ได้ในที่นี้ตั้งว่า Android

Host: ใส่ ip ของ Android
Port: 22
Protocol: SFTP
Logon Type: Normal
Username: android
Password: changeme (หรือตามที่ท่านตั้งไว้)

เมื่อใส่ข้อมูลเรียบร้อยแล้วกด Connect แล้วจะมี dialog เด้งขึ้นมา ให้ติ๊ก Always trust this host แล้วกด OK แล้วให้เข้า Edit > Setting > Transfers ใส่ Maximum simultaneous transers เป็น 10 เพื่อเพิ่มความเร็วในการอัพโหลด





เสร็จแล้วลาก Folder Bot ฝั่งซ้ายมือไปยังฝั่งขวามือดังภาพ



เมื่ออัพไฟล์ Bot เสร็จแล้วให้กลับมาที่โทรศัพท์ เพื่อสั่งรันบอท

ls -l  <<< ดู ไฟล์ใน Folder ที่อยู่ปัจจุบัน
cd opk-unstle  <<< เปลี่ยน Folder ไปยัง Bot ในที่นี้ชื่อ folder คือ opk-unstle
perl openkore.pl <<< รันบอท รันครั้งแรกบอทจะ compile code ก่อน ก็รอสักพัก


ภาพ Bot ขณะ Compile


เมื่อ Compile บอทเรียบร้อย Bot ก็จะทำงานแล้วดังภาพ





เสร็จสิ้นการ Bot บน Android