Monday, September 24, 2018

Python Facebook聊天機器人 Echo Ngork

前置作業


聊天機器人
想說Linebot弄完後順便連Facebookbot一併弄一下好了
bot也算是兩年前的東西了,以前寫沒留下近期內用到再來寫一下作教學文
不然每次的話都要再重找
不過Facebookbot比較麻煩一點就是了
那在我們上一回的Linebot都裝的差不多了,
為什麼技術文章寫來寫去還是很像在寫心情雜記xd

創立一個粉絲專頁




Facebook Developers Setting Messager


創完之後呢我們接下來要進去facebook developers 設定messager
我們來到
https://developers.facebook.com/
建立完成後呢
選擇我們自己設立的粉絲專頁

授權

Facebook Developers  Application審查


隱私權政策網址
Privacy Policy Generato

填完資料後一定要按右上角開啟app





Facebook Developers Setting Webhooks



我們複製我們穿透厚的網址https!
驗證成功
記得把權杖再複製一次給webhooks




安裝元件
$ pip install pymessenger
裝完後跑一下code
import os, sys
from flask import Flask, request
from pymessenger import Bot
app = Flask(__name__)
PAGE_ACCESS_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
bot = Bot(PAGE_ACCESS_TOKEN)
@app.route('/', methods=['GET'])
def verify():
# Webhook verification
if request.args.get("hub.mode") == "subscribe" and request.args.get("hub.challenge"):
if not request.args.get("hub.verify_token") == "hello":
return "Verification token mismatch", 403
return request.args["hub.challenge"], 200
return "Hello world", 200
@app.route('/', methods=['POST'])
def webhook():
data = request.get_json()
log(data)
if data['object'] == 'page':
for entry in data['entry']:
for messaging_event in entry['messaging']:
# IDs
sender_id = messaging_event['sender']['id']
recipient_id = messaging_event['recipient']['id']
if messaging_event.get('message'):
# Extracting text message
if 'text' in messaging_event['message']:
messaging_text = messaging_event['message']['text']
else:
messaging_text = 'no text'
# Echo
response = messaging_text
bot.send_text_message(sender_id, response)
return "ok", 200
def log(message):
print(message)
sys.stdout.flush()
if __name__ == "__main__":
app.run(debug = True, port = 80)
view raw app.py hosted with ❤ by GitHub

記得替換掉token
端口與ngork端口需要一至
啟動伺服器

直接開密!



ngork伺服器響應時間有夠慢的,然後既然是免費的嗎算惹

如果在權杖有問題的話這邊可以把webhooks進行移除