Syndication AllYouCanPost

Qu’est-ce que AllYouCanPost et la syndication

La syndication d’annonces permet à un producteur de contenu extérieur (ici AllYouCanPost) de mettre à disposition automatiquement ses annonces, sans ressaisie par l’utilisateur, pour une intégration dans votre site. logo-aycp

AllYouCanPost fournit un flux XML en HTTPS, collecté journalièrement par votre script. Les flux sont mis à jour toutes les 24 h.

Pour plus d’information sur la syndication

Annonces importées

Les annonces importées sont indiquées avec une marque d'origine visible pour l'administrateur et le propriétaire de l'annonce site-aycp-list

Paramétrages initiaux

Pour démarrer, il faut Contacter le fournisseur pour qu’il vous enregistre comme partenaire et vous fournisse une URI privée de votre flux. Saisir cette URI dans ADMIN > CONFIGURATION > SYNDICATION admin-aycp-uri

Il faudra indiqué la version du flux :

  • version 1 = avec les annonces à plat non regroupées par vendeurs
  • version 2 = avec les annonces regroupées var vendeurs admin-aycp-uri

Vous pouvez alors vérifier le bonne connection à cette URI en cliquant sur lire les tags. Cette action provoque le lecture de l'URI renseignée et décode la première annonce pour en afficher les tags XML. admin-aycp-readtags

Résultats si le fichier est accessible et contient au moins une annonce admin-aycp-tagsresults

Gestion des annonceurs

Le flux de AYCP est multi-annonceurs.

Vous pouvez donc choisir :

  • soit de créer des usagers à partir des données du flux admin-aycp-userauto

Fonction de la version du flux (voir avec AYCP), vous pouvez avoir un flux qui regroupe les annonces sous de publisher ou des annonces à plat sans regroupement.

En version 1 du flux : Les utilisateurs seront crées avec le champs suivants (email, téléphone, type d'annonceur (pro ou particulier), nom (si présent) et localisation compléte) issus du flux.

      ,'protype'=>$e['mainKeys']['usertype']
      ,'procpny'=>$e['mainKeys']['usertype']=="pro" ? $e['mainKeys']['username'] : "" 
      ,'username'=>$e['mainKeys']['username']
      ,'email'=>$e['primeKeys']['email']
      ,'phone'=>$e['primeKeys']['phone']

      ,'location'=>not_null($e['mainKeys']['location'])
      ,'loclat'=>not_null($e['mainKeys']['loclat'])
      ,'loclng'=>not_null($e['mainKeys']['loclng'])
      ,'loclatlng'=>not_null($e['mainKeys']['loclatlng'])
      ,'loczipcode'=>not_null($e['mainKeys']['loczipcode'])
      ,'loccity'=>not_null($e['mainKeys']['loccity'])

En version 2 du flux : Les utilisateurs seront crées avec les champs suivants issus du flux XML.

<company><![CDATA[xxxx]]></company>                
<commercial_name><![CDATA[xxx]]></commercial_name>
<website><![CDATA[www.xx.fr]]></website>
<logo_url><![CDATA[https://www.allyoucanpost.com/uploads/users/logos/1537864214-987141993.jpg]]></logo_url>
<agency_scale><![CDATA[https://www.xx.nl/honoraires/?lang=fr]]></agency_scale>
<description><![CDATA[xx ]]></description>
<location>                
    <address><![CDATA[Domaine de xx]]></address>
    <zipcode><![CDATA[58000]]></zipcode>
    <city><![CDATA[zzzz]]></city>
    <country_code><![CDATA[fr]]></country_code>
</location>

<contact>   
    <nickname><![CDATA[xxx]]></nickname>
    <firstname><![CDATA[xxx]]></firstname>
    <lastname><![CDATA[xx]]></lastname>
    <email><![CDATA[info@xx.nl]]></email>
    <phone><![CDATA[1122333]]></phone>
</contact>

        ,'procpny'=>$pubD['protype']=="pro" ? $pubD['commercial_name']  : $pubD['_contact']['nickname']  
        ,'username'=>not_null($pubD['_contact']['nickname'])
        ,'lastname'=> $is_anonymous ? "ai" : not_null($pubD['_contact']['lastname'])
        ,'firstname'=> $is_anonymous ? "robot" : not_null($pubD['_contact']['firstname'])
        ,'email'=>not_null($pubD['_contact']['email'])
        ,'phone'=>not_null($pubD['_contact']['phone'])
        ,'location'=>not_null($pubD['_location']['address']).', '.not_null($pubD['_location']['zipcode']). ' '. not_null($pubD['_location']['city'])
        ,'loczipcode'=>not_null($pubD['_location']['zipcode'])
        ,'loccity'=>not_null($pubD['_location']['city'])

Ils sont en état publiés par défaut (status 40) et le mot de passe est aléatoire. La clef d'identification est l'email. Si l'utiliseur veut par la suite utiliser ce compte sur votre script, il pourrat le faire simplement en demandant une réinitialisation de son mot de passe.

Si le flux ne contient pas de nom, les nom et prénom de l'annonceur sont robot et ai

Si l'utilisateur est de tye professionnel et que le flux contient un logo_url, alors l'image du logo est chargé (si l'potion de copie des images est activée) dans le fiche de l'annonceur

  • soit d'affecter les annonces à un utilisateur unique crée à l'avance sur votre site. admin-aycp-userdefault

Exemple d'annonce affectée à l'utilisateur par défaut site-aycp-listdefaultuser

Copie contact dans la description

Il est possible de copier les information de contact (email et téléphone) présents dans l'annonce, à la fin de la description de l'annonce. Pour activer ce mode : admin-aycp-caturl

Les informations de contact seront alors affichés (si non vides) avec la régle suivante :

Si le champ email existe, on affiche l'email. Si le champ téléphone existe, on ajoute un lien cliquable avec le numéro de téléphone. admin-aycp-caturl

Gestion des catégories

Le flux de AYCP est multi-catégories. Il est donc nécessaire de faire correspondre les catégories (IDs) issues du flux avec les catégories (IDs) de votre site.
Un fichier de traduction (au format JSON) devra être indiqué dans le champ suivant. Si auncun fichier, alors les IDs des catégories des annonces seront strictement égales aux IDs du flux. Assurez vous bien de l'existance des ces IDs sur votre site.

admin-aycp-caturl

[
    { "from_id" : 1, "from_name" : "Voiture-Berline", "to_id" : 21 }, 
    { "from_id" : 2, "from_name" : "Voiture-Coupé", "to_id" : 21 }
]

le champ from_id est l'ID de la catégorie dans le flux entrant, le champ to_id est l'ID de la catégorie de votre site. Le champ from_name n'est pas utilisé.

Il est possible de tester le fichier de traduction par le bouton suivant. admin-aycp-catchecklaunch

Le site va anayser le fichier et vérifier l'existance de catégories destination pour chaque entrée. Il va compléter le fichier avec des commentaires et des erreurs. admin-aycp-catcheck

Vous pouvez alors consulter le fichier texte et rechercher les erreurs indiquées comme suit :

{
        "from_id": 5,
        "from_name": "Voiture-Break",
        "to_id": 0,
        "to_name": "?",
        "to_error": "ERROR - does not exist"
    },

Géolocalisation des annonces

Le flux de AYCPfournit des information de localisation basiques comme, le ville, le pays et l'adresse. Pour pouvoir afficher cette annonce sur une carte, il est nécessaire de géolocaliser (obtenir les coordonnées GSP) cette adresse.

Il faudra activer l'option :

admin-locale-geoapi

ZADS effectue ce traitement de géocoding automatiquement lors de chaque importation d'annonce et utilise le service du fournisseur que vous pouvez choisir parmi la liste suivante dans ADMIN > CONFIGURATION > LOCALE

admin-locale-geoapi

Les résultats peuvent différer fonction du fournisseur choisi :

  1. Si vous choisissez openstreetmap :

    • Le service est gratuit. Aucune clé de connection nécessaire
    • Le service est mondial
    • Les champs adresse, Ville (city), code postal (postcode) et pays (country_code) sont utilisés
  2. Si vous choisissez gouvfr :

    • Le service est gratuit. Aucune clé de connection nécessaire
    • Le service est limité à la france
    • Le champs adresse et code postal (postcode) est utilisé
  3. Si vous choisissez opencage :

    • Le service est gratuit ou payant mais nécessite une clé de connection qu'il faudra obtenir sur https://opencagedata.com/
    • Le service est mondial
    • Les champs adresse, code postal (postcode) et pays (country_code) sont utilisés

Attention, il ne faut pas choisir les services GoogleMap ou MapBox qui ne sont pas compatibles

Modes de synchronisation

Il existe 2 modes de synchronisations à paramétrer dans ADMIN > CONFIGURATION > SYNDICATION

  • automatique (toutes le heures ou tous les jours)
  • manuel

La synchronisation automatique utilise les CRON/BATCHES existant journalier et horaires et se produira donc à la même heure.

admin-syndic-syncselect

Il est possible aussi bien pour l’annonceur que l’administrateur de forcer la synchronisation manuellement à tout moment. admin-syndic-aycpforce

Résultat aprés un certain temps d'attente admin-syndic-syncres

Formatage des annonces

L’annonce est automatique créée et le contenu est hérité des champs du fournisseur.

  • Les titre, descriptions, prix, caractéristiques, ... sont hérité du fichier XML du fournisseur avec un mapping vers les champs de ZADS.
  • Les nom, numéros de téléphone, email du vendeur sont hérités du flux
  • La localisation des annonces (ville, adresse, pays) est celle du flux complémentée avec une géolocation

Un tag origin indique que cette annonce provient d’une syndication et un champe référénce indique la référence du fournisseur pour chaque annonce.

Indication de l'origine site-aycp-origin

Si on édite cette annonce, une notification nous précise que cette annonce est synchronisée. Les modifications seront perdues à la prochaine synchronisation de cette annonce !

Modification d'une annonce par un utilisateur site-aycp-admod

Origine de l'annonce dans le suivi des modifications site-aycp-adlogs

Formatage des champs de l'annonce

Pour une syndication de type AllYouCanPost, le titre est égal au champ titre du flux, la desc est égal au champ content. Le prix est connecté au champ price.

La devise du prix est celle paramétrée par défaut dans le site, PAS CELLE indiquée dans le flux.

Formatage des champs spéciaux

Si vous avez crée des champs spéciaux dans ZADS (comme type de moteur, carrosserien, puissance fiscale, ....), vous pouvez faire le lien avec les caractéristiques des annonces du fournisseur. Ceci est codé en dur et donc non modifiable sans contacter le support de ZADS. Ci-dessous le codage par défaut à titre d'exemple

// cars 
  array( "key"=> 'make', "vfieldId" => 29 ) // marque
  ,array( "key"=> 'model', "vfieldId" => 29 ) // modéle
  ,array( "key"=> 'year', "vfieldId" => 28 ) // année modéle 
  ,array( "key"=> 'mileage', "vfieldId" => 14 ) // kilometrages
  ,array( "key"=> 'transmission', "vfieldId" => 27 ) // boite vitesse
  ,array( "key"=> 'fuel', "vfieldId" => 32 ) // energie
  ,array( "key"=> 'engine_size', "vfieldId" => 30 ) // engine inf cubic centimetres

  // Housing ads
  ,array( "key"=> 'property_energy_dpe', "vfieldId" => 20 ) // engine inf cubic centimetres
  ,array( "key"=> 'property_energy_ges', "vfieldId" => 21 ) // engine inf cubic centimetres
  ,array( "key"=> 'property_room', "vfieldId" => 16 ) // engine inf cubic centimetres
  ,array( "key"=> 'property_bedroom', "vfieldId" => 143 ) // engine inf cubic centimetres
  ,array( "key"=> 'property_sleepings', "vfieldId" => 145 ) // couchage
  ,array( "key"=> 'property_area', "vfieldId" => 13 ) // surface en M2

  ,array( "key"=> 'property_furnished', "vfieldId" => 22) // engine inf cubic centimetres

  // for land 
  ,array( "key"=> 'property_constructible', "vfieldId" => 141, "type" => "bool" ) // constructible 

  // for parkings 
  ,array( "key"=> 'property_covered', "vfieldId" => 142, "type" => "bool" ) // couvert ou non 

  // for rental
  ,array( "key"=> 'property_place', "vfieldId" => 144, "type" => "bool" ) // mer / montagne  / ...

  // shoes 
  ,array( "key"=> 'size_feet', "vfieldId" => 26 ) // engine inf cubic centimetres

Envoi d'emails aux annonceurs

Les annonces qui sont en issues de la syndication ne sont pas notifiées par email vers les anonceurs en cas d'expiration ou d'effacement.

Gestion des images

Les paramétres généraux de la syndication s'appliquent. On peut :

  • soit cloner/copier les images du site distant vers voyre site. Avantage : le copie locale évite des latences lors de la récupération distante des images et permet de garder une copie si la photo est supprimée à distance entre 2 synchronisations.
  • soit garder l'URI de l'image distante . Avantage : pas de consommation de votre espace de stockage.

Affichage du lien sur annonce originelle

Il est possible de présenter un lien vers l'annonce initiale chez le fournisseur. il faut activer l'option :

admin-syndic-originurl

La fiche de l'annonce affiche alors le lien : site-syndic-originurl

Annonces existantes

Lors de la synchonisation, le flux XML n'indique pas si une annonce est nouvelle ni la liste des annonces à effacer.

Avant chaque chargement, ZADS procède donc à une mise en mode "effacé" de toutes les annonces puis ensuite les réactive si elles existent dans le flux (en utilisant le tag reference présent dans le flux). Si l'annonce existe déjà, on met à jour les champs titre, description, prix, et images.

On peut aussi choisir de changer la date de modification à la date du moment de la synchro. Ce qui aura pour effet de mettre l'annonce en tête de liste. On peut désactiver cela en ne changeant pas la date (l'annonce reste ainsi dans la liste à la date de première création).

admin-syndic-moddate

Effacer les annonces / annonceurs

Il est possible d'affacer toutes les annonces importées ou tous les annonceurs crées automatiquement. Ceci peut être utile pendant des phase de mise au point. admin-aycp-delete

Statistiques

Chaque activité de synchronisation est tracée dans un journal qui peut être consulté via le menu ADMIN > SYNDICATION admin-syndic-menu

Journal pour l'administrateur admin-aycp-logs

nbindique le nombre d'annonces chargées , nbup indique le nombre d'images chargées sur le site.

Paramétrages génériques

Via le menu ADMIN > CONFIGURATION > SYNDICATION, on peut effectuer les réglages de :

  • Nombre max. d'annonces à charger du flux
  • ID de la catégorie ZADS dans laquelle les annonces vont appartenir
  • Nombre max. d'images à charge
  • Option de charger une copie des images sur le site ou les laisser à distance (url)
  • L'état par défaut de publication des annonces (à valider, publiée ou brouillon)

admin-syndic-settingsgen

Format du flux AllYouCanPost

Les flux disponibles ont une forme standardisée et répondent aux critères listés ci dessous. Ils peuvent être exportés dans de larges catégories telles que: immobilier, auto / moto, produits etc. https://www.allyoucanpost.com/fr/partenaires/flux-xml-export/