Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Viktig!
- Dette er en produksjonsklar evalueringsfunksjonalitet.
- Produksjonsklare forhåndsversjoner er underlagt ekstra vilkår.
Gjelder for Dynamics 365 Project Operations integrert med ERP og Dynamics 365 Project Operations for produksjon
Utgiftsagenten samler funksjoner fra Microsoft Dynamics 365 Project Operations-, økonomi- og driftsapper, Microsoft Copilot Studio, Power Automate og dataverse for å automatisere arbeidsflyter for utgiftsbehandling ved hjelp av KUNSTIG INTELLIGENS. Denne funksjonen bidrar til å spare tid og redusere manuell innsats ved å gjøre det mulig for systemet å behandle kvitteringer og generere utgiftslinjer og utgiftsrapporter for brukere. Den bruker Microsoft Power Platform koblinger for integrering med Outlook, Microsoft Teams, brukerkalendere og finans- og driftsappmiljøet via dataverse virtuelle enheter.
Utgiftsagenten inkluderer flere prosesser, hvorav tre fungerer som kjerneiverksettere:
- Behandler e-postmeldinger – Denne flyten skanner en konfigurert postboksmappe hver time og lagrer vedleggene som ikke-tilknyttete kvitteringer i Dynamics 365 Finance.
- Trekk ut kvitterings-ID-er – Denne flyten henter kvitteringer som ikke er tilknyttet, og utløser agenten til å trekke ut kvitteringsdetaljer og opprette en utgiftslinje som ikke er tilknyttet.
- Prosessutgiftsrapport – Denne flyten konverterer ikke-tilknyttete utgiftslinjer og genererer utgiftsrapporter, basert på grupperapportene etter konfigurasjon som du angir i programmet for hver juridiske enhet.
I tillegg integreres agenten med Microsoft Teams, noe som muliggjør bruk av adaptive kort for gjennomgang og innsending av utgiftsrapport.
Agenten er avhengig av flere Microsoft Power Platform koblinger. Disse koblingene refereres det automatisk til i Power Automate flyt som tilbys.
- Outlook (Office 365) – denne koblingen får tilgang til den delte postboksen for å trekke ut kvitteringer.
- Dataverse (virtuelle enheter) – Denne koblingen integreres med økonomi- og driftsapper via virtuelle enheter.
- Microsoft Copilot Studio – denne koblingen aktiverer AI-modeller for å trekke ut kvitteringsinformasjon.
- Microsoft Teams – Denne koblingen sender adaptive kort for brukersamhandlinger (hvis Teams-integrering er aktivert).
- Microsoft 365 Brukere – denne koblingen henter brukerkalenderdetaljer (valgfritt hvis mottaksanalyse er kontekstavhengig).
Forhåndskrav
- Finans- og driftsmiljø: Du trenger minst versjon 10.0.44 (10.0.2263.175 og nyere) eller 10.0.45 (10.0.0.1 2345.115 og nyere) eller 10.0.46 (10.0.2428.69 og nyere) av finans- og driftsmiljøet for å installere agenten.
- Roller som kreves for å konfigurere utgiftsagentbrukeren: Hvis du vil fullføre trinnene i denne artikkelen, må du være systemansvarlig for organisasjonen og ha følgende roller for å konfigurere utgiftsagentbrukeren for å installere utgiftsagenten.
| System | Rolle | Kommentarer |
|---|---|---|
| administrasjonssenter for Power Platform | Systemansvarlig |
|
| Finance and Operations | Systemansvarlig |
|
| Microsoft 365 | Exchange-administrator og brukeradministrator |
|
| Administrasjonssenteret for Teams | Teams-administrator | Obligatorisk hvis du planlegger å aktivere Microsoft Teams integrasjon |
Fremgangsmåte for å konfigurere utgiftsagenten
Følg disse trinnene for å installere og konfigurere utgiftsagenten:
- Installer Copilot for finans- og driftsapper.
- Aktiver agentfunksjonene i miljøet ditt.
- Opprett en utgiftsbruker for kjøring av agent.
- Konfigurer en delt postboks.
- Konfigurer utgiftsagenten.
- Aktiver utgiftsagenten i Microsoft Teams (valgfritt – hvis du trenger Microsoft Teams integrering)
Avsnittene nedenfor beskriver hvert trinn i detalj.
Trinn 1: Installere Copilot for finans- og driftsapper
Utgiftsagenten er tilgjengelig som en del av Copilot for finans- og driftsapppakken. Når du har installert denne pakken i miljøet, får du automatisk alle nødvendige ressurser, inkludert agenten, miljøvariablene og Power Automate flyter.
Følg disse trinnene for å installere den nødvendige appen:
- Gå til administrasjonssenteret for Power Platform i nettleseren.
- Velg miljønavnet der du vil installere appen, fra listen over miljøer.
- Gå til NOT fra venstre navigasjonsrute på miljøsiden (Resources og velg Dynamics 365 apper.
- Søk etter Copilot etter apper for økonomi og drift i listen over Dynamics 365 apper. Hvis den allerede er installert og en oppdatering er tilgjengelig, velger du knappen Oppdater.
- Hvis appen ikke er oppført under Dynamics 365 apper, velger du Installer app, velger Copilot for finans- og driftsapper og følger instruksjonene for å fullføre installasjonen.
- Copilot for Finance and Operations-apper skal være 1.0.3231.4 eller nyere
Note
Finn ut mer om hvordan du aktiverer Copilot i miljøet i Enable Copilot-funksjoner i finans- og driftsapper.
Tips
Følg disse trinnene for å bekrefte om pakken er installert:
- Gå til Power Apps oppretterportal > velg miljøet > velg Løsninger > Se logg > søk, og velg msdyn_ExpenseAI > Detaljer.
- Kontroller Resultat-feltet .
- Hvis resultatet viser Vellykket, ble pakken installert på riktig måte.
- Hvis resultatet ikke viser Vellykket, mislyktes installasjonen.
- Hvis installasjonen mislykkes, sletter du msdyn_FnOCopilotAnchor (se avinstalleringsdelen) og installerer Copilot for finans- og driftsapper på nytt.
Trinn 2: Aktiver agentfunksjonene i miljøet ditt
Når du har installert Copilot for finans- og driftsapppakken, aktiverer du utgiftsagenten fra dataverset og finans- og driftsmiljøet.
Aktiver funksjon i Dataverse
Slå på Copilot funksjonsflagg i administrasjonssenteret for Power Platform. Følg disse trinnene for å aktivere Copilot funksjonsflagg:
- Gå til administrasjonssenteret for Power Platform.
- Velg Miljøer> velg miljøet >Innstillinger>Produkt> velg Funksjoner
- Bekreft at Copilot funksjonsflagget er aktivert.
Aktiver funksjon i økonomi- og driftsmiljøet
Følg disse trinnene for å aktivere agenten i finans- og driftsapper:
- Logg deg på økonomi- og driftsmiljøet.
- Gå til Funksjonsbehandling, og aktiver funksjonen Forenklet start og Agentadministrasjon.
- Hvis du vil konfigurere utgiftsagenten (oppsettet er per juridisk enhet), går du til Reiseregning og utlegg>Konfigurasjon>Generelt>Parametere for reiseregning og utlegg.
- Konfigurer parameterne som vist i tabellen nedenfor, på fanen Utgiftsregistreringsagent.
| Parametere | Verdi | Kommentarer |
|---|---|---|
| Aktiver utgiftsagent for nåværende juridiske enhet | Ja | Sett bryteren på Ja for å aktivere agenten for nåværende juridiske enhet. |
| Frekvens | Daglig eller ukentlig | Konfigurer hyppigheten for automatisk oppretting av utgiftsrapporter i organisasjonen. |
| Grupper rapporter etter | Reise eller prosjekt | Konfigurer for å gruppere utgifter basert på et prosjekt eller en reise. |
Trinn 3: Opprette en bruker for utgiftsagent for agentutførelse
Opprett en egen utgiftsagentbruker for å sikre at agenten kjører uavhengig av en ansatts identitet. Denne tilnærmingen hjelper med sikkerhet, administrerbarhet og langsiktig vedlikehold. Selv om du kan bruke en eksisterende brukerkonto som har de nødvendige rettighetene, kan du bruke en systemeid identitet.
Opprett utgiftsagentbrukeren i Microsoft Entra ID
- Logg på Azure-portalen.
- Velg Microsoft Entra ID fra de tilgjengelige Azure tjenestene.
- Opprett en ny bruker under Microsoft Entra ID.
- Velg Legg til>Bruker>Opprett ny bruker, og angi følgende detaljer.
- Brukerhovednavn
- Velg riktig domene
- Visningsnavn
- Passord
- Merk kontoaktivert
- Hvis du vil vise detaljene og fullføre opprettingen av brukeren, velger du Se gjennom og opprett og velger Opprett.
- Velg en bruker på siden Bruker (Administrer > brukere) og siden for se detaljer.
- Velg Rediger egenskaper, gå til fanen Innstillinger, og fyll ut riktig bruksplassering.
Note
Avhengig av organisasjonspolicyen kan det hende du må endre passordet og konfigurere godkjenning med flere faktorer (MFA). Følg fremgangsmåten slik du vanligvis gjør for å endre passord og konfigurere godkjenning med flere faktorer.
Tildel de nødvendige lisensene til utgiftsagentbrukeren
Hvis du vil installere Utgiftsagent, tilordner du følgende lisenser til utgiftsagentbrukeren:
- lisens for Dynamics 365 Teams-medlemmer
- Microsoft 365 Business Basic eller en hvilken som helst lisens som dekker Microsoft Teams og Outlook (for eksempel Office 365 E5 med team)
- Power Apps Premium
Følg disse trinnene for å tilordne lisenser:
- Logg på Microsoft 365 administrasjonssenter med en bruker som har tilgang til å tilordne lisenser som er en bruker med lisensadministrator eller høyere.
- Velg Billing>Licenses>Dynamics 365 Teams Members license.
- Velg +Tildel lisenser.
- Søk etter utgiftsagentbrukeren som ble opprettet i forrige trinn.
- Velg Tildel for å fullføre lisenstildelingen.
- Følg trinn 2 til 5 for de andre lisensene – Microsoft 365 Business Basic og Power Apps Premium også.
Note
Finn ut mer om hvordan du kontrollerer og tildeler lisenser under Bruk siden Aktive brukere til å tildele eller oppheve tildeling av lisenser.
Legge til brukeren i Power Platform-miljøet
Følg disse trinnene for å legge til brukeren i Power Platform-miljøet:
Logg deg på administrasjonssenteret for Power Platform, og velg riktig miljø.
Tips
Denne siden inneholder informasjon som er relatert til miljø-ID for Dataverse, nettadresse for miljø for Dataverse, nettadresse for økonomi og drift. Lagre disse verdiene som skal brukes i senere deler.
Gå til Tilgang > Brukere > Se alle.
Velg Legg til bruker, skriv inn den nyopprettede agentbrukeren, og velg Legg til.
Legg til følgende roller på siden Behandle sikkerhetsroller .
- Rolle som KI-agent for utgifter
- Finans- og driftsagent Configuration Manager
- Systemtilpasser
Velg Lagre for å bekrefte rolletildelingene.
Disse rollene gir tilgang til dataverse og Power Automate komponenter som agenten trenger for å fungere.
Tips
Hvis brukeren allerede finnes og du bare trenger å tilordne roller, går du til administrasjonssenteret for Power Platform og velger det aktuelle miljøet.
- Gå til Tilgang > Brukere > Se alle.
- Velg den opprettede agentbrukeren.
- Velg Administrer roller, og tildel rollene.
Tildel den nødvendige rollen i økonomi- og driftsmiljøet
Følg disse trinnene for å tilordne ExpenseAgentRole-rollen i finans- og driftsmiljøet:
- I økonomi- og driftsmiljøet går du til Systemadministrator>Brukere.
- Opprett en brukeroppføring for agentbrukeren.
- Når du har opprettet brukeren, går du til brukerens rolleinndeling, velger Tilordne roller og søker etter ExpenseAgentRole.
- Velg Lagre.
Note
ExpenseAgentRole er tilgjengelig i finans- og driftsappversjonen fra 10.0.44 (10.0.2263.81) og 10.0.45 (10.0.2345.6) og med Copilot for finans- og driftsapper versjon 1.0.3121.1
Tildel tilgang til den delte postbokstilgangen
Agentbrukeren må ha tillatelsen Mail.Read.Shared Microsoft Graph. Med denne tillatelsen kan agenten lese kvitteringer fra den konfigurerte delte postboksen under kjøring av flyten.
Følg disse trinnene for å tilordne tilgang til den delte postbokstilgangen:
- Gå til Microsoft Graph Explorer og logg på ved hjelp av opprettet agentbruker.
- Velg brukerikonet øverst til høyre >, velg Samtykke til tillatelser.
- Velg rullegardinmenyen for Post> se etter Mail.Read.Shared> velg Samtykke, og velg Godta.
Sammendrag av nødvendige roller for den opprettede agentbrukeren
| Miljø | Roller | Kommentarer |
|---|---|---|
| Dataverse | De nevnte rollene gjør det mulig for agenten å samhandle med Power Automate flyter, miljøvariabler og virtuelle enheter som er koblet til Dynamics 365 Finance | |
| Finance and Operations | Denne rollen kreves for at agenten skal kunne opprette og administrere utgiftsregistreringer i økonomi- og driftsappmiljøet. Note: ExpenseAgentRole er tilgjengelig i finans- og driftsappversjonen fra 10.0.44 (10.0.2263.81) og 10.0.45 (45) 10.0.2345.6) og med Copilot for finans- og driftsapper versjon 1.0.3121.1 |
|
| Delt postbokstilgang ved hjelp av Graph Explorer | Mail.Read.Shared | Microsoft Graph tillatelse som gjør det mulig for agenten å lese kvitteringer fra den konfigurerte delte postboksen under kjøring av flyt |
Trinn 4: Konfigurer den delte postboksen
Utgiftsagenten bruker en delt postboks til å motta og behandle mottaks-e-postmeldinger. En bruker med Exchange-administratorrollen må opprette og konfigurere denne postboksen i Microsoft 365 Admin Center.
Følg disse trinnene for å opprette og konfigurere den delte postboksen:
Logg på Microsoft 365 Admin Center ved hjelp av en Exchange-administratorkonto.
Velg Team og grupper>Delte postbokser i venstre rute.
Tips
Du må kanskje velge Vis alle for å utvide hele listen.
Velg Legg til en delt postboks.
Skriv inn et navn og en e-postadresse for den delte postboksen.
Velg Lagre endringer.
Velg Legg til medlemmer i denne delte postboksen underNeste trinn. (Det kan ta noen minutter før medlemsadministrasjon blir tilgjengelig.)
Velg Legg til medlemmer
Velg den opprettede agentbrukeren og andre som skal overvåke postboksen, og velg Legg til.
Velg Lukk.
Note
Du bruker e-postadressen til den delte postboksen i neste trinn. Når du har konfigurert den delte postboksen, må du oppgi e-postadressen og mappebanen (som standard satt til innboks) som miljøvariabler når du konfigurerer tids- og utgiftsagenten. Hvis du vil ha mer informasjon, kan du se Trinn 5: Konfigurere utgiftsagenten.
Trinn 5: Konfigurer utgiftsagenten
Du har to alternativer for å konfigurere utgiftsagenten:
- Alternativ A: Bruke et PowerShell-skript (anbefales)
- Option B: Gjør manuelt oppsett i Power Apps (ingen PowerShell)
Viktig!
Før du fortsetter med installasjonen av utgiftsagenten, må du sørge for at agenten er klargjort i Microsoft Copilot Studio.
Følg disse trinnene for å bekrefte at agenten er klargjort og klart for bruk.
- Logg på Microsoft Copilot Studio, og velg miljøet.
- Gå til Agenter, og søk etter ExpenseAgent-Line (forhåndsversjon).
- Kontroller at Publiser-knappen er aktivert.
- Hvis det er aktivert, fortsetter du med installasjonen. Hvis det er deaktivert, venter du til agenten er klargjort.
- Gjenta denne fremgangsmåten for å bekrefte at Utgiftsregistreringsagent (forhåndsversjon) er aktivert.
Tips
Hvis klargjøring av Copilot økonomi- og driftsappen tar lengre tid enn 5–6 timer, avinstallerer og installerer du appen på nytt for å løse potensielle forsinkelser i konfigurasjonen. Hvis du vil ha mer informasjon, kan du se delen Avinstaller utgiftsagent på slutten av denne artikkelen.
Alternativ A: Bruke et PowerShell-skript (anbefales)
Manuell konfigurasjon av agenten innebærer oppretting og kobling av tilkoblinger, aktivering av Power Automate flyter og publisering av løsningen. Denne prosessen kan være tidkrevende og er utsatt for feil. Hvis du vil automatisere oppsettet, bruker du et PowerShell-skript etter at du har oppdatert de nødvendige parameterne.
PowerShell-skriptet automatiserer følgende oppgaver:
- Oppdaterer de nødvendige miljøvariablene.
- Kobler tilkoblingene til Microsoft Power Platform med tilkoblingsreferanser i løsningen.
- Aktiverer alle Power Automate-flyter som tids- og utgiftsagenten krever.
- Publiserer Copilot agenter.
- Publiserer dataversløsningen.
Før du kjører skriptet, må du opprette tilkoblinger etter hvert som du må angi tilkoblings-ID-en for hver kobling i filen install.ps1. Hvis du vil opprette disse tilkoblingene, følger du disse trinnene ved hjelp av den opprettede agentbrukeren.
- Logg på Power Apps maker-portalen ved hjelp av den nyopprettede agentbrukeren, og velg miljøet ditt.
- Velg Mer, og velg Tilkoblinger i venstre rute.
- Velg Ny tilkobling og søk ved hjelp av tilkoblingsnavnet fra tabellen nedenfor (for eksempel Office 365 Outlook).
- Velg den aktuelle koblingen fra listen, og opprett den.
- Når tilkoblingen er opprettet, noterer du brukeren som tilkoblingen ble opprettet med. Det bør ideelt sett være den opprettede agentbruker-ID-en. Oppdater denne bruker-ID-en i installasjonsfilen som du oppretter i neste trinn.
- Gjenta trinn 3 og 4 for hver av de gjenværende nødvendige tilkoblingene som er oppført i tabellen nedenfor.
| Tilkoblingsnavn | Nettadresseformater for tilkobling |
|---|---|
| Office 365 Outlook | https://make.powerapps.com/environments/environmentID/connections / shared_office365/connectionID/details |
| Office 365 brukere | https://make.powerapps.com/environments/environmentID/connections / shared_office365users/connectionID/details |
| Microsoft Teams | https://make.powerapps.com/environments/environmentID/connections / shared_teams/connectionID/details |
| Microsoft Dataverse | https://make.powerapps.com/environments/environmentID/connections / shared_commondataserviceforapps/tilkoblingsID/detaljer |
| Microsoft Copilot Studio (forhåndsversjon) | https://make.powerapps.com/environments/environmentID/connections / shared_microsoftcopilotstudio/connectionID/details |
Informasjon du trenger for å opprette installasjonsfilen
Hvis du vil opprette installasjonsfilen – install.ps1, har du følgende informasjon tilgjengelig. (Du kan henvise til følgende tabell for referanse.)
| Parameter | Annen informasjon |
|---|---|
| ID for Dataverse-miljø | Angi miljø-ID-en du får fra administrasjonssenteret for Power Platform. Eksempelverdi: xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
| URL-adresse til Dataverse-miljø | Skriv inn nettadressen for miljøet fra administrasjonssenteret for Power Platform. Obs! Sørg for å ha https:// i starten og ingen skråstrek /på slutten. Eksempelverdi: https://org123.crm.contoso.com |
| Nettadresse for økonomi- og driftsforekomst | Skriv inn detaljene for økonomi- og driftsmiljøet i følgende format. Eksempelverdi: https://org123.contoso.com Obs! Sørg for å ha https:// i starten og ingen skråstrek / på slutten. |
| OutlookFolderPath | Skriv inn mappebanen som er opprettet i den delte postboksen. Hvis ingen annen mappe opprettes, angis den som innboks som standard. Eksempelverdi: Innboks Som anbefalt fremgangsmåte kan du opprette en egen mappe for utgiftsstyring |
| Adresse-ID for postboks | Skriv inn e-postadressen til den nylig opprettede delte postboksen Eksempelverdi: expenseagent@contoso.com |
| Microsoft Dataverse tilkoblingsnavn Microsoft Copilot Studio tilkoblingsnavn Microsoft Office Outlook tilkoblingsnavn Tilkoblingsnavn for Microsoft Office 365 Brukere Microsoft Teams tilkoblingsnavn |
Inndata til alle tilkoblingsnavnene er de samme og bruker-e-post-ID-en til den opprettede agentbrukeren. Eksempelverdi: createdexpenseagentuser@contoso.com |
Opprett installasjonsskriptfilen
Opprett en installasjonsskriptfil ved å kopiere følgende kode. Sett inn de nødvendige miljøvariablene i skriptet, og kjør deretter skriptet ved hjelp av PowerShell.
Note
Plasser installasjonsskriptfilen på det lokale skrivebordet. Ikke lagre den i One Drive.
Opprett en PowerShell-skriptfil med følgende kode. Oppdater de omtalte parameterne før du kjører skriptet.
Tips
Når Obligatorisk = $true, ber PowerShell deg om å skrive inn parameterne interaktivt, slik at du ikke trenger å oppdatere dem direkte i skriptfilen.
Hvis du vil unngå manuelle inndata og vil forhåndsdefinere parameterne i installasjonsskriptet, angir du Obligatorisk = $false i Param-delen av følgende eksempelkode.
Kopier følgende kode til installasjonsskriptfilen, og lagre den som Install.ps1. Oppdater variablene i de respektive parameterfeltene i param-delen. Du må oppdatere 10 variabler.
Tips
Bruk den forrige tabellen som referanse, og erstatt alle eksempelverdiene med de respektive detaljene.
#requires -Version 7
Param(
[Parameter(Mandatory=$true, HelpMessage="Dataverse environment id")]
[string]$DataverseEnvironmentId = "xxxx-xxxx-xxxx-xxx-xxxxxxxxxx",
[Parameter(Mandatory=$true, HelpMessage="Dataverse environment URL")]
[string]$DataverseUrl = "https://org123.crm.dynamics.com",
[Parameter(Mandatory=$true, HelpMessage="Finance and Operations instance URL")]
[string]$D365FinanceAndOperationsUrl = "https://org123.operations.dynamics.com",
[Parameter(Mandatory=$true, HelpMessage="OutlookFolderPath")]
[string]$OutlookFolderPath = "Inbox",
[Parameter(Mandatory=$true, HelpMessage="Mailbox Address Id")]
[string]$MailboxAddressId = "expenseagent@contoso.com",
[Parameter(Mandatory=$true, HelpMessage="Microsoft Dataverse connection name")]
[string]$MicrosoftDataverseConnectionName = "createdexpenseagentuser@contoso.com",
[Parameter(Mandatory=$true, HelpMessage="Microsoft Copilot Studio connection name")]
[string]$MicrosoftCopilotStudioConnectionName = "createdexpenseagentuser@contoso.com",
[Parameter(Mandatory=$true, HelpMessage="Microsoft Office Outlook connection name")]
[string]$Office365OutlookConnectionName = "createdexpenseagentuser@contoso.com",
[Parameter(Mandatory=$true, HelpMessage="Microsoft Office 365 Users connection name")]
[string]$Office365UsersConnectionName = "createdexpenseagentuser@contoso.com",
[Parameter(Mandatory=$true, HelpMessage="Microsoft Teams connection name")]
[string]$MicrosoftTeamsConnectionName = "createdexpenseagentuser@contoso.com",
[Parameter(Mandatory=$false, HelpMessage="Checks for bot Sync Errors and if there is provisioning required before Agent publish step")]
[boolean]$CheckBotSyncStatusAndProvisionBots = $false
)
$flows = @(
"expense entry retry check",
"expense configuration",
"get expense outlook folder",
"generate expense report",
"send expense report adaptive card",
"auto match expenses",
"process emails",
"extract unattached receipt ids for copilot invocation",
"extract unattached receipt output using dataverse plugin",
"generate expense line",
"generate expense line without project id and status id",
"identify project ids",
"user calendar events",
"process expense report using copilot",
"invoke expense agent for receipt processing"
)
$agents = @(
"msdyn_ExpenseEntryAgent",
"msdyn_ExpenseReportAgent"
)
# Check PS version
if ($PSVersionTable.PSVersion.Major -lt 7) {
Write-Error 'This script requires at least PowerShell version 7' -ErrorAction Stop
}
# Install the required modules if not already installed or if the version is not 1.0.40
if (-not (Get-Module -ListAvailable -Name Microsoft.PowerApps.PowerShell | Where-Object { $_.Version -ge [Version]"1.0.40" })) {
Write-Host "Microsoft.PowerApps.PowerShell version 1.0.40 not found. Installing..." -ForegroundColor Yellow
Install-Module -Name Microsoft.PowerApps.PowerShell -RequiredVersion 1.0.40 -Force -AllowClobber -Scope CurrentUser
} else {
Write-Host "Microsoft.PowerApps.PowerShell version 1.0.40 is already installed." -ForegroundColor Green
}
if (-not (Get-Module -ListAvailable -Name Microsoft.PowerApps.Administration.PowerShell | Where-Object { $_.Version -ge [Version]"2.0.147" })) {
Install-Module -Name Microsoft.PowerApps.Administration.PowerShell -RequiredVersion 2.0.147 -Force -AllowClobber -Scope CurrentUser
}
# Install the required modules if not already installed
if (-not (Get-Module -ListAvailable -Name Az.Accounts | Where-Object { $_.Version -ge [Version]"5.0.1"})) {
Install-Module -Name Az.Accounts -RequiredVersion 5.0.1 -Force -AllowClobber -Scope CurrentUser
}
# Import required modulesds
Import-Module Az.Accounts
Import-Module Microsoft.PowerApps.PowerShell
Import-Module Microsoft.PowerApps.Administration.PowerShell
# global variable declaration
$filter = '$filter'
function Get-AccessToken {
# Retrieve the access token for the Dataverse environment
$accessToken = (Get-AzAccessToken -ResourceUrl "$DataverseUrl" -AsSecureString).Token
Write-Host "Access token for $userId retrieved successfully." -ForegroundColor Green
return $accessToken
}
function Get-AccessTokenPlainText {
param(
[Parameter(Mandatory=$true, HelpMessage="Access token for authentication")]
[securestring]$accessToken
)
# Retrieve the access token for the PVA environment
$token = [Runtime.InteropServices.Marshal]::PtrToStringAuto(
[Runtime.InteropServices.Marshal]::SecureStringToBSTR($accessToken))
return $token
}
function update-EnvironmentVaribleValue {
param (
[string]$accessToken,
[string]$env_key,
[string]$env_value # Access token for authentication
)
try
{
# Get the environment variable definition
$envVarDefinition = Invoke-RestMethod -Method Get -Uri "$DataverseUrl/api/data/v9.2/environmentvariabledefinitions?$filter=schemaname eq '$env_key'" -Headers @{
Authorization = "Bearer $accessToken"
}
if ($envVarDefinition.value -ne $null) {
$envVarDefId = $envVarDefinition.value[0].environmentvariabledefinitionid
# Get the environment variable value record
$filterValue = [System.Web.HttpUtility]::UrlEncode("_environmentvariabledefinitionid_value eq $envVarDefId")
$envVarValue = Invoke-RestMethod -Method Get -Uri "$DataverseUrl/api/data/v9.2/environmentvariablevalues?$filter=$filterValue" -Headers @{
Authorization = "Bearer $accessToken"
}
if ($envVarValue.value -ne $null) {
$envVarValueId = $envVarValue.value[0].environmentvariablevalueid
# Update the environment variable value
Invoke-RestMethod -Method Patch -Uri "$DataverseUrl/api/data/v9.2/environmentvariablevalues($envVarValueId)" -Headers @{
Authorization = "Bearer $accessToken"
"Content-Type" = "application/json"
} -Body (@{ value = $env_value } | ConvertTo-Json -Depth 1)
Write-Host "Environment variable updated with name $env_key and value $env_value" -ForegroundColor Green
} else {
Write-Host "Environment variable value not found for $env_key. Skipping..." -ForegroundColor Red
}
}
else {
Write-Host "Environment variable definition not found for $env_key. Skipping..." -ForegroundColor Yellow
}
}
catch {
Write-Host "Failed to update environment variable $env_key. Error: $($_)" -ForegroundColor Red
throw $_ # Re-throw the error to stop the script if this step is critical
}
}
function update_EnvironmentVariablesForExpense {
param (
[string]$accessToken # Access token for authentication
)
write-host "Updating environment variables..." -ForegroundColor Yellow
try
{
update-EnvironmentVaribleValue -accessToken $accessToken -env_key "msdyn_ExpenseFnoInstanceUrl" -env_value $D365FinanceAndOperationsUrl
update-EnvironmentVaribleValue -accessToken $accessToken -env_key "msdyn_ExpenseAgentOutlookFolderPath" -env_value $OutlookFolderPath
update-EnvironmentVaribleValue -accessToken $accessToken -env_key "msdyn_ExpenseAgentMailboxAddressId" -env_value $MailboxAddressId
}
Catch {
Write-Host "Failed to update environment variables. Error: $($_)" -ForegroundColor Red -ErrorAction Stop
}
}
# Function to publish the solution
function Publish-Solution {
param (
[string]$accessToken
)
Write-Host "Publishing All" -ForegroundColor Yellow
# Construct the API endpoint for publishing the solution
$uri = "$DataverseUrl/api/data/v9.2/PublishAllXml"
# Make the API call
try {
Invoke-RestMethod -Method Post `
-Uri $uri `
-Headers @{
Authorization = "Bearer $accessToken"
"Content-Type" = "application/json"
}
Write-Host "Publish All - Success!" -ForegroundColor Green
} catch {
Write-Host "Failed to publish. Error: $($_.Exception)" -ForegroundColor Red
}
}
function Get-FlowGuidByName {
param (
[string]$accessToken, # Access token for authentication
[string]$flowName # Name of the flow to search for
)
#Write-Host "Retrieving GUID for flow: $flowName" -ForegroundColor Yellow
# Construct the API endpoint with a filter for the flow name
$encodedFlowName = [System.Web.HttpUtility]::UrlEncode($flowName)
$uri = "$DataverseUrl/api/data/v9.2/workflows?$filter=name eq '$encodedFlowName'"
try {
# Make the API call
$response = Invoke-RestMethod -Method Get `
-Uri $uri `
-Headers @{
Authorization = "Bearer $accessToken"
"Content-Type" = "application/json"
}
# Check if the flow was found
if ($response.value.Count -gt 0) {
$flow = $response.value[0]
Write-Host "Flow found: $($flow.name) with GUID: $($flow.workflowid)" -ForegroundColor Green
return $flow.workflowid
} else {
Write-Host "No flow found with the name: $flowName" -ForegroundColor Red
return $null
}
} catch {
Write-Host "Failed to retrieve flow GUID. Error: $($_.Exception.Message)" -ForegroundColor Red
return $null
}
}
# Function to activate a Power Automate flow
function Activate-Flow {
param (
[string]$DataverseUrl, # Dataverse environment URL
[string]$accessToken, # Access token for authentication
[string]$flowId # GUID of the flow to activate
)
# Construct the request body
$body = @{
"statecode" = 1 # Activated
"statuscode" = 2 # Activated
} | ConvertTo-Json -Depth 1 -Compress
# Construct the API endpoint
$uri = "$DataverseUrl/api/data/v9.2/workflows($flowId)"
# Make the API call
try {
Invoke-RestMethod -Method Patch `
-Uri $uri `
-Headers @{
Authorization = "Bearer $accessToken"
"Content-Type" = "application/json"
} `
-Body $body
Write-Host "Flow activated successfully." -ForegroundColor Green
} catch {
Write-Host "Failed to activate flow. Error: $($_.Exception.Message)" -ForegroundColor Red
}
}
function Get-ConnectionRefIdFromLogicalName {
param (
[string]$accessToken,
[string]$connectionRefLogicalName
)
$uri = "$DataverseUrl/api/data/v9.2/connectionreferences?$filter=connectionreferencelogicalname eq '$connectionRefLogicalName'"
$response = Invoke-RestMethod -Method Get `
-Uri $uri `
-Headers @{
Authorization = "Bearer $accessToken"
"Content-Type" = "application/json"
}
if ($response -ne $null) {
write-host "Connection reference id found: $($response.value[0].connectionreferenceid) " -ForegroundColor Green
return $response.value[0].connectionreferenceid
}
else {
Write-Host "No connection reference found for logical name: $connectionRefLogicalName" -ForegroundColor Red
return $null
}
}
function Get-ConnectionId {
param (
[string]$userProvidedName,
[string]$providerName
)
try {
$matchedConnectionId = $null
# Added -ErrorAction Stop to ensure the catch block is triggered on failure
$connections = Get-PowerAppConnection -EnvironmentName $DataverseEnvironmentId -ConnectorNameFilter $providerName -ErrorAction Stop
foreach ($con in $connections) {
if (($con.ConnectionName -eq $userProvidedName) -or ($con.DisplayName -eq $userProvidedName)) {
$matchedConnectionId = $con.ConnectionName
break
}
}
if ($null -eq $matchedConnectionId) {
# Use 'throw' to create a terminating error that the calling function can catch
throw "Unable to find connection '$userProvidedName' for provider '$providerName'."
}
return $matchedConnectionId
}
catch {
# Catch any errors from Get-PowerAppConnection or the 'throw' statement above
Write-Error "Failed to get connection ID for '$userProvidedName'. Error: $_"
throw # Re-throw the error to stop the script if this step is critical
}
}
function Get-ConnectionReferenceId {
param(
[string]$connectionReferenceLogicalName,
[securestring]$accessToken
)
try {
$uri = "$DataverseUrl/api/data/v9.2/connectionreferences?$filter=connectionreferencelogicalname eq '$connectionReferenceLogicalName'"
# Added -ErrorAction Stop for clarity, though Invoke-RestMethod often terminates on HTTP errors
$response = Invoke-RestMethod -Method Get -Uri $uri -Authentication Bearer -Token $accessToken -ContentType 'application/json' -ErrorAction Stop
if ($null -eq $response -or $response.value.Count -eq 0) {
throw "Connection reference not found for logical name '$connectionReferenceLogicalName'."
}
$connectionReferenceDisplayName = $response.value[0].connectionreferencedisplayname
$connectionReferenceId = $response.value[0].connectionreferenceid
Write-Host "updating connection $connectionReferenceDisplayName for logical name $connectionReferenceLogicalName)"
return $connectionReferenceId
}
catch {
Write-Error "Failed to get connection reference ID for '$connectionReferenceLogicalName'. Error: $_"
throw # Re-throw to notify the calling function
}
}
function Set-ConnectionReferenceConnection {
param (
[string]$connectionReferenceLogicalName,
[string]$userProvidedConnectionName,
[string]$providerName,
[securestring]$accessToken
)
try {
# These functions will now throw terminating errors if they fail
$connectionReferenceId = Get-ConnectionReferenceId -connectionReferenceLogicalName $connectionReferenceLogicalName -accessToken $accessToken
$connectionId = Get-ConnectionId -userProvidedName $userProvidedConnectionName -providerName $providerName
$body = @{
"connectionid" = "$connectionId"
} | ConvertTo-Json -Depth 1
$uri = "$DataverseUrl/api/data/v9.2/connectionreferences($connectionReferenceId)"
# Write-Host "Updating connection reference URI: $uri with connection id $connectionId"
Invoke-RestMethod -Method Patch -Uri $uri -Authentication Bearer -Token $accessToken -ContentType 'application/json' -Body $body -ErrorAction Stop
Write-Host "Connection reference updated successfully." -ForegroundColor Green
}
catch {
# This block will catch errors from any of the functions called within the try block
Write-Error "Failed to set connection reference for '$connectionReferenceLogicalName'. Error: $_"
throw
}
}
function Activate-Flows {
param (
[string]$accessToken,
[array]$expenseAIFlows
)
foreach ($flowName in $expenseAIFlows) {
Write-Host "Activating flow: $flowName" -ForegroundColor Yellow
# Call the Get-FlowGuidByName function to get the flow GUID
$flowGuid = Get-FlowGuidByName -dataverseUrl $DataverseUrl -accessToken $accessToken -flowName $flowName
if ($flowGuid -ne $null) {
# Write-Host "Flow Name: $flowName, Flow GUID: $flowGuid" -ForegroundColor Green
Activate-Flow -dataverseUrl $DataverseUrl -accessToken $accessToken -flowId $flowGuid
# Write-Host "Flow Name: $flowName, Flow GUID: $flowGuid Activated" -ForegroundColor Green
} else {
Write-Host "Flow Name: $flowName not found." -ForegroundColor Red
}
}
}
# Function to retrieve the Agent ID by name
function Get-AgentIdBySchemaName {
param (
[string]$DataverseUrl,
[string]$accessToken,
[string]$agentSchemaName
)
Write-Host "Retrieving agent ID for agent schema: $agentSchemaName" -ForegroundColor Yellow
# Construct the API endpoint to retrieve the bot
$uri = "$DataverseUrl/api/data/v9.2/bots?$filter=schemaname eq '$agentSchemaName'"
try {
# Make the API call
$response = Invoke-RestMethod -Method Get -Uri $uri -Headers @{
Authorization = "Bearer $accessToken"
"Content-Type" = "application/json"
}
if ($response.value.Count -gt 0) {
$agentId = $response.value[0].botid
return $agentId
} else {
Write-Host "No agent found with the name: $agentSchemaName" -ForegroundColor Red
return $null
}
} catch {
Write-Host "Failed to retrieve agent ID. Error: $($_)" -ForegroundColor Red
return $null
}
}
function Check-BotSyncErrors {
param (
[string]$DataverseUrl,
[string]$accessToken,
[string]$botId
)
Write-Host "Retrieving Sync Status for bot ID: $botId" -ForegroundColor Yellow
# Construct the API endpoint to retrieve the bot
$uri = "$DataverseUrl/api/data/v9.2/bots($botId)"
try {
# Make the API call
$response = Invoke-RestMethod -Method Get -Uri $uri -Headers @{
Authorization = "Bearer $accessToken"
"Content-Type" = "application/json"
}
if ($null -ne $response.synchronizationstatus) {
# Parse the JSON string in synchronizationstatus
$syncStatusObj = $response.synchronizationstatus | ConvertFrom-Json
$state = $syncStatusObj.currentSynchronizationState.state
$provisioningStatus = $syncStatusObj.currentSynchronizationState.provisioningStatus
Write-Host "Synchronization State: $state" -ForegroundColor Green
Write-Host "Provisioning Status: $provisioningStatus" -ForegroundColor Green
if ( $state -contains "Error" -or $provisioningStatus -contains "Error") {
Write-Host "Bot has synchronization errors." -ForegroundColor Red
return 0
} else {
if ( $state -eq "Synchronized" -or $state -eq 'Synchronizing' -and ($provisioningStatus -eq "Provisioned" -or $provisioningStatus -eq "ProvisionedWithoutRegistration")) {
Write-Host "Bot synchronization is done." -ForegroundColor Yellow
return 1
} else {
Write-Host "Bot synchronization is in progress." -ForegroundColor Green
return 2
}
}
} else {
Write-Host "No synchronization status found for bot ID: $botId" -ForegroundColor Red
return $null
}
} catch {
Write-Host "Failed to retrieve agent ID. Error: $($_)" -ForegroundColor Red
return $null
}
}
# Function to provision a PVA bot
function Provision-Agent {
param (
[string]$DataverseUrl,
[string]$accessToken,
[string]$agentId
)
# Construct the API endpoint for publishing the bot
$uri = "$DataverseUrl/api/data/v9.2/bots($agentId)/Microsoft.Dynamics.CRM.PvaProvision"
try {
# Make the API call
Invoke-RestMethod -Method Post -Uri $uri -Headers @{
Authorization = "Bearer $accessToken"
"Content-Type" = "application/json"
}
Write-Host "Agent Provisioning successfully!" -ForegroundColor Green
# Add 30 second delay to allow the publish process to complete
Start-Sleep -Seconds 30
return $true
} catch {
Write-Host "Failed to Provision Agent. Error: $($_.Exception.Message)" -ForegroundColor Red
}
return $false
}
# Function to publish a PVA bot
function Publish-Agent {
param (
[string]$DataverseUrl,
[string]$accessToken,
[string]$agentId
)
Write-Host "Publishing agent with ID: $agentId" -ForegroundColor Yellow
# Construct the API endpoint for publishing the bot
$uri = "$DataverseUrl/api/data/v9.2/bots($agentId)/Microsoft.Dynamics.CRM.PvaPublish"
try {
# Make the API call
Invoke-RestMethod -Method Post -Uri $uri -Headers @{
Authorization = "Bearer $accessToken"
"Content-Type" = "application/json"
}
Write-Host "Agent published successfully!" -ForegroundColor Green
# Add 30 second delay to allow the publish process to complete
Start-Sleep -Seconds 30
} catch {
Write-Host "Failed to publish Agent. Error: $($_.Exception.Message)" -ForegroundColor Red
}
}
function Publish-Agents {
param (
[string]$accessToken,
[array]$agentSchemas
)
if (-not $agentSchemas -or $agentSchemas.Count -eq 0) {
Write-Host "No agent schemas provided. Skipping agent publishing." -ForegroundColor Yellow
return
}
foreach ($agentSchema in $agentSchemas) {
#Write-Host "Publishing agent schema: $agentSchema" -ForegroundColor Yellow
try {
# Construct the API endpoint for publishing the agent schema
$agentId = Get-AgentIdBySchemaName -dataverseUrl $DataverseUrl -accessToken $accessToken -agentSchemaName $agentSchema
if ($agentId -ne $null) {
# check for sync errors
if ($CheckBotSyncStatusAndProvisionBots) {
$syncStatus = Check-BotSyncErrors -dataverseUrl $DataverseUrl -accessToken $accessToken -botId $agentId
if (0 -eq $syncStatus) {
Write-Host "Agent has sync errors. Skipping the publish process. Please check the bot: $agentId details" -ForegroundColor Red
continue
} elseif (2 -eq $syncStatus) {
Write-Host "Agent synchronization is still in progress. reprovisioning the agent." -ForegroundColor Yellow
if (Provision-Agent -dataverseUrl $DataverseUrl -accessToken $accessToken -agentId $agentId -eq $false) {
Write-Host "Agent reprovisioning failed. Skipping the publish process. Please check the bot: $agentId details" -ForegroundColor Red
continue
}
} else {
Write-Host "Agent synchronization is done. Proceeding to publish." -ForegroundColor Green
}
}
# Step 4: Publish the bot
Publish-Agent -dataverseUrl $DataverseUrl -accessToken $accessToken -agentId $agentId
} else {
Write-Host "Agent not found. Cannot proceed with publishing.Skipping the step" -ForegroundColor Yellow
}
}
catch {
Write-Host "An error occurred while publishing agent schema: $agentSchema. Error: $_" -ForegroundColor Red
}
}
}
# Main script execution
try {
$expenseAIFlows = $flows
$agentSchemas = $agents
# Step 1: Interactive login to Azure
Connect-AzAccount -UseDeviceAuthentication
$accessToken = Get-AccessToken
$accessTokenPlainText = Get-AccessTokenPlainText -accessToken $accessToken
# Step 2: Setup ennviornment variables
update_EnvironmentVariablesForExpense -accessToken $accessTokenPlainText
Write-Host "Environment variables updated successfully!" -ForegroundColor Green
# Step 3: Check active connections
Set-ConnectionReferenceConnection -userProvidedConnectionName $MicrosoftDataverseConnectionName -providerName "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps" -connectionReferenceLogicalName "msdyn_sharedcommondataserviceforapps_2c2d4" -accessToken $accessToken
Set-ConnectionReferenceConnection -userProvidedConnectionName $MicrosoftCopilotStudioConnectionName -providerName "/providers/Microsoft.PowerApps/apis/shared_microsoftcopilotstudio" -connectionReferenceLogicalName "msdyn_sharedmicrosoftcopilotstudio_26d9d" -accessToken $accessToken
Set-ConnectionReferenceConnection -userProvidedConnectionName $Office365OutlookConnectionName -providerName "/providers/Microsoft.PowerApps/apis/shared_office365" -connectionReferenceLogicalName "msdyn_sharedoffice365_9b471" -accessToken $accessToken
Set-ConnectionReferenceConnection -userProvidedConnectionName $MicrosoftTeamsConnectionName -providerName "/providers/Microsoft.PowerApps/apis/shared_teams" -connectionReferenceLogicalName "msdyn_sharedteams_8ea9c" -accessToken $accessToken
Set-ConnectionReferenceConnection -userProvidedConnectionName $Office365UsersConnectionName -providerName "/providers/Microsoft.PowerApps/apis/shared_office365users" -connectionReferenceLogicalName "msdyn_sharedoffice365users_909b9" -accessToken $accessToken
# Step 4: Activate flows
Activate-Flows -accessToken $accessTokenPlainText -expenseAIFlows $expenseAIFlows
# step 5: publish the agents
Publish-Agents -accessToken $accessTokenPlainText -agentSchemas $agentSchemas
# Step 6: Publish the solution
Publish-Solution -accessToken $accessTokenPlainText
Write-Host "Agent setup completed successfully!" -ForegroundColor Green
} catch {
Write-Host "An error occurred: $_" -ForegroundColor Red
}
Følg disse trinnene for å utløse PowerShell-filen:
- Åpne PowerShell (minimumsversjon kreves – PowerShell 7).
- Gå til plasseringen der du lagret filen. (Bruk plasseringen til command cd-<filplasseringen>).
- Utløs installasjonsskriptet. (Bruk kommandoen '.\Install.ps1').
- Følg instruksjonene for å logge på Azure.
- Når du logger på, må du kanskje godkjenne én gang til. (Bruk bruker-ID-en for den opprettede agenten.).
Vent til skriptet er kjørt helt, og se etter meldingen Agentoppsettet ble fullført!
Note
Det foregående skriptet utfører disse handlingene:
- Angir miljøvariabler.
- Bekrefter og kobler tilkoblingsreferanser.
- Aktiverer Power Automate flyter.
- Publiserer de nødvendige Copilot agentene.
- Publiserer dataversløsningen.
Når skriptet kjøres, er utgiftsagenten fullstendig konfigurert og klar til bruk.
Alternativ B: Konfigurere manuelt i Power Apps (ingen PowerShell)
Hvis du ikke vil bruke PowerShell-skriptet, kan du manuelt konfigurere utgiftsagenten via Power Apps. Denne prosessen innebærer oppdatering av miljøvariabler, aktivering av Power Automate flyter og publisering av løsningen.
Oppdatere miljøvariabler
Følg disse trinnene for å oppdatere miljøvariabler:
Logg på Power Apps, og velg miljøet.
Velg Løsninger, og åpne deretter Standardløsning (eller løsningen der agenten er installert).
Gå til Miljøvariabler, og angi følgende verdier.
Variabelnavn Beskrivelse Utgiftsagent Outlook mappebane Angi mappebanen som skal overvåkes i den delte postboksen (som standard Innboks). Delt postadresse-ID for utgiftsagent Angi e-postadressen til den delte postboksen. Hvis du vil bruke postboksen til den påloggede brukeren, skriver du inn NA. URL-adresse for økonomi- og driftsforekomst Angi nettadressen til økonomi- og driftsappmiljøet (f.eks. https://org123.contoso.com).
Aktiver Power Automate flyter
Utgiftsagenten er avhengig av følgende Power Automate-flows:
- Kontroll av nye forsøk på utgiftsregistrering
- Utgiftskonfigurasjon
- Hent Outlook-mappen for utgifter
- Generer reiseregning
- Dynamisk kort for Send reiseregning
- Automatisk samsvare utgifter
- Behandle e-poster
- Trekk ut ikke-tilknyttet kvitterings-ID-er for kopilotaktivering
- Trekk ut utdata for ikke-tilknyttet kvittering ved hjelp av Dataverse-programtillegget
- Generer utgiftslinje
- Generer utgiftslinje uten prosjekt-ID og status-ID
- Identifiser prosjekt-ID-er
- Brukerkalenderhendelser
- Behandle reiseregning ved hjelp av kopilot
- Aktiver utgiftsagent for mottaksbehandling
Følg disse trinnene for å aktivere flytene:
Logg på Power Automate, og velg miljøet.
Velg Mine flyter.
Følg disse trinnene for hver av de 15 flytene i den forrige listen:
- Finn flyten.
- Velg Rediger.
- Bytt til gammel utformingsvisning ved å deaktivere alternativet Ny utforming.
- Godkjenn eventuelle nødvendige tilkoblinger (til grønne haker vises).
- Velg Fortsett, og velg deretter Lagre.
- Velg Slå på for å aktivere flyten.
Publiser løsningen
Når du er ferdig med å konfigurere alle miljøvariabler og prosesser, følger du denne fremgangsmåten for å publisere løsningen.
- Gå til Solutions i Power Apps.
- Velg miljø og løsning.
- Velg Publiser alle tilpassinger.
Når du fullfører disse trinnene, er utgiftsagenten fullstendig konfigurert og klar til bruk.
Trinn 6: Aktivere utgiftsagenten i Microsoft Teams (valgfritt)
Hvis du vil aktivere Teams-basert kommunikasjon for utgiftsagenten, kan du legge til Teams-kanalen i agenten i Power Apps. Agenten kan deretter sende adaptive kort gjennom Teams.
Aktiver Teams-kanalen
Følg disse trinnene for å aktivere Teams-kanalen:
- Logg på Copilot Studio og velg riktig miljø.
- Velg Utgiftsregistreringsagent på fanen Agenter.
- Velg
Channels -fanen i agentvisningen på fanen <Teams og Microsoft 365 Copilot . - Velg Legg til kanal for å aktivere Teams-integrering, og følg fremgangsmåten i delen Konfigurer Teams-apptilgjengelighet for å konfigurere hvem du vil dele appen med.
Finn ut mer i Åpne konfigurasjonspanelet for Teams + Microsoft 365-kanalen.
Konfigurere tilgjengelighet for Teams-appen
Følg disse trinnene for å konfigurere Tilgjengelighet for Teams-appen:
Når Teams-appen er opprettet, velger du Tilgjengelighetsalternativer.
Velg hvem du vil dele appen med:
- Spesifikke brukere i organisasjonen
- Hele organisasjonen
Send inn appen til godkjenning.
Publiser appen i administrasjonssenteret for Teams
Følg disse trinnene for å publisere appen i administrasjonssenteret for Teams:
- Logg deg på administrasjonssenteret for Teams.
- Gå til Teams-appen > Administrer apper. Søk etter utgifter, og velg Utgiftsregistreringsagent-appen der appstatusen er blokkert.
- Velg Publiser for å oppheve blokkering av appen. Når publiseringshandlingen er fullført, må du kontrollere at appstatusen endres til ublokkert.
Finn ut mer i Connect og konfigurer en agent for Teams og Microsoft 365.
Når du fullfører disse trinnene, er utgiftsagenten klar til bruk.
Note
Du kan også gi tilbakemelding om agentgenererte utgiftslinjer og rapporter ved hjelp av tommel opp- og tommel ned-ikonene og tilbakemeldingen i Dynamics 365 Finance miljøet.
Avinstaller utgiftsagenten
Følg disse trinnene for å avinstallere utgiftsagenten:
- Logg på Microsoft Power Apps Maker-portalen.
- Velg Løsninger, søk etter msdyn_ExpenseAI, velg de tre prikkene, og velg Slett.
- Søk etter msdyn_FnOCopilotAnchor og slett løsningen.