Score:0

How to Manage Webhook Notifications?

ธง 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
de flag
JSON ที่คุณแสดงไม่ถูกต้อง คุณต้องพิจารณาว่ามันไม่ถูกต้องหรือไม่ หรือมีบางอย่างเกิดขึ้นในฝั่ง Drupal ที่ทำให้ใช้งานไม่ได้ คุณสามารถดูบันทึกคำขอเซิร์ฟเวอร์ของคุณเพื่อดูข้อมูลคำขอดิบได้หรือไม่
pe flag
@Jaypan f ฉันทดสอบ webhook ด้วย https://webhook.site json ที่ได้รับนั้นถูกต้อง เว็บฮุคเดียวกันที่ได้รับจากคอนโทรลเลอร์ของฉันไม่ถูกต้อง เป็นการแจ้งเตือนเดียวกันทุกประการ ดังนั้นฉันจึงสงสัยว่า Drupal ต้องทำสิ่งใดเป็นพิเศษหรือไม่
Jaypan avatar
de flag
คุณดึงข้อมูล JSON ที่ไม่ถูกต้องที่คุณแสดงในโพสต์ได้อย่างไร นั่นคือผลลัพธ์ของการเรียกดัมพ์ () หรือไม่
pe flag
@Jaypan ใช่ มันเป็นดัมพ์จาก `LoremListener()` ฉันเห็นปัญหาใน `$request` ซึ่งเห็นได้ชัดว่าอยู่ใน `$request->getContent()` และแน่นอน `Json::decode($data_webhook)` ไม่ทำงาน มันเคยทำงานดังนั้นฉันไม่เข้าใจ ฉันถามผู้ดูแล API แต่พวกเขาบอกว่ามันอยู่ข้างฉัน ฉันไม่ได้ตัดความเป็นไปได้ที่ API มีการเปลี่ยนแปลง
pe flag
@Jaypan คอนโทรลเลอร์ดูเหมือนถูกต้องสำหรับคุณหรือไม่?
Jaypan avatar
de flag
สิ่งที่คุณมีจนถึงตอนนี้ดูโอเคสำหรับฉัน ฉันสงสัยอินพุตที่คุณได้รับ แต่ไม่ใช่เรื่องเป็นไปไม่ได้ที่ Drupal จะแปลงข้อมูลระหว่างการรับข้อมูลกับตัวควบคุมของคุณ แต่ฉันรู้สึกว่าค่าจากคำขอน่าจะไม่เปลี่ยนแปลง ซึ่งทำให้ฉันตั้งคำถามกับข้อมูลขาเข้าจาก API
pe flag
@Jaypan วิธีตรวจสอบข้อมูลที่ได้รับต่อหน้าผู้ควบคุมว่าได้รับถูกต้องหรือไม่ นั่นคือสิ่งที่รบกวนจิตใจฉันในการแก้ปัญหา ฉันตาบอด. การถ่ายโอนข้อมูลบอกฉันว่ามันไม่ถูกต้อง แต่การทดสอบกับ webhook.site นั้นถูกต้อง (การแจ้งเตือนเดียวกันทุกประการ)
Lambic avatar
ph flag
คำขอมาพร้อมกับประเภทเนื้อหาที่ถูกต้องหรือไม่ หากไม่ใช่ "application/json" นั่นอาจทำให้เกิดปัญหาได้
Jaypan avatar
de flag
บันทึกคำขอเซิร์ฟเวอร์ขาเข้าคือวิธีที่ฉันจะเริ่ม
pe flag
@Lambic ฉันได้อัปเดตคำถามของฉันด้วย `dump()` of `$request` ฉันเห็น `application/json` ดูเหมือนถูกต้อง แต่ฉันเห็นข้อมูลที่ไม่ถูกต้อง
Jaypan avatar
de flag
ดูเหมือนว่าฉันจะมีข้อผิดพลาดใน JSON ที่พวกเขากำลังส่ง ฉันจะลองติดต่อพวกเขาอีกครั้ง และส่งการถ่ายโอนข้อมูลคำขอตามที่คุณแสดงไว้ด้านบน
pe flag
@Jaypan ขอบคุณที่รับชมครับ ฉันต้องการดูปัญหานี้อีกครั้ง ดังนั้นฉันจะกลับไปหาพวกเขาอีกครั้ง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา