Feilmeldingen jeg får er
Kode
File "/home/user/robot.py", line 41, in receive_message
attachment_type = messaging_event["attachments"]["type"]
KeyError: 'attachments'
Nå prøvde jeg med å bytte ut "attachments" med noe random, da dukket ikke feilmeldingen opp (bare så det er spesifisert: Funksjonen fungerte heller ikke da, selvfølgelig!). Nå forstår jeg ihvertfall ikke hvor problemet ligger....
Kanskje greit å ta med hele koden jeg utvikler nå, beklager at jeg bytter mellom norsk og engelsk kommentarer, jeg som roter litt
Kode
import random
from flask import Flask, request
from pymessenger.bot import Bot
app = Flask(__name__)
FB_API_URL = 'https://graph.facebook.com/v7.0/me/messages'
ACCESS_TOKEN = '420420'
VERIFY_TOKEN = '420420'
bot = Bot(ACCESS_TOKEN)
#We will receive messages that Facebook sends our bot at this endpoint
@app.route("/messenger", methods=['GET', 'POST'])
def receive_message():
print("Kommando starter...")
if request.method == 'GET':
print("Request er GET")
token_sent = request.args.get("hub.verify_token")
return verify_fb_token(token_sent)
print("Token er kanskje OK")
else:
print("Request er ikke GET")
if request.method == 'POST':
print("Request er POST")
output = request.get_json()
print(output)
if output["object"] == "page":
for entry in output["entry"]:
for messaging_event in entry["messaging"]:
#We got message
if messaging_event.get("message"):
##What is sender id, and which page recieve?
sender_id = messaging_event["sender"]["id"]
page_id = messaging_event["recipient"]["id"]
##If message is text, put it in message_text
if messaging_event['message'].get('text'):
message_text = messaging_event["message"]["text"]
print('It is text, ' + message_text + ', OK?')
##If message is attachment
if messaging_event['message'].get('attachments'):
#for attachment_event in entry["messaging"]["attachments"]:
attachment_type = messaging_event["attachments"]["type"]
attachment_url = messaging_event["attachments"]["url"]
print(attachment_url)
print("It is attachment")
return("ok", 200)
def verify_fb_token(token_sent):
if token_sent == VERIFY_TOKEN:
return request.args.get("hub.challenge")
print("hub.challenge")
return 'Invalid verification token'
if __name__ == "__main__":
app.run(debug=True)
Sist endret av Stingray; 5. august 2020 kl. 19:11.