Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Tärkeää
- Tämä on tuotantovalmis esiversio-ominaisuus.
- Tuotantovalmiisiin esiversiotoimintoihin sovelletaan lisäkäyttöehtoja.
Soveltuu Dynamics 365 Project Operationsin integroituun ERP:hen ja Dynamics 365 Project Operations valmistusteollisuuteen
Kuluagentti tuo yhteen Microsoft Dynamics 365 Project Operations-, talous- ja toimintosovellusten, Microsoft Copilot Studio, Power Automate ja Dataversen toiminnot kulunkäsittelyn työnkulkujen automatisoimiseksi tekoälyn avulla. Tämä ominaisuus säästää aikaa ja vähentää manuaalista työtä, sillä järjestelmäsi voi käsitellä kuitit ja luoda käyttäjille kulurivejä ja kuluraportteja. Se käyttää Microsoft Power Platform liittimiä integrointiin Outlook, Microsoft Teams, käyttäjäkalentereiden sekä Finance and Operations -sovellusten ympäristöön Dataversen virtuaalisten entiteettien kautta.
Kuluagentti sisältää useita työnkulkuja, joista kolme toimii pääorkestroijina seuraavasti:
- Process Emails – Tämä työnkulku tarkistaa määritetyn postilaatikkokansion tunnin välein ja tallentaa liitteet kiinnittämättöminä kuiteina Dynamics 365 Finance.
- Poimi kuittitunnukset – Tämä työnkulku noutaa liittämättömät kuitit ja käynnistää agentin, joka poimii kuittien tiedot ja luo liittämättömän kulurivin.
- Prosessin kuluraportti – Tämä työnkulku muuntaa yhdistämättömät kulurivit ja luo kuluraportit ryhmittelyraporttien perusteella määrityksillä , jotka määrität sovelluksessa jokaista juridista entiteettiä varten.
Lisäksi agentti integroituu Microsoft Teams, mikä mahdollistaa mukautuvien korttien käytön kuluraporttien tarkistamiseen ja lähettämiseen.
Agentti käyttää useita Microsoft Power Platform liittimiä. Näihin liittimeen viitataan automaattisesti tarjotuissa Power Automate työnkuluissa.
- Outlook (Office 365) – Tämä yhdistin poimii kuitit jaetun postilaatikon kautta.
- Dataverse (virtuaaliset entiteetit) – Tämä yhdistin ja talous- ja toimintosovellukset integroidaan virtuaalisten entiteettien kautta.
- Microsoft Copilot Studio – Tämä liitin kutsuu tekoälymalleja poimimaan vastaanottotiedot.
- Microsoft Teams – Tämä liitin lähettää mukautuvat kortit käyttäjän toimia varten (jos Teamsin integrointi on käytössä).
- Microsoft 365 Users – Tämä liitin noutaa käyttäjäkalenterin tiedot (valinnainen, jos vastaanoton jäsentäminen on kontekstin huomioon ottavaa).
Edellytykset
- Rahoitus- ja toimintoympäristö: Tarvitset vähintään version 10.0.44 (10.0.2263.175 ja uudemmat) tai 10.0.45 (10.0.1 2345.115 ja uudemmat) tai 10.0.46 (10.0.2428.69 ja uudemmat) rahoitus- ja toimintoympäristöstä agentin asentamiseksi.
- Kuluagentti-käyttäjän määrittämiseen tarvittavat roolit: Jotta voit suorittaa tämän artikkelin vaiheet, sinun on oltava organisaation järjestelmänvalvoja ja sinulla on oltava seuraavat roolit, jotta voit määrittää kuluagenttikäyttäjän kuluagentin asentamista varten.
| Järjestelmä | Rooli | Kommentit |
|---|---|---|
| Power Platform -hallintakeskus | Järjestelmänvalvoja |
|
| Finance and Operations | Järjestelmänvalvoja |
|
| Microsoft 365 | Exchange-järjestelmänvalvoja ja käyttäjäjärjestelmänvalvoja |
|
| Teams-hallintakeskus | Teams-järjestelmänvalvoja | Pakollinen, jos aiot ottaa Microsoft Teams integroinnin käyttöön |
Kuluagentin määrittämisen vaiheet
Jos haluat asentaa kuluagentin ja määrittää sen, toimi seuraavasti:
- Asenna Copilot Finance and Operations -sovelluksille.
- Ota agentin ominaisuudet käyttöön ympäristössä.
- Kulukäyttäjän luominen agentin suoritusta varten.
- Määritä jaettu postilaatikko.
- Määritä kuluagentti.
- Ota kuluagentti käyttöön Microsoft Teams (valinnainen – jos tarvitset Microsoft Teams integrointia)
Seuraavissa osioissa kuvataan kukin vaihe yksityiskohtaisesti.
Vaihe 1: asenna Copilot finance and operations -sovelluksille
Kuluagentti on käytettävissä osana Copilot finance and operations -sovellusten pakettia. Kun olet asentanut tämän paketin ympäristöösi, saat automaattisesti kaikki tarvittavat resurssit, mukaan lukien agentin, ympäristömuuttujat ja Power Automate työnkulut.
Jos haluat asentaa tarvittavan sovelluksen, toimi seuraavasti:
- Siirry selaimessa Power Platform -hallintakeskukseen.
- Valitse ympäristöluettelosta sen ympäristön nimi, johon haluat asentaa sovelluksen.
- Ympäristön tietosivulla (NOT vasemmasta siirtymisruudusta) siirry Resources -osioon ja valitse Dynamics 365 apps.
- Hae Copilot finance and operations -sovelluksille Dynamics 365-sovellusten luettelosta. Jos se on jo asennettu ja päivitys on saatavilla, valitse Päivitä-painike.
- Jos sovellusta ei ole lueteltu kohdassa Dynamics 365 sovellukset, valitse Install-sovellus, valitse Copilot finance and operations -sovelluksille ja viimeistele asennus noudattamalla ohjeita.
- Copilot Finance and Operations -sovellusten on oltava 1.0.3231.4 tai uudempi
Note
Lue lisätietoja siitä, miten voit ottaa Copilot käyttöön ympäristössäsi Enable Copilot -ominaisuudet finance and operations -sovelluksissa.
Vihje
Voit tarkistaa, onko paketti asennettu onnistuneesti, toimimalla seuraavasti:
- Siirry tekijäportaaliin Power Apps portaaliin > valitse ympäristösi > valitse Ratkaisut > Katso historian > haku ja valitse msdyn_ExpenseAI > Tiedot.
- Tarkista Tulos-kenttä .
- Jos tulos on Onnistui, paketti asennettiin oikein.
- Jos tulos ei ole Onnistui, asennus epäonnistui.
- Jos asennus epäonnistuu, poista msdyn_FnOCopilotAnchor (katso kohdan Poista asennus) ja asenna Copilot uudelleen Finance and Operations -sovelluksille.
Vaihe 2: Agentin ominaisuuksien ottaminen käyttöön ympäristössä
Kun olet asentanut Copilot for Finance and Operations -sovelluspaketin, aktivoi Kuluagentti Dataverse- ja Finance and Operations -ympäristöistäsi.
Ominaisuuden ottaminen käyttöön Dataversessa
Ota Copilot ominaisuusmerkintä käyttöön Power Platform -hallintakeskuksessa. Voit ottaa Copilot ominaisuusmerkinnän käyttöön seuraavasti:
- Siirry Power Platform -hallintakeskukseen.
- Valitse Ympäristöt> valitse ympäristö >Asetukset>Tuote> valitse Ominaisuudet.
- Vahvista, että Copilot -ominaisuusmerkintä on käytössä.
Ominaisuuden ottaminen käyttöön talous- ja toimintoympäristössä
Jos haluat aktivoida agentin talous- ja toimintosovelluksissa, toimi seuraavasti:
- Kirjaudu sisään talous- ja toimintosovellusten ympäristöön.
- Siirry kohtaan Ominaisuuksien hallinta ja ota käyttöön Älykäs aloitussivu -ominaisuus sekä agenttien hallinnan ominaisuudet.
- Voit määrittää kuluagentin (määritys tehdään yrityskohtaisesti) siirtymällä kohtaan Kulujenhallinta>Asetukset>Yleistiedot>Kulujen hallintaparametrit.
- Määritä Kulujen määritys -agentti -välilehdessä parametrit alla olevassa taulukossa esitetyllä tavalla.
| Parametrit | Arvo | Kommentit |
|---|---|---|
| Kuluagentin ottaminen käyttöön nykyisessä yrityksessä | Kyllä | Jos haluat ottaa agentin käyttöön nykyisessä yrityksessä, valitse Kyllä. |
| Toistumisväli | Päivittäin tai viikoittain | Määritä, miten usein organisaatiossa luodaan kuluraportteja automaattisesti. |
| Raporttien ryhmittelyperuste | Matka tai projekti | Määrität kulujen ryhmittely projektin tai matkan perusteella. |
Vaihe 3: Kuluagentti-käyttäjän luominen agentin suoritusta varten
Luo erillinen kuluagenttikäyttäjä, jotta varmistetaan, että agentti suoritetaan työntekijän henkilöllisyydestä riippumatta. Tämä menetelmä parantaa suojausta, hallittavuutta ja pitkän aikavälin ylläpidettävyyttä. Vaikka voit käyttää olemassa olevaa käyttäjätiliä, jolla on tarvittavat oikeudet, käytä järjestelmän omistamia käyttäjätietoja.
Kuluagentti-käyttäjän luominen Microsoft Entra ID
- Kirjaudu sisään Azure-portaaliin.
- Valitse käytettävissä olevista Azure-palveluista Microsoft Entra ID.
- Luo uusi käyttäjä kohdassa Microsoft Entra ID.
- Valitse Lisää>Käyttäjä>Luo uusi käyttäjä ja anna alla olevat tiedot.
- Täydellinen käyttäjätunnus
- Valitse oikea toimialue
- Näyttönimi
- Salasana
- Valitse Tili käytössä -kohta
- Jos haluat tarkastella tietoja ja tehdä käyttäjän luontiprosessin loppuun, valitse Tarkista ja luo ja valitse sitten Luo.
- Valitse Käyttäjä-sivulla (Hallinta > Käyttäjät) käyttäjä ja valitse sitten Näytä tiedot -sivu.
- Valitse Muokkaa ominaisuuksia, siirry Asetukset-välilehteen ja anna soveltuva käyttösijainti.
Note
Organisaation käytäntö saattaa edellyttää salasanan vaihtamista ja monimenetelmäisen todentamisen (MFA) määrittämistä. Noudata salasanan vaihtamisessa ja MFA:n määrittämisessä yleensä käytettäviä ohjeita.
Vaadittujen käyttöoikeuksien määrittäminen kuluagenttikäyttäjälle
Jos haluat asentaa Kuluagentti-agentin, määritä kuluagenttikäyttäjälle seuraavat käyttöoikeudet:
- Teamsin jäsenten Dynamics 365 käyttöoikeus
- Microsoft 365 Business Basic tai mikä tahansa käyttöoikeus, joka kattaa Microsoft Teams ja Outlook (esimerkiksi Office 365 E5 tiimien kanssa)
- Power Apps Premium
Voit määrittää käyttöoikeuksia seuraavasti:
- Kirjaudu sisään Microsoft 365 -hallintakeskukseen käyttäjällä, jolla on oikeus määrittää käyttöoikeuksia, jotka ovat käyttöoikeuksien järjestelmänvalvojia tai uudempia.
- Valitse Billing>Käyttöoikeudet>Dynamics 365 Teamsin jäsenten käyttöoikeus.
- Valitse +Määritä käyttöoikeuksia.
- Hae edellisessä vaiheessa luotu kuluagenttikäyttäjä.
- Viimeistele käyttöoikeuden määritys valitsemalla Määritä.
- Noudata vaiheita 2–5 muiden käyttöoikeuksien kohdalla – Microsoft 365 Business Basic ja Power Apps Premium.
Note
Lisätietoja käyttöoikeuksien tarkistamisesta ja määrittämisestä on kohdassa Käyttöoikeuksien määrittäminen ja määrityksen poistaminen Aktiiviset käyttäjät -sivun avulla.
Lisää käyttäjä Power Platform -ympäristöön
Jos haluat lisätä käyttäjän Power Platform -ympäristöön, toimi seuraavasti:
Kirjaudu sisään Power Platform -hallintakeskukseen ja valitse soveltuva ympäristö.
Vihje
Tämä sivu sisältää tietoja Dataversen ympäristön tunnuksesta, Dataversen ympäristön URL-osoitteesta sekä talous- ja toimintosovellusten URL-osoitteesta. Tallenna nämä arvot, jotta niitä voi käyttää myöhemmissä osissa.
Siirry kohtaan Käyttöoikeus > Käyttäjät > Näytä kaikki.
Valitse Lisää käyttäjä, syötä juuri luotu agenttikäyttäjä ja valitse Lisää.
Lisää seuraavat roolit Käyttöoikeusroolien hallinta -sivulla.
- Kulujenhallinnan tekoälyagentin rooli
- Talous- ja toimintojen agentti Configuration Manager
- Järjestelmämukauttaja
Jos haluat vahvistaa roolien määritykset, valitse Tallenna.
Nämä roolit tarjoavat pääsyn Dataverseen ja Power Automate osia, joita agentin on käytettävä.
Vihje
Jos käyttäjä on jo olemassa ja sinun tarvitsee vain määrittää rooleja, siirry Power Platform -hallintakeskukseen ja valitse asianmukainen ympäristö.
- Siirry kohtaan Käyttöoikeus > Käyttäjät > Näytä kaikki.
- Valitse luotu agenttikäyttäjä.
- Valitse Roolien hallinta ja määritä roolit.
Vaaditun roolin määrittäminen talous- ja toimintosovellusten ympäristössä
Jos haluat määrittää ExpenseAgentRole-roolin talous- ja toimintoympäristössä, toimi seuraavasti:
- Siirry talous- ja toimintosovellusten ympäristössä kohtaan Järjestelmän hallinta>Käyttäjät.
- Luo käyttäjätietue agenttikäyttäjälle.
- Kun olet luonut käyttäjän, siirry käyttäjän roolit -osioon, valitse Määritä roolit ja tee haku hakusanalla ExpenseAgentRole.
- Valitse Tallenna.
Note
ExpenseAgentRole on saatavilla finance and operations -sovellusten versiossa versiosta 10.0.44 (10.0.2263.81) ja 10.0.45 (10.0.2345.6) ja Copilot finance and operations -sovelluksille versio 1.0.3121.1
Jaetun postilaatikon käyttöoikeuden määrittäminen
Agenttikäyttäjällä on oltava Mail.Read.Shared Microsoft Graph -oikeus. Tämän käyttöoikeuden avulla agentti voi lukea kuitit määritetystä jaetusta postilaatikosta työnkulun suorittamisen aikana.
Määritä jaetun postilaatikon käyttöoikeuden käyttöoikeudet seuraavasti:
- Siirry kohtaan Microsoft Graph Explorer ja kirjaudu sisään käyttämällä luoneen agentin käyttäjää.
- Valitse oikeassa yläkulmassa oleva Käyttäjä -kuvake > valitse Hyväksyntä käyttöoikeuksille.
- Valitse avattava valikko kohdassa Posti> etsi Mail.Read.Shared> valitse Hyväksyntä ja valitse sitten Hyväksy.
Luodun agenttikäyttäjän pakollisten roolien yhteenveto
| Ympäristö | Roolit | Kommentit |
|---|---|---|
| Dataverse | Mainittujen roolien avulla agentti voi käsitellä Power Automate työnkulkuja, ympäristömuuttujia ja virtuaalisia entiteettejä, jotka on yhdistetty Dynamics 365 Finance | |
| Finance and Operations | Tätä roolia vaaditaan, jotta agentti voi luoda ja hallita kulujen määritystä talous- ja toimintosovellusten ympäristössä. Huomautus: ExpenseAgentRole on saatavilla Finance and Operations -sovellusten versiossa versiosta 10.0.44 (10.0.2263.81) ja 10.0.45 (0.45)10.0.2345.6) ja Copilot for finance and operations apps version 1.0.3121.1 |
|
| Jaetun postilaatikon käyttöoikeus Graph Explorerin avulla | Mail.Read.Shared | Microsoft Graph käyttöoikeuden, jonka avulla agentti voi lukea kuitit määritetystä jaetusta postilaatikosta työnkulun suorittamisen aikana |
Vaihe 4: Jaetun postilaatikon määrittäminen
Kuluagentti käyttää jaettua postilaatikkoa sähköpostiviestien vastaanottamiseen ja käsittelyyn. Exchange-järjestelmänvalvojan roolissa olevan käyttäjän on luotava ja määritettävä tämä postilaatikko Microsoft 365 Admin Center.
Voit luoda ja määrittää jaetun postilaatikon seuraavasti:
Kirjaudu sisään Microsoft 365 Admin Center Exchange Admin -tilillä.
Valitse vasemmanpuoleisessa ruudussa Tiimit ja ryhmät>Jaetut postilaatikot.
Vihje
Sinun täytyy ehkä valita Näytä kaikki , jotta voit laajentaa koko luettelon.
Valitse Lisää jaettu postilaatikko.
Kirjoita jaetun postilaatikon nimi ja sähköpostiosoite.
Valitse Tallenna muutokset.
Valitse Seuraavat vaiheet -kohdassa Lisää jäseniä tähän jaettuun postilaatikkoon. (Jäsenten hallinta voi olla käytettävissä muutaman minuutin kuluttua.)
Valitse Lisää jäseniä
Valitse luotu agenttikäyttäjä ja kaikki muut postilaatikkoa valvovat tahot ja valitse sitten Lisää.
Valitse Sulje.
Note
Käytät jaetun postilaatikon sähköpostiosoitetta seuraavassa vaiheessa. Kun olet määrittänyt jaetun postilaatikon, sinun on annettava sen sähköpostiosoite ja kansiopolku (oletusarvoisesti Saapuneet-kansio) ympäristömuuttujina, kun määrität Aika- ja Kuluagentti-parametrin. Lisätietoja on kohdassa Vaihe 5: Kuluagentin määrittäminen.
Vaihe 5: Kuluagentin määrittäminen
Kuluagentti voidaan määrittää kahdella seuraavalla tavalla:
- Vaihtoehto A: PowerShell-komentosarjan käyttäminen (suositus)
- Option B: Manuaalinen määrittäminen Power Apps (ei PowerShelliä)
Tärkeää
Ennen kuin jatkat Expense Agentin asentamista, varmista, että agentti on otettu onnistuneesti käyttöön Microsoft Copilot Studiossa.
Varmistaaksesi, että agentti on käyttöönotettu onnistuneesti, toimi seuraavasti:
- Kirjaudu sisään Microsoft Copilot Studio ja valitse ympäristösi.
- Siirry Agentit-kohtaan ja hae ExpenseAgent-Line (esiversio) -vaihtoehto.
- Varmista, että Julkaise-painike on käytössä.
- Jos se on käytössä, jatka asennusta. Jos se on poissa käytöstä, odota, kunnes agentti on valmisteltu.
- Toista nämä vaiheet varmistaaksesi, että Kulujen määritys -agentti (esiversio) on otettu käyttöön.
Vihje
Jos Copilot Finance and Operations -sovelluksen valmistelu kestää yli 5–6 tuntia, poista sovelluksen asennus ja asenna se uudelleen mahdollisten asennusviiveiden ratkaisemiseksi. Lisätietoja on tämän artikkelin lopussa olevassa osiossa Kuluagentin asennuksen poistaminen .
Vaihtoehto A: PowerShell-komentosarjan käyttäminen (suositus)
Agentin manuaaliseen määrittämiseen kuuluu yhteyksien luominen ja linkittäminen, Power Automate työnkulkujen käyttöönotto ja ratkaisun julkaiseminen. Tämä prosessi voi viedä paljon aikaa, ja sen aikana voi helposti tulla virheitä. Voit automatisoida määritykset käyttämällä PowerShell-komentosarjaa vaadittujen parametrien päivittämisen jälkeen.
PowerShell-komentosarja automatisoi seuraavat tehtävät:
- Päivittää tarvittavat ympäristömuuttujat.
- Yhdistää Microsoft Power Platform -liitännät ratkaisun yhteyksien viitteisiin.
- Ottaa käyttöön kaikki Power Automate työnkulut, joita Aika- ja kuluagentti vaatii.
- Julkaisee Copilot agentteja.
- Julkaisee Dataverse-ratkaisun.
Ennen komentosarjan suorittamista on luotava yhteydet, sillä install.ps1-tiedoston jokaiselle yhdistimelle on annettava yhteystunnus. Voit luoda nämä yhteydet noudattamalla seuraavia vaiheita käyttäen luotua agentin käyttäjää.
- Kirjaudu sisään Power Apps maker portal käyttämällä juuri luotua agenttikäyttäjää ja valitse ympäristösi.
- Valitse vasemmanpuoleisessa ruudussa Lisää ja valitse sitten Yhteydet.
- Valitse Uusi yhteys ja hae käyttämällä seuraavan taulukon yhteyden nimeä (esimerkiksi Office 365 Outlook).
- Valitse luettelosta soveltuva yhdistin ja luo se.
- Kun yhteys on luotu, ota huomioon käyttäjä, jolle yhteys on luotu. Parhaassa tapauksessa se on luodun agentin käyttäjätunnus. Päivitä tämä käyttäjätunnus asennustiedostossa, jonka luot seuraavassa vaiheessa.
- Toista vaiheet 3 ja 4 kaikille jäljellä oleville vaadituille yhteyksille, jotka mainitaan alla olevassa taulukossa.
| Yhteyden nimi | Yhteyksien URL-osoitteiden muodot |
|---|---|
| Office 365 Outlook | https://make.powerapps.com/environments/environmentID/connections / shared_office365/connectionID/details |
| Office 365 -käyttäjät | 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/tiedot |
| Microsoft Copilot Studio (esikatselu) | https://make.powerapps.com/environments/environmentID/connections / shared_microsoftcopilotstudio/connectionID/details |
Tiedot, joita tarvitaan asennustiedoston luomisessa
Asennustiedoston luomiseksi – install.ps1, on käytettävissä seuraavat tiedot. (Tiedot löytyvät alla olevasta taulukosta.)
| Parametri | Muut tiedot |
|---|---|
| Dataverse-ympäristön tunnus | Anna ympäristön tunnus, jonka saat Power Platform -hallintakeskuksesta. Esimerkkiarvo: xxxx-xxxx-xxxx-xxx-xxxxxxxxxx |
| Dataverse-ympäristön URL-osoite | Anna ympäristön URL-osoite Power Platform -hallintakeskuksesta. Huomautus: Varmista, että alussa on https:// ja lopussa ei ole kauttaviivaa (/). Esimerkkiarvo: https://org123.crm.contoso.com |
| Talous- ja toimintosovellusten esiintymän URL-osoite | Anna talous- ja toimintosovellusten ympäristön tiedot alla mainitussa muodossa. Esimerkkiarvo: https://org123.contoso.com Huomautus: Varmista, että alussa on https:// ja lopussa ei ole kauttaviivaa (/). |
| OutlookFolderPath | Anna jaettuun postilaatikkoon luotu kansiopolku. Jos muuta kansiota ei ole luotu, tämä määritetään oletusarvoisesti Saapuneet-kansioksi. Esimerkkiarvo: Saapuneet-kansio Paras käytäntö on luoda erillinen kansio kuluhallintaa varten. |
| Postilaatikon osoitteen tunnus | Anna juuri luodun jaetun postilaatikon sähköpostiosoite Esimerkkiarvo: expenseagent@contoso.com |
| Microsoft Dataverse yhteyden nimi Microsoft Copilot Studio yhteyden nimi Microsoft Office Outlook yhteyden nimi Microsoft Office 365 Users -yhteyden nimi Microsoft Teams yhteyden nimi |
Kaikkien yhteyksien nimien syöte on sama ja on luodun agenttikäyttäjän käyttäjäsähköpostitunnus. Esimerkkiarvo: createdexpenseagentuser@contoso.com |
Asennuksen komentosarjatiedoston luominen
Luo asennuksen komentosarjatiedosto kopioimalla seuraava koodi. Lisää tarvittavat ympäristömuuttujat komentosarjaan ja suorita komentosarja PowerShellin avulla.
Note
Sijoita asennuksen komentosarjatiedosto paikalliseen työpöydälle. Älä tallenna sitä One Driveen.
Luo PowerShell-komentosarjatiedosto käyttäen seuraavaa koodia. Päivitä mainitut parametrit ennen komentosarjan suorittamista.
Vihje
Kun pakollinen = $true, PowerShell kehottaa antamaan parametrit vuorovaikutteisesti, joten niitä ei tarvitse päivittää suoraan komentosarjatiedostossa.
Jos haluat välttää manuaalista syötettä ja haluat määrittää parametrit valmiiksi asennuskomentosarjassa, määritä Pakollinen = $false seuraavan esimerkkikoodin Param-osassa.
Kopioi seuraava koodi asennuksen komentosarjatiedostoon ja tallenna se nimellä 'Install.ps1'. Päivitä param-osan parametrikenttien muuttujat . Sinun on päivitettävä 10 muuttujaa.
Vihje
Käytä edellistä taulukkoa viitteenä ja korvaa kaikki esimerkkiarvot vastaavilla tiedoilla.
#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
}
Käynnistä PowerShell-tiedosto seuraavasti:
- Avaa PowerShell (pienin vaadittu versio – PowerShell 7).
- Siirry sijaintiin, johon tallensit tiedoston. (Käytä komentoa cd <tiedoston sijainti>).
- Käynnistä asennuksen komentosarja. (Käytä komentoa .\Install.ps1).
- Kirjaudu sisään Azure noudattamalla ohjeita.
- Kun olet kirjautunut sisään, saatat joutua valtuuttamaan sen vielä kerran. (Käytä luodun agentin käyttäjätunnusta.).
Odota, että komentosarja suoritetaan kokonaan, ja etsi viestin , jonka mukaan Agentin asennus on suoritettu onnistuneesti!
Note
Edellinen komentosarja suorittaa seuraavat toiminnot:
- Asettaa ympäristömuuttujat.
- Tarkistaa ja linkittää yhteysviittaukset.
- Aktivoi Power Automate -prosessit.
- Julkaisee tarvittavat "Copilot"-agentit.
- Julkaisee Dataverse-ratkaisun.
Kun komentosarja on suoritettu onnistuneesti, kuluagentti on täysin määritetty ja valmis käytettäväksi.
Vaihtoehto B: Määritä manuaalisesti Power Apps (ei PowerShelliä)
Jos et halua käyttää PowerShell-komentosarjaa, voit määrittää kuluagentin manuaalisesti Power Apps kautta. Tähän prosessiin kuuluu ympäristömuuttujien päivittäminen, Power Automate työnkulkujen käyttöönotto ja ratkaisun julkaiseminen.
Päivitä ympäristömuuttujat
Voit päivittää ympäristömuuttujia seuraavasti:
Kirjaudu sisään Power Apps ja valitse ympäristösi.
Valitse Ratkaisut ja avaa sitten oletusratkaisu (tai ratkaisu, johon agentti on asennettu).
Siirry Ympäristömuuttujat-kohtaan ja määritä alla mainitut arvot.
Muuttujan nimi Kuvaus Kuluagentti Outlook kansiopolku Määritä jaetussa postilaatikossa valvottava kansiopolku (oletusarvoisesti se on Saapuneet-kansio). Kustannusagentin jaetun postilaatikon osoite-ID Määritä jaetun postilaatikon sähköpostiosoite. Jos haluat käyttää sisäänkirjautuneen käyttäjän postilaatikkoa, anna arvoksi Ei mitään. Finance and Operations -ilmentymän URL-osoite Määritä talous- ja toimintosovellusten ympäristön URL-osoite (esimerkiksi https://org123.contoso.com).
Ota Power Automate -työnkulut käyttöön
Kuluagentti käyttää seuraavia Power Automate työnkulkuja:
- Kulujen määrityksen uudelleenyritysten tarkistus
- Kulun määritys
- Kulujen Outlook-kansion noutaminen
- Kuluraportin luominen
- Kuluraportin mukautuvan kortin lähettäminen
- Kulujen automaattinen täsmäyttäminen
- Käsittele sähköpostiviestit
- Liittämättömien kuittien tunnusten poimiminen avustajan kutsua varten
- Liittämättömän kuitin tuloksen poimiminen Dataverse-laajennuksen avulla
- Kulurivin luominen
- Kulurivin luominen ilman projektin ja tilan tunnusta
- Projektien tunnusten tunnistaminen
- Käyttäjien kalenteritapahtumat
- Kuluraportin käsitteleminen avustajan avulla
- Kuluagentin kutsuminen vastaanoton käsittelyä varten
Voit ottaa työnkulut käyttöön seuraavien ohjeiden avulla:
Kirjaudu sisään Power Automate ja valitse ympäristösi.
Valitse Omat työnkulut.
Toimi edellisen luettelon kunkin 15 työnkulun kohdalla seuraavasti:
- Etsi työnkulku.
- Valitse Muokkaa.
- Vaihda Vanha suunnitteluohjelma -näkymään poistamalla käytöstä Uusi suunnitteluohjelma -vaihtoehto.
- Todenna kaikki vaaditut yhteydet (kunnes vihreät tarkistusmerkit tulevat näkyviin).
- Valitse Jatka ja valitse sitten Tallenna.
- Valitse Ota käyttöön ottaaksesi prosessin käyttöön.
Julkaise ratkaisu
Kun kaikki ympäristömuuttujat ja työnkulut on määritetty, julkaise ratkaisu alla olevien ohjeiden avulla.
- Siirry Power Apps kohtaan Solutions.
- Valitse ympäristö ja ratkaisu.
- Valitse Julkaise kaikki mukautukset.
Kun olet suorittanut nämä vaiheet, Kuluagentti on täysin määritetty ja valmis käytettäväksi.
Vaihe 6: Ota kuluagentti käyttöön Microsoft Teams (valinnainen)
Jos haluat ottaa Käyttöön Teams-pohjaisen viestinnän kuluagentille, lisää Teams-kanava agentille Power Apps. Agentti voi sitten lähettää mukautuvia kortteja Teamsin kautta.
Teams-kanavan ottaminen käyttöön
Ota Teams-kanava käyttöön seuraavasti:
- Kirjaudu sisään Copilot Studio ja valitse oikea ympäristö.
- Valitse Agentit-välilehdessä Kulujen määrityksen agentti.
- Valitse agenttinäkymässä Channels -välilehdeltä Teemoja ja Microsoft 365 Copilot.
- Valitse Lisää kanava, jos haluat ottaa käyttöön Teams-integroinnin. Määritä, kenelle haluat jakaa sovelluksen, käyttämällä Teams-sovelluksen käytettävyyden määrittäminen -osan ohjeita.
Lue lisää artikkelista Avaa Teams + Microsoft 365 -kanavan määrityspaneeli.
Teams-sovelluksen käytettävyyden määrittäminen
Määritä Teams-sovelluksen käytettävyys seuraavasti:
Kun Teams-sovellus on luotu, valitse Käytettävyysasetukset.
Määritä seuraavasti, kenelle haluat jakaa sovelluksen:
- Tietyt käyttäjät organisaatiossa
- Koko organisaatio
Lähetä sovellus hyväksyttäväksi.
Sovelluksen julkaiseminen Teams-hallintakeskuksessa
Jos haluat julkaista sovelluksen Teamsin hallintakeskuksessa, toimi seuraavasti:
- Kirjaudu Teamsin hallintakeskukseen.
- Siirry teams-sovellukseen > Sovellusten hallinta. Hae "kulu" ja valitse Kulun merkintä -agenttisovellus , jossa sovelluksen tila on estetty.
- Poista sovelluksen esto valitsemalla Julkaise. Kun julkaisutoiminto on valmis, varmista, että sovelluksen tila muuttuu estottomana.
Lue lisää artikkelista Sihdistä ja määritä teamsin agentti ja Microsoft 365.
Kun olet suorittanut nämä vaiheet, Kuluagentti on valmis käytettäväksi.
Note
Voit antaa palautetta myös agentin luomista kuluriveistä ja raporteista käyttämällä Peukalo ylös- ja Peukalo alas -kuvakkeita sekä palautetta ponnahdusikkunana Dynamics 365 Finance ympäristössä.
Kuluagentin asennuksen poistaminen
Jos haluat poistaa Kuluagentti-asennuksen , toimi seuraavasti:
- Kirjaudu sisään Microsoft Power Apps maker-portaaliin.
- Valitse Ratkaisut, hae msdyn_ExpenseAI, valitse kolme pistettä ja valitse sitten Poista.
- Etsi msdyn_FnOCopilotAnchor ja poista ratkaisu.