Power Virtual Agents-funksjoner er nå en del av Microsoft Copilot Studio etter betydelige investeringer i generativ kunstig intelligens og forbedrede integreringer på tvers av Microsoft Copilot.
Enkelte artikler og skjermbilder kan henvise til Power Virtual Agents når vi oppdaterer dokumentasjons- og opplæringsinnhold.
Copilot Studio støtter enkel pålogging (SSO). Med SSO kan kopiloter på nettstedet ditt logge på kunder hvis de allerede er logget på siden eller appen der kopiloten er i bruk.
1 Hvis du også har aktivert Teams-kanalen, må du følge konfigurasjonsinstruksjonene i dokumentasjonen for Konfigurer SSO for Teams-kanalen. Hvis du ikke konfigurerer SSO-innstillingene for Teams i henhold til instruksjonene på siden, fører dette til at brukerne alltid mislykkes ved godkjenning ved bruk av Teams-kanalen.
Følg de samme instruksjonene på nytt for å opprette en ny appregistrering, som fungerer som registrering av lerretsappen.
Gå tilbake til denne artikkelen.
Konfigurere registreringen av lerretsappen
Når du har opprettet registreringen av lerretsappen, kan du gå til Godkjenning og deretter velge Legg til en plattform.
Velg Legg til en plattform under Plattformkonfigurasjoner, og velg deretter Nett.
Angi nettadressen til nettsiden under URI-er for omdirigering, for eksempel http://contoso.com/index.html.
Aktiver både ID-tokener (brukes for implisitt flyt og hybridflyt) og Tilgangstokener (brukes for implisitt flyt) i Implisitt tildeling og hybridflyt.
Velg Konfigurer.
Finn nettadressen til kopilotens tokenendepunkt
I Copilot Studio går du til Innstillinger og velger Kanaler.
Velg Mobilapp.
Velg Kopier under Tokenendepunkt.
Konfigurer SSO på nettsiden
Bruk koden i GitHub-repositoriet for Copilot Studio til å opprette en nettside for nettadressen for omdirigering. Kopier koden fra GitHub-repositoriet, og endre den ved å følge instruksjonene nedenfor.
Gå til Oversikt-siden i Azure Portal og kopier Program-ID (klient) og Mappe-ID-en (leier) fra lerretsappregistreringen.
Slik konfigurerer du Microsoft Authentication Library (MSAL):
Tilordne clientId til Program-ID (klient).
Tilordne authority til https://login.microsoftonline.com/, og legg til Katalog-ID (leier) på slutten.
Eksempel:
var clientApplication;
(function (){
var msalConfig = {
auth: {
clientId: '692e92c7-xxxx-4060-76d3-b381798f4d9c',
authority: 'https://login.microsoftonline.com/7ef988bf-xxxx-51af-01ab-2d7fd011db47'
},
Sett variabelen theURL til nettadressen for tokenendepunkt du kopierte tidligere. Eksempel:
(async function main() {
var theURL = "https://1c0.0.environment.api.powerplatform.com/powervirtualagents/bots/5a099fd/directline/token?api-version=2022-03-01-preview"
Rediger verdien til userId for å ta med et tilpasset prefiks. Eksempel:
Hvis nettleseren blokkerer popup-vinduer eller bruker et inkognitovindu eller privat nettlesingsvindu, blir du bedt om å logge på. Ellers fullføres påloggingen ved hjelp av en valideringskode.
En ny nettleserfane åpnes.
Bytt til den nye fanen, og kopier valideringskoden.
Bytt tilbake til fanen med kopiloten, og lim inn valideringskoden i kopilotsamtalen.
Copilot Studio sender en påloggingsforespørsel slik at brukeren kan logge på med den konfigurerte identitetsleverandøren.
Kopilotens tilpassede lerret fanger opp påloggingsspørsmålet og ber om et på-vegne-av-token fra Microsoft Entra ID. Lerretet sender tokenet til kopiloten.
Når på-vegne-av-tokenet er mottatt, bytter kopiloten tokenet i et "tilgangstoken" og fyller ut AuthToken-variabelen med verdien fra tilgangstokenet. Variabelen IsLoggedIn angis også på dette tidspunktet.
Opprett en appregistrering i Microsoft Entra ID for det egendefinerte lerretet
For å aktivere SSO trenger du to separate appregistreringer:
Gå til Appregistreringer, enten ved å velge ikonet eller søket på den øverste søkelinjen.
Velg Ny registrering.
Angi et navn på registreringen. Det kan være nyttig å bruke navnet på kopiloten hvis lerretet du registrerer, og inkluderer «lerret» for å skille det fra appregistreringen for godkjenning.
Hvis for eksempel kopiloten heter «Salgshjelp for Contoso», kan du kalle appregistreringen «SalgslerretContoso» eller noe lignende.
Velg kontotypen under Støttede kontotyper. Vi anbefaler at du velger Kontoer i en hvilken som helst organisasjonskatalog (I en hvilken som helst Microsoft Entra ID-mappe – Flere leiere) og personlige Microsoft-kontoer (for eksempel Skype, Xbox).
La delen URI for omdirigering være tom nå, siden du skriver inn informasjonen i de neste trinnene. Velg Registrer.
Når registreringen er fullført, åpnes den på Oversikt-siden. Gå til Manifest. Bekreft at accessTokenAcceptedVersion er satt til 2. Hvis den ikke gjør det, endrer du den til 2 og velger deretter Lagre.
Legg til URI for omdirigering
Når registreringen er åpen, går du til Godkjenning og velger deretter Legg til en plattform.
På konfigurer plattformer-bladet velger du Web.
Under URI-er for omdirigering legger du til den fullstendige nettadressen til siden der chattelerretet er driftet. Under Implisitt tillatelse merker du av i boksene ID-tokener og Tilgangstokener.
Velg Konfigurer for å bekrefte endringene.
Gå til API-tillatelser. Velg Gi administratorsamtykke for <ditt leiernavn> og deretter Ja.
Viktig
For å unngå at brukerne må samtykke til hvert enkelt program må en global administrator, programadministrator eller skyprogramadministrator gi samtykke for alle leiere til appregistreringene dine .
Definer et egendefinert omfang for kopiloten
Angi et egendefinert omfang ved å eksponere en API for registreringen av lerretsappen i registreringen av godkjenningsappen. Omfang gjør det mulig å bestemme bruker- og administratorroller samt tilgangsrettigheter.
Dette trinnet oppretter en klareringsrelasjon mellom registreringen av godkjenningsappen og appregistreringen for det egendefinerte lerretet.
Gå til API-tillatelser, og kontroller at de riktige tillatelsene er lagt til for kopiloten. Velg Gi administratorsamtykke for <ditt leiernavn> og deretter Ja.
Viktig
For å unngå at brukerne må samtykke til hvert enkelt program må en global administrator, programadministrator eller skyprogramadministrator gi samtykke for alle leiere til appregistreringene dine .
Gå til Vis en API, og velg Legg til et omfang.
Skriv inn et navn for omfanget, sammen med visningsinformasjonen som skal vises for brukere når de kommer til SSO-skjermbildet. Velg Legg til omfang.
Velg Legg til et klientprogram.
Angi Program-ID (klient) fra Oversikt-siden for registreringen av lerretsapp, i Klient-ID-feltet. Merk av i avmerkingsboksen for det oppførte omfanget du opprettet.
Velg Legg til program.
Konfigurer godkjenning i Copilot Studio for å aktivere enkel pålogging
Nettadressen for tokenutveksling på konfigurasjonssiden for Copilot Studio-godkjenning brukes til å utveksle OBO-tokenet mot det forespurte tilgangstokenet via Bot Framework.
Copilot Studio-kall til Microsoft Entra ID for å utføre den faktiske vekslingen.
Logg på Copilot Studio.
Kontroller at du har valgt kopiloten du vil aktivere godkjenning for, ved å velge kopilotikonet i den øverste menyen og velge riktig kopilot.
Velg Sikkerhet under Innstillinger på navigasjonsmenyen. Velg deretter Godkjenning-kortet.
Angi den fullstendige URI-en fra Vis en API-bladet for kopilotens registrering av godkjenningsappen i feltet Nettadresse for tokenutveksling. URI-en er i formatet api://1234-4567/scope.name.
Velg Lagre, og publiser deretter kopilotinnholdet.
Konfigurer den egendefinerte HTML-lerretskoden for å aktivere enkel pålogging
Oppdater den egendefinerte lerretssiden der kopiloten er plassert, for å fange opp forespørselen om påloggingskort og utveksle OBO-token.
Konfigurer Microsoft Authentication Library (MSAL) ved å legge til følgende kode i et <skript>-merke i <head>-delen.
Oppdater clientId med Program-ID (klient) for registreringen av lerretsappen. Erstatt <Directory ID> med Katalog-ID (leier). Du får disse ID-ene fra Oversikt-siden for registreringen av lerretsappen.
<head>
<script>
var clientApplication;
(function () {
var msalConfig = {
auth: {
clientId: '<Client ID [CanvasClientId]>',
authority: 'https://login.microsoftonline.com/<Directory ID>'
},
cache: {
cacheLocation: 'localStorage',
storeAuthStateInCookie: false
}
};
if (!clientApplication) {
clientApplication = new Msal.UserAgentApplication(msalConfig);
}
} ());
</script>
</head>
Sett inn følgende <skript> i <tekst>-delen. Dette skriptet kaller opp en metode for å hente resourceUrl og utveksle det gjeldende tokenet med et token som forespørres av OAuth-ledeteksten.
<script>
function getOAuthCardResourceUri(activity) {
if (activity &&
activity.attachments &&
activity.attachments[0] &&
activity.attachments[0].contentType === 'application/vnd.microsoft.card.oauth' &&
activity.attachments[0].content.tokenExchangeResource) {
// asking for token exchange with Microsoft Entra ID
return activity.attachments[0].content.tokenExchangeResource.uri;
}
}
function exchangeTokenAsync(resourceUri) {
let user = clientApplication.getAccount();
if (user) {
let requestObj = {
scopes: [resourceUri]
};
return clientApplication.acquireTokenSilent(requestObj)
.then(function (tokenResponse) {
return tokenResponse.accessToken;
})
.catch(function (error) {
console.log(error);
});
}
else {
return Promise.resolve(null);
}
}
</script>
Sett inn følgende <skript> i <tekst>-delen. I main-metoden legger denne koden til en betinget i store, med kopilotens unike identifikator. Det genereres også en unik ID som userId-variabelen.
Oppdater <COPILOT ID> med ID-en til kopiloten. Du kan se kopilotens ID ved å gå til Kanaler-fanen for kopiloten du bruker, og velge Mobilapp på Copilot Studio-portalen.
<script>
(async function main() {
// Add your COPILOT ID below
var BOT_ID = "<BOT ID>";
var theURL = "https://powerva.microsoft.com/api/botmanagement/v1/directline/directlinetoken?botId=" + BOT_ID;
const {
token
} = await fetchJSON(theURL);
var directline = await fetchJSON(regionalChannelSettingsURL).then(res=> res.channelUrlsById.directline);
const directLine = window.WebChat.createDirectLine({
domain: `${directline}v3/directline`,
token
});
var userID = clientApplication.account?.accountIdentifier != null ?
("Your-customized-prefix-max-20-characters" + clientApplication.account.accountIdentifier).substr(0, 64) :
(Math.random().toString() + Date.now().toString()).substr(0, 64); // Make sure this will not exceed 64 characters
const store = WebChat.createStore({}, ({
dispatch
}) => next => action => {
const {
type
} = action;
if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
dispatch({
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'startConversation',
type: 'event',
value: {
text: "hello"
}
}
});
return next(action);
}
if (action.type === 'DIRECT_LINE/INCOMING_ACTIVITY') {
const activity = action.payload.activity;
let resourceUri;
if (activity.from && activity.from.role === 'bot' &&
(resourceUri = getOAuthCardResourceUri(activity))) {
exchangeTokenAsync(resourceUri).then(function(token) {
if (token) {
directLine.postActivity({
type: 'invoke',
name: 'signin/tokenExchange',
value: {
id: activity.attachments[0].content.tokenExchangeResource.id,
connectionName: activity.attachments[0].content.connectionName,
token,
},
"from": {
id: userID,
name: clientApplication.account.name,
role: "user"
}
}).subscribe(
id => {
if (id === 'retry') {
// copilot was not able to handle the invoke, so display the oauthCard
return next(action);
}
// else: tokenexchange successful and we do not display the oauthCard
},
error => {
// an error occurred to display the oauthCard
return next(action);
}
);
return;
} else
return next(action);
});
} else
return next(action);
} else
return next(action);
});
const styleOptions = {
// Add styleOptions to customize Web Chat canvas
hideUploadButton: true
};
window.WebChat.renderWebChat({
directLine: directLine,
store,
userID: userID,
styleOptions
},
document.getElementById('webchat')
);
})().catch(err => console.error("An error occurred: " + err));
</script>
Fullstendig eksempelkode
For mer informasjon finner du den fullstendige eksempelkoden, med MSAL og butikkbetingede skript allerede inkludert i GitHub-repositoriet.
Kommer snart: Gjennom 2024 faser vi ut GitHub Issues som tilbakemeldingsmekanisme for innhold, og erstatter det med et nytt system for tilbakemeldinger. Hvis du vil ha mer informasjon, kan du se: https://aka.ms/ContentUserFeedback.