add_favorite
ChatGPTAjoute un bien à la sélection (favoris) de l'utilisateur. À utiliser quand l'utilisateur manifeste de l'intérêt pour une annonce (« il me plaît », « garde celui-ci », « note 4/5 »). Un même bien réenregistré met simplement à jour sa note et son commentaire (pas de doublon). La note de 1 à 5 (entier) est nécessaire : si l'utilisateur ne l'a pas donnée, demande-la avant d'enregistrer. Utilise le listing_id du bien présenté à l'utilisateur.
add_visit_availability
ChatGPTAjoute un créneau de disponibilité pour les visites. À utiliser quand l'utilisateur indique une date et une plage horaire où il peut visiter. Si la même date + heure de début existe déjà, l'heure de fin est mise à jour (pas de doublon). slot_date : format AAAA-MM-JJ (à partir de demain, dans les 3 mois). slot_start / slot_end : format HH:MM (24h), le début doit précéder la fin. Pour un créneau à plus de 3 mois, l'outil renvoie une confirmation douce « needs_confirmation » sans enregistrer : demande confirmation à l'utilisateur, puis rappelle avec acknowledge_far_date=true.
collect_phone
ChatGPTÀ utiliser quand un numéro de téléphone est nécessaire pour continuer (par ex. create_visit_request a renvoyé phone_required) ou quand l'utilisateur veut ajouter ou modifier son numéro. Affiche un champ de saisie interactif ; le widget valide et enregistre lui-même le numéro, donc ne le demande pas en texte.
collect_visit_slots
ChatGPTÀ utiliser quand l'utilisateur doit indiquer ses créneaux de disponibilité pour une visite. Affiche un sélecteur interactif (calendrier + créneaux horaires) ; l'utilisateur choisit des créneaux d'une heure (jusqu'à 3), enregistrés directement.
create_visit_request
ChatGPTEnvoie à l'agence la demande de visite de l'utilisateur pour un bien. À utiliser quand l'utilisateur veut visiter un bien précis. Accepte listing_id OU listing_fav_id ; si seul listing_id est fourni, le bien est d'abord ajouté aux favoris. Omny réunit au préalable les créneaux et le numéro de l'utilisateur pour transmettre une demande complète à l'agence. Si une demande est déjà active pour ce bien précis, la réponse inclut blocking_listing (son listing_id et son titre) pour vérifier qu'il s'agit bien du bien voulu par l'utilisateur.
get_favorite
ChatGPTRécupère le détail d'un favori précis par son id. À utiliser quand l'utilisateur demande le détail d'un favori en particulier. Si l'id exact du favori est inconnu, appelle d'abord get_favorites pour le retrouver.
get_favorites
ChatGPTListe les biens mis en favori par l'utilisateur dans le projet en cours. Renvoie chaque favori avec son id (utile pour demander une visite), sa note, son commentaire et un résumé du bien (titre, prix, ville, surface, pièces). À utiliser quand l'utilisateur parle de « mes favoris » ou « ce que j'ai gardé ».
get_listing_detail
ChatGPTÀ utiliser quand l'utilisateur demande le détail complet d'une annonce renvoyée par search_properties. Passe le listing_id d'un résultat de recherche précédent.
get_visit_availability
ChatGPTListe les créneaux de disponibilité futurs de l'utilisateur pour les visites. Renvoie les créneaux à venir encore disponibles (non réservés), ainsi que phone_present (si l'utilisateur a déjà un numéro enregistré — le numéro lui-même n'est pas renvoyé). À utiliser quand l'utilisateur demande « quelles sont mes disponibilités ? », avant d'ajouter de nouveaux créneaux pour éviter les doublons, ou comme première étape du parcours de visite pour savoir s'il faut collecter le téléphone.
get_visit_requests
ChatGPTAffiche les demandes de visite de l'utilisateur dans le projet en cours. Rend un widget « mes visites » listant chaque demande avec son statut, le bien associé et les dates clés. À utiliser quand l'utilisateur veut voir ses visites (« montre mes visites », « où en sont mes demandes ? »), et juste après la création d'une demande pour afficher la liste à jour.
reject_favorite
ChatGPTÉcarte un bien qui ne correspond pas à l'utilisateur. À utiliser quand l'utilisateur n'est pas intéressé par une annonce présentée (« pas celui-ci », « passe », « ça ne me plaît pas »). Le bien est simplement retiré de la sélection active (rien n'est supprimé). Utilise le listing_id du bien présenté.
remove_visit_availability
ChatGPTRetire un créneau de disponibilité pour les visites. À utiliser quand l'utilisateur veut annuler une disponibilité déjà déclarée. Seuls les créneaux encore disponibles (non réservés) peuvent être retirés. Appelle d'abord get_visit_availability pour trouver l'id du créneau.
search_properties
ChatGPTÀ utiliser quand l'utilisateur cherche des biens immobiliers en France selon une localisation et des critères. Fournis au moins une localisation ; l'outil résout les localisations textuelles en zones IRIS. Renvoie les meilleures annonces classées par pertinence (score gradué 0-100 calculé côté base), ou disambiguation_needed (localisation ambiguë). L'affichage des résultats est piloté par les instructions du serveur.
show_search_results
ChatGPTAffiche les résultats de recherche dans le widget interactif. À appeler juste après search_properties quand il a renvoyé au moins une annonce (returned_count > 0) et un search_id non nul. Passe ce search_id tel quel — rien d'autre à fournir. Ne l'appelle jamais pour un résultat vide, disambiguation_needed ou un search_id nul — dans ces cas, explique plutôt la situation à l'utilisateur en texte.
update_user_phone
ChatGPTÀ utiliser quand l'utilisateur fournit son numéro de téléphone à enregistrer sur son profil Omny (pour être recontacté au sujet des visites). Le serveur valide et met le numéro au format standard (E.164) avant de l'enregistrer ; les formats français et internationaux sont acceptés.