前置作業
想說Linebot弄完後順便連Facebookbot一併弄一下好了
bot也算是兩年前的東西了,以前寫沒留下近期內用到再來寫一下作教學文
不然每次的話都要再重找
不過Facebookbot比較麻煩一點就是了
那在我們上一回的Linebot都裝的差不多了,
為什麼技術文章寫來寫去還是很像在寫心情雜記xd
創立一個粉絲專頁
Facebook Developers Setting Messager
我們來到
https://developers.facebook.com/
建立完成後呢
選擇我們自己設立的粉絲專頁
Facebook Developers Application審查
隱私權政策網址
Privacy Policy Generato
Privacy Policy Generato
填完資料後一定要按右上角開啟app
Facebook Developers Setting Webhooks
驗證成功
記得把權杖再複製一次給webhooks
安裝元件
$ pip install pymessenger
裝完後跑一下code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |