python - 如何使用 python Facebook Messenger API 发送文档
问题描述
我希望你做得很好。我想使用 Facebook Messenger API 发送文档。我正在关注本教程。它通过 Facebook Messenger API 发送消息。
https://medium.com/nerd-for-tech/use-python-to-send-messages-to-facebook-messenger-api-837a18997ade
这是附加的代码。我可以在哪里更改以发送文档文件
from flask import Flask, request
import requests
import json
import config
app = Flask(__name__)
app.config['SECRET_KEY'] = 'enter-your-app-secret-key'
#Function to access the Sender API
def callSendAPI(senderPsid, response):
PAGE_ACCESS_TOKEN = config.PAGE_ACCESS_TOKEN
payload = {
'recipient': {'id': senderPsid},
'message': response,
'messaging_type': 'RESPONSE'
}
headers = {'content-type': 'application/json'}
url = 'https://graph.facebook.com/v10.0/me/messages?access_token={}'.format(PAGE_ACCESS_TOKEN)
r = requests.post(url, json=payload, headers=headers)
print(r.text)
#Function for handling a message from MESSENGER
def handleMessage(senderPsid, receivedMessage):
#check if received message contains text
if 'text' in receivedMessage:
response = {"text": 'You just sent: {}'.format(receivedMessage['text']) }
callSendAPI(senderPsid, response)
else:
response = {"text": 'This chatbot only accepts text messages'}
callSendAPI(senderPsid, response)
@app.route('/', methods=["GET", "POST"])
def home():
return 'HOME'
@app.route('/webhook', methods=["GET", "POST"])
def index():
if request.method == 'GET':
#do something.....
VERIFY_TOKEN = "enter-your-verify-token"
if 'hub.mode' in request.args:
mode = request.args.get('hub.mode')
print(mode)
if 'hub.verify_token' in request.args:
token = request.args.get('hub.verify_token')
print(token)
if 'hub.challenge' in request.args:
challenge = request.args.get('hub.challenge')
print(challenge)
if 'hub.mode' in request.args and 'hub.verify_token' in request.args:
mode = request.args.get('hub.mode')
token = request.args.get('hub.verify_token')
if mode == 'subscribe' and token == VERIFY_TOKEN:
print('WEBHOOK VERIFIED')
challenge = request.args.get('hub.challenge')
return challenge, 200
else:
return 'ERROR', 403
return 'SOMETHING', 200
if request.method == 'POST':
#do something.....
VERIFY_TOKEN = "128fea16-bef2-4f86-8402-2fbb9b9ed70e"
if 'hub.mode' in request.args:
mode = request.args.get('hub.mode')
print(mode)
if 'hub.verify_token' in request.args:
token = request.args.get('hub.verify_token')
print(token)
if 'hub.challenge' in request.args:
challenge = request.args.get('hub.challenge')
print(challenge)
if 'hub.mode' in request.args and 'hub.verify_token' in request.args:
mode = request.args.get('hub.mode')
token = request.args.get('hub.verify_token')
if mode == 'subscribe' and token == VERIFY_TOKEN:
print('WEBHOOK VERIFIED')
challenge = request.args.get('hub.challenge')
return challenge, 200
else:
return 'ERROR', 403
#do something else
data = request.data
body = json.loads(data.decode('utf-8'))
if 'object' in body and body['object'] == 'page':
entries = body['entry']
for entry in entries:
webhookEvent = entry['messaging'][0]
print(webhookEvent)
senderPsid = webhookEvent['sender']['id']
print('Sender PSID: {}'.format(senderPsid))
if 'message' in webhookEvent:
handleMessage(senderPsid, webhookEvent['message'])
return 'EVENT_RECEIVED', 200
else:
return 'ERROR', 404
if __name__ == '__main__':
app.run(host='0.0.0.0', port='8888', debug=True)
解决方案
推荐阅读
- java - 替代 JSP 上的 siteedit taglib
- python - PYTHON:DICT 的 IF 语句
- oracle - 在 Oracle 12.2c 中清除队列不更新计数器 un gv$aq
- python - 如何使用 html 中表单标签中的表单数据提取信息
- javascript - 如何将未使用的数据背景添加到图表js中的条形图
- arrays - 如何在查询返回空单元格的地方返回“空”谷歌表格
- c++ - 强制 C++ 类具有对齐的属性
- python - 如何让每辆车在 Or Tools 中做点什么?
- sql - Postgres:使用子查询更新表列
- python - 使用 django 框架加载 JSON 内容