Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
- Toto je funkce Preview připravená pro produkční prostředí.
- Verze Preview připravené pro produkční prostředí podléhají doplňkovým podmínkám použití.
Platí pro Dynamics 365 Project Operations integrované s ERP a projektovými operacemi Dynamics 365 pro výrobu.
Expense Agent spojuje funkce z Microsoft Dynamics 365 Project Operations, aplikací pro finance a provoz, Microsoft Copilot Studio, Power Automate a Dataverse k automatizaci pracovních postupů zpracování výdajů pomocí AI. Tato funkce pomáhá ušetřit čas a snížit ruční úsilí tím, že umožňuje systému zpracovávat účtenky a generovat řádky výdajů a sestavy výdajů pro uživatele. Používá konektory Microsoft Power Platform pro integraci s Outlookem, Microsoft Teams, uživatelskými kalendáři a prostředím aplikací pro finance a provoz prostřednictvím virtuálních entit Dataverse.
Agent výdajů zahrnuje více toků, z nichž tři slouží jako hlavní orchestrátory:
- Zpracovat e-maily – tento tok kontroluje nakonfigurovanou složku poštovní schránky každou hodinu a ukládá přílohy jako nepřipojené účtenky v Dynamics 365 Finance.
- Extrahování ID účtenek – tento tok převezme nepřipojené účtenky a aktivuje agenta k extrakci podrobností o účtech a vytvoření nepřipojeného řádku výdajů.
- Sestava zpracování výdajů – Tento tok převádí nepřipojené řádky výdajů a generuje vyúčtování výdajů na základě sestav skupiny podle konfigurace, která je nastavena v aplikaci pro každou právnickou entitu.
Kromě toho se agent integruje s Microsoft Teams a umožňuje používat adaptivní karty pro kontrolu a odeslání vyúčtování výdajů.
Agent spoléhá na několik konektorů Microsoft Power Platform. Tyto konektory automaticky odkazují na toky Power Automate, které jsou k dispozici.
- Outlook (Office 365) – Tento konektor přistupuje ke sdílené poštovní schránce a extrahuje potvrzení.
- Dataverse (virtuální entity) – tento konektor se integruje s finančními a provozními operacemi prostřednictvím virtuálních entit.
- Microsoft Copilot Studio – Tento konektor vyvolá modely AI k extrahování informací o příjmu.
- Microsoft Teams – Tento konektor odesílá adaptivní karty pro interakce uživatelů (pokud je povolená integrace s Teams).
- Uživatelé Microsoft 365 – Tento konektor načte podrobnosti o kalendáři uživatele (volitelné, pokud analýza příjmu využívá kontext).
Požadavky
- Finanční a provozní prostředí: Potřebujete aspoň verzi 10.0.44 (10.0.2263.175 a novější) nebo 10.0.45 (10.0.0.10.0. 2345.115 a novější) nebo 10.0.46 (10.0.2428.69 a novější) finančního a provozního prostředí pro instalaci agenta.
- Role vyžadované k nastavení uživatele Expense Agent: Abyste mohli dokončit kroky v tomto článku, musíte být správcem systému organizace a mít následující role k nastavení uživatele expense agenta pro instalaci expense Agenta.
| Systém | Role | Comments |
|---|---|---|
| centrum pro správu Power Platform | Správce systému |
|
| Finance and Operations | Správce systému |
|
| Microsoft 365 | Správce Exchange a správce uživatelů |
|
| Centrum pro správu Teams | Správce Teams | Vyžaduje se, pokud plánujete povolit integraci Microsoft Teams. |
Postup nastavení Agenta výdajů
Pokud chcete nainstalovat a nastavit agenta Expense Agent, postupujte takto:
- Nainstalujte aplikaci Copilot pro finanční a provozní aplikace.
- Povolte funkce agenta ve vašem prostředí.
- Vytvořte uživatele výdajů pro provádění agenta.
- Nastavte sdílenou poštovní schránku.
- Nastavte agenta výdajů.
- Povolení Agenta výdajů v Microsoft Teams (volitelné – pokud potřebujete integraci Microsoft Teams)
Následující části podrobně popisují jednotlivé kroky.
Krok 1: Instalace aplikace Copilot pro finanční a provozní aplikace
Agenta výdajů je k dispozici jako součást balíčku Copilot pro finanční a provozní aplikace. Po instalaci tohoto balíčku do vašeho prostředí automaticky získáte všechny požadované prostředky, včetně agenta, proměnných prostředí a toků Power Automate.
Pokud chcete nainstalovat požadovanou aplikaci, postupujte takto:
- V prohlížeči přejděte do Centra pro správu Power Platform.
- V seznamu prostředí vyberte název prostředí, do kterého chcete aplikaci nainstalovat.
- Na stránce podrobností prostředí (NE z levé navigace) přejděte do části Zdroje a vyberte aplikace Dynamics 365.
- V seznamu aplikací Dynamics 365 vyhledejte Copilot pro finanční a provozní aplikace. Pokud už je nainstalovaná a je k dispozici aktualizace, vyberte tlačítko Aktualizovat.
- Pokud aplikace není uvedená v sekci Aplikace Dynamics 365, vyberte Nainstalovat aplikaci, vyberte Copilot pro finanční a provozní aplikace a podle pokynů dokončete instalaci.
- Aplikace Copilot for Finance and Operations by měly být 1.0.3231.4 nebo novější.
Poznámka:
Další informace o tom, jak povolit Copilot ve vašem prostředí, najdete v části Povolení schopností Copilota ve finančních a provozních aplikacích.
Návod
Pokud chcete ověřit, jestli se balíček úspěšně nainstaloval, postupujte takto:
- Přejděte na portál > Power Apps Maker Portal a vyberte své prostředí >, vyberte Řešení > Zobrazit historii > vyhledávání a vyberte msdyn_ExpenseAI > Podrobnosti.
- Zaškrtněte políčko Výsledek .
- Pokud výsledek ukazuje úspěch, balíček se nainstaloval správně.
- Pokud se výsledek nezobrazí úspěch, instalace se nezdařila.
- Pokud instalace selže, odstraňte msdyn_FnOCopilotAnchor (viz část odinstalace) a znovu nainstalujte Copilot pro aplikace pro finance a operace.
2. krok: Povolte funkce agenta ve vašem prostředí
Po instalaci balíčku Copilot pro finanční a provozní aplikace aktivujte Agenta výdajů v rámci vašeho prostředí Dataverse a finančních a provozních aplikací.
Povolení klíče oprávnění v Dataverse
V Centru pro správu Power Platform zapněte příznak funkce Copilot. Pokud chcete zapnout příznak funkce Copilot, postupujte takto:
- Přejděte na Centrum pro správu Power Platform.
- Vyberte Prostředí> vyberte své prostředí >Nastavení>Produkt> vyberte Funkce.
- Ujistěte se, že je zapnutý příznak funkce Copilot.
Povolení funkce ve finančním a provozním prostředí
Pokud chcete agenta aktivovat v aplikacích pro finance a provoz, postupujte takto:
- Přihaste se do finančního a provozního prostředí.
- Přejděte na Správa funkcí a povolte funkci Imerzivní domovská stránka a funkce Správa agenta.
- Chcete-li nakonfigurovat agenta Expense Agent (nastavení je pro každou právnickou osobu), přejděte na Správa výdajů>Nastavení>Obecné>Parametry správy výdajů.
- Na kartě Agent výdajové položky nakonfigurujte parametry, jak je znázorněno v následující tabulce.
| Parametry | Hodnota | Comments |
|---|---|---|
| Povolení Agenta výdajů pro aktuální právnickou osobu | Ano | Přepnutím na Ano povolíte agenta pro aktuální právnickou osobu. |
| Četnost | Denně nebo týdně | Nakonfigurujte frekvenci automatického vytváření sestav výdajů ve vaší organizaci. |
| Seskupovat sestavy podle | Cesta nebo projekt | Nakonfigurujte seskupení výdajů na základě projektu nebo cesty. |
Krok 3: Vytvoření uživatele pro agenta výdajů pro provedení úkolů agenta
Vytvořte uživatele vyhrazeného agenta výdajů, abyste zajistili, že agent běží nezávisle na identitě libovolného zaměstnance. Tento přístup pomáhá se zabezpečením, spravovatelností a dlouhodobou udržovatelností. I když můžete použít existující uživatelský účet, který má požadovaná oprávnění, použijte identitu vlastněnou systémem.
Vytvoření uživatele Expense Agent v Microsoft Entra ID
- Přihlaste se do Azure Portalu.
- V dostupných službách Azure vyberte ID Microsoft Entra.
- V části Microsoft Entra ID vytvořte nového uživatele.
- Vyberte Přidat>User>Vytvořit nového uživatele a zadejte následující podrobnosti.
- Hlavní název uživatele (UPN)
- Volba správné domény
- Zobrazované jméno
- Heslo
- Označit účet jako povolený
- Pokud chcete zobrazit podrobnosti a dokončit proces vytváření uživatelů, vyberte Zkontrolovat a vytvořit a vyberte Vytvořit.
- Na stránce Uživatel (Správa > Uživatelé) vyberte uživatele a stránku s podrobnostmi zobrazení.
- Vyberte Upravit vlastnosti, přejděte na kartu Nastavení a vyplňte příslušné umístění použití.
Poznámka:
V závislosti na zásadách vaší organizace může být potřeba změnit heslo a nastavit vícefaktorové ověřování (MFA). Postupujte podle běžných kroků pro změnu hesla a nastavení vícefaktorového ověřování.
Přiřazení požadovaných licencí uživateli Agent výdajů
Pokud chcete aplikaci Expense Agent úspěšně nainstalovat, přiřaďte uživateli expense agenta následující licence:
- Členové licence Dynamics 365 Teams
- Microsoft 365 Business Basic nebo libovolná licence, která pokrývá Microsoft Teams a Outlook (například Office 365 E5 s Teams)
- Power Apps Premium
Pokud chcete přiřadit licence, postupujte takto:
- Přihlaste se do Centra pro správu Microsoft 365 jako uživatel, který má přístup k přiřazování licencí, který je uživatelem s rolí Správce licencí nebo novější.
- Vyberte Fakturace>Licence>licence Dynamics 365 Teams Members.
- Vyberte +Přiřadit licence.
- Vyhledejte uživatele agenta výdajů vytvořeného v předchozím kroku.
- Výběrem možnosti Přiřadit dokončete přiřazení licence.
- Postupujte podle kroků 2 až 5 pro ostatní licence – Microsoft 365 Business Basic a Power Apps Premium.
Poznámka:
Další informace o kontrole a přidělování licence najdete v tématu Použití stránky Aktivní uživatelé k přiřazení nebo odebrání licencí.
Přidání uživatele do prostředí Power Platform
Pokud chcete přidat uživatele do prostředí Power Platform, postupujte takto:
Přihlaste se do Centra pro správu Power Platform a vyberte příslušné prostředí.
Návod
Tato stránka obsahuje informace týkající se ID prostředí pro Dataverse, adresu URL prostředí pro dataverse, adresu URL Finance and Operations. Tyto hodnoty uložte, abyste je mohli použít v pozdějších částech.
Přejděte na Přístup > Uživatelé > Zobrazit vše.
Vyberte Přidat uživatele, zadejte nově vytvořeného uživatele agenta a vyberte Přidat.
Na stránce Spravovat role zabezpečení přidejte následující role.
- Role agenta AI pro správu výdajů
- Správce konfigurace pro Finance and Operations
- Úpravce systému
Pokud chcete potvrdit přiřazení role, vyberte Uložit.
Tyto role poskytují přístup k komponentám Dataverse a Power Automate, které agent potřebuje k fungování.
Návod
Pokud už uživatel existuje a potřebujete přiřadit jenom role, přejděte do Centra pro správu Power Platform a vyberte příslušné prostředí.
- Přejděte na Přístup > Uživatelé > Zobrazit vše.
- Vyberte vytvořeného uživatele agenta.
- Vyberte Spravovat role a přiřaďte role.
Přiřazení požadované role v prostředí Finance and Operations
Pokud chcete přiřadit roli ExpenseAgentRole v prostředí financí a provozu, postupujte takto:
- V prostředí Finance and Operations přejděte na Správa systému>Uživatelé.
- Vytvořte záznam uživatele pro uživatele agenta.
- Po vytvoření uživatele přejděte do části role uživatele, vyberte Přiřadit role a vyhledejte ExpenseAgentRole.
- Vyberte Uložit.
Poznámka:
ExpenseAgentRole je k dispozici ve verzi finančních a provozních operací od 10.0.44 (10.0.2263.81) a 10.0.45 (10.0.2345.6) a v rámci Copilota pro finanční a provozní aplikace verze 1.0.3121.1
Přiřazení přístupu ke sdílené poštovní schránce
Uživatel agenta musí mít oprávnění Mail.Read.Shared Microsoft Graph. Toto oprávnění umožňuje agentovi číst potvrzení z nakonfigurované sdílené poštovní schránky během provádění toku.
Přístup ke sdílené poštovní schránce přiřadíte takto:
- Přejděte do Microsoft Graph Exploreru a přihlaste se pomocí vytvořeného uživatele agenta.
- Vyberte ikonu uživatele v pravém horním rohu > a vyberte Souhlas s oprávněními.
- Vyberte rozevírací nabídku pro Pošta> vyhledejte Mail.Read.Shared> vyberte Souhlas a vyberte Přijmout.
Souhrn požadovaných rolí pro vytvořeného uživatele agenta
| Životní prostředí | Seznam rolí | Comments |
|---|---|---|
| Dataverse | Uvedené role umožňují agentovi komunikovat s toky Power Automate, proměnnými prostředí a virtuálními entitami, které jsou připojeny k Dynamics 365 Finance | |
| Finance and Operations | Tato role se vyžaduje, aby agent vytvořil a spravil položky výdajů v prostředí aplikací pro finance a provoz. Poznámka: ExpenseAgentRole je k dispozici ve verzi finančních a provozních operací od verzí 10.0.44 (10.0.2263.81) a 10.0.45 (10.0.2345.6) a v rámci Copilota pro finanční a provozní aplikace verze 1.0.3121.1 |
|
| Přístup ke sdílené poštovní schránce pomocí Graph Exploreru | Mail.Read.Shared | Oprávnění Microsoft Graph umožňuje agentovi číst potvrzení z nakonfigurované sdílené poštovní schránky během provádění toku |
Krok 4: Nastavení sdílené poštovní schránky
Agent výdajů používá sdílenou poštovní schránku k přijímání a zpracování e-mailů s potvrzením příjmu. Uživatel s rolí správce Exchange musí vytvořit a nakonfigurovat tuto poštovní schránku v Centru pro správu Microsoftu 365.
Pokud chcete vytvořit a nakonfigurovat sdílenou poštovní schránku, postupujte takto:
Přihlaste se k Centru pro správu Microsoft 365 pomocí účtu správce Exchange.
V levém podokně vyberte Týmy & skupiny>Sdílené poštovní schránky
Návod
Možná budete muset vybrat možnost Zobrazit vše a rozbalit celý seznam.
Vyberte Přidat sdílenou poštovní schránku.
Zadejte název a e-mailovou adresu sdílené poštovní schránky.
Vyberte volbu Uložit změny.
V části Další kroky vyberte Přidat členy do této sdílené poštovní schránky. (Může trvat několik minut, než bude správa členů k dispozici.)
Vyberte Přidat členy.
Vyberte vytvořeného uživatele agenta a všechny ostatní, kteří by měli poštovní schránku monitorovat, a vyberte Přidat.
Vyberte Zavřít.
Poznámka:
V dalším kroku použijete e-mailovou adresu sdílené poštovní schránky. Po nastavení sdílené poštovní schránky musíte zadat její e-mailovou adresu a cestu ke složce (ve výchozím nastavení nastavenou na Doručenou poštu) jako proměnné prostředí při konfiguraci agenta Time and Expense Agent. Další informace najdete v kroku 5: Nastavení agenta pro výdaje.
Krok 5: Nastavení agenta výdajů
Pro nastavení Agenta výdajů máte dvě možnosti:
- Možnost A: Použití skriptu PowerShellu (doporučeno)
- Možnost B: Ruční nastavení v Power Apps (bez PowerShell)
Důležité
Než budete pokračovat v instalaci agenta Expense Agent, ujistěte se, že je agent úspěšně zřízený v nástroji Microsoft Copilot Studio.
Pokud chcete ověřit úspěšné zřízení agenta, postupujte takto:
- Přihlaste se k aplikaci Microsoft Copilot Studio a vyberte své prostředí.
- Přejděte na Agenti a vyhledejte ExpenseAgent-Line (Preview).
- Ověřte, že je tlačítko Publikovat povolené.
- Pokud je aktivní, pokračujte v instalaci. Pokud je tato možnost zakázaná, počkejte na zřízení agenta.
- Opakováním tohoto postupu ověřte, že je povolen Agent výdajové položky (Preview).
Návod
Pokud zřizování aplikace Finance a Operations Copilot trvá déle než 5 až 6 hodin, odinstalujte a znovu nainstalujte aplikaci, abyste vyřešili potenciální zpoždění instalace. Další informace najdete v části Odinstalace Expense Agenta na konci tohoto článku.
Možnost A: Použití skriptu PowerShell (doporučeno)
Ruční nastavení agenta zahrnuje vytváření a propojení připojení, povolení toků Power Automate a publikování řešení. Tento proces může být časově náročný a může být náchylný k chybám. K automatizaci instalace použijte skript PowerShellu po aktualizaci požadovaných parametrů.
Skript PowerShellu automatizuje následující úlohy:
- Aktualizuje požadované proměnné prostředí.
- Propojte Microsoft Power Platform s informacemi o připojení řešení.
- Umožňuje všechny toky Power Automate, které vyžaduje agent Time and Expense.
- Publikuje agenty Copilot.
- Publikuje řešení Dataverse.
Před spuštěním skriptu musíte vytvořit připojení, protože potřebujete zadat ID připojení pro každý konektor v souboru install.ps1. Pokud chcete tato připojení vytvořit, postupujte podle těchto kroků pomocí vytvořeného uživatele agenta.
- Přihlaste se k portálu tvůrce Power Apps pomocí nově vytvořeného uživatele agenta a vyberte své prostředí.
- V levém podokně vyberte Více a pak vyberte Připojení.
- Vyberte Nové připojení a vyhledejte ho pomocí názvu připojení z následující tabulky (například Office 365 Outlook).
- Ze seznamu vyberte odpovídající konektor a vytvořte ho.
- Po vytvoření připojení si poznamenejte uživatele, se kterým se připojení vytvořilo. V ideálním případě by se mělo jednat o ID uživatele vytvořeného agenta. Aktualizujte toto ID uživatele v instalačním souboru, který vytvoříte v dalším kroku.
- Opakujte kroky 3 a 4 pro každé zbývající požadované připojení uvedené v následující tabulce.
| Název připojení | Formáty adres URL připojení |
|---|---|
| Office 365 Outlook | https://make.powerapps.com/environments/environmentID/connections / shared_office365/connectionID/details |
| Uživatelé Office 365 | 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/connectionID/details |
| Microsoft Copilot Studio (Preview) | https://make.powerapps.com/environments/environmentID/connections / shared_microsoftcopilotstudio/connectionID/details |
Informace, které potřebujete k vytvoření instalačního souboru
Chcete-li vytvořit instalační soubor – install.ps1, máte k dispozici následující informace. (Referenční informace najdete v následující tabulce.)
| Parameter | Další podrobnosti |
|---|---|
| ID prostředí Dataverse | Zadejte ID prostředí, které získáte z Centra pro správu Power Platform. Ukázková hodnota: xxxx-xxxx-xxxx-xxx-xxxxxxxxxx |
| Adresa URL prostředí Dataverse | Zadejte adresu URL prostředí z Centra pro správu Power Platform. Poznámka: Dbejte na to, aby na začátku bylo https:// a nikoli dopředné lomítko ‘/’. Ukázková hodnota: https://org123.crm.contoso.com |
| Adresa URL instance Finance and operations | Zadejte podrobnosti o finančním a provozním prostředí v následujícím formátu. Ukázková hodnota: https://org123.contoso.com Poznámka: Dbejte na to, abyste měli https:// na začátku a neměli dopředné lomítko ‘/’ na konci. |
| OutlookFolderPath | Zadejte cestu ke složce vytvořenou ve sdílené poštovní schránce. Pokud se nevytvořila žádná jiná složka, nastaví se ve výchozím nastavení jako Doručená pošta. Ukázková hodnota: Doručená pošta Osvědčeným postupem je vytvořit samostatnou složku pro správu výdajů. |
| ID poštovní schránky | Zadejte e-mailovou adresu nově vytvořené sdílené poštovní schránky. Ukázková hodnota: expenseagent@contoso.com |
| Název připojení Microsoft Dataverse Název připojení Microsoft Copilot Studio Název připojení Microsoft Office Outlook Název připojení Uživatelé Microsoft Office 365 Název připojení Microsoft Teams |
Vstupní údaje pro všechny názvy připojení jsou stejné a jde o e-mailovou adresu uživatele vytvořeného agenta. Ukázková hodnota: createdexpenseagentuser@contoso.com |
Vytvoření instalačního souboru skriptu
Vytvořte instalační soubor skriptu zkopírováním následujícího kódu. Vložte požadované proměnné prostředí do skriptu a pak skript spusťte pomocí PowerShellu.
Poznámka:
Soubor instalačního skriptu umístěte na místní plochu. Neukládejte ho na One Drive.
Vytvořte soubor skriptu PowerShellu s následujícím kódem. Před spuštěním skriptu aktualizujte uvedené parametry.
Návod
Když je povinný = $true, PowerShell vás vyzve k interaktivnímu zadání parametrů, takže je nemusíte aktualizovat přímo v souboru skriptu.
Pokud se chcete vyhnout ručnímu zadávání a chcete předdefinovat parametry v instalačním skriptu, nastavte v části Param v následujícím vzorovém kódu Mandatory = $false.
Zkopírujte následující kód do souboru instalačního skriptu a uložte ho jako Install.ps1. Aktualizujte proměnné v příslušných polích parametrů v části parametru. Potřebujete aktualizovat 10 proměnných.
Návod
Použijte předchozí tabulku jako odkaz a nahraďte všechny ukázkové hodnoty odpovídajícími podrobnostmi.
#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
}
Pokud chcete aktivovat soubor PowerShellu, postupujte takto:
- Otevřete PowerShell (vyžaduje se minimální verze – PowerShell 7).
- Přejděte do umístění, kam jste soubor uložili. (Použijte umístění souboru <příkazu cd>).
- Aktivujte instalační skript. (Použijte příkaz '.\Install.ps1').
- Podle pokynů se přihlaste k Azure.
- Po přihlášení možná budete muset autorizovat ještě jednou. (Použijte ID uživatele vytvořeného agenta).
Počkejte, až se skript úplně spustí, a vyhledejte zprávu , že se instalace agenta úspěšně dokončila.
Poznámka:
Předchozí skript provede tyto akce:
- Nastaví proměnné prostředí.
- Ověřuje a propojuje odkazy na připojení.
- Povolte toky Power Automate.
- Publikuje požadované agenty Copilot.
- Publikuje řešení Dataverse.
Po úspěšném spuštění skriptu je Agent výdajů plně nakonfigurovaný a připravený k použití.
Možnost B: Ruční nastavení v Power Apps (bez PowerShellu)
Pokud nechcete používat skript PowerShellu, můžete pomocí Power Apps ručně nakonfigurovat expense agenta. Tento proces zahrnuje aktualizaci proměnných prostředí, povolení toků Power Automate a publikování řešení.
Aktualizace proměnných prostředí
Chcete-li aktualizovat proměnné prostředí, postupujte takto:
Přihlaste se k Power Apps a vyberte své prostředí.
Vyberte Řešení a pak otevřete výchozí řešení (nebo řešení, ve kterém je agent nainstalovaný).
Přejděte do proměnných prostředí a nastavte následující hodnoty.
Název proměnné Popis Cesta ke složce nástroje Agent pro výdaje v aplikaci Outlook Zadejte cestu ke složce, kterou chcete monitorovat ve sdílené poštovní schránce (ve výchozím nastavení Doručená pošta). ID adresy sdílené poštovní schránky agenta pro výdaje Zadejte e-mailovou adresu sdílené poštovní schránky. Pokud chcete použít poštovní schránku přihlášeného uživatele, zadejte NA. Adresa URL instance Finance and Operations Zadejte adresu URL prostředí finančních a provozních aplikací (například https://org123.contoso.com).
Povolení toků Power Automate
Expense Agent spoléhá na následující toky Power Automate:
- Kontrola opakování výdajové položky
- Konfigurace výdajů
- Získání složky výhled výdajů
- Generování vyúčtování výdajů
- Odeslání adaptivní karty sestavy výdajů
- Automatické porovnávání výdajů
- Zpracovávat e-maily
- Extrahujte nepřipojená ID potvrzení pro vyvolání kopilota
- Extrahování nepřipojeného výstupu potvrzení pomocí modulu plug-in Dataverse
- Generování řádku výdajů
- Generování řádku výdajů bez ID projektu a ID stavu
- Identifikace ID projektu
- Události uživatelského kalendáře
- Zpracování vyúčtování výdajů pomocí copilotu
- Vyvolání agenta výdajů pro zpracování účtenek
Toky povolíte takto:
Přihlaste se k Power Automate a vyberte své prostředí.
Vyberte Moje toky.
Pro každý z 15 toků v předchozím seznamu postupujte takto:
- Vyhledejte tok.
- Vyberte Upravit.
- Přepněte na zobrazení Starý návrhář vypnutím možnosti Nový návrhář.
- Ověřte všechna požadovaná připojení (dokud se nezobrazí zelené značky zaškrtnutí).
- Vyberte Pokračovat a pak vyberte Uložit.
- Výběrem Zapnout povolíte tok.
Řešení publikujte
Jakmile dokončíte konfiguraci všech proměnných a toků prostředí, publikujte řešení pomocí těchto kroků.
- V Power Apps přejděte na Řešení.
- Vyberte své prostředí a řešení.
- Vyberte Publikovat všechna vlastní nastavení.
Po dokončení těchto kroků je agent Expense Agent plně nakonfigurovaný a připravený k použití.
Krok 6: Povolení Agenta výdajů v Microsoft Teams (volitelné)
Pokud chcete povolit komunikaci založenou na Teams pro Expense agenta, přidejte k agentovi v Power Apps kanál Teams. Agent pak může odesílat adaptivní karty přes Teams.
Povolení kanálu Teams
Pokud chcete kanál Teams povolit, postupujte takto:
- Přihlaste se do Copilot Studio a vyberte správné prostředí.
- Na kartě Agenti vyberte Agent výdajové položky.
- V zobrazení agenta na kartě Kanály vyberte Teams a Microsoft 365 Copilot.
- Vyberte Přidat kanál k povolení integrace Teams a podle kroků v části Konfigurovat dostupnost aplikace Teams nakonfigurujte, s kým chcete sdílet aplikaci.
Další informace najdete v části Otevření panelu konfigurace pro kanál Teams + Microsoft 365.
Konfigurace dostupnosti aplikace Teams
Dostupnost aplikace Teams nakonfigurujete takto:
Po vytvoření aplikace Teams vyberte Možnosti dostupnosti.
Vyberte, s kým chcete aplikaci sdílet:
- Konkrétní uživatelé v rámci organizace
- Celá organizace
Odešlete aplikaci ke schválení.
Publikování aplikace v Centru pro správu Teams
Aplikaci publikujete v Centru pro správu Teams takto:
- Přihlaste se k Centru pro správu Teams.
- Přejděte do aplikace > Teams Správa aplikací. Vyhledejte „výdaje“ a vyberte aplikaci Agent zadání výdajů, ve které je stav aplikace blokovaný.
- Výběrem tlačítka Publikovat aplikaci odblokujte. Po úspěšném dokončení akce publikování se ujistěte, že se stav aplikace změní na odblokovaný.
Další informace viz Připojení a konfigurace agenta pro Teams a Microsoft 365.
Po dokončení těchto kroků je váš Expense Agent připraven k použití.
Poznámka:
Můžete také poskytnout zpětnou vazbu k řádkům výdajů a sestavám generovaným agentem pomocí ikon palce nahoru a palce dolů a automaticky otevíraných oken zpětné vazby v prostředí Dynamics 365 Finance.
Odinstalace Agenta výdajů
Chcete-li odinstalovat Expense Agent, postupujte takto:
- Přihlaste se k portálu pro tvůrce Microsoft Power Apps.
- Vyberte Řešení, vyhledejte msdyn_ExpenseAI, vyberte tři tečky a vyberte Odstranit.
- Vyhledejte msdyn_FnOCopilotAnchor a odstraňte řešení.