Line Chatbot as Conversation AI

บันทึกการอบรม ที่ software park ระหว่างวันที่ 3-4 สิงหาคม 2560 

   ขออนุญาตเขียนบทความนี้ขึ้นมา ไว้สำหรับอ่านเองกลัวลืม และเอาไว้เผยแพร่เผื่อใครสนใจ นำไปพัฒนาต่อยอด โดยผมได้ขออนุญาตจากท่านวิทยากร แล้ว (อาจารย์โคนัน จาก NECTEC )  ซึ่งท่านยินดีให้ทำเพื่อเผยแพร่ 

ขอบคุณอาจารย์ชัชวาล สังคีตตระการ (อาจาร์ยโคนัน) จาก NECTEC และ SOFTWARE PARK



 โดยหัวข้อการอบรมชื่อ Convesational AI  จัดโดย Software Park


วิทยากร ชื่อ 

ชัชวาล สังคีตตระการ

ผช. วิจัยอาวุโส
กลุ่มเทคโนโลยีเว็บเชิงสังคม
ห้องปฏิบัติการวิจัยเทคโนโลยีเสียง
หน่วยวิจัยวิทยาการสื่อสารของมนุษย์และคอมพิวเตอร์

ประวัติ http://www.conan.in.th/aboutme


โดยมี course  outline  การอบรม ตามหัวข้อดังนี้

#Day1
• Introduction about Chatbot (1h30min)
• Natural Language Understanding (1h30min)

• Business Intentions - Concept and Mindset (1h0min)
• Artificial Intelligence for Chatbot (30min)
• Workshop I - Chatbot Platform and Create Your First Own Chatbot (1h30min)


#Day2
• Workshop II - Design (1h30min)
• Workshop III - Create Your Own Chatbot (1h30min)

• Workshop IV - Create Your Own Chatbot (1h30min)
• Workshop V - Create Your Own Chatbot (1h30min)

 ----------------------------

   วิทยากรเริ่มต้นจากทฤษฏีที่เกี่ยวข้อง และเทคโนโลยีที่เกี่ยวข้อง ในด้านต่างๆ ซึ่งผมจะขอไม่กล่าวถึง แต่จะเริ่มจากการลองทำจริงกันเลย

เครื่องมือทีใช้ 

1.line  business แบบฟรี  สำหรับวิธีการสมัครการใช้งาน สามารถอ่านได้ที่  https://drivesoft.co.th/tutorial/system/line-bot-api-part-01   โดยผมจะไม่อธิบายในส่วนนี้น่ะครับ สามารถหาอ่านได้ โดยหลักๆ เราจะเลือกเป็น message API และเลือกเป็นแบบ web hook  โดยเราจะเอา webhook นี้มาจากของ Nectec ที่ให้บริการผ่าน abdul

    สำหรับการเรียกใช้งาน chatbot ที่เราสร้าง ก็ให้ add line ผ่านทาง Qr code ที่หน้า line business manager ที่เราสร้างน่ะครับ เราก็จะได้ chat bot ที่เราสร้างเพิ่มมาเป็นเพื่อนเรา


2. http://abdul.in.th/abdul/#  เป็นเสมือน broker หรือ service ที่จัดทำโดยอาจารย์โคนัน ของ NECTEC การใช้งานเพียงแค่เข้าไปที่เว็บ และ Login ด้วย facebook ก็จะสามารถใช้งานได้ โดยสามารถสร้าง bot ได้ จำนวน 3 bot แต่ละ bot รองรับ user ได้ 50 คน ( ถ้าเกินกว่านั้นต้องเสียค่าบริการรายเดือน)  สำหรับการใช้งาน หากรู้สึกว่ามันค้างๆ ให้พิมพ์คำว่า rebuild หรือ พพพพ แล้วรอตอบว่า ok  มันจะทำการ reservice แล้วจะทำให้ดีขึ้น

เริ่มกันเลยครับ

1.สมัครใช้งาน line business แบบฟรีให้เรียบร้อย โดยให้เลือกการใช้งานเป็น webhook แล้ว copy token เอาไว้



2.เข้าไปที่ http://abdul.in.th/abdul/# แล้ว login ด้วย facebook จากนั้น create bot ชื่ออะไรก็ได้ ตัวอย่างน่ะครับ ผมตั้งชื่อว่า kuru  จากนั้น ก็เอา token id ของ line ที่ได้มาจากข้อ 1 นำมาใส่ใน LINE Channel Access Token:  จากนั้นกดคำว่า set 


   สังเกตว่าตรง webhook จะมี url ปรากฏขึ้น ก็ให้ copy url  ทั้งหมด มาใส่ใน webhook ของ Line  ในข้อ 1


 คำอธิบายหน้าจอ abdul

หมายเลข 1 คือ web hook โดยเราจะต้อง copy webhook อันนี้ ไปใส่ใน line business webhook ที่เราสร้างขึ้น (โดยจะต้องทำข้อ 2 ก่อน แล้วกด set จึงจะแสดง webhook)

หมายเลข 2 คือ Line token เราจะต้องเอา line token จาก LINE BUSINESS ที่เราสร้างมาใส่ตรงนี้ แล้วกด set จึงจะได้ webhook

หมายเลข 3 คือ การกำหนดคำถาม จากตัวอย่าง คือ qr  *  หมายถึง ให้ใส่ qr นำหน้าแล้วตามด้วยอะไรก็ได้ ( เครื่องหมาย *  แทนค่าด้วยอะไรก็ได้)

หมายเลข 4 คือ  การกำหนดคำตอบ จากตัวอย่าง คือการเรียกใช้ service 

หมายเลข 5 คือ ชื่อ bot ที่แล้วสร้างขึ้น


สำหรับ  service ที่ทางอาจารย์โคนัน จาก NECTEC ทำให้มีเยอะครับ สามารถดูได้เพิ่มเติมได้ที่ http://abdul.in.th/wiki/doku.php?id=knowledge_services_skils

ตัวอย่าง service ที่มีให้ใช้

ค้นหาสายรถเมล์ได้ว่าไปไหน  -->  รถเมล์  8

ค้นหาราคาน้ำมัน  ราคาทองคำ ในปัจจุบันได้  -->  ทอง , ราคาน้ำมัน

ค้นหาพยากรณ์อากาศได้  --> อากาศ , ฝน

แปลง text เป็น qr code ได้แบบ realtime  -->  qr  www.google.com

ค้นเพลงไทยที่กำลังฮิต  --> เพลงฮิต

คิดเลขได้ -->  คิดเลข  5+9
ฯลฯ

โดยเราสามารถนำไปต่อยอดได้ โดยนำมาประยุกต์ใช้กับ SERVICE   XJSON  กับ XTEXT ของ abdul

ตัวอย่างการใช้งาน



การตั้งค่าใน Abdul

รูปการตั้งคำถาม คำตอบ หน้า abdul

*** คำอธิบายตัวย่อ #Q คือ การตั้งคำถามครับ ถ้ามีเครื่องหมายดอกจัน * หมายถึงรับค่าตัวแปรครับ
                         #A คือ การกำหนดการเรียกใช้ service ต่างๆ ครับ
                        #R คือ  ผลลัพธ์ที่ได้น่ะครับ


#Q:  qr *  -->  qr  http://www.google.com

#A: CALL:conan.QRGenerator $*

#R: เป็นรูป QR CODE

หน้าจอผลลัพธ์



$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$


สำหรับการนำไปต่อยอด  สำหรับผม ก็จะเขียนโปรแกรมด้วย PHP ดึงข้อมูลมาจากฐานข้อมูล mysql แล้วส่งออกเป็น json หรือ text   โดยเรียกใช้ผ่าน service XJSON กับ XTEXT ของทาง  abdul

ตัวอย่างการไปประยุกต์ใช้งาน 

1.หาเบอร์โทรสำนักต่างๆ   
  เรียกใช้ผ่าน service XJSON  ของ abdul


#คำถาม:  หา *     --- >    ตัวอย่างเช่น    หา  สารสนเทศ

#คำตอบ: ___XJSON___$http://xxx.xxx.xxx.xxx/samnak.php?name=*->object>array:results>GroupName,phonenumber

#R:

ตัวอย่าง code  samnak.php

//////////////
<?php

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');


include('connect_db.inc');

$name = $_REQUEST['name'];

$sql = "SELECT * FROM  phone  where  departmen name LIKE '%".$name."%' ";

//echo $sql;;


$resource = mysql_query($sql);

$count_row = mysql_num_rows($resource);

if($count_row > 0) {
while($result = mysql_fetch_assoc($resource)){
$rows[]=$result;
}


$data = json_encode($rows);
$totaldata = sizeof($rows);
$results = '{"results":'.$data.'}';

}else{
$results = '{"results":null}';
}

echo $results;
?>

เมื่อทดลอง run php แบบตรงๆ จะต้องได้ค่าออกมาแบบนี้




/////////////////

ตัวอย่างที่ 2. เรียกดูอุณหภูมิห้อง server
เรียกใช้ผ่าน service   XTEXT  ของ abdul

#Q:  net

#A: ___XTEXT___ $http://xxx.xxx.xxx.xxx/net.php

#R: ขณะนี้มีผู้ใช้งานอินเทอร์เน็ตที่XXX จำนวน   43 MB /XXX  0 MB  / XXX 11 MB  / XXX 15 MB  / 54 MB  /

 หน้าจอผลลัพธ์



////////////////////
<?php

//header('Content-type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');

//weather

$jsonurl = "http://api.openweathermap.org/data/2.5/weather?q=Bangkok&l=13.77415,100.51531&appid=xxxxxxxxxx";  // sapa
$json = file_get_contents($jsonurl);
$weather = json_decode($json);

$kelvin = $weather->main->temp;
$celcius = $kelvin - 273.15;
///

$Connect = mysql_connect("xxxxxx","xxxx","xxxx") or die("Error Connect to Database");
$DB = mysql_select_db("arduino");

$sql ="SELECT * FROM temp ORDER BY DATE DESC LIMIT 1 ";



$resource = mysql_query($sql);

$count_row = mysql_num_rows($resource);

if($count_row > 0) {
while($result =mysql_fetch_array($resource)){
$temp = $result['temp'];
$humidity =$result['humidity'];
$date = $result['date'];
$message = "ขณะนี้ห้อง server  มีอุณหภูมิ = ".'  '.$temp.' องศาเซลเซียส  และมีความชื้น = '.$humidity.' RH  อุณหภูมิภายนอกเท่ากับ '.$celcius.' ';
       
}

}else{
//$results = '{"results":null}';
}


?>

//////////////
การแปลงตัวเลขเป็นตัวหนังสือ

รูปการตั้งคำถาม คำตอบ หน้า abdul


#Q : แปลง *  -- >  แปลง 45789
#A: ___NUMBER___ $*
#R:  สี่หมื่นห้าพันเจ็ดร้อยแปดสิบเก้า




$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

การคิดเลข

#Q:  คิดเลข *  -- >   คิดเลข 89+76
#A: ___CALCULATOR___ $*
#R: 165.0






$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$



#Q: ราคาทอง
#A: ___GOLDPRICE___
#R: Gold Price by GTA 
ราคาทองตามประกาศของสมาคมค้าทองคำ
ประจำวันที่ 05/08/2560 
เวลา 09:20 น. (ครั้งที่ 1)
ทองคำ 96.5  รับซื้อ (บาท)/ขายออก (บาท)
ทองคำแท่ง 19,800.00/19,900.00
ทองรูปพรรณ 19,450.28/20,400.00

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

#Q: ราคาน้ำมัน
#A: ___OILPRICE___
#R: Gasoline 95  33.76
       Diesel  25.19
       Gasohol 91  26.38
       Gasohol E20  24.14
      เอ็นจีวี  13.37
      Gasohol 95  26.65
       Gasohol E85  19.94
     HyForce Diesel 28.19

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

#Q: ค้น  *  --> ค้น  ลำไย
#A: ___SEARCH___ $*
#R: ผู้สาวขาเลาะ - ลำไย ไหทองคำ 【Official Lyrics】 - YouTube
https://www.youtube.com/watch?v=xir5VPhlJ_M

เพลงใหม่ l ผู้สาวขาเฟี้ยว - ลำไย ไหทองคำ 【Official MV】 - YouTube
https://www.youtube.com/watch?v=iziuDVIquMM

[คลิปเต็มไม่ตัด] ค่ายลำไย น้อมรับ นายกตู่ ตำหนิแสดงล่อแหลม - YouTube
https://www.youtube.com/watch?v=phxAiA5glXA

ลำไย - วิกิพีเดีย
https://th.wikipedia.org/wiki/%E0%B8%A5%E0%B8%B3%E0%B9%84%E0%B8%A2

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

#Q: ค้น  *  --> ค้น  ลำไย
#A: ___CSEARCH___ $*
#R: ผู้สาวขาเลาะ - ลำไย ไหทองคำ 【Official Lyrics】 - YouTube
https://www.youtube.com/watch?v=xir5VPhlJ_M

เพลงใหม่ l ผู้สาวขาเฟี้ยว - ลำไย ไหทองคำ 【Official MV】 - YouTube
https://www.youtube.com/watch?v=iziuDVIquMM

[คลิปเต็มไม่ตัด] ค่ายลำไย น้อมรับ นายกตู่ ตำหนิแสดงล่อแหลม - YouTube
https://www.youtube.com/watch?v=phxAiA5glXA

ลำไย - วิกิพีเดีย
https://th.wikipedia.org/wiki/%E0%B8%A5%E0%B8%B3%E0%B9%84%E0%B8%A2

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

Q: คิดเลข  5+9
___CALCULATOR___ $*

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

#Q:  เพลงฮิต
#A: ___TOPSONG____
#R: ## ก่อนฤดูฝน - The TOYS ##
http://music.sanook.com/music/song/YrU_QnQid08k4fi2MSJNRw==/lyric/

## อย่าเพิ่งใจร้าย FEAT. URBOY TJ - The Mousses ##
http://music.sanook.com/music/song/czGQeLlzSxZaW40iukUdHw==/lyric/

## คนละชั้น - Jaonaay ##
http://music.sanook.com/music/song/NHJKEDeNq8aSyNr9Gsys3g==/lyric/

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

#Q: รถเมล์ 44
#A: CALL:abdul.bus_line $*
#R: สาย 44
ต้นทาง ตลาดแฮปปี้แลนด์
ปลายทาง ท่าเตียน
ประเภทรถ รถธรรมดา(ครีม - แดง) รถปรับอากาศ(ขาว - น้ำเงิน) รถเอกชนร่วมบริการ(รถมินิบัส)
ช่วงเวลาเดินรถ 05:00 - 22:00

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
#Q: อากาศ
#A: ___THFORECAST___
#R: พยากรณ์อากาศ 24 ชั่วโมงข้างหน้า ประเทศไทยตอนบนมีฝนเล็กน้อยถึงปานกลางอยู่ในเกณฑ์กระจาย และมีฝนตกหนักบางพื้นที่ในบริเวณภาคตะวันออกเฉียงเหนือตอนบน และภาคตะวันออก ส่วนภาคใต้มีฝนมากกว่าภาคอื่นๆ และมีฝนตกหนักหลายพื้นที่ โดยเฉพาะภาคใต้ฝั่งตะวันตก ขอให้ประชาชนในพื้นที่เสี่ยงภัยระมัดระวังอันตรายจากฝนตกหนักและฝนที่ตกสะสมไว้ด้วย สำหรับทะเลอันดามันมีคลื่นสูง 2-3 เมตร ชาวเรือควรเดินเรือด้วยความระมัดระวังและเรือเล็กควรงดออกจากฝั่ง

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

#Q: ฝน
#R: ___RAINRADAR___
#R: คำตอบเป็นรูปภาพเรดาห์ตรวจฝน

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Q  ร้อน
___WORLDWEATHER___

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

#Q: คลิป *   -->  คลิป ลำไย
#A: ___MYOUTUBE___$*
$R: พลงใหม่ l ผู้สาวขาเฟี้ยว - ลำไย ไหทองคำ 【Official MV】 - ความยาว: 5:14
https://www.youtube.com/watch?v=iziuDVIquMM

สาวน้อย 300 ล้านวิว ลำไย ไหทองคำ ปะทะ Joker Live ใน Joker Live EP.6 - ความยาว: 49:15
https://www.youtube.com/watch?v=5IiJWdsL74E

มันเกิดอะไรขึ้น จู่ๆลำไย ไหทองคำ ร้องได้4 เพลงแล้วก็เลิก - ความยาว: 8:47
https://www.youtube.com/watch?v=Xyftu_MGepU



$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

สรุป 
                ผมว่าเราสามารถนำ chatbot มาช่วยในการทำงานได้หลายๆ เรื่อง และสะดวกมากยิ่งขึ้น ยกตัวอย่างน่ะครับ  ที่ทำงานผมมีโปรแกรมสมุดโทรศัพท์ ให้ดาวน์โหลดทั้ง android และ ios การใช้งานก็จะให้ไปดาวน์โหลดมาติดตั้ง เปิดโปรแกรม และค้นหาเบอร์โทรที่ต้องการ  แต่ line chatbot ตัวนี้ เราก็เพียงใช้ line ปกติ add line chatbot เป็นเพื่อน ไม่ต้องติดตั้งโปรแกรมใดใดเพิ่มขึ้นเลย ก็สามารถหาเบอร์โทรศัพท์ที่ต้องการได้เหมือนกัน แต่มีข้อจำกัดอยู่ที่ตัวฟรี สามารถเพิ่มเพีือนได้เพียง 50 คน  ตอนนี้ ที่ผมนำมาใช้ก็คือ  หาเบอร์โทรแผนกต่างๆ ในที่ทำงาน , ถามอุณหภูมิห้อง server  , ถามเกี่ยวกับปริมาณการใช้งานอินเทอร์เน็ต และผู้ใช้งานอินเทอร์เน็ต  โดยข้อมูลที่ได้ จะเป็นแบบ realtime  และเขียนเชือมต่อกับพยากรณ์อากาศ  การหาอัตราการแลกเปลี่ยน เนื่องจากตอนนี้มีบางหน่วยงาน เปิด service api ให้เรียกใช้กันมากขึ้น 

              จริงๆ แล้วตอนอบรม ท่านวิทยากร ได้นำตัวอย่าง chatbot ที่อาจารย์ได้ทำขึ้นมาให้ดู พบว่ามีความฉลาดมาก ถามตอบได้เหมือนคนตอบจริงๆ  หวังว่าเพื่อนๆ ที่ได้อ่าน จะได้ช่วยกันพัฒนาต่อยอดให้มีความสามารถมากๆ ยิ่งขึ้นไปน่ะครับ

ความคิดเห็น

  1. นวัตกรรมใหม่ ๆ ดีครับ

    ตอบลบ
  2. Positive site, where did u come up with the information on this posting? I'm pleased I discovered it though, ill be checking back soon to find out what additional posts you include. chatbot ecommerce

    ตอบลบ

แสดงความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

แจ้งเตือนเข้าไลน์กลุ่ม ผ่าน Line notify เมื่อมีคน login เข้า server ของเราผ่าน SSH (linux) หรือ remote desktop เข้ามา (windows server)

การทำ cloud iot ด้วย thingsboard ไว้ใช้เองครับ

การประยุกต์ใช้ line notify ในการแจ้งปัญหาการใช้งาน สำหรับ php