
Google Calendar
Connectez un compte Google et vos agents peuvent consulter les disponibilités et réserver, replanifier ou annuler des rendez-vous pendant un appel.
Bêta
Ce connecteur est en bêta. Il fonctionne de bout en bout et peut servir sur de vrais agendas, mais la surface peut encore changer avant la disponibilité générale, alors ne figez pas d'automatisation sur des noms d'outils ou des formes de réponse précis pour l'instant.
Comment ça marche
Connectez un compte Google une fois, choisissez quels agents peuvent l'utiliser, et donnez à chacun une autorisation read ou write. Pendant un appel, l'agent peut consulter les disponibilités et proposer des créneaux libres, et avec write il peut aussi réserver, replanifier et annuler, le tout comme des évènements ordinaires visibles dans Google Calendar. L'autorisation dit tout, et tout ce qui suit en découle.
Connecter un agenda
La connexion est un flux de consentement OAuth, donc elle nécessite un navigateur une fois : le propriétaire de l'agenda approuve l'accès chez Google. Aethex vous donne l'URL vers laquelle l'envoyer, et vous ne voyez jamais ses identifiants. Les appels authorize et d'autorisation nécessitent une clé API avec integrations:write ; lire les connexions nécessite integrations:read.
Demander une URL de consentement
Renvoie l'URL Google à ouvrir. Elle est à usage unique et valable 10 minutes, alors générez-la quand la personne est prête à cliquer.
bashcurl -X POST https://api.aethexai.com/api/v1/integrations/google_calendar/authorize \ -H "X-API-Key: $AETHEX_API_KEY" # { "authorize_url": "https://accounts.google.com/o/oauth2/v2/auth?..." }L'ouvrir et approuver
Le propriétaire de l'agenda se connecte chez Google et approuve les deux permissions. Google redirige vers Aethex, qui termine l'échange. Confirmez le résultat depuis l'API, pas depuis l'endroit où le navigateur s'arrête.
Confirmer la connexion
La connexion est active dès qu'elle apparaît avec
status: active. Notez sonid, car les appels d'autorisation et de déconnexion le prennent tous les deux.agentsrevient vide, ce qui signifie qu'aucun agent ne peut encore l'utiliser.bash# Keep the id: the grant and disconnect calls below both take it. CONNECTION_ID=$(curl -s https://api.aethexai.com/api/v1/integrations \ -H "X-API-Key: $AETHEX_API_KEY" \ | jq -r '.data[] | select(.provider == "google_calendar") | .id')
Autoriser des agents
Un agenda connecté appartient au compte, pas à un agent, donc il n'atteint un agent que lorsque vous l'autorisez. Donnez à un agent read pour consulter les disponibilités et proposer des créneaux, ou write pour aussi réserver, replanifier et annuler. L'appel d'autorisation est déclaratif : il remplace tout l'ensemble, et une liste vide révoque tout le monde. Les autorisations sont lues au début d'un appel, donc un changement s'applique au prochain appel, pas à celui déjà en cours. Replanifier et annuler n'agissent que sur un rendez-vous que l'agent a réservé pendant le même appel, car ils ont besoin de son id d'évènement et l'agent ne peut pas chercher dans l'agenda un rendez-vous qu'il n'a pas créé.
| Action | Ce qu'elle fait | Autorisation |
|---|---|---|
| Proposer des créneaux libres | Lit les périodes occupées sur les prochains jours et ne propose que les créneaux qui conviennent. | read |
| Réserver un rendez-vous | Ajoute l'évènement à l'agenda et envoie une invitation par e-mail aux invités. | write |
| Replanifier | Déplace un rendez-vous réservé plus tôt dans le même appel, et prévient les invités. | write |
| Annuler | Supprime ce rendez-vous et prévient les invités. | write |
read pour un agent qui ne fait que citer les disponibilités et passe la main à un humain pour confirmer. L'élargir à write plus tard ne nécessite pas de reconnecter l'agenda.curl -X PUT https://api.aethexai.com/api/v1/integrations/$CONNECTION_ID/agents \
-H "X-API-Key: $AETHEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"agents": [
{ "agent_id": "6b1e...", "access": "write" },
{ "agent_id": "9d02...", "access": "read" }
]
}'L'accès approuvé
La connexion demande à Google exactement deux permissions, et rien d'autre. La permission plus large qui pourrait lire la liste de vos agendas, ses paramètres, ou avec qui il est partagé est un scope Google différent, et Aethex ne le demande pas.
| Portée | Ce qu'il couvre |
|---|---|
calendar.events | Lire, créer, modifier et supprimer des évènements. La moitié write réserve, replanifie et annule ; la moitié read vérifie la durée actuelle d'un évènement lors d'une replanification, pour la préserver. |
calendar.freebusy | Lire les plages occupées. C'est ce qu'utilise une vérification de créneau libre. |
Codes de statut à connaître
Ceux que vous rencontrerez le plus en câblant tout cela. 401 et 403 peuvent venir de n'importe quel appel ; 404 et 409 viennent de l'appel d'autorisation ; 422 et 503 viennent de authorize.
Chaque appel de cette page, avant tout traitement. Pas d'en-tête X-API-Key, ou une clé invalide, révoquée ou expirée.
Envoyez une clé valide. Missing API key signifie que l'en-tête n'est jamais arrivé ; Invalid or expired API key qu'il n'a pas correspondu.
La clé API est valide mais n'a pas le scope requis pour cet appel.
authorize, l'appel d'autorisation et la déconnexion nécessitent integrations:write ; lister les connexions nécessite integrations:read.
L'appel d'autorisation a reçu un id de connexion qui n'est pas celui de ce compte, ou un agent_id qui n'est pas un de vos agents.
Relisez GET /integrations pour l'id de connexion, et vérifiez que chaque agent_id est un agent de ce compte. C'est 404 plutôt que 422 pour ne jamais révéler les lignes d'un autre compte.
Un rare changement conflictuel de la connexion pendant l'écriture des autorisations.
Relisez la liste agents de la connexion et renvoyez l'ensemble complet.
Sur authorize, un provider qui n'utilise pas de flux de consentement. L'appel d'autorisation renvoie aussi 422 pour un corps mal formé, comme un agent_id incorrect ou un niveau d'accès inconnu.
Vérifiez que le provider est google_calendar. Les providers qui prennent un identifiant directement se connectent avec POST /integrations.
Sur authorize, le flux de consentement n'est pas disponible sur ce déploiement, ou le magasin d'état était brièvement indisponible.
Si le magasin d'état a eu un incident, le même appel réussit en réessayant. Si le flux de consentement n'est pas configuré sur ce déploiement, réessayer n'aidera pas, alors contactez le support.
Déconnecter
Supprime la connexion et l'accès stocké immédiatement, y compris sur les appels en cours, donc la prochaine action d'agenda dans un appel en direct échoue. Cela ne touche pas l'agenda lui-même, donc les rendez-vous déjà réservés restent en place. La déconnexion est idempotente et renvoie 204 que la connexion ait été active, déjà supprimée, ou jamais existante. Vous pouvez aussi révoquer l'accès depuis les paramètres d'accès tiers du compte Google ; la connexion passe alors à status: error lors de son prochain rafraîchissement de jeton.
curl -X DELETE https://api.aethexai.com/api/v1/integrations/$CONNECTION_ID \
-H "X-API-Key: $AETHEX_API_KEY"
# 204 No ContentSi quelque chose ne marche pas
Le petit nombre de choses qui expliquent en général un agenda qui semble cassé.
| Symptôme | Que vérifier |
|---|---|
La connexion affiche status: error | Google a cessé d'accepter l'accès stocké, en général révoqué chez Google ou une autorisation bêta expirée. Reconnectez, puis réautorisez vos agents, car une reconnexion démarre avec un ensemble d'autorisations vide. |
| L'agent ne propose jamais de créneaux | Vérifiez que l'agent est dans la liste agents de la connexion. |
| Il propose des créneaux mais ne réserve jamais | C'est l'accès read qui fonctionne. Passez l'autorisation à write. |
| L'URL de consentement ne marche plus | Elle est à usage unique et expire après 10 minutes. Demandez-en une nouvelle. |
| L'approbation ne peut pas aboutir | Sur un compte Google Workspace, un administrateur peut restreindre l'accès tiers. |
