Line bot

LINE bot (LINE Chatbot)

สำหรับบทความนี้ต่อเนื่องมาจาก บทความก่อนหน้า ที่เล่าถึง LINE API  ซึ่งหลังจากเราทราบกระบวนการทำงานระหว่าง LINE Client – Server แล้วทีนี้เราลองมาทำ LINE Robot หรือ Chat Bot มาลองเล่นกันดูครับ โดย code นี้ถูกเก็บใน Git บน GitHub ซึ่งสามารถเข้าไป download กันได้ free ครับ

robot       LINE

Requirement  (refer: https://github.com/Saixiii/LINE-API)

1. Python2.7
2. Apache thrift

$ # Install your choice of java
$ sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libboost-system-dev libboost-filesystem-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev 
$ cd /tmp 
$ curl http://archive.apache.org/dist/thrift/0.9.1/thrift-0.9.1.tar.gz | tar zx 
$ cd thrift-0.9.1/ 
$ ./configure 
$ make 
$ sudo make install 
$ thrift --help

3. Python Line lib

$ pip install line
or
$ easy_install line

*** หมายเหตุ python lib ดังกล่าวอาจมี bug อันเนื่องมาจาก ทาง LINE  มีการออกจดหมายเตือนเรื่องลิขสิทธิ์ แนะนำให้  download zip file จาก https://github.com/Saixiii/LINE-API

$ python setup.py install

หลังจาก install environment เรียบร้อยแล้ว ก็ถึงเวลาลุยทำ chatbot ครับ

1. Login and Pin authentication

>>> from line import LineClient
>>> client = LineClient("username@gmail.com", "xxxxxxxxxx")
Enter PinCode '7390' to your mobile phone in 2 minutes
>>> client = LineClient("username", "xxxxxxxxxx")
Enter PinCode '9779' to your mobile phone in 2 minutes

2. Profile and Contacts

# List profile
>> profile = client.profile
>> print profile
<LineContact Test>
# Send message
>>> friend = client.contacts[0]
>>> friend.sendMessage("hello world!")
True
# Send image
>>> friend.sendImage("./image.jpg") # use your path for image to send
True
# Send url image
>>> friend.sendImageWithURL("https://saixiii.com/u/3346407?v=3&s=460")
True
# Send sticker
>>> friend.sendSticker() # send a default sticker
True
>>> friend.sendSticker(stickerId="13",stickerPackageId="1",stickerVersion="100")
True
# Fetch incoming messages
>>> messages = friend.getRecentMessages(count=10)
>>> print messages
[LineMessage (contentType=NONE, sender=None, receiver=<LineContact Test>, msg="hello World!")]

3. Rooms and Groups

# List group/room name
>>> print client.groups
[<LineGroup Test-B #4>, <LineGroup Test-A #1 (invited)>]
>>> print client.rooms
<LineRoom [<LineContact room1>]>, <LineRoom [<LineContact room2>, <LineContact room3>]>]
# Accept invitation
>>> group = client.groups[1]
>>> group.acceptGroupInvitation()
True
# Fetch incoming messages
>>> messages = client.contacts[0].getRecentMessages(count=10)
>>> messages = client.groups[0].getRecentMessages(count=15)
# Get group ID by name
>>> group = client.getGroupByName('GROUP_NAME')
>>> contact = client.getContactByName('CONTACT_NAME')

4. Echo bot

หลักจากเทส command เสร็จแล้วลองมาสร้าง chat bot แบบง่ายสุดคือ Echo bot ซึ่งก็คือ ถามคำอะไรไปมันก็ตอบคำนั้นกับ ซึงเราจะอาศัย  function longPoll()  ทำหน้าที่ fetch incoming messages ที่เข้ามาหา bot  จากนั้นก็ใช้  function sendMessage(sender,msg)  ตอบกลับไป สุดท้ายอาศัย while loop ให้กลับไป fetch meesages วนไปแบบนี้ตลอด

from line import LineClient, LineGroup, LineContact

try:
   client = LineClient("ID", "PASSWORD")
   #client = LineClient(authToken="AUTHTOKEN")
except:
   print "Login Failed"

while True:
   op_list = []

   for op in client.longPoll():
      op_list.append(op)

   for op in op_list:
      sender   = op[0]
      receiver = op[1]
      message  = op[2]

      msg = message.text
      receiver.sendMessage("[%s] %s" % (sender.name, msg))

 

สำหรับผู้ที่สนใจ LINE Bot แบบ Official สามารถอ่านต่อได้จากบทความนี้ครับ

บทที่1 ทำ LINE Bot สามารถโต้ตอบ หรือ Chatbot ด้วย Python (Official)

 

Reference:

 

Author: Suphakit Annoppornchai

Credit: https://saixiii.com

8 Thoughts to “ทำ LINE bot (Unofficial) สามารถโต้ตอบแบบ Chatbot หรือ Echobot”

  1. […] เราไป hack API เค้ามาใช้ (สร้าง LINE Bot Unofficial) จึงจะเป็นต้องใช้ ID Line@ account […]

  2. […] ทำ LINE bot (Unofficial) สามารถโต้ตอบแบบ Chatbot หรือ Echo… […]

  3. […] เราไป hack API เค้ามาใช้ (สร้าง LINE Bot Unofficial) จึงจะเป็นต้องใช้ ID Line@ account […]

  4. […] ทำ LINE bot (Unofficial) สามารถโต้ตอบแบบ Chatbot หรือ Echo… […]

  5. […] ทำ LINE bot (Unofficial) สามารถโต้ตอบแบบ Chatbot หรือ Echo… […]

  6. […] ทำ LINE bot (Unofficial) สามารถโต้ตอบแบบ Chatbot หรือ Echo… […]

  7. […] ต่อไปเป็นวิธีการ ทำ LINE bot แบบ Unofficial สามารถโต้ตอบแบบ Charbot […]

  8. […] ทำ LINE bot (Unofficial) สามารถโต้ตอบแบบ Chatbot หรือ Echo… […]

Leave a Reply