Synchroniser les données utilisateur depuis DingTalk

DingTalkProfessional Edition+

Introduction

Le plugin DingTalk synchronise les utilisateurs et départements d'une organisation DingTalk avec NocoBase. Il prend en charge la synchronisation complète manuelle et les mises à jour incrémentielles via callback HTTP ou connexion Stream.

Prérequis

  1. Installez et activez DingTalk et Synchronisation des données utilisateur.
  2. Créez une application interne dans la console développeur DingTalk.
  3. Accordez les permissions d'annuaire et configurez le périmètre des données ci-dessous.
  4. Copiez le Client ID et le Client Secret. Consultez Authentification : DingTalk.

Configurer les permissions d'annuaire et le périmètre des données

Dans la Gestion des permissions de l'application DingTalk, accordez les permissions suivantes :

PermissionIdentifiantRequiseUtilisation
Lire les informations des départementsqyapi_get_department_listOuiLire la liste, les noms et la hiérarchie.
Lire les membres des départementsqyapi_get_department_memberOuiLire les membres de chaque département.
Lire les informations des membresqyapi_get_memberOuiLire les détails et appartenances des utilisateurs.
Numéro de mobile des employésfieldMobileSi le mobile est utiliséSynchroniser le téléphone ; requis si l'identifiant unique est mobile.
E-mail et autres informations personnellesfieldEmailNonRequis pour synchroniser les adresses e-mail.

Configurez également le Périmètre des permissions de données afin d'inclure les départements et employés à synchroniser. Sélectionnez tous les employés pour une synchronisation complète.

Warning

Les permissions API déterminent les champs lisibles ; le périmètre de données détermine les départements et employés lisibles. Les deux sont nécessaires. L'abonnement aux événements ne remplace pas les permissions de lecture.

Si la même application sert aussi à la connexion, accordez les permissions personnelles décrites dans Authentification : DingTalk.

Ajouter une source DingTalk

Accédez à Utilisateurs et permissions > Synchroniser, cliquez sur Ajouter et sélectionnez DingTalk.

ChampDescription
Nom de la sourceNom unique de la source.
ActivéeDémarre la réception des événements et autorise les tâches de synchronisation.
Client IDClient ID de l'application ; variables d'environnement et secrets pris en charge.
Client SecretClient Secret de l'application ; variables d'environnement et secrets pris en charge.
Identifiant unique utilisateurmobile ou unionId. Ne le modifiez pas après la première synchronisation. Les utilisateurs sans valeur sont ignorés.
Mode de réceptionCallback HTTP ou mode Stream pour les changements incrémentiels.

Enregistrez et activez la source, puis lancez d'abord une synchronisation complète avec Synchroniser.

Choisir le mode de réception des événements

Mode Stream

Le mode Stream établit une connexion persistante sortante du serveur NocoBase vers DingTalk. Il ne nécessite ni URL publique, ni Token, ni EncodingAESKey.

  1. Sélectionnez mode Stream dans les paramètres d'abonnement DingTalk.
  2. Abonnez-vous aux événements utilisateur et département nécessaires.
  3. Sélectionnez mode Stream dans NocoBase, enregistrez et activez la source.

Le client Stream démarre lorsque la source est activée. La mise à jour, la désactivation ou la suppression actualise ou ferme la connexion.

Info

Le serveur NocoBase doit pouvoir se connecter à DingTalk. Aucun proxy inverse ni endpoint entrant public n'est requis.

Callback HTTP

  1. Sélectionnez Callback HTTP dans NocoBase.
  2. Saisissez le Token et l'EncodingAESKey configurés dans DingTalk.
  3. Enregistrez la source et copiez l'URL de callback des événements.
  4. Configurez cette URL dans DingTalk et abonnez les événements requis.

L'URL doit être accessible par DingTalk. En production, utilisez HTTPS et transmettez le chemin sans modification via le proxy inverse.

Événements incrémentiels pris en charge

ÉvénementTraitement dans NocoBase
user_add_orgCréer ou mettre à jour l'utilisateur.
user_modify_orgMettre à jour l'utilisateur.
user_leave_orgSupprimer l'utilisateur synchronisé.
org_dept_createCréer ou mettre à jour le département.
org_dept_modifyMettre à jour le département et synchroniser ses utilisateurs.
org_dept_removeSupprimer le département synchronisé.

Champs synchronisés

Champs des départements

Champ DingTalkChamp ou utilisation NocoBase
dept_idIdentifiant source unique du département.
nameNom du département.
parent_idDépartement parent. S'il est hors périmètre, le département est synchronisé comme racine.

Champs des utilisateurs

Champ DingTalkChamp ou utilisation NocoBase
mobile ou unionidIdentifiant source unique et nom d'utilisateur selon la configuration.
nameSurnom de l'utilisateur.
mobileTéléphone. Nécessite fieldMobile.
email, avec repli sur org_emailAdresse e-mail. Nécessite fieldEmail.
dept_id_listDépartements de l'utilisateur inclus dans le périmètre de données.
dept_order_listDépartement principal.
leader_in_deptIndique si l'utilisateur est responsable du département.

Responsables de département

NocoBase synchronise leader_in_dept séparément pour chaque département. Un utilisateur peut diriger plusieurs départements, indépendamment de son département principal. La suppression du statut dans DingTalk le supprime à la synchronisation suivante dans NocoBase. Les modifications manuelles peuvent être écrasées.

La synchronisation complète et incrémentielle utilisent le même mappage. L'avatar, le poste et le matricule ne sont pas synchronisés actuellement.

Dépannage

  • En cas de données manquantes, vérifiez les trois permissions requises et le périmètre de données.
  • En cas de téléphone ou d'e-mail manquant, vérifiez fieldMobile et fieldEmail.
  • Les utilisateurs sans identifiant unique configuré sont ignorés.
  • Pour Stream, recherchez Dingtalk stream client starting, Dingtalk stream client started et les erreurs de connexion dans les journaux.
  • Pour le callback HTTP, vérifiez l'accessibilité, le Token et l'EncodingAESKey.
  • Relancez une synchronisation complète après toute modification des permissions ou du périmètre.