Expliquer un concept ou retrouver une façon de faire dans la documentation.
La documentation est assez fourni mais il peut être compliqué de trouver ce que l’on veut, l’agent fais plusieurs recherches dans celle ci afin de trouver la meilleur information.
Scénario: “Expliquer un concept de EFR“
Question / Réponse |
---|
Q: Quelle est la différence entre un flux et une médiation ? |
R: Bonjour, Un flux est un concept abstrait qui représente un transfert de données entre plusieurs applications. Il est mis en œuvre par une ou plusieurs médiations. Une médiation est un programme en cours d'exécution. Elle peut représenter la totalité ou une partie d'un flux. Une médiation peut également être générique et participer à plusieurs flux. En résumé :
Sources: |
Scénario: “Implémenter du code dans EFR“
Question / Réponse |
---|
Q: J'ai une application python avec un frontend fastAPI, comment puis je relier mon application aux API EFR ? (en te reponsant sur la documentation) |
R: Bonjour, Pour connecter votre application Python / FastAPI aux API EFR, voici les étapes à suivre, basées sur la documentation officielle. Étape 1 : AuthentificationLa première étape est de récupérer un jeton d'accès (token) via une requête POST /auth/realms/efr/protocol/openid-connect/token HTTP/1.1 Host: [domaine] Content-Type: application/x-www-form-urlencoded username=[...]&password=[...]&grant_type=password&client_id=[...]&client_secret=[...] En retour, vous obtiendrez un Étape 2 : Appels aux APIUtilisez le jeton pour authentifier vos appels aux API EFR en l'ajoutant dans l'en-tête
Documentation ComplèteLa liste exhaustive des API et leurs spécifications est disponible dans la documentation OpenAPI accessible directement depuis l'IHM d'EFR. Sources: |
Peux tu me faire un bout de code qui rajoute ça à un appel type ? |
Bien sûr, voici un exemple de code en Python utilisant la bibliothèque PrérequisAssurez-vous d'avoir la bibliothèque pip install requests Exemple de codeCet exemple montre comment obtenir un jeton d'accès, puis l'utiliser pour publier une trace. import requests import json # --- Configuration --- # Remplacez ces valeurs par vos informations réelles EFR_DOMAIN = "votre-domaine-efr.com" EFR_ENVIRONMENT = "dev" CLIENT_ID = "votre-client-id" CLIENT_SECRET = "votre-client-secret" USERNAME = "votre-username" PASSWORD = "votre-password" # --- 1. Authentification --- auth_url = f"https://{EFR_DOMAIN}/auth/realms/efr/protocol/openid-connect/token" auth_payload = { "grant_type": "password", "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET, "username": USERNAME, "password": PASSWORD, } try: print("1. Demande du jeton d'accès...") auth_response = requests.post(auth_url, data=auth_payload) auth_response.raise_for_status() # Lève une exception si la requête échoue (status >= 400) access_token = auth_response.json().get("access_token") print(" -> Jeton obtenu avec succès.") if not access_token: raise Valueerror("Le jeton d'accès n'a pas été trouvé dans la réponse.") # --- 2. Appel à l'API EFR (Exemple : Publier une trace) --- api_url = f"https://{EFR_DOMAIN}/{EFR_ENVIRONMENT}/api/traces/1" headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json", } # Données de la trace à envoyer trace_data = { "origin": "APP-001", "target": "APP-002", "status": "success", "informations": [ { "name": "id_facture", "value": "FACT-12345" } ] } print("\n2. Envoi de la trace à l'API EFR...") api_response = requests.post(api_url, headers=headers, data=json.dumps(trace_data)) api_response.raise_for_status() print(f" -> Réponse de l'API : {api_response.status_code}") print(f" -> Contenu : {api_response.json()}") except requests.exceptions.HTTPerror as http_err: print(f"Erreur HTTP : {http_err}") print(f"Détails de la réponse : {http_err.response.text}") except Exception as err: print(f"Une autre erreur est survenue : {err}") Ce script est une base que vous pouvez intégrer et adapter à la logique de votre application FastAPI. Sources: |
On obient une réponse cohérente bien que imparfaite. Cependant cela peut aider à commencer l’intégration et/ou expliquer un concept facilement.