> ## 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.

# Guía

> Guía para la instalación y el uso manuales del conector de ABBYY Vantage para Microsoft Power Automate

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>;
};

El conector de ABBYY Vantage para Microsoft Power Automate permite a los desarrolladores añadir funciones de extracción de datos y clasificación de documentos a los flujos de automatización. Se trata de un paquete redistribuible para su instalación manual.

<div id="prerequisites">
  ## Requisitos previos
</div>

<Note>
  Se requiere una licencia premium de Power Automate para usar este conector.
</Note>

Necesitará un tenant de Vantage con un [cliente de API pública](/es/vantage/documentation/tenant-admin/tenant-management/configure-client) configurado. Configuración específica para este conector:

* **Authorized Redirect URL**: Se obtiene de Power Automate más adelante en esta guía de configuración. Mantenga la URL de redirección de abbyy.com.
* **Client ID**: El ID de su cliente de API pública.
* **Client Secret**: Su secreto de cliente.
* Desactive **Require PKCE for Authorization Code Flow**.
* Active **Allow issuing refresh tokens to refresh access tokens**.
* Active **Allow client credentials flow**. Para Role(s), se recomienda `Skill User`.

<Accordion title="Ejemplo de cliente de API configurado">
  <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="Pantalla del cliente de API pública de ABBYY Vantage" width="1684" height="1688" data-path="images/vantage/developer/connectors/ms-powerautomate/public-api-client.jpg" />
</Accordion>

Necesitará el ID del tenant de Vantage durante el paso de configuración de seguridad.

<Accordion title="Cómo encontrar el ID del tenant">
  <Steps>
    <Step title="Abra la configuración del tenant">
      En Vantage, haga clic en **Configuration** en el panel izquierdo.
    </Step>

    <Step title="Copie el ID del tenant">
      Haga clic en **General** y busque el campo **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="Pantalla de configuración del tenant de 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">
  ## Instalación del conector
</div>

Primero, [descargue el conector](https://www.abbyy.com/marketplace/assets/host/abbyy/connector/microsoft-power-automate/) desde ABBYY Marketplace.

1. Abra Microsoft Power Automate y seleccione **Data > Custom connectors** en el menú de la izquierda. Puede que tenga que seleccionar **More** para encontrar la opción.

2. Haga clic en **+ New custom connector** y seleccione **Import an OpenAPI file**.

3. Escriba un nombre para el conector, como "ABBYY Vantage".

4. Busque el archivo `ABBYY-Vantage-ProcessingAPI.swagger.json` y ábralo.

<div id="configure-general-information">
  ### Configurar la información general
</div>

1. \[Opcional] Cargue un icono del conector con el logotipo de ABBYY Vantage (`Vantage-Square-icon.png`) incluido en la descarga del conector.

2. Cambie la URL de **Host** por la dirección de su servidor de Vantage. Debe usar la misma dirección de host en los campos **Authorization URL** y **Token URL**.

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

<div id="configure-security">
  ### Configurar la seguridad
</div>

Establezca **Authentication type** en **OAuth 2.0** y complete los siguientes campos con los valores de su cliente de Vantage Public API:

* **Client ID**: El Client ID de su cliente de Vantage Public API.
* **Client secret**: El secreto de cliente de su cliente de Vantage Public API.
* **Authorization URL**: `https://vantage-[region].abbyy.com/auth2/[tenant-id]/connect/authorize`
* **Token URL**: `https://vantage-[region].abbyy.com/auth2/[tenant-id]/connect/token`
* **Refresh URL**: `https://vantage-[region].abbyy.com/auth2/[tenant-id]/connect/token`
* **Scope**: `openid permissions global.wildcard offline_access`

Para finalizar la configuración de seguridad:

1. Haga clic en **Create Connector** en la parte superior de la página para crear el conector y generar la URL de redirección.

2. Copie la URL de redirección. En su cliente de Vantage Public API, en **Authorized Redirect URLs**, haga clic en **Add Redirect URL** y pegue la URL.

3. En su cliente de Vantage Public API, en **OAuth 2.0 Flows Settings**:
   * Desactive **Require PKCE for Authorization Code Flow**.
   * Active **Allow issuing refresh tokens to refresh access tokens**.

<div id="create-a-connection">
  ## Crear una conexión
</div>

En la pestaña **Test**, elija **New Connection**. Se abrirá una ventana emergente de inicio de sesión. Introduzca su nombre de usuario y contraseña de ABBYY Vantage, y asegúrese de seleccionar la misma cuenta que contiene el cliente de API pública para Microsoft Power Automate.

<div id="test-the-connection">
  ## Probar la conexión
</div>

Después de iniciar sesión correctamente en su cuenta de Vantage, la nueva conexión aparecerá en la lista de Connections. Verifique que el conector funcione correctamente probando una operación. Seleccione `ListAllAvailableSkills` en la lista de Operations y haga clic en **Probar operación**. Si no funciona, revise los pasos anteriores para asegurarse de que todos los campos se hayan configurado correctamente.

<div id="import-demo-flows">
  ## Flujos Demo de Import
</div>

Consulte [Proceso de ejemplo](/es/vantage/connectors/ms-powerautomate/sample-process) para obtener más información.

<div id="modifying-flows">
  ## Modificar flujos
</div>

Puede modificar un flujo de demostración o crear uno propio. Si necesita trabajar con un conjunto de datos específico de una response basada en JSON, puede modificar el esquema JSON. Para obtener el esquema JSON, abra la Swagger UI y llame al método necesario. La Swagger UI está disponible en:

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

<div id="next-steps">
  ## Siguientes pasos
</div>

Consulta las [notas de la versión](/es/vantage/connectors/ms-powerautomate/release-notes) del conector de Microsoft Power Automate.
