Toon posts:

Python API: chatbot ziet nieuwe berichten in de app niet

Pagina: 1
Acties:
  • 368 views

Onderwerpen

Vraag


  • kaypee
  • Registratie: November 2022
  • Laatst online: 16-01 13:08
Mijn vraag
Ik probeer een chatbot te schrijven, die afhankelijk van de meest recente post in een Webex chatroom een bepaalde reply post.

Dat werkt, script blijft ook lopen in een loop.

Maar als ik de Webex app open doe en in die chatroom zelf een nieuw bericht post, wordt dat niet opgepikt door het script.


Relevante software en hardware die ik gebruik
Webex API, TheDogAPI

Wat ik al gevonden of geprobeerd heb:
Volgens mij herstart de loop wel maar worden de messages niet opnieuw ingeladen via de laatste requests.get, waar ik nochtans om vraag.

Het probleemgedeelte begint vanaf line 112 hieronder:

code:
1
Code weggehaald

[Voor 83% gewijzigd door kaypee op 10-11-2022 19:37. Reden: Code weggehaald]

Beste antwoord (via kaypee op 10-11-2022 19:10)


  • Robicide
  • Registratie: Maart 2016
  • Laatst online: 09:22
Ik denk dat je het blok vanaf regel 168 waarin je nieuwe messages ophaalt minder moet indenten, nu is het onderdeel van je elif waardoor het alleen wordt uitgevoerd als er al nieuwe berichten zijn.

Alle reacties


  • Chaseream
  • Registratie: September 2021
  • Laatst online: 04-02 23:49
Het haalt niet jou berichten op omdat je de berichten api van webex 1x aanroept op lijn 85 en dat is buiten de loop. Wat er dus gebeurt is dat het de berichten 1 keer ophaalt als je de script start.

Op lijn 118 zet je de opgehaalde response van de webex api alleen om in een json object.

Wat je kan doen is een nieuwe functie maken die de webex api call doet en de messages returned en dat elke keer in de while loop doen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def getMessagesFromWebex:
    r_messages = requests.get(   messagesAPI,
       ...             
    if not r_messages.status_code == 200:
        ...
    # get the JSON formatted returned data
    json_data = r_messages.json()
    
    # check if there are any messages in the "items" array
    if len(json_data["items"]) == 0:
        ...
    
    
    # store the array of messages
    return json_data["items"]
    
while True:
    ....
    messages = getMessagesFromWebex()
ps ik heb al een tijdje geen python gedaan

Acties:
  • Beste antwoord
  • +1Henk 'm!

  • Robicide
  • Registratie: Maart 2016
  • Laatst online: 09:22
Ik denk dat je het blok vanaf regel 168 waarin je nieuwe messages ophaalt minder moet indenten, nu is het onderdeel van je elif waardoor het alleen wordt uitgevoerd als er al nieuwe berichten zijn.

  • kaypee
  • Registratie: November 2022
  • Laatst online: 16-01 13:08
Robicide schreef op donderdag 10 november 2022 @ 18:45:
Ik denk dat je het blok vanaf regel 168 waarin je nieuwe messages ophaalt minder moet indenten, nu is het onderdeel van je elif waardoor het alleen wordt uitgevoerd als er al nieuwe berichten zijn.
Thanks a lot!
Getest met de indent 1 tab in te korten.. works.

Ook bedankt @Chaseream , jouw oplossing werkte ook.

  • mbe81
  • Registratie: Juni 2008
  • Laatst online: 16:07
@kaypee Jammer dat je de code in de OP weg hebt gehaald. Nu kan niemand meer zien wat er/ waarom het in de oorspronkelijke code mis ging en is het topic voor andere tweakers waardeloos geworden :-(

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:33

.oisyn

Moderator Devschuur® / Cryptocurrencies

Demotivational Speaker

Ja, dat lijkt me niet de bedoeling, @kaypee. Dit is geen persoonlijke afhaalbalie, we maken dit forum met z'n allen en dus is het ook van belang dat iedereen ervan kan leren. Hierbij het verzoek om je code in het vervolg gewoon in het topic te laten staan.

Ik gooi 'm nu op slot omdat hij compleet nutteloos is geworden.

If I had a dollar for every time I didn't know what was going on, I'd be like: "Why am I always getting all this money?!"

Pagina: 1

Dit topic is gesloten.


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee