Suivi Colis Implémentation d'un webhook

Hello,

Nouvelle beta du plugin-parceltracking ce soir avec une nouveauté qui devrait vous plaire :slight_smile:

Je viens d’implémenter un webhook avec le site 17Track ! Qu’est ce que cela signifie : tout simplement que les informations sont dorénavant mise à jour en temps réel dès qu’un nouvel évènement de suivi apparait sur leur site ! Plus besoin d’attendre le cron Hourly (qui au passage est désactivé pour ces tests).

Côté plugin, rien à faire de particulier. A partir du moment où vos colis sont enregistrés dans 17Track, les évènements remonteront automatiquement.

Par contre, pour le mettre en service, vous devez vous rendre sur le dashboard de votre compte 17track puis menu « Settings » et compléter la partie webhook comme suit :

<jeedom-host> est l’adresse externe de votre Jeedom !

Vous avez même la possibilité de lancer un test directement depuis cette page (bouton test en dessous). Si tout se passe bien, vous devriez voir apparaitre dans les logs (en mode debug) :

┌─Received Webhook
| Valid signature
| Push message : {"event":"TRACKING_UPDATED","data":{"number":"1Z2617V10397725789","carrier":3011,"param":null,"tag":"","track_info":{"shipping_info":{"shipper_address":{"country":"US","state":"CA","city":"CITY OF INDUSTRY","street":null,"postal_code":null,"coordinates":{"longitude":null,"latitude":null}},"recipient_address":{"country":"US","state":"CA","city":"GASQUET","street":null,"postal_code":null,"coordinates":{"longitude":null,"latitude":null}}},"latest_status":{"status":"Delivered","sub_status":"Delivered_Other","sub_status_descr":null},"latest_event":{"time_iso":"2022-04-04T16:35:22-07:00","time_utc":"2022-04-04T23:35:22Z","time_raw":{"date":null,"time":null,"timezone":null},"description":"DELIVERED","location":"GASQUET, CA, US","stage":null,"sub_status":null,"address":{"country":"US","state":"CA","city":"GASQUET","street":null,"postal_code":null,"coordinates":{"longitude":null,"latitude":null}}},"time_metrics":{"days_after_order":7,"days_of_transit":4,"days_of_transit_done":4,"days_after_last_update":0,"estimated_delivery_date":{"source":null,"from":null,"to":null}},"milestone":[{"key_stage":"InfoReceived","time_iso":"2022-03-28T22:43:08-07:00","time_utc":"2022-03-29T05:43:08Z","time_raw":{"date":null,"time":null,"timezone":null}},{"key_stage":"PickedUp","time_iso":null,"time_utc":null,"time_raw":{"date":null,"time":null,"timezone":null}},{"key_stage":"Departure","time_iso":null,"time_utc":null,"time_raw":{"date":null,"time":null,"timezone":null}},{"key_stage":"Arrival","time_iso":null,"time_utc":null,"time_raw":{"date":null,"time":null,"timezone":null}},{"key_stage":"AvailableForPickup","time_iso":null,"time_utc":null,"time_raw":{"date":null,"time":null,"timezone":null}},{"key_stage":"OutForDelivery","time_iso":"2022-04-04T08:46:06-07:00","time_utc":"2022-04-04T15:46:06Z","time_raw":{"date":null,"time":null,"timezone":null}},{"key_stage":"Delivered","time_iso":"2022-04-04T16:35:22-07:00","time_utc":"2022-04-04T23:35:22Z","time_raw":{"date":null,"time":null,"timezone":null}},{"key_stage":"Returning","time_iso":null,"time_utc":null,"time_raw":{"date":null,"time":null,"timezone":null}},{"key_stage":"Returned","time_iso":null,"time_utc":null,"time_raw":{"date":null,"time":null,"timezone":null}}],"misc_info":{"risk_factor":0,"service_type":"UPS Ground","weight_raw":"49.20LBS","weight_kg":"22.32","pieces":null,"dimensions":null,"customer_number":"2617V1","reference_number":null,"local_number":"","local_provider":"","local_key":0},"tracking":{"providers_hash":-595601716,"providers":[{"provider":{"key":100002,"name":"UPS","alias":"UPS","tel":null,"homepage":"http://www.ups.com/","country":""},"provider_lang":null,"service_type":"UPS Ground","latest_sync_status":"Success","latest_sync_time":"2022-04-29T08:06:06Z","events_hash":-925320483,"events":[{"time_iso":"2022-04-04T16:35:22-07:00","time_utc":"2022-04-04T23:35:22Z","time_raw":{"date":null,"time":null,"timezone":null},"description":"DELIVERED","location":"GASQUET, CA, US","stage":"Delivered","sub_status":null,"address":{"country":"US","state":"CA","city":"GASQUET","street":null,"postal_code":null,"coordinates":{"longitude":null,"latitude":null}}},{"time_iso":"2022-04-04T08:46:06-07:00","time_utc":"2022-04-04T15:46:06Z","time_raw":{"date":null,"time":null,"timezone":null},"description":"Out For Delivery Today","location":"Crescent City, CA, US","stage":"OutForDelivery","sub_status":null,"address":{"country":"US","state":"CA","city":"Crescent City","street":null,"postal_code":null,"coordinates":{"longitude":null,"latitude":null}}},{"time_iso":"2022-04-02T02:15:00-07:00","time_utc":"2022-04-02T09:15:00Z","time_raw":{"date":null,"time":null,"timezone":null},"description":"Arrived at Facility","location":"Anderson, CA, US","stage":null,"sub_status":null,"address":{"country":"US","state":"CA","city":"Anderson","street":null,"postal_code":null,"coordinates":{"longitude":null,"latitude":null}}},{"time_iso":"2022-03-31T16:36:47-07:00","time_utc":"2022-03-31T23:36:47Z","time_raw":{"date":null,"time":null,"timezone":null},"description":"Origin Scan","location":"Ontario, CA, US","stage":null,"sub_status":null,"address":{"country":"US","state":"CA","city":"Ontario","street":null,"postal_code":null,"coordinates":{"longitude":null,"latitude":null}}},{"time_iso":"2022-03-28T22:43:08-07:00","time_utc":"2022-03-29T05:43:08Z","time_raw":{"date":null,"time":null,"timezone":null},"description":"Shipper created a label, UPS has not received the package yet.","location":"US","stage":"InfoReceived","sub_status":null,"address":{"country":"US","state":null,"city":null,"street":null,"postal_code":null,"coordinates":{"longitude":null,"latitude":null}}}]}]}}}}
└─End Webhook

A vos tests et remarques :wink:
Bon week-end !

Xav

3 « J'aime »

Salut,

Good job !

J’ai un parefeu avant le proxy inverse, y a-t-il un moyen de connaître l’ip du webhook ?

Hello !

Merci !
Je vais regarder si je trouve des infos dans la doc :wink:

1 « J'aime »

J’ai envoyé un message à 17track, à suivre.

Y a rien dans la doc ! J’essaie de regarder dans les headers du message.

Par contre niveau sécurité, je fais une vérification de signature à partir de la clé de sécurité API propre à chacun donc le risque est minime :wink:

Ils sont trop mignon :

Ensure that your server is accessible from the public network to receive tracking updates. This may require adjusting your firewall and gateway configurations to allow incoming connections from 17TRACK’s servers.

Mais ils ne donnent pas les adresses IP :upside_down_face:

Pas de problème de ton côté, c’est pour ne pas donner l’accès complet au proxy inverse.

A mon avis, elles sont dynamiques, c’est pour cela !

Je peux ouvrir un sous réseau /16.

Toutes leurs IP sont là :

image

A tester :wink:

Déjà testé et celui-là aussi.

C’est une ip chinoise.
Fonctionne avec 175.178.0.0/16.

EDIT: en faisant une recherche avec 175.178 et 17track

1 « J'aime »

Bonjour
Est ce que ça fonctionne avec une adresse http jeedom (et pas HTTPS) dans le webhook de 17 track ?

Bonsoir,

Si votre Jeedom est accessible depuis l’extérieur en http, oui cela fonctionnera.
Mais le risque de piratage est énorme en exposant votre Jeedom comme ceci. Je ne conseille vraiment pas.

Xav

J’ai rentrer l’adresse suivante en remplacent monjeedom par mon adresse

http://monjeedom/plugins/parcelTracking/core/PHP/webhook.php

En testant sur 17track, j’ai un message d’erreur 503

Si je tape le lien directement dans le navigateur

On est bien d’accord que ce n’est pas ton adresse IP locale (192.168.x.x) ?

Tu utilises un proxy ?

Oui c’est bien mon adresse extérieure que j’utilise
Je passe par noip avec adresse http://monjeedom.ddns.net:port

Je crois que j’ai trouvé :wink:
Dans ton url, écris la partie « PHP » en minuscule et pas majuscule ! Je n’avais pas vu hier depuis mon mobile.

http://monjeedom.ddns.net:port/plugins/parcelTracking/core/php/webhook.php

Ca devrait aller mieux. Si tu tapes le lien directement dans ton navigateur, tu devrais avoir le message suivant :

{"code":400,"message":"No data received"}

Xav

Effectivement c’était bien ça :pray:
Merci pour aide

1 « J'aime »

Cool ! Je te laisse clore le sujet en cliquant sur « solution » :wink:

Bon suivi !

Ce n’est pas mon post a la base. Je ne vois pas de bouton solution