Puncte:0

How to Manage Webhook Notifications?

drapel pe

I had developed a controller to retrieve data from an API via a webhook. This is the type of data I received with https://webhook.site for testing :

{
  "owner": {
    "id": "100000",
    "userName": "lorem"
  },
  "notes": "",
  "created": {
    "dateTime": "2021-12-14T18:54:36",
    "timeZone": "Europe/Paris"
  },

Here is a preview of the controller :

    class WebhookLoremController extends ControllerBase {

        public function LoremListener(Request $request) {

            $data_webhook = $request->getContent();
     
            // data is invalid       
            dump($request);
            
            // data is invalid    
            dump($data_webhook);

            // obviously doesn't work as $data_webhook is invalid
            $decode = Json::decode($data_webhook);

         }

    }

Everything was working fine but now the data received is invalid. We can see the @ character for example, or problems with comma, colon, or } :

{
   "owner":"@""id":"100000",
   "userName":"lorem",
   "notes":"",
   "created":"@""dateTime":"2021-12-14T18:54:36",
   "timeZone":"Europe/Paris",

I immediately thought of a problem with the API but I have no problem if I test with https://webhook.site. I take it that the problem is on my side. If I dump $request the problem is already there.

It worked before and I did not change the code. The only thing I'm thinking about is that I updated to Drupal 9 but I'm not sure if that has anything to do with it.

Do I have to do something with drupal to retrieve this kind of data?

EDIT

Here is the dump() of $request :

"POST /webhook/listener-api-lorem-10000 HTTP/1.1 Authorization":"Content-Length":"3607 Content-Type":"application/json Host":"lorem.fr User-Agent":"Jakarta Commons-HttpClient/3.1 X-Agendize-Objectevent":"deleted X-Autonomous-System":"16276 X-Country-Code":"FR X-Forwarded-Port":"443 X-Forwarded-Proto":"https X-Php-Ob-Level":"1 X-Ssl":"yes"{
   "owner":"@""id":"10000",
   "userName":"lorem",
   "notes":"",
   "created":"@""dateTime":"2021-12-14T20:04:36",
   "timeZone":"Europe/Paris"
Jaypan avatar
drapel de
JSON pe care l-ați afișat este nevalid. Trebuie să determinați dacă vine invalid sau dacă se întâmplă ceva pe partea Drupal care îl invalidează. Puteți vedea jurnalele de solicitări de server pentru a vedea datele brute ale cererii?
drapel pe
@Jaypan Dacă testez webhook-ul cu https://webhook.site, json-ul primit este valid. Același webhook primit cu controlerul meu nu este valid. Este exact aceeași notificare, așa că mă întrebam dacă trebuie făcut ceva special cu Drupal.
Jaypan avatar
drapel de
Cum ați preluat JSON nevalid pe care l-ați afișat în postarea dvs.? Aceasta este rezultatul apelului dump()?
drapel pe
@Jaypan da, este descărcarea din `LoremListener()`, văd problema în `$request`, deci evident în `$request->getContent()` și bineînțeles `Json::decode($data_webhook)` nu merge Mergea, asa ca nu inteleg. Îl întreb pe întreținătorul API, dar ei spun că este de partea mea. Nu exclud posibilitatea ca API-ul să fi fost schimbat.
drapel pe
@Jaypan Controlerul vi se pare corect?
Jaypan avatar
drapel de
Ce ai până acum mi se pare ok. Pun la îndoială intrarea pe care o primești, dar nu este imposibil ca Drupal să-l fi transformat între primirea ei și controlerul tău. Dar simt că valoarea din Request este probabil nemodificată, ceea ce mă face să pun la îndoială datele primite din API.
drapel pe
@Jaypan Cum să verific datele primite înaintea operatorului pentru a fi sigur că ceea ce primesc este corect sau nu. Asta ma deranjeaza sa depanez. Sunt orb. Un dump îmi spune că nu este corect dar testul cu webhook.site este corect (exact aceeași notificare).
Lambic avatar
drapel ph
Solicitarea vine cu tipul de conținut corect? Dacă nu este „aplicație/json”, atunci asta ar putea cauza probleme.
Jaypan avatar
drapel de
Jurnalele de solicitare de pe server de intrare este modul în care aș începe.
drapel pe
@Lambic Mi-am actualizat întrebarea cu „dump()” din „$request”. Pot vedea `application/json` Pare corect, dar văd datele invalide.
Jaypan avatar
drapel de
Mi se pare o eroare în JSON pe care îl trimit. Aș încerca să-i contactez din nou și să trimit descărcarea cererii așa cum ați arătat mai sus.
drapel pe
@Jaypan Vă mulțumim pentru vizionare. Aveam nevoie de o altă privire la această problemă. Așa că voi reveni la ei din nou.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.