Gjurmimi i dërgesave me Webhook: Si funksionojnë Webhook-et e gjurmimit krahasuar me Polling-un (Payload-et, riprovimet dhe konfigurimi)
Webhook-et e gjurmimit të dërgesave dërgojnë një kërkesë HTTP te aplikacioni juaj kur një shërbim gjurmimi ka një përditësim për të raportuar. Polling funksionon në drejtim të kundërt: aplikacioni juaj kërkon në mënyrë të përsëritur informacionin më të fundit të gjurmimit. Për zhvilluesit që lidhin të dhënat e dërgesave me një sistem menaxhimi porosish, dyqan ose shërbim njoftimesh për klientët, webhook-et janë përgjithësisht mekanizmi kryesor më i mirë i përditësimit kur mbështeten; polling-u i synuar mund të ndihmojë në rikuperimin e përditësimeve të humbura dhe në rakordimin e regjistrimeve.

Asnjëra metodë nuk bën që transportuesi të skanojë një paketë më shpejt. Të dyja varen nga koha kur burimi i gjurmimit merr dhe ekspozon informacion të ri. Dallimi praktik është mënyra se si aplikacioni juaj mëson për atë informacion, sa trafik kërkesash gjeneron dhe çfarë ndodh kur dërgimi dështon.
Webhook-et e gjurmimit kundrejt polling-ut: ndryshimi operacional
Këto janë modele integrimi, jo baza të dhënash gjurmimi konkurruese. Një transportues ose platformë gjurmimi mund të ofrojë njërin model ose të dyja, me kushte të ndryshme aksesi. Krahasoni sjelljen e API-së specifike që planifikoni të përdorni, në vend që të supozoni se të gjitha shërbimet webhook ofrojnë të njëjtat garanci.
| Pika e vendimmarrjes | Webhook-et | Polling-u |
|---|---|---|
| Kush e nis kërkesën? | Shërbimi i gjurmimit thërret endpoint-in tuaj. | Aplikacioni juaj thërret API-në e gjurmimit. |
| Vonesa e përditësimit | Varet nga freskia e burimit, gjenerimi i ngjarjes, dërgimi dhe përpunimi. | Varet gjithashtu nga koha kur ekzekutohet kërkesa juaj e ardhshme e planifikuar. |
| Vëllimi i kërkesave | Përcaktohet nga përditësimet e dërguara, grupimi dhe riprovimet e dërgimit. | Përcaktohet nga vëllimi i dërgesave, frekuenca e polling-ut dhe grupimi. |
| Infrastruktura | Kërkon një marrës të aksesueshëm dhe trajtim të sigurt të kërkesave hyrëse. | Kërkon një planifikues, akses në API-në dalëse dhe trajtim të kufizimeve të shpejtësisë. |
| Rikuperimi nga dështimet | Varet nga riprovimet e ofruesit dhe procesi juaj i rakordimit. | Varet nga kërkesat pasuese dhe nëse API-ja ruan historikun e nevojshëm. |
Zgjidhni fillimisht webhook-et kur përditësimet në kohë janë të rëndësishme dhe ekipi juaj mund të operojë një marrës të besueshëm. Zgjidhni fillimisht polling-un kur endpoint-et hyrëse janë jopraktike, vëllimi i dërgesave është i moderuar ose burimi nuk ofron webhook-e të përshtatshme. Përdorni një dizajn hibrid kur përditësimet e humbura do të prishnin komunikimet me klientët ose operacionet dhe API-ja mbështet rakordimin.
Mos supozoni se webhook-et janë më të lira. Tarifat e abonimit, regjistrimi i gjurmimit, thirrjet API, dërgimi i ngjarjeve dhe infrastruktura mund të faturohen ndryshe. Krahasoni kushtet reale tregtare dhe ngarkesën e pritshme, në vend që të konsideroni numrin më të vogël të kërkesave si provë për një faturë më të ulët.
Çfarë ndodh midis skanimit nga transportuesi dhe aplikacionit tuaj?
- Identifikoni dërgesën. Lidhni numrin e gjurmimit, informacionin e transportuesit kur kërkohet dhe një referencë të brendshme të dërgesës. Disa shërbime kërkojnë regjistrim përpara se të fillojë monitorimi.
- Konfiguroni dërgimin e ngjarjeve. Jepni një URL callback HTTPS dhe zgjidhni çdo abonim të mbështetur për ngjarjet.
- Burimi merr informacionin e gjurmimit. Një skanim nga transportuesi ose ndryshim statusi bëhet i disponueshëm për shërbimin e gjurmimit.
- Shërbimi dërgon një webhook. Kërkesa mund të përmbajë një pamje të plotë të gjurmimit, një pikë kontrolli të vetme ose vetëm një referencë që kërkon një kërkim në API.
- Marrësi juaj e vërteton dhe e ruan atë. Autentifikoni kërkesën, kontrolloni strukturën e saj dhe regjistroni ose vendosni në radhë ngjarjen në mënyrë të qëndrueshme.
- Një punonjës përditëson sistemet e biznesit. Normalizoni statuset, përditësoni regjistrimet e dërgesave dhe aktivizoni vetëm veprimet që janë ende të përshtatshme.
Dërgimi i një webhook-u nuk është i njëjtë me dërgimin fizik. Ai është një mesazh për informacionin e dërgesës. Po kështu, një përgjigje e suksesshme webhook nuk provon se është dërguar një email ose se është përditësuar një regjistrim porosie; këto janë rezultate të përpunimit pasues që kërkojnë monitorimin e tyre.
Leximi i payload-it të një webhook-u gjurmimi
JSON-i i mëposhtëm është një dizajn ilustrues integrimi, jo një payload i 17TRACK ose një skemë universale. Emrat realë të fushave, kodet e statusit, formatet e vulave kohore dhe identifikuesit e ngjarjeve duhet të merren nga dokumentacioni i ofruesit të zgjedhur.
{
"event_id": "evt_example_001",
"event_type": "shipment.updated",
"created_at": "2025-04-08T10:16:00Z",
"shipment": {
"reference": "shipment_example_123",
"tracking_number": "EXAMPLE123456",
"carrier_code": "example_carrier",
"status": "in_transit",
"checkpoint": {
"occurred_at": "2025-04-08T10:10:00Z",
"description": "Departed processing facility"
}
}
}Ndani tre orë në modelin e të dhënave: kur ndodhi ngjarja e dërgesës, kur ofruesi gjeneroi mesazhin dhe kur aplikacioni juaj e mori atë. Një pikë kontrolli e vonuar mund të mbërrijë pas një pike më të re. Një vulë kohore pa zhvendosje kërkon gjithashtu një interpretim të qartë; mos e trajtoni në heshtje çdo vulë kohore lokale të transportuesit si UTC.
Mbani referencën tuaj të brendshme të dërgesës së bashku me identifikuesit e ofruesit. Vetëm një numër gjurmimi mund të mos mjaftojë si identifikues global i përhershëm, veçanërisht në kontekste të ndryshme transportuesish. Për porositë e ndara, mbani regjistrime në nivel dërgese, në vend që statusi i dorëzuar i një pakete të shënojë si të përfunduar të gjithë porosinë.
Ruani statusin dhe përshkrimin origjinal së bashku me statusin e normalizuar të biznesit. Aplikacioni juaj mund të hartojë disa mesazhe transportuesish në “në tranzit”, por stafi i mbështetjes mund të ketë ende nevojë për pikën origjinale të kontrollit për të kuptuar një vonesë. Trajtojini datat e parashikuara të dorëzimit si vlerësime dhe dalloni një fushë që mungon nga një udhëzim i qartë për të pastruar një vlerë ekzistuese.
Riprovimet, konfirmimet dhe ngjarjet e dyfishta
Dërgimi i webhook-ut mund të dështojë për shkak të skadimeve të kohës, ndërprerjeve të rrjetit, gabimeve të autentifikimit ose një marrësi të padisponueshëm. Ofruesi mund të provojë përsëri, por nuk ka një plan universal riprovimi, dritare ruajtjeje ose numër maksimal përpjekjesh. Konfirmoni se cilat përgjigje shkaktojnë një përpjekje tjetër, si trajtohen ridrejtimet dhe nëse është i disponueshëm ridërgimi manual.
Konfirmoni pas pranimit të qëndrueshëm
Mbajeni të shkurtër rrugën e kërkesës: vërtetoni kërkesën, ruani punën e pranuar dhe ktheni përgjigjen e suksesit të kërkuar nga ofruesi. Dërgoni email-e dhe kryeni operacionet më të ngadalta të biznesit në mënyrë asinkrone. Specifikimi HTTP përcakton 202 Accepted si pranim për përpunim dhe jo si përpunim të përfunduar, por ofruesi juaj mund të kërkojë një përgjigje tjetër suksesi. Ndiqni kontratën e tij për webhook-et.
Kthimi i suksesit përpara se të ruani diçka rrezikon humbjen e përditësimit nëse procesi juaj rrëzohet. Pritja për çdo veprim pasues rrezikon një skadim kohe dhe një përpjekje tjetër dërgimi. Një inbox ose radhë e qëndrueshme siguron një kufi midis marrjes dhe përpunimit.
Bëjeni përpunimin idempotent
Idempotenca do të thotë që përpunimi i së njëjtës ngjarje përsëri nuk përsërit efektet e saj në biznes. Dërguesi mund të provojë përsëri pasi serveri juaj ka pranuar një ngjarje, por konfirmimi i saj ka humbur. Prandaj, dërgimi i dyfishtë duhet të jetë një rast rutinë testimi.
- Përdorni një identifikues të dokumentuar të ngjarjes si çelës për eliminimin e dublikatave kur është i disponueshëm, të kufizuar te ofruesi ose llogaria e saktë.
- Nëse nuk ekziston asnjë identifikues, krijoni një çelës të përbërë nga fusha të qëndrueshme të ngjarjes dhe testoni rreziqet e përplasjeve.
- Zbatoni në mënyrë atomike veçantinë në ruajtje; një sekuencë e veçantë “kontrollo, pastaj fut” mund të përplaset gjatë dërgimit të njëkohshëm.
- Mbroni edhe veprimet pasuese. Një ngjarje e dyfishtë nuk duhet të dërgojë një njoftim tjetër dorëzimi ose të përsërisë një veprim financiar.
- Përcaktoni ruajtjen sipas sjelljes së riprodhimit të ofruesit dhe kërkesave tuaja të rikuperimit, në vend që të fshini menjëherë regjistrimet e eliminimit të dublikatave.
Mos supozoni mbërritje kronologjike
Mos e mbishkruani gjendjen aktuale të dërgesës thjesht sepse një kërkesë mbërriti e fundit. Krahasoni kuptimin e ngjarjes, vulat kohore dhe çdo informacion të dokumentuar të sekuencës. Ruani pikat e vona të kontrollit në histori pa e kthyer automatikisht prapa statusin e shfaqur. Në të njëjtën kohë, lejoni korrigjimet e dokumentuara: një rregull i ngurtë që dërgesat e dorëzuara nuk mund të ndryshojnë kurrë mund të fshehë përjashtime të ligjshme ose informacion të korrigjuar.
Listë praktike kontrolli për konfigurimin
1. Konfirmoni kontratën e ofruesit
Përpara zbatimit, konfirmoni kërkesat e regjistrimit, ngjarjet e mbështetura, strukturën e payload-it, autentifikimin, pritshmëritë për përgjigjen, skadimet e kohës, sjelljen e riprovimit dhe kufijtë e API-së. Kontrolloni nëse një njoftim përfaqëson një pamje ose një ndryshim gradual, nëse dërgesat mund të përmbajnë regjistrime të shumta dhe nëse abonimi dërgon një gjendje fillestare.
Për një integrim me 17TRACK, filloni me faqen e Tracking API dhe dokumentacionin e API-së zyrtar. Përdorni dokumentacionin specifik të ofruesit për të përcaktuar fushat e kërkesës dhe kërkesat për callback; payload-i i përgjithshëm më sipër nuk është zëvendësim. Konfirmoni kushtet e aksesit dhe kufijtë operacionalë për integrimin që synoni të vendosni.
2. Siguroni endpoint-in marrës
Përdorni HTTPS dhe mekanizmin e autentifikimit të dokumentuar nga ofruesi. Nëse përdor një nënshkrim HMAC, vërtetoni saktësisht hyrjen e nënshkruar që specifikon. Kur nënshkruhen bajtet e papërpunuara të kërkesës, analizimi dhe serializimi i sërishëm i JSON-it përpara verifikimit mund t'i ndryshojë ato bajte dhe ta bëjë nënshkrimin të pavlefshëm. Përdorni krahasim në kohë konstante për vlerat e nënshkrimit të nxjerra nga sekreti.
Nëse janë të disponueshme vulat kohore ose identifikuesit e dërgimit të nënshkruar, zbatoni kontrollet e dokumentuara kundër riprodhimit. Një nënshkrim i vlefshëm autentifikon një mesazh, por nuk vërteton vetvetiu se ai është i freskët. Mbajini sekretet jashtë URL-ve dhe regjistrave të aplikacionit, mbështetni rrotullimin e sekreteve dhe kufizoni madhësitë e kërkesave. Lejimi i IP-ve mund të jetë një kontroll shtesë kur ekzistojnë intervale adresash të mirëmbajtura, por jo zëvendësim për autentifikimin e mesazhit.
3. Ndani marrjen nga përpunimi i biznesit
Ruani informacion të mjaftueshëm për të gjurmuar dhe riprodhuar në mënyrë të sigurt një ngjarje të pranuar. Punonjësit e radhës duhet të normalizojnë përditësimin, të zbatojnë rregullat e kalimit të gjendjes dhe të regjistrojnë rezultatet e veprimeve. Vendoseni punën që dështon vazhdimisht në një proces të rishikueshëm dead-letter, në vend që ta riprovoni pafundësisht. Kufizoni aksesin dhe ruajtjen sepse payload-et e gjurmimit mund të përmbajnë informacion lidhur me klientët.
4. Testoni rrugët e dështimit përpara lançimit
- Dërgoni të njëjtën ngjarje dy herë, duke përfshirë dërgimet e njëkohshme.
- Dërgoni një pikë kontrolli më të vjetër pas një pike më të re.
- Simuloni një ndërprerje të radhës dhe rrëzimin e një punonjësi pas marrjes.
- Testoni autentifikimin e pavlefshëm, JSON-in e dëmtuar dhe kërkesat tepër të mëdha.
- Testoni dërgesat e panjohura, fushat opsionale që mungojnë dhe fushat e shtuara.
- Verifikoni që një paketë e dorëzuar të mos përfundojë një porosi të ndarë.
- Riprodhoni një ngjarje pas rikuperimit dhe konfirmoni që njoftimet mbeten pa dublikime.
Jini tolerantë ndaj fushave shtesë kur është e sigurt, por mos i riinterpretoni në heshtje vlerat e panjohura të statusit. Ruani vlerën e papërpunuar dhe drejtojini rastet e panjohura përmes një procesi të përcaktuar rezervë ose rishikimi.
Ku polling-u ende ka vend
Polling-u është i dobishëm për sinkronizimin fillestar, rikuperimin pas një ndërprerjeje dhe kontrollimin e dërgesave, përditësimet e pritshme të të cilave nuk kanë mbërritur. Megjithatë, heshtja në vetvete nuk është provë e dështimit të webhook-ut: një paketë mund të mos ketë vërtet skanime të reja. Rakordojeni me gjendjen ose historikun aktual të API-së, në vend që të supozoni se çdo dërgesë e qetë ka nevojë për alarm.
Për planifikimin në shkallë, një model i thjeshtuar polling-u është requests per hour ≈ active shipments × polls per shipment per hour, duke supozuar një dërgesë për kërkesë. Endpoint-et e grupuara e ndryshojnë këtë llogaritje. Si ilustrim, 1,000 dërgesa të kontrolluara katër herë në orë gjenerojnë 4,000 kërkesa në orë përpara riprovimeve; kjo është aritmetikë, jo kuotë e ofruesit ose vlerësim çmimi.
Planifikoni kontrollet sipas aktivitetit të dërgesave dhe rrezikut të biznesit, respektoni kufizimet e shpejtësisë dhe shtoni jitter në mënyrë që punët të mos fillojnë të gjitha njëkohësisht. Për dështimet që mund të riprovohen, përdorni backoff të kufizuar dhe respektoni udhëzimet përkatëse të serverit. Mos riprovoni vazhdimisht gabimet e përhershme të kredencialeve ose të validimit pa i korrigjuar ato.
Një sistem praktik hibrid përdor webhook-et për përditësime rutinë dhe lexime të synuara të API-së për boshllëqet e dyshuara. Monitoroni veçmas dështimet e marrjes, moshën e radhës, dështimet e përpunimit, normat e dublikatave dhe mospërputhjet e rakordimit. Kur vulat kohore janë të besueshme, dalloni vonesën e të dhënave të burimit nga vonesa e dërgimit të webhook-ut dhe vonesa e përpunimit të brendshëm.
Pyetje të shpeshta
A janë webhook-et e gjurmimit në kohë reale?
Ato mund të zvogëlojnë vonesën e shkaktuar nga pritja për ciklin e ardhshëm të polling-ut. Ato nuk garantojnë skanime të menjëhershme nga transportuesi ose përditësime të menjëhershme të burimit. Freskia nga skaji në skaj përfshin raportimin e transportuesit, përpunimin e ofruesit, dërgimin e kërkesës dhe aplikacionin tuaj.
A mund ta ndaloj plotësisht polling-un pasi të aktivizoj webhook-et?
Ndoshta, nëse veçoritë e rikuperimit të ofruesit dhe kërkesat tuaja të biznesit e bëjnë këtë të pranueshme. Për regjistrimet e dërgesave të rëndësishme operacionalisht, ruani një metodë rakordimi. Ajo mund të jetë e synuar dhe jo polling i vazhdueshëm për çdo dërgesë.
Çfarë ndodh nëse endpoint-i im webhook është jashtë linje?
Rikuperimi varet nga politika e dokumentuar e riprovimit të dërguesit. Mos supozoni se riprovimet vazhdojnë pafundësisht. Pas rikthimit të endpoint-it, shqyrtoni dërgimet e dështuara, përdorni mjetet e mbështetura të ridërgimit dhe rakordoni dërgesat e prekura përmes API-së kur është e disponueshme.
A duhet që çdo webhook të shkaktojë një njoftim për klientin?
Jo. Një ngjarje mund të jetë një dublikatë, një pikë kontrolli historike ose një përditësim që nuk ndryshon statusin e dukshëm për klientin. Aktivizoni njoftimet nga kalimet e deduplikuara të biznesit, me rregulla për përjashtimet dhe korrigjimet.
A do të thotë një përgjigje e suksesshme HTTP se përditësimi i dërgesës ka përfunduar?
Jo domosdoshmërisht. Në një dizajn asinkron, kjo do të thotë se marrësi e pranoi ngjarjen sipas kontratës së rënë dakord. Ndiqni veçmas përfundimin e përpunimit dhe rezultatet e njoftimeve pasuese, në mënyrë që një kërkesë e pranuar të mos fshehë një proces të dështuar.
Burimet
- RFC 9110: HTTP Semantics — semantika e përgjigjeve HTTP, duke përfshirë pranimin për përpunim dhe Retry-After.
- RFC 2104: HMAC—Keyed-Hashing for Message Authentication — konstruksioni HMAC i referuar në udhëzimet për verifikimin e nënshkrimit.
- GitHub Docs: Best practices for using webhooks — udhëzime të përgjithshme inxhinierike për HTTPS, sekretet, trajtimin asinkron dhe identifikimin e dërgesave; rregullat e tij specifike për shërbimin nuk përcaktojnë sjelljen e ofruesve të dërgesave.
- 17TRACK Tracking API — pikënisja zyrtare për vlerësimin e një integrimi gjurmimi me 17TRACK.
- 17TRACK API documentation — referencë specifike e ofruesit për kërkesat e zbatimit.


