Scrydon

Découverte

Sélecteurs et navigation dans les ressources — remplissez des listes déroulantes et laissez les utilisateurs choisir des ressources (boîtes mail, canaux, feuilles de calcul) depuis votre vendor.

Pour les vendors où les utilisateurs doivent parcourir et sélectionner des ressources. Fournit des sélecteurs pour les listes déroulantes et la découverte de ressources pour la sélection en mode système.

Définir la capacité

import { defineCapabilityDiscovery } from "@scrydon/sdk-authoring/integrations/define";

const discoveryCapability = defineCapabilityDiscovery({
  selectors: [
    {
      key: "acme.channels",
      label: "Channels",

      async fetchOptions({ accessToken, query, context }) {
        const response = await fetch("https://api.example.com/channels", {
          headers: { Authorization: `Bearer ${accessToken}` },
        });
        const data = await response.json();
        return data.channels.map((ch: any) => ({ id: ch.id, label: ch.name }));
      },

      // Optionnel — afficher le libellé pour des IDs déjà sélectionnés
      async fetchDetail({ accessToken, detailId, context }) {
        const response = await fetch(
          `https://api.example.com/channels/${detailId}`,
          { headers: { Authorization: `Bearer ${accessToken}` } },
        );
        if (!response.ok) return null;
        const ch = await response.json();
        return { id: ch.id, label: ch.name };
      },
    },
  ],

  resourceDiscovery: {
    async discover(params) {
      const response = await fetch(
        `https://api.example.com/resources?q=${params.query ?? ""}`,
        { headers: { Authorization: `Bearer ${params.accessToken}` } },
      );
      const data = await response.json();
      return data.resources.map((r: any) => ({
        id: r.id,
        name: r.name,
        type: r.type,
      }));
    },
  },
});

Méthodes de sélecteur

MéthodeRequiseRôle
fetchOptionsouiPeupler la liste déroulante — retourne toutes les options correspondantes
fetchDetailnonRésoudre un élément par son ID — retourne une option ou null

fetchOptions se déclenche lorsque l'utilisateur ouvre la liste déroulante — reçoit accessToken, query optionnel et un enregistrement context (ID d'identifiant, domaine, ID d'équipe).

fetchDetail se déclenche lorsque l'interface doit afficher un libellé pour une valeur déjà enregistrée (ex. « Chat de l'équipe Marketing » au lieu d'un ID brut sur le canevas). Sans cette méthode, l'interface affiche l'ID brut.

Implémentez fetchDetail lorsque votre vendor prend en charge les recherches efficaces par élément unique — la plupart des API REST le font (GET /channels/{id}).

Interface

interface SelectorProviderConfig {
  key: string;
  label: string;
  fetchOptions(params: {
    accessToken: string;
    query?: string;
    context?: Record<string, string>;
  }): Promise<Array<{ id: string; label: string; icon?: string }>>;
  fetchDetail?(params: {
    accessToken: string;
    detailId: string;
    context?: Record<string, string>;
  }): Promise<{ id: string; label: string; icon?: string } | null>;
}
Sur cette page

Sur cette page