Điểm:0

How to Manage Webhook Notifications?

lá cờ 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
lá cờ de
JSON bạn đã hiển thị không hợp lệ. Bạn cần xác định xem nó có bị vô hiệu hay không, hoặc có điều gì đó đang xảy ra ở phía Drupal đang làm mất hiệu lực của nó. Bạn có thể xem nhật ký yêu cầu máy chủ của mình để xem dữ liệu yêu cầu thô không?
lá cờ pe
@Jaypan Nếu tôi kiểm tra webhook bằng https://webhook.site, json nhận được là hợp lệ. Webhook tương tự nhận được với bộ điều khiển của tôi không hợp lệ. Đó chính xác là cùng một thông báo nên tôi đã tự hỏi liệu có điều gì đặc biệt phải được thực hiện với Drupal hay không.
Jaypan avatar
lá cờ de
Làm cách nào bạn truy xuất JSON không hợp lệ mà bạn đã hiển thị trong bài đăng của mình? Đó có phải là đầu ra của lệnh gọi dump() không?
lá cờ pe
@Jaypan vâng, đó là kết xuất từ ​​`LoremListener()`, tôi thấy sự cố trong `$request`, vì vậy rõ ràng là trong `$request->getContent()` và tất nhiên là cả `Json::decode($data_webhook)` không hoạt động Nó đã từng hoạt động nên tôi không hiểu. Tôi hỏi người bảo trì API nhưng họ nói rằng đó là về phía tôi. Tôi không loại trừ khả năng API đã bị thay đổi.
lá cờ pe
@Jaypan Bộ điều khiển có vẻ đúng với bạn không?
Jaypan avatar
lá cờ de
Những gì bạn đã có cho đến nay có vẻ ổn với tôi. Tôi đặt câu hỏi về thông tin đầu vào mà bạn đang nhận, nhưng không phải là Drupal có thể chuyển đổi nó giữa việc nhận và bộ điều khiển của bạn. Nhưng tôi cảm thấy rằng giá trị từ Yêu cầu có thể không thay đổi, điều này khiến tôi đặt câu hỏi về dữ liệu đến từ API.
lá cờ pe
@Jaypan Cách kiểm tra dữ liệu nhận được trước bộ điều khiển để chắc chắn rằng những gì tôi nhận được có chính xác hay không. Đó là những gì làm phiền tôi để gỡ lỗi. Tôi bị mù. Một kết xuất cho tôi biết rằng nó không chính xác nhưng thử nghiệm với webhook.site là chính xác (chính xác là cùng một thông báo).
Lambic avatar
lá cờ ph
Yêu cầu có đúng loại nội dung không? Nếu đó không phải là "application/json" thì điều đó có thể gây ra sự cố.
Jaypan avatar
lá cờ de
Nhật ký yêu cầu máy chủ đến là cách tôi sẽ bắt đầu.
lá cờ pe
@Lambic Tôi đã cập nhật câu hỏi của mình với `dump()` của `$request`. Tôi có thể thấy `application/json` Nó có vẻ đúng nhưng tôi thấy dữ liệu không hợp lệ.
Jaypan avatar
lá cờ de
Đối với tôi, đó có vẻ là một lỗi trong JSON mà họ đang gửi. Tôi sẽ thử liên hệ lại với họ và gửi kết xuất Yêu cầu như bạn đã trình bày ở trên.
lá cờ pe
@Jaypan Cảm ơn bạn đã xem. Tôi cần một cái nhìn khác về vấn đề này. Vì vậy, tôi sẽ quay lại với họ một lần nữa.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.