View Single Post
Sitat av vidarlo Vis innlegg
https://freak.no/forum/showpost.php?...75&postcount=2

Set breakpoint på linje 41, fyr opp debugger, og sjekk korleis objektet ditt *faktisk* ser ut. Det er nettopp slikt som det her du bruker en debugger til. Det er ikkje spesielt vanskelig, og gjer det mogeleg å sjå korleis datastrukturer e.l. faktisk ser ut i minnet.
Vis hele sitatet...
Hei!
"Sett breakpoint på linje 41", det vil si legge inn teksten "breakpoint()" der?

"Fyr opp debugger", kjøre et annet program som er ment til sånt altså? Forslag til hvilket?

Sitat av Realist1 Vis innlegg
JSON blir parset som nøstede lister og dictionaries. Listeeelementene finner du med index (heltall), mens dictionary-verdien finner du med navn på keyen (som regel en string her, ser det ut til).

Jeg synes ikke den pretty-printen din var så veldig pretty, men hvis du f.eks. skal ha tak i payloaden, så kan du f.eks. prøve med

Kode

["entry"][0]["messaging"][0]["attachments"][0]["payload"]
Ellers, så kan du alltids manøvrere deg gjennom JSON-en ved å printe ut de forskjellige nivåene, ev. med type() for å dobbeltsjekke hva slags type det er.

F.eks.:

Kode

>>> print(output["entry"])
...blabla
>>> type(output["entry"])
...blabla
>>> print(output["entry"][0])
...blabla
Ofte er det lister inni der med bare ett element, noe som også er hvorfor jeg prøver med [0] innimellom. Men ved å gå gjennom JSON-en steg for steg på denne måten, så finner du fort ut hvordan du skal manøvrere deg til det punktet du er interessert i.

PS: Jupyter Notebook er perfekt til denne typen eksperimentering.
Vis hele sitatet...
Smart! Jeg orket ikke å gjøre så mye ut av dette, men fant til slutt ut at dette fungerer:

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"]:
         #print(output["entry"])
         type(output["entry"])


         #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('Found text: ' + message_text + ', OK?')


           ##If message is attachment
           if messaging_event['message'].get('attachments'):
            print("It is attachment")
            attachment_type = messaging_event["message"]["attachments"][0]["type"]

//Her
           ##If attachment type is image
            if attachment_type == "image":
              print("It is image")
              #attachment_url = attachment_event["url"]
              attachment_link = messaging_event["message"]["attachments"][0]["payload"]["url"]
              print(attachment_link)
            else:
              print("Found unsupported attachment type")
//Stopp
         else:
          print("Found unsupported message type")
     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; 12. august 2020 kl. 22:29.