> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Connecteur ABBYY Vantage pour Microsoft Power Automate

> Installez et configurez le connecteur personnalisé ABBYY Vantage pour Microsoft Power Automate, notamment la configuration de la sécurité OAuth 2.0 et le test de la connexion.

export const VantageRegion = ({children}) => {
  const STORAGE_KEY = "abbyy.vantage.region";
  const REGIONS = [{
    code: "eu",
    label: "Europe"
  }, {
    code: "us",
    label: "North America"
  }, {
    code: "au",
    label: "Australia / Asia-Pacific"
  }];
  const [region, setRegion] = useState("eu");
  const [open, setOpen] = useState(false);
  const containerRef = useRef(null);
  const dropdownRef = useRef(null);
  function safeGetSavedRegion() {
    try {
      const saved = typeof window !== "undefined" ? window.localStorage.getItem(STORAGE_KEY) : null;
      const valid = new Set(REGIONS.map(r => r.code));
      return saved && valid.has(saved) ? saved : "eu";
    } catch {
      return "eu";
    }
  }
  function safeSetSavedRegion(code) {
    try {
      if (typeof window !== "undefined") {
        window.localStorage.setItem(STORAGE_KEY, code);
      }
    } catch {}
  }
  function dispatchRegionChanged(code) {
    try {
      if (typeof window !== "undefined") {
        window.dispatchEvent(new CustomEvent("abbyy:region-changed", {
          detail: {
            code
          }
        }));
      }
    } catch {}
  }
  function replaceRegionInString(text, currentRegion) {
    if (typeof text !== "string") return text;
    const hostRegex = /https:\/\/vantage-(eu|us|au)\.abbyy\.com/gi;
    const tokenRegex = /https:\/\/vantage-\[region\]\.abbyy\.com/gi;
    const bareHostRegex = /vantage-(eu|us|au)\.abbyy\.com/gi;
    const bareTokenRegex = /vantage-\[region\]\.abbyy\.com/gi;
    return text.replace(hostRegex, `https://vantage-${currentRegion}.abbyy.com`).replace(tokenRegex, `https://vantage-${currentRegion}.abbyy.com`).replace(bareHostRegex, `vantage-${currentRegion}.abbyy.com`).replace(bareTokenRegex, `vantage-${currentRegion}.abbyy.com`);
  }
  useEffect(() => {
    setRegion(safeGetSavedRegion());
  }, []);
  useEffect(() => {
    const root = containerRef.current;
    if (!root) return;
    const anchors = root.querySelectorAll("a[href]");
    anchors.forEach(a => {
      const href = a.getAttribute("href");
      if (href) {
        const next = replaceRegionInString(href, region);
        if (next !== href) {
          a.setAttribute("href", next);
        }
      }
    });
    const walker = typeof document !== "undefined" ? document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null) : null;
    if (walker) {
      const toUpdate = [];
      let node = walker.nextNode();
      while (node) {
        const updated = replaceRegionInString(node.nodeValue, region);
        if (updated !== node.nodeValue) {
          toUpdate.push([node, updated]);
        }
        node = walker.nextNode();
      }
      toUpdate.forEach(([textNode, value]) => {
        textNode.nodeValue = value;
      });
    }
  }, [region, children]);
  useEffect(() => {
    const root = containerRef.current;
    if (!root) return;
    const anchors = root.querySelectorAll("a[href]");
    anchors.forEach(a => {
      a.style.fontWeight = "600";
      a.style.textDecoration = "underline";
      a.style.textUnderlineOffset = "2px";
    });
  }, [region, children]);
  useEffect(() => {
    const onRegionChanged = evt => {
      const code = evt && evt.detail && evt.detail.code;
      if (!code || code === region) return;
      setRegion(code);
    };
    if (typeof window !== "undefined") {
      window.addEventListener("abbyy:region-changed", onRegionChanged);
    }
    return () => {
      if (typeof window !== "undefined") {
        window.removeEventListener("abbyy:region-changed", onRegionChanged);
      }
    };
  }, [region]);
  useEffect(() => {
    const onClickAway = e => {
      if (!dropdownRef.current) return;
      if (!dropdownRef.current.contains(e.target)) {
        setOpen(false);
      }
    };
    document.addEventListener("click", onClickAway, true);
    return () => document.removeEventListener("click", onClickAway, true);
  }, []);
  const onSelect = code => {
    setRegion(code);
    safeSetSavedRegion(code);
    dispatchRegionChanged(code);
    setOpen(false);
  };
  const current = REGIONS.find(r => r.code === region) || REGIONS[0];
  return <div className="not-prose">
      <div className="mb-4 inline-flex items-center gap-2" ref={dropdownRef}>
        <span className="text-sm text-zinc-950/80 dark:text-white/80">Tenant Region:</span>
        <div className="relative">
          <button type="button" aria-haspopup="listbox" aria-expanded={open ? "true" : "false"} onClick={() => setOpen(v => !v)} className="h-8 px-3 rounded-md bg-zinc-900/5 dark:bg-white/5 border border-zinc-950/20 dark:border-white/20 text-sm inline-flex items-center gap-2">
            <span className="text-zinc-950 dark:text-white">{current.label}</span>
            <svg width="8" height="24" viewBox="0 -9 3 24" className="transition-transform text-gray-400 overflow-visible dark:text-gray-600 ml-auto" style={{
    transform: open ? "rotate(270deg)" : "rotate(90deg)"
  }}>
              <path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round"></path>
            </svg>
          </button>
          {open ? <div role="listbox" className="absolute z-50 left-full top-0 ml-2 w-56 rounded-xl border border-zinc-950/20 dark:border-white/20 bg-white dark:bg-zinc-900 shadow-lg p-2">
              {REGIONS.map(r => {
    const selected = r.code === region;
    return <button key={r.code} type="button" role="option" aria-selected={selected ? "true" : "false"} onClick={() => onSelect(r.code)} className={"w-full flex items-center justify-between px-3 py-2 rounded-lg text-sm hover:bg-zinc-950/5 dark:hover:bg-white/10 text-zinc-950 dark:text-white" + (selected ? " font-medium" : "")}>
                    <span style={selected ? {
      color: "#ff2038"
    } : undefined}>{r.label}</span>
                    <span className={selected ? "ml-3" : "ml-3 invisible"} style={selected ? {
      color: "#ff2038"
    } : undefined}>✓</span>
                  </button>;
  })}
            </div> : null}
        </div>
      </div>
      <div ref={containerRef} className="prose dark:prose-invert max-w-none">{children}</div>
    </div>;
};

Le connecteur ABBYY Vantage pour Microsoft Power Automate permet aux développeurs d’ajouter des fonctionnalités d’extraction de données et de classification de documents aux flux d’automatisation. Il s’agit d’un package redistribuable destiné à une installation manuelle.

<div id="prerequisites">
  ## Prérequis
</div>

<Note>
  Une licence Power Automate Premium est requise pour utiliser ce connecteur.
</Note>

Vous aurez besoin d’un tenant Vantage avec un [client d’API public](/fr/vantage/documentation/tenant-admin/tenant-management/configure-client) configuré. Paramètres spécifiques pour ce connecteur :

* **Authorized Redirect URL** : obtenue dans Power Automate plus loin dans ce guide de configuration. Conservez l’URL de redirection `abbyy.com`.
* **Client ID** : l’ID de votre client d’API public.
* **Client Secret** : votre secret client.
* Désactivez **Require PKCE for Authorization Code Flow**.
* Activez **Allow issuing refresh tokens to refresh access tokens**.
* Activez **Allow client credentials flow**. Pour le ou les rôles, `Skill User` est recommandé.

<Accordion title="Exemple de client d’API configuré">
  <img src="https://mintcdn.com/abbyy/YpqdJk1A1n7Rrt8K/images/vantage/developer/connectors/ms-powerautomate/public-api-client.jpg?fit=max&auto=format&n=YpqdJk1A1n7Rrt8K&q=85&s=d425aa3ac98d861d817edb2811d6023c" alt="Écran du client d’API public ABBYY Vantage" width="1684" height="1688" data-path="images/vantage/developer/connectors/ms-powerautomate/public-api-client.jpg" />
</Accordion>

Vous aurez besoin de l’ID du tenant Vantage lors de l’étape de configuration de la sécurité.

<Accordion title="Trouver l’ID du tenant">
  <Steps>
    <Step title="Ouvrir la configuration du tenant">
      Dans Vantage, cliquez sur **Configuration** dans le volet de gauche.
    </Step>

    <Step title="Copier l’ID du tenant">
      Cliquez sur **General** et recherchez le champ **Tenant ID**.

      <img src="https://mintcdn.com/abbyy/YpqdJk1A1n7Rrt8K/images/vantage/developer/connectors/ms-powerautomate/finding-tenant-id.jpg?fit=max&auto=format&n=YpqdJk1A1n7Rrt8K&q=85&s=9797a2c9bf66dfa4ba7e4319c9717f4b" alt="Écran de configuration du tenant ABBYY Vantage" width="1414" height="610" data-path="images/vantage/developer/connectors/ms-powerautomate/finding-tenant-id.jpg" />
    </Step>
  </Steps>
</Accordion>

<div id="installing-the-connector">
  ## Installation du connecteur
</div>

Tout d’abord, [téléchargez le connecteur](https://www.abbyy.com/marketplace/assets/host/abbyy/connector/microsoft-power-automate/) depuis l’ABBYY Marketplace.

1. Ouvrez Microsoft Power Automate, puis sélectionnez **Data > Custom connectors** dans le menu de gauche. Vous devrez peut-être sélectionner **More** pour trouver cette option.

2. Cliquez sur **+ New custom connector**, puis sélectionnez **Import an OpenAPI file**.

3. Saisissez un nom pour le connecteur, par exemple « ABBYY Vantage ».

4. Recherchez le fichier `ABBYY-Vantage-ProcessingAPI.swagger.json`, puis ouvrez-le.

<div id="configure-general-information">
  ### Configurer les informations générales
</div>

1. \[Facultatif] Téléversez une icône de connecteur à l’aide du logo ABBYY Vantage (`Vantage-Square-icon.png`) inclus dans le téléchargement du connecteur.

2. Remplacez l’URL **Host** par l’adresse de votre serveur Vantage. Utilisez la même adresse d’hôte dans les champs **Authorization URL** et **Token URL**.

<VantageRegion>
  ```
  vantage-us.abbyy.com
  ```
</VantageRegion>

<div id="configure-security">
  ### Configurer la sécurité
</div>

Définissez **Type d’authentification** sur **OAuth 2.0** et renseignez les champs suivants à l’aide des valeurs de votre Vantage client d’API public :

* **Client ID** : l’ID de votre client d’API public.
* **Secret client** : le secret de votre client d’API public.
* **URL d’autorisation** : `https://vantage-[region].abbyy.com/auth2/[tenant-id]/connect/authorize`
* **URL du jeton** : `https://vantage-[region].abbyy.com/auth2/[tenant-id]/connect/token`
* **URL d’actualisation** : `https://vantage-[region].abbyy.com/auth2/[tenant-id]/connect/token`
* **Portée** : `openid permissions global.wildcard offline_access`

Pour finaliser la configuration de sécurité :

1. Cliquez sur **Create Connector** en haut de la page pour créer le connecteur et générer l’URL de redirection.

2. Copiez l’URL de redirection. Dans votre Vantage client d’API public, sous **URL de redirection autorisées**, cliquez sur **Add Redirect URL** et collez l’URL.

3. Dans votre Vantage client d’API public, sous **Paramètres des flows OAuth 2.0** :
   * Désactivez **Exiger PKCE pour l’Authorization Code Flow**.
   * Activez **Autoriser l’émission de refresh tokens pour renouveler les access tokens**.

<div id="create-a-connection">
  ## Créer une connexion
</div>

Dans l’onglet **Test**, choisissez **Nouvelle connexion**. Une fenêtre contextuelle de connexion s’ouvre. Saisissez votre nom d’utilisateur et votre mot de passe ABBYY Vantage, puis veillez à sélectionner le même compte que celui qui contient le **client d’API public** pour Microsoft Power Automate.

<div id="test-the-connection">
  ## Tester la connexion
</div>

Après vous être connecté avec succès à votre compte Vantage, la nouvelle connexion apparaît dans la liste Connections. Vérifiez que le connecteur fonctionne correctement en testant une opération. Sélectionnez `ListAllAvailableSkills` dans la liste Operations, puis cliquez sur **Test operation**. Si cela ne fonctionne pas, revoyez les étapes précédentes pour vous assurer que tous les champs ont été correctement configurés.

<div id="import-demo-flows">
  ## Flows de démo d’importation
</div>

Consultez les détails du [processus d’exemple](/fr/vantage/connectors/ms-powerautomate/sample-process).

<div id="modifying-flows">
  ## Modification des flows
</div>

Vous pouvez modifier un flow de démonstration ou créer le vôtre. Si vous devez travailler avec un jeu de données spécifique provenant d’une réponse JSON, vous pouvez modifier le JSON Schema. Pour obtenir le JSON Schema, ouvrez l’interface Swagger UI et appelez la méthode requise. L’interface Swagger UI est disponible à :

<VantageRegion>
  ```
  https://vantage-[region].abbyy.com/api/index.html?urls.primaryName=publicapi%2Fv1
  ```
</VantageRegion>

<div id="next-steps">
  ## Étapes suivantes
</div>

Consultez les [notes de version](/fr/vantage/connectors/ms-powerautomate/release-notes) du connecteur Microsoft Power Automate.
