การสร้าง Facebook Messenger ChatBot และ Python ตอนที่ 4

ตอนนี้จะกล่าวถึงการสมัครเข้าใช้งาน Facebook Messenger ครับ ความจริงแล้ว ท่านสามารถไปทำตามขั้นตอนที่ Facebook เตรียมไว้ให้ได้เลยที่ https://developers.facebook.com/docs/messenger-platform/guides/setup ดังนั้นจะข้ามไปสู่วิธีการนำเอาสิ่งที่ได้สร้างไว้ในตอนที่ 3 มาใช้เลย

การนำค่า Access Token มาใช้

เลือกรายการ Messenger -> การตั้งค่า แล้วไปที่ การสร้าง Token
เลือกเพจ (ตัวแทนของ Chatbot ของเราที่อยู่ฝั่ง Facebook)  แล้วทาง Facebook จะทำการสร้าง Access Token ให้เรา โดยเพจแต่ละเพจจะมี Access Token ที่แตกต่างกัน และเราต้องบันทึกค่านี้ไว้ส่วนตัว เพื่อจะนำไปใช้ในขั้นตอนต่อไป

ปรับปรุง Chatbot ของเราก่อน

ในตอนที่ 3 ผมได้ละค่าของตัวแปรไว้สองตัวใน chatbot.py คือ verify_token และ access_token ซึ่งในตอนนั้นเรายังไม่มีค่าให้ แต่ในตอนนี้เราได้รับค่าของตัวแปรนั้นแล้ว ซึ่งก็คือ Access Token ที่ Facebook กำหนดไว้ให้เรานั้นเอง เราก็นำค่าที่ได้ไปปรับปรุงใน chatbot.py ได้เลย  เราจะได้ code ในขั้นตอนสุดท้ายดังนี้


from flask import Flask,request
import json
import requests

app = Flask(__name__)

#copy from Facebook
access_token = 'EAAIcM3ZCcEREBAIGU34OBm.....'

@app.route('/test',methods=['GET'])
def do_test():
     return "Hello"

@app.route('/',methods=['GET'])
def verification_handle():
     verify_token = request.args.get('hub.verify_token','')
     print verify_token
     challenge = request.args.get('hub.challenge', '') 
     if verify_token == access_token :
         return challenge
     else :
         return "Wrong validation"


@app.route('/',methods=['POST'])
def incoming_message_handle():
    #get data from request
    payload = request.get_data()
    
    #turn payload to json
    json_data = json.loads(payload)

    #extract entry, entry is an array
    entry = json_data['entry']

    #extract messaging from entry, messaging is an array
    messaging = entry[0]["messaging"]

    for item in messaging :
      if "message" in item and "text" in item["message"] :

        #extract sender from messaging
        sender = item["sender"]

        #extract incoming message from messaging
        msg = item["message"]

        #echo back to sender
        echo_to_sender(sender["id"],msg["text"].encode('unicode_escape'))

    #tell Facebook that every is alright
    return json.dumps({'success':True}),200,{'Content-Type':'application/json'}


def echo_to_sender(sender_id,msg_txt):
    # get this from Facebook manual
    req = requests.post(
         "https://graph.facebook.com/v2.6/me/messages",
         params = {"access_token":access_token},
         data = json.dumps({
            "recipient":sender_id,
            "message": msg_txt
          }),
         headers = {'Content-Type':'application/json'})
         


หมายเหตุ โปรดอย่าลืมทำตามขั้นตอนที่ 3.6 - 3.7 ในตอนที่ 3 เพื่อให้การเปลี่ยนแปลงส่งผลด้วยนะ ครับ

การกำหนด Webhook Endpoint URL

เลือกรายการ Webhook  (ในภาพเป็นตัวอย่างที่ผมได้ทำไว้แล้วก่อนหน้า จึงเห็นค่า URL ปรากฏอยู่)
เลือก URL ติดต่อกลับ จะเห็น popup ดังภาพ
พิมพ์ URL ที่เราได้รับมาจาก Heroku ในขั้นตอนที่ 3 มากรอกในช่องหมายเลข 1 ในกรณีของผมคือ https://my-fbot.herokuapp.com/ นำเอา Access Token ที่เราบันทึกไว้จากขั้นตอนข้างต้นกรอกในช่องหมายเลข 2 คลิ๊ก "ตรวจสอบและบันทึก"  หากขั้นตอนสำเร็จ หน้าจอจะปิดตัวเองแล้วกลับไปสู่หน้าจอเดิม หากทุกอย่างดำเนินไปด้วยไม่มีข้อผิดพลาดเกิดขึ้น หลังจากนี้ท่านควรจะสามารถทดสอบ Chatbot ของท่านได้แล้ว โดยการส่ง message ไปยังเพจที่เราใช้ในการสมัคร แล้ว Chatbot ก็จะส่งข้อความนั้นกลับมา
หมดแล้วครับ สำหรับขั้นตอนการสร้าง Facebook Messenge Chatbot เบื้องต้น คิดว่าน่าจะพอเป็นแนวทางในการศึกษาได้บ้าง ในทางปฏิบัติแล้ว การทำงานของ Chatbot นั้นทาง Facebook ได้เตรียมตัวอย่างและข้อมูลไว้ให้ศึกษาถึงการใช้ประโยชน์อีกหลายตัวอย่าง สามารถนำมาประยุกต์ใช้งานได้อีกหลายด้านเลยทีเดียว
[ตอนที่ 1] [ตอนที่ 2] [ตอนที่ 3]

ความคิดเห็น