Integrare Power Automate con siti Web e app

Incorpora Power Automate nell'app o nel sito Web usando i widget di flow per offrire agli utenti un modo semplice per automatizzare le attività personali o professionali.

I widget di Flow sono iframe che si trovano in un documento host. Questo documento punta a una pagina nella finestra di progettazione di Power Automate. Questi widget integrano la funzionalità specifica di Power Automate nell'applicazione di terze parti.

I widget possono essere semplici. Ad esempio, un widget che esegue il rendering di un elenco di modelli senza alcuna comunicazione tra host e iframe. I widget possono essere anche complessi. Ad esempio, un widget che effettua il provisioning di un flusso cloud da un modello e quindi attiva il flusso tramite una comunicazione bidirezionale tra host e widget.

Prerequisiti

  • Un account Microsoft oppure
  • Un account aziendale o dell'istituto di istruzione

Usare il widget non autenticato

Per usare il widget dei modelli non autenticati, incorporalo direttamente nell'applicazione host usando un iframe. Non è necessario l'SDK JS o un token di accesso.

Visualizzare i modelli per gli scenari

Per iniziare, aggiungere il codice seguente per visualizzare i modelli di Power Automate nel sito Web:

<iframe src="https://flow.microsoft.com/{locale}/widgets/templates/?q={search term}
&pagesize={number of templates}&destination={destination}&category={category}"></iframe>
Parametro Descrizione
locale Codice lingua e area geografica di quattro lettere per la visualizzazione del modello. Ad esempio, en-us rappresenta l'inglese americano e de-de rappresenta il tedesco.
search term Il termine di ricerca per i modelli da includere nella visualizzazione. Ad esempio, cerca SharePoint per visualizzare i modelli per SharePoint.
number of templates Il numero di modelli da includere nella visualizzazione.
destination La pagina visualizzata quando l'utente seleziona il modello. Immetti details per visualizzare i dettagli sul modello oppure immetti new per aprire la finestra di progettazione di Power Automate.
category Filtri per la categoria del modello specificato.
parameters.{name} Contesto aggiuntivo da passare al flusso.

Se il parametro di destinazione è new, la finestra di progettazione di Power Automate viene aperta quando gli utenti selezionano un modello. Gli utenti possono quindi creare un flusso cloud nella finestra di progettazione. Per l'esperienza completa del widget, vedi la sezione successiva.

Passaggio di parametri aggiuntivi al modello di flusso

Se l'utente è in un contesto specifico nel sito Web o nell'app, è possibile passare il contesto al flusso. Ad esempio, un utente potrebbe aprire un modello per Quando viene creato un elemento mentre osserva un determinato elenco in SharePoint. Per passare l'ID elenco come parametro al flusso, segui questa procedura:

  1. Definisci il parametro nel modello di flusso prima della pubblicazione. Un parametro è simile a @{parameters('parameter_name')}.
  2. Passa il parametro nella stringa di query dell'iframe src. Ad esempio, aggiungi &parameters.listName={the name of the list} se hai un parametro denominato listName.

Esempio completo

Per visualizzare i primi quattro modelli SharePoint in tedesco e per consentire all'utente di iniziare a usare myCoolList, usa questo codice:

<iframe src="https://flow.microsoft.com/de-de/widgets/templates/?q=sharepoint%20&pagesize=4&destination=details&parameters.listName=myCoolList"></iframe>

Usare i widget di Flow autenticati

La tabella seguente mostra l'elenco dei widget di Power Automate che supportano l'esperienza completa all'interno del widget tramite il token di accesso dell'autenticazione utente. Sarà necessario usare il Software Developer Kit Javascript (SDK JS) di Power Automate per incorporare i widget e fornire il token di accesso utente necessario.

Tipo di widget Funzionalità supportata
flows Visualizza un elenco dei flussi in una scheda per i flussi personali e condivisi. Modifica un flusso esistente o crea un nuovo flusso basato su un modello o vuoto.
flowCreation Crea un flusso cloud basato su un ID modello fornito dall'applicazione host.
runtime Attiva un flusso manuale o ibrido fornito dall'applicazione host.
approvalCenter Incorpora le richieste di approvazione e le approvazioni inviate.
templates Visualizza un elenco di modelli. L'utente sceglie un modello per creare un nuovo flusso.

Usa l'SDK di Flow autenticato per consentire agli utenti di creare e gestire flussi direttamente dal sito Web o dall'app senza passare a Power Automate. Per usare l'SDK autenticato, l'utente dovrà accedere con l'account Microsoft o Azure Active Directory.

Note

Non è possibile nascondere il branding di Power Automate quando si usano i widget.

Architettura dei widget

I widget di Power Automate incorporano un iframe che fa riferimento a Power Automate in un'applicazione host. L'host fornisce il token di accesso richiesto dal widget di Power Automate. L'SDK JS di Power Automate consente all'applicazione host di inizializzare e gestire il ciclo di vita del widget.

Diagramma dell'architettura del widget Power Automate.

Dettagli dell'SDK JS

Il team di Power Automate fornisce l'SDK JS per facilitare l'integrazione dei widget di Flow nelle applicazioni di terze parti. L'SDK JS di Flow è disponibile come collegamento pubblico nel servizio Flow e consente all'applicazione host di gestire gli eventi dal widget e di interagire con l'applicazione Flow inviando azioni al widget. Gli eventi e le azioni dei widget sono specifiche del tipo di widget.

Inizializzazione dei widget

Prima di inizializzare il widget è necessario aggiungere il riferimento all'SDK JS di Flow all'applicazione host.

<script src="https://flow.microsoft.com/Content/msflowsdk-1.1.js"></script>

Crea un'istanza dell'SDK JS passando il nome host facoltativo e i valori delle impostazioni locali in un oggetto JSON.

var sdk = new MsFlowSdk({
    hostName:'https://flow.microsoft.com',
    locale:'en-US'
}); 
Nome Obbligatorio/facoltativo Descrizione
hostName Facoltativi Nome host Power Automate, ad esempio https://flow.microsoft.com
locale Facoltativi Impostazioni locali del client per il widget (se il valore non viene specificato, viene usato il valore predefinito en-Us)

Dopo aver creato l'istanza dell'SDK JS puoi inizializzare e incorporare un widget di Power Automate in un elemento padre nell'applicazione host. Per eseguire queste operazioni, aggiungi un tag div HTML:

<div id="flowDiv" class="flowContainer"></div>

Quindi inizializza il widget Power Automate con il metodo renderWidget() dell'SDK JS. Assicurati di specificare il tipo di widget e le impostazioni corrispondenti.

var widget = sdk.renderWidget('<widgettype>', {
        container: 'flowDiv',
        flowsSettings: {},
        templatesSettings: {},
        approvalCenterSettings: {},
        widgetStyleSettings: {}
});

Di seguito è riportato uno stile di esempio per il contenitore che è possibile modificare per adattarlo alle dimensioni dell'applicazione host.

<head>
    <style>
        .flowContainer iframe {
            width: 400px;
            height: 1000px;
            border: none;
            overflow: hidden;
    }
    </style>
</head>

Di seguito sono elencati i parametri per renderWidget():

Parametro Obbligatorio/facoltativo Descrizione
container Necessari ID di un elemento DIV nella pagina host in cui verrà incorporato il widget.
environmentId Facoltativi I widget richiedono un ID ambiente. Se non fornisci un ID, viene utilizzato un ambiente predefinito.
flowsSettings Facoltativi Oggetto delle impostazioni di Power Automate
templatesSettings Facoltativi Oggetto delle impostazioni del modello
approvalCenterSettings Facoltativi Oggetto delle impostazioni dell'approvazione

Token di accesso

Dopo l'esecuzione di renderWidget() dell'SDK JS, l'SDK JS inizializza un iframe che punta all'URL del widget di Power Automate. Questo URL contiene tutte le impostazioni nei parametri della stringa di query. L'applicazione host deve ricevere un token di accesso di Power Automate per l'utente (token JWT di Azure Active Directory con destinatari https://service.flow.microsoft.com) prima di inizializzare il widget. Il widget genera un evento GET_ACCESS_TOKEN per richiedere un token di accesso proveniente dall'host. L'host deve gestire l'evento e passare il token al widget:

widget.listen("GET_ACCESS_TOKEN", function(requestParam, widgetDoneCallback) {
    widgetDoneCallback(null, {
        token:  '<accesstokenFromHost>'
    });
});

L'applicazione host è responsabile della gestione del token e del passaggio del token con una data di scadenza valida al widget quando necessario. Se il widget è aperto per lunghi periodi, l'host deve verificare se il token è scaduto e, se necessario, aggiornare il token prima di passarlo al widget.

Rilevare se il widget è pronto

Dopo l'inizializzazione, il widget genera un evento per notificare che il widget è pronto. L'host può rimanere in ascolto dell'evento WIDGET_READY ed eseguire qualsiasi codice host aggiuntivo.

widget.listen("WIDGET_READY", function() {
    console.log("The flow widget is now ready.");
    // other host code on widget ready
});

Impostazioni del widget

FlowsSettings

FlowsSettings consente di personalizzare la funzionalità del widget di Power Automate.

flowsSettings?: {
    createFromBlankTemplateId?: string;
    flowsFilter?: string;sc
    tab?: string;
};
Parametro Obbligatorio/facoltativo Descrizione
createFromBlankTemplateId Necessari Usa il GUID del modello quando l'utente seleziona il pulsante Crea da zero nel widget di Flow
flowsFilter Facoltativi Il widget di Power Automate applica il filtro specificato per la visualizzazione dei flussi. È possibile ad esempio visualizzare i flussi che fanno riferimento a un sito di SharePoint specifico.
flowsFilter: "operations/any(operation: operation/sharepoint.site eq 'https://microsoft.sharepoint.com/teams/ProcessSimple' )"
tab Facoltativi Scheda attiva predefinita da visualizzare nel widget di Power Automate.
Gli oggetti prestazione
tab:'sharedFlows' visualizza la scheda Team
e tab:'myFlows' visualizza la scheda Flussi personali.

TemplatesSettings

Questa impostazione si applica a tutti i widget che consentono di creare flussi basati su un modello, inclusi i widget dei flussi, di creazione flussi e dei modelli.

templatesSettings?: {
    defaultParams?: any;
    destination?: string;
    pageSize?: number;
    searchTerm?: string;
    templateCategory?: string;
    useServerSideProvisioning?: boolean;
    enableDietDesigner?: boolean;
};
Parametro Obbligatorio/facoltativo Descrizione
defaultParams Facoltativa Parametri della fase di progettazione da usare durante la creazione di un flusso cloud basato su un modello, ad esempio:
defaultParams: {'parameters.sharepoint.site': 'https://microsoft.sharepoint.com/teams/ProcessSimple', 'parameters.sharepoint.list': 'b3a5baa8-fe94-44ca-a6f0-270d9f821668' }
destination Facoltativa I valori validi sono 'new' o 'details'. Quando il parametro è impostato su 'details', viene visualizzata una pagina dei dettagli durante la creazione di un flusso cloud basato su un modello.
pageSize Facoltativa Numero di modelli da visualizzare. Dimensioni predefinite = 6
searchTerm Facoltativi Visualizzare i modelli corrispondenti al termine di ricerca specificato
templateCategory Facoltativi Visualizzare i modelli di una categoria specifica

ApprovalCenterSettings

Si applica ai widget del centro approvazioni.

approvalCenterSettings?: {
   approvalsFilter?: string;
   tab?: string;but
   showSimpleEmptyPage? boolean;
   hideLink?: boolean
};
Parametro Obbligatorio/facoltativo Descrizione
hideLink Facoltativi Quando il parametro è impostato su true, il widget nasconde i collegamenti delle approvazioni ricevute e inviate
approvalsFilter Facoltativo Il widget di approvazione applicherà il filtro di approvazione specificato quando si visualizza l'elenco delle approvazioni, ad esempio:
approvalsFilter: 'properties/itemlink eq \'https://microsoft.sharepoint.com/teams/ProcessSimple/_layouts/15/listform.aspx?PageType=4&ListId=737e30a6-5bc4-4e9c-bcdc-d34c5c57d938&ID=3&ContentTypeID=0x010010B708969A9C16408696FD23801531C6\''

approvalsFilter: 'properties/itemlinkencoded eq \'{Your base64 encoded item link url} \''
tab Facoltativi Scheda attiva predefinita da visualizzare nel widget di Flow.
Valori validi: 'receivedApprovals', 'sentApprovals'
showSimpleEmptyPage Facoltativi Visualizza una pagina vuota quando non sono presenti approvazioni
hideInfoPaneCloseButton Facoltativi Nasconde il pulsante Chiudi del riquadro informazioni (oppure nell'host è già presente un pulsante Chiudi)

Eventi del widget

Il widget di Power Automate supporta gli eventi che consentono all'host di essere in ascolto degli eventi del ciclo di vita del widget. Il widget di Power Automate supporta due tipi di eventi: eventi di notifica unidirezionale (ad esempio, Widget_Ready) ed eventi generati dal widget per recuperare i dati dall'host (Get_Access_Token). L'host deve usare il metodo widget.listen() per essere in ascolto di determinati eventi generati dal widget.

Utilizzo

widget.listen("<WIDGET_EVENT>", function() {
    console.log("The flow widget raised event");
});

Eventi supportati dal tipo di widget

Evento del widget Dettagli
WIDGET_READY Il caricamento del widget è stato completato
WIDGET_RENDERED Il widget è stato caricato e il rendering dell'interfaccia utente è stato completato
GET_ACCESS_TOKEN Richiesta del widget di un token di accesso utente incorporato
GET_STRINGS Consente all'host di eseguire l'override di un set di stringhe dell'interfaccia utente visualizzate nel widget

Widget di runtime

Evento del widget Dettagli Dati
RUN_FLOW_STARTED Attivato ed è stata avviata l'esecuzione del flusso
RUN_FLOW_COMPLETED L'esecuzione del flusso è stata attivata
RUN_FLOW_DONE_BUTTON_CLICKED L'utente ha selezionato il pulsante Fine nell'esecuzione del flusso
RUN_FLOW_CANCEL_BUTTON_CLICKED L'utente ha selezionato il pulsante Annulla nell'esecuzione del flusso
FLOW_CREATION_SUCCEEDED Il flusso è stato creato { flowUrl: string, flowId: string, fromTemplate: string }
WIDGET_CLOSE Attivato quando l'host deve chiudere il widget

Widget di creazione flussi

Evento del widget Dettagli Dati
FLOW_CREATION_FAILED La creazione del flusso non è riuscita
WIDGET_CLOSE Attivato quando l'host deve chiudere il widget
TEMPLATE_LOAD_FAILED Non è stato possibile caricare il modello
FLOW_CREATION_SUCCEEDED Il flusso è stato creato { flowUrl: string, flowId: string,fromTemplate?: string }

Widget di approvazione

Evento del widget Dettagli
RECEIVED_APPROVAL_STATUS_CHANGED Stato di approvazione ricevuta modificato
SENT_APPROVAL_STATUS_CHANGED Stato di approvazione inviata modificato

L'evento GET_STRINGS consente di personalizzare il testo per alcuni elementi dell'interfaccia utente visualizzati nel widget. È possibile personalizzare le stringhe seguenti:

Chiave della stringa Uso nel widget
FLOW_CREATION_CREATE_BUTTON Testo visualizzato sul pulsante Crea flusso nel widget di creazione flussi e nel widget di runtime
FLOW_CREATION_CUSTOM_FLOW_NAME Il valore iniziale da usare per il nome del flusso nel widget di creazione del flusso. Usata solo quando è abilitata l'impostazione allowCustomFlowName.
FLOW_CREATION_HEADER Intestazione da usare durante la creazione di un flusso cloud nel widget di creazione flussi e nel widget di runtime
INVOKE_FLOW_HEADER Intestazione da usare quando si richiama un flusso cloud nel widget di runtime
INVOKE_FLOW_RUN_FLOW_BUTTON Testo visualizzato sul pulsante usato per richiamare o eseguire un flusso cloud nel widget di runtime

Esempio

Chiama widgetDoneCallback passando un oggetto JSON con coppie chiave-valore della chiave della stringa e un testo per sostituire il valore predefinito.

widget.listen("GET_STRINGS", function(requestParam, widgetDoneCallback) {
    widgetDoneCallback(null, {
         "FLOW_CREATION_HEADER": "<string override would go here>",
        "INVOKE_FLOW_RUN_FLOW_BUTTON":  "<string override would go here>"
    });
});

Azioni del widget

L'host usa le azioni del widget per inviare un'azione o un messaggio specifico al widget. L'SDK JS del widget fornisce il metodo notify() per inviare un messaggio o un payload JSON al widget. Ogni azione del widget supporta una firma di payload specifica.

Utilizzo

widget.notify('<WIDGET_ACTION>', parameterMatchingParameterInterface)
    .then(result => console.log(result))
    .catch(error => console.log(error))

Esempio

Richiamare un flusso cloud inviando il comando seguente a un widget di runtime

widget.notify('triggerFlow', { flowName: flowName, implicitData:implicitData });  

Widget di runtime

Azione del widget Dettagli Interfaccia del parametro
triggerFlow Attiva l'esecuzione di un flusso cloud { flowName: string, implicitData?: string }
triggerFlowByTemplate Attiva l'esecuzione di un flusso cloud in base al modello { templateId: string, implicitData?: string, designTimeParameters?: Record<string, any> }
getTriggerSchema Ottiene lo schema di trigger di un flusso cloud { flowName: string, }
closeWidget Annulla le attività in sospeso e genera un evento WIDGET_CLOSE

Widget di creazione flussi

Azione del widget Dettagli Interfaccia del parametro
createFlowFromTemplate Crea un flusso cloud per il modello selezionato { templateName: string, designTimeParameters?: Record<string, any> }
createFlowFromTemplateDefinition Crea un flusso cloud per la definizione di modello selezionata { templateDefinition: string }
closeWidget Annulla le attività in sospeso e genera un evento WIDGET_CLOSE

Widget di approvazione

Azione del widget Dettagli Interfaccia del parametro
closeInfoPane Chiude il riquadro informazioni in cui sono visualizzati i dettagli dell'approvazione N/D

Configurazione dell'applicazione client

È necessario configurare l'applicazione client con gli ambiti di servizio di Flow (autorizzazioni delegate). Se l'app di Azure Active Directory (AAD) usata per l'integrazione del widget usa un flusso di autorizzazione 'concessione del codice', l'app AAD deve essere preconfigurata con le autorizzazioni delegate supportate da Power Automate. In questo modo vengono concesse le autorizzazioni delegate che consentono all'applicazione di:

  • Gestire le approvazioni
  • Leggere le approvazioni
  • Leggere le attività
  • Gestire i flussi
  • Leggere i flussi

Per selezionare una o più autorizzazioni delegate, segui questa procedura:

  1. Vai a https://portal.azure.com
  2. Selezionare Azure Active Directory.
  3. Seleziona Registrazioni app in Gestisci.
  4. Specifica l'applicazione di terze parti da configurare per gli ambiti di servizio di Flow.
  5. Seleziona Impostazioni. Screenshot che individua l'icona delle impostazioni per l'applicazione.
  6. Seleziona Autorizzazioni necessarie in Accesso all'API/
  7. Seleziona Aggiungi.
  8. Scegli Selezionare un'API. Screenshot che individua le autorizzazioni richieste, aggiungi e seleziona un'A P I.
  9. Cerca servizio Power Automate e selezionalo. Nota: per poter visualizzare il servizio Power Automate, è necessario che il tenant abbia almeno un utente AAD che ha eseguito l'accesso al portale di Flow (https://flow.microsoft.com)
  10. Scegli gli ambiti di Flow necessari per l'applicazione e quindi seleziona Salva. Screenshot che mostra i permessi delegati.

L'applicazione otterrà un token del servizio Flow che contiene le autorizzazioni delegate nell'attestazione 'scp' nel token JWT.

Applicazione di esempio con incorporamento di widget di Flow

Nella sezione delle risorse è disponibile un'applicazione a pagina singola JavaScript di esempio che è possibile usare per provare a incorporare widget di Flow in una pagina host. Per usare l'applicazione di esempio è necessario registrare un'applicazione AAD con il flusso di concessione implicita abilitato.

Registrazione di un'app AAD

  1. Accedi al portale di Azure.
  2. Nel riquadro di spostamento a sinistra seleziona Azure Active Directory, quindi Registrazioni app (Anteprima) > Nuova registrazione.
  3. Quando viene visualizzata la pagina Registra un'applicazione, immetti un nome per l'applicazione.
  4. In Tipi di account supportati seleziona Account in una directory dell'organizzazione.
  5. Nella sezione URL di reindirizzamento seleziona la piattaforma Web e imposta il valore sull'URL dell'applicazione in base al server Web. Imposta questo valore su http://localhost:30662/ per eseguire l'app di esempio.
  6. Seleziona Registra.
  7. Nella pagina Panoramica dell'app prendi nota del valore di ID applicazione (client).
  8. Per l'esempio è necessario abilitare il flusso di concessione implicita. Nel riquadro di spostamento di sinistra dell'applicazione registrata seleziona Autenticazione.
  9. In Impostazioni avanzate in Concessione implicita seleziona le caselle di controllo Token ID e Token di accesso. Token ID e token di accesso devono essere specificati poiché l'app esegue l'accesso degli utenti e chiama l'API di Flow.
  10. Seleziona Salva.

Esecuzione dell'esempio

  1. Scarica l'esempio e copialo in una cartella locale nel dispositivo.
  2. Apri il file index.htmlnella cartella FlowSDKSample e modifica applicationConfig per aggiornare clientID all'ID applicazione registrato in precedenza. Screenshot del file index dot h t m l che individua l'I D client.
  3. L'app di esempio è configurata per l'uso degli ambiti di Flow Flows.Read.All e Flow.Manage.All. È possibile configurare altri ambiti aggiornando la proprietà flowScopes nell'oggetto applicationConfig.
  4. Esegui questi comandi per installare la dipendenza ed eseguire l'app di esempio:

    > npm install > node server.js

  5. Apri il browser e immetti http://localhost:30662
  6. Selezionare il pulsante Accedi per eseguire l'autenticazione in AAD e acquisire un token di accesso del flusso cloud.
  7. La casella di testo Token di accesso contiene il token di accesso. Screenshot che mostra la casella token di accesso contenente un token di accesso.
  8. Seleziona il widget di caricamento flussi o il widget di caricamento modelli per incorporare i widget corrispondenti. Screenshot che mostra i pulsanti per incorporare i flussi di caricamento widget o i modelli di caricamento widget.

Collegamento per il download dell'applicazione di esempio.

risorse

Pagine di test dei widget

Sono disponibili altre informazioni sull'integrazione e sulle impostazioni dei widget:

Impostazioni locali dei widget supportate

Se le impostazioni locali inizializzate non sono elencate, Flow usa per impostazione predefinita le impostazioni locali supportate più vicine.

Impostazioni locali Language
bg-bg Bulgaro (Bulgaria)
ca-es Catalano (Catalogna)
cs-cz Ceco (Repubblica Ceca)
da-dk Danese (Danimarca)
de-de Tedesco (Germania)
el-gr Greco (Grecia)
en-Us Inglese (Stati Uniti)
es-es Spagnolo (castigliano)
et-ee Estone (Estonia)
eu-es Basco (Province basche)
fi-fi Finlandese (Finlandia)
fr-fr Francese (Francia)
gl-es Gallego (Galizia)
hi-HU Ungherese (Ungheria)
hi-in Hindi (India)
hr-hr Croato (Croazia)
id-Id Indonesiano (Indonesia)
it-It Italiano (Italia)
jp-Jp Giapponese (Giappone)
kk-kz Kazaco (Kazakstan)
ko-kr Coreano (Corea)
lt-LT Lituano (Lituania)
lv-lv Lettone (Lettonia)
ms-my Malese (Malaysia)
nb-no Norvegese (Bokmål)
nl-nl Olandese (Paesi Bassi)
pl-pl Polacco (Polonia)
pt-br Portoghese (Brasile)
pt-pt Portoghese (Portogallo)
ro-ro Romeno (Romania)
ru-ru Russo (Russia)
sk-sk Slovacco (Slovacchia)
sl-si Sloveno (Slovenia)
sr-cyrl-rs Serbo (alfabeto cirillico, Serbia)
sr-latn-rs Serbo (alfabeto latino, Serbia)
sv-se Svedese (Svezia)
th-th Thai (Tailandia)
tr-tr Turco (Turchia)
uk-ua Ucraino (Ucraina)
vi-vn Vietnamita (Vietnam)

Uso dell'SDK Power Automate Embed è coperto dalle Condizioni di licenza software Microsoft.

Note

Puoi indicarci le tue preferenze di lingua per la documentazione? Partecipa a un breve sondaggio. (il sondaggio è in inglese)

Il sondaggio richiederà circa sette minuti. Non viene raccolto alcun dato personale (Informativa sulla privacy).