Power Pages klientských rozhraní API (Preview)

[Tento článek je předběžným vydáním dokumentace a může se změnit.]

Power Pages klientská rozhraní API pomáhají vývojářům manipulovat s komponentami uživatelského rozhraní, spravovat formuláře a seznamy, zpracovávat ověřování uživatelů a interagovat s záznamy Dataverse prostřednictvím kódu programu. Rozhraní API klienta bude k dispozici, když se stránka načte a bude k němu možné přistupovat prostřednictvím globální proměnné s názvem, který zvolíte.

Tento článek používá název $pages proměnné v různých příkladech a doporučuje postupovat podle této konvence vytváření názvů pro konzistenci.

Pomocí klientských rozhraní API můžete:

Pomocí klientského $pages rozhraní API můžete:

  • Načtení a úprava formulářů a ovládacích prvků formulářů
  • Zobrazení nebo skrytí prvků uživatelského rozhraní
  • Vytvoření a načtení záznamů pomocí webového rozhraní API
  • Správa ověřování uživatelů
  • Práce s vícejazyčným obsahem

Important

  • Toto je funkce ve verzi Preview.
  • Funkce náhledu nejsou určeny pro produkční použití a mohou mít omezenou funkčnost. Tyto funkce podléhají dodatečným podmínkám použití a jsou k dispozici před oficiálním vydáním, aby zákazníci mohli získat včasný přístup a poskytnout zpětnou vazbu.

Inicializace rozhraní API klienta

Rozhraní $pages API klienta se při načtení stránky neinicializuje okamžitě. Microsoft.Dynamic365.Portal.onPagesClientApiReady Pomocí funkce přiřaďte objekt rozhraní API proměnné$pages. Existují dva způsoby, jak inicializovat rozhraní API klienta:

Připravenost rozhraní API založené na zpětném volání

Použijte funkci zpětného volání, která přiřadí objekt rozhraní API proměnné, kterou definujete, když je připravená. Dva příklady ukazují, jak:

Pomocí anonymní funkce:

Microsoft.Dynamic365.Portal.onPagesClientApiReady(($pages) => {
    const forms = $pages.currentPage.forms.getAll();
    console.log(`Found ${forms.length} forms on the page.`);
});

Pomocí pojmenované funkce:

function start($pages){
    const forms = $pages.currentPage.forms.getAll();
    console.log(`Found ${forms.length} forms on the page.`);
}

Microsoft.Dynamic365.Portal.onPagesClientApiReady(start)

Připravenost rozhraní API na základě příslibu nebo očekávání

Pomocí operátoru await zpracuje příslib vrácený Microsoft.Dynamic365.Portal.onPagesClientApiReady funkcí pro čistější asynchronní tok.

let $pages = await Microsoft.Dynamic365.Portal.onPagesClientApiReady();
const forms = $pages.currentPage.forms.getAll();
console.log(`Found ${forms.length} forms on the page.`);

Kdy použít jednotlivé přístupy

Následující tabulka popisuje, kdy použít jednotlivé přístupy.

Přístup Kdy ho použít
Připravenost rozhraní API založené na zpětném volání Použijte, když potřebujete podporovat starší prohlížeče nebo starší skripty, které nepodporují async/await, nebo pokud chcete zaregistrovat více obslužných rutin, které se spouští, když je rozhraní API připravené. Ideální pro vzory řízené událostmi.
Připravenost rozhraní API na základě příslibu nebo očekávání Používá se v moderních javascriptových prostředích, která podporují async/await čistější sekvenční kód. Nejlepší, když logika závisí na připraveném rozhraní API před pokračováním v provádění.

Tip

Pokud už základ kódu používáte async/await, upřednostňujte přístup založený na příslibu pro konzistenci.

kolekce $pages.currentPage.forms

Kolekce $pages.currentPage.forms obsahuje metody pro práci s prvky formuláře na stránce.

metody $pages.currentPage.forms

Pomocí těchto metod můžete vypsat formuláře a získat konkrétní instance formulářů.

Metoda Návraty Description
getAll IForm[] Vrátí všechny formuláře přidané na aktuální stránku.
getFormById(id: string) IForm Načte formulář podle ID elementu HTML.
getFormByName(name: string) IForm Načte formulář podle názvu.

příklady metod $pages.currentPage.forms

Tyto příklady ukazují, jak získat všechny formuláře a načíst konkrétní formuláře podle ID nebo názvu.

let forms = $pages.currentPage.forms.getAll();
let form1 = $pages.currentPage.forms.getFormById('form_#1');
let form2 = $pages.currentPage.forms.getFormByName('form_name')

IForm – rozhraní

Rozhraní IForm představuje kontejner pro ovládací prvky a karty.

Vlastnosti IForm

Následující vlastnosti popisují formulář a jeho obsažené ovládací prvky a karty.

Vlastnictví Typ Description
id řetězec ID formuláře.
name řetězec Název formuláře.
controls Řízení[] Všechny ovládací prvky ve formuláři.
tabs Tabulátor[] Všechny karty ve formuláři.
isMultiStep Boolean True pokud formulář je vícekrokový; jinak nepravda. Viz formulář Multistep.

Metody IForm

Pomocí těchto metod můžete dotazovat viditelnost formuláře a přepínat, jestli je viditelný.

Metoda Návraty Description
getVisible boolean Vrátí hodnotu true, pokud je formulář viditelný; jinak nepravda.
setVisible(isVisible: boolean) void Nastaví viditelnost formuláře.

Příklad IForm

Následující příklad načte formulář podle ID a zaznamená jeho viditelnost, počet ovládacích prvků a karty.

let form = $pages.currentPage.forms.getFormById('form_#1');

console.log(`Form id: ${form.id} has ${form.controls.length} controls.`); 

if (form.getVisible()) {  
console.log('Form is currently visible.');  
}  
let tabs = form.tabs;  
console.log(`Form has ${tabs.length} tabs.`);

Formulář s více kroky

Vícekrokový formulář je kontejner, který obsahuje více základních formulářů.

Vlastnosti formuláře s více kroky

Následující vlastnosti platí pro kontejner vícekrokového formuláře a popisují, co je k dispozici v aktuálně aktivním kroku.

Vlastnictví Typ Description
id řetězec ID vícekrokového formuláře.
controls Řízení[] Všechny ovládací prvky v aktuálním kroku.
tabs Tabulátor[] Všechny karty v aktuálním kroku.
isMultiStep Boolean True pokud formulář je vícekrokový; jinak nepravda.
nextButton JQuery Element Představuje další tlačítko (prázdný objekt, pokud chybí).
previousButton JQuery Element Představuje předchozí tlačítko (prázdný objekt, pokud chybí).

Vícekrokové metody formulářů

Pomocí těchto metod můžete zkontrolovat viditelnost a přecházet mezi kroky ve vícekrokovém formuláři.

název Návraty Description
getVisible boolean Vrátí hodnotu true, pokud je formulář viditelný; jinak nepravda.
setVisible(isVisible: boolean) void Nastaví viditelnost formuláře.
isVisible boolean Vlastnost označující, zda má být formulář zobrazen (true) nebo skrytý (false).
hasNextStep boolean Vrátí hodnotu true, pokud existuje další krok; jinak nepravda.
hasPreviousStep boolean Vrátí hodnotu true, pokud existuje předchozí krok. jinak nepravda.
goToNextStep void Přejde k dalšímu kroku; odešle formulář, pokud neexistuje žádný další krok.
goToPreviousStep void Přejde na předchozí krok; vyvolá výjimku, pokud neexistuje.

Příklad formuláře s více kroky

Tento příklad ukazuje, jak načíst formulář s více kroky, zkontrolovat ho a přejít k dalšímu kroku.

let $pages = await Microsoft.Dynamic365.Portal.onPagesClientApiReady();
let form = $pages.currentPage.forms.getFormById('multiform_#1');
console.log(`Form id: ${form.id} has ${form.controls.length} controls.`);

if (form.getVisible()) {
console.log('Form is currently visible.');
}

let tabs = form.tabs;
console.log(`Form has ${tabs.length} tabs.`);

form.goToNextStep();  

Tab

A Tab obsahuje jeden nebo více oddílů ve formuláři.

Vlastnost tabulátoru Sections

Pole oddílů na kartě

Metody tabulátoru

Pomocí těchto metod můžete zkontrolovat viditelnost karty, načíst jeho název a přepnout, jestli je viditelná.

Metoda Návraty Description
getVisible boolean Vrátí hodnotu true, pokud je karta viditelná; jinak nepravda.
getName string Vrátí název karty.
setVisible(isVisible: boolean) void Nastaví viditelnost karty.

Příklad tabulátoru

Tento příklad načte formulář, vyčíslí jeho karty a zaznamená název první karty.

let form = $pages.currentPage.forms.getFormById('form_#1');  
let tabs = form.tabs;  
console.log(`Form has ${tabs.length} tabs.`);  
console.log(`First tab is named: ${tabs[0].getName()}`);  

Oddíl

Oddíly seskupují ovládací prvky na kartě.

Controls Section – vlastnost

Pole ovládacích prvků v rámci oddílu

Metody oddílů

Pomocí těchto metod můžete přečíst název oddílu a řídit jeho viditelnost.

Metoda Návraty Description
getVisible boolean Vrátí hodnotu true, pokud je oddíl viditelný; jinak nepravda.
getName string Vrátí název oddílu.
setVisible(isVisible: boolean) void Nastaví viditelnost oddílu.

Příklad oddílu

Tento příklad načte oddíly z první karty formuláře a zaznamenává základní podrobnosti.

let form = $pages.currentPage.forms.getFormById('form_#1');  
let sections = form.tabs[0].sections;  
console.log(`Tab has ${sections.length} section(s).`);  
console.log(`First section is named: ${sections[0].getName()}`);

Ovládací prvek

Ovládací prvky představují jednotlivé prvky formuláře.

Řídicí metody

Tyto metody slouží k načtení nebo aktualizaci hodnoty, viditelnosti a zakázaného stavu ovládacího prvku.

Metoda Návraty Description
getDisabled boolean Vrátí hodnotu true, pokud je ovládací prvek zakázán.
getVisible boolean Vrátí hodnotu true, pokud je ovládací prvek viditelný.
getName string Vrátí název ovládacího prvku.
getValue string | undefined Načte aktuální hodnotu.
setDisabled(isDisabled: boolean) void Nastaví zakázaný stav.
setVisible(isVisible: boolean) void Nastaví viditelnost.
setValue(value: string) void Nastaví novou hodnotu ovládacího prvku.

Příklad ovládacího prvku

Tento příklad načte formulář, zkontroluje viditelnost prvního ovládacího prvku a pak ho skryje.

let form = $pages.currentPage.forms.getFormById('form_#1');  
let controls = form.controls;  
if (controls.length > 0) {  
if (controls[0].getVisible()) {  
console.log(`Control ${controls[0].getName()} is visible.`);  
}  
controls[0].setVisible(false); // Hide the first control.  
}

Podporované ovládací prvky

Všechny ovládací prvky implementují standardní metody řízení. Některé ovládací prvky poskytují více metod a mají různé podrobnosti implementace od standardních kontrolních metod. Seznamte se s dalšími metodami a rozdíly v implementaci pro různé typy ovládacích prvků.

kolekce $pages.currentPage.lists

Kolekce seznamů poskytuje metody pro práci s tradičními a moderními prvky seznamu na stránce.

metody $pages.currentPage.lists

Tyto metody slouží k vytvoření výčtu všech seznamů na stránce a získání konkrétního seznamu podle ID elementu HTML.

Metoda Návraty Description
getAll Ilist[] Vrátí všechny seznamy na aktuální stránce.
getListById(id: string) IList Získá seznam podle ID elementu HTML.

příklady $pages.currentPage.lists

Tyto příklady ukazují, jak vytvořit výčet všech seznamů na stránce a získat konkrétní seznam podle ID elementu HTML.

let lists = $pages.currentPage.lists.getAll();
let list = $pages.currentPage.lists.getListById('list_#1');

IList – rozhraní

Seznam představuje tabulkovou nebo mřížkovou datovou komponentu.

Vlastnosti IList

Tyto vlastnosti identifikují seznam a označují, jestli používá moderní model vykreslování.

Vlastnictví Typ Description
id řetězec Jedinečný identifikátor seznamu.
isModern Boolean Logická hodnota, která je pravdivá pro moderní seznamy a nepravda jinak.

Metody IList

Pomocí těchto metod můžete zkontrolovat viditelnost seznamu, přepnout, jestli je viditelný, a získat přístup k podkladovému elementu HTML.

Metoda Návraty Description
getVisible boolean Vrátí hodnotu true, pokud je seznam viditelný.
setVisible(isVisible: boolean) void Nastaví viditelnost seznamu.
getHtmlElement HTMLElement Vrátí základní element HTML pro seznam.

Příklad IList

Následující příklad načte seznam podle ID a zaznamená jeho stav viditelnosti.

let list = $pages.currentPage.lists.getListById('list_#1');  
console.log(`List id: ${list.id}`);  
if (list.getVisible()) {  
console.log('List is currently visible.');  
}

objekt $pages.user

Objekt $pages.user poskytuje metody pro přihlášení nebo odhlášení uživatele.

metody $pages.user

Tyto metody nevrací žádnou hodnotu.

Metoda Description
signIn Přesměruje uživatele na přihlašovací stránku.
signOut Odhlásí se aktuálně přihlášený uživatel.

objekt $pages.webAPI

Objekt $pages.webAPI poskytuje metody pro vytváření a načítání záznamů ze zdroje dat.

createRecord – metoda

Vytvoří nový záznam v zadané tabulce.

Syntaxe: $pages.webAPI.createRecord(entitySetName: string, data: object): Promise<object>
Vrátí: Příslib , který se přeloží na vytvořený záznam nebo výsledek operace.

createRecord – parametry metody

Zadejte cílovou tabulku a datový objekt představující záznam, který se má vytvořit.

Parameter Typ Description
entitySetName řetězec Název sady entit. Informace o názvu sady entit ve webovém rozhraní API služby Dataverse
data objekt Data záznamu, která se mají vytvořit.

createRecord – příklad metody

Tento příklad ukazuje volání createRecord s názvem sady entit a minimálním datovým objektem.

$pages.webAPI.createRecord('contacts', {  
firstName: 'User',
lastName: 'Test'  
});

metoda retrieveRecord

Načte záznam podle jeho jedinečného identifikátoru.

Syntaxe: $pages.webAPI.retrieveRecord(entitySetName: string, id: string, options?: string): Promise<object>
Vrátí: Příslib , který se přeloží na objekt záznamu.

retrieveRecord – parametry metody

Zadejte tabulku, ID záznamu a volitelné možnosti dotazu OData $select pro tvarování odpovědi.

Parameter Typ Description
entitySetName řetězec Název sady entit. Seznamte se s názvem sady entit ve webovém rozhraní API služby Dataverse.
id řetězec Jedinečný identifikátor záznamu.
options řetězec (volitelné) Volitelný řetězec dotazu OData $select pro omezení vrácených dat.

Note

options I když je parametr volitelný, pro zajištění nejlepšího výkonu vždy omezte počet vrácených hodnot sloupců pomocí $select této možnosti.

příklad metody retrieveRecord

Tento příklad načte jeden záznam podle ID a omezí vrácené sloupce pomocí možnosti dotazu OData $select .

let record = await $pages.webAPI.retrieveRecord('accounts', 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',  '$select=name');

metoda retrieveMultipleRecords

Načte více záznamů na základě zadaných možností dotazu.

Syntaxe: $pages.webAPI.retrieveMultipleRecords(entitySetName: string, options?: string): Promise<object>
Vrátí: Příslib , který se přeloží na pole objektů záznamů.

retrieveMultipleRecords – parametry metody

Zadejte tabulku a volitelný dotaz OData pro filtrování výsledků a omezení vrácených sloupců.

Parameter Typ Description
entitySetName řetězec Název sady entit.
options řetězec (volitelné) Řetězec možností dotazu OData pro řízení vrácených dat. Další informace o možnostech dotazů OData podporovaných webovým rozhraním API služby Dataverse

Note

options I když je parametr volitelný, pro zajištění nejlepšího výkonu vždy omezte počet vrácených hodnot sloupců pomocí $select této možnosti.

příklad metody retrieveMultipleRecords

Tento příklad načte více záznamů a používá OData $select a $top omezuje počet vrácených sloupců a řádků.

let records = await $pages.webAPI.retrieveMultipleRecords('accounts','$select=name&$top=3');

$pages.languages

Objekt $pages.languages poskytuje metody pro načtení seznamu dostupných jazyků pro web, získání aktuálně aktivního jazyka a nastavení nového aktivního jazyka.

metody $pages.languages

Tyto metody slouží ke čtení dostupných jazyků, kontrole aktuálního jazyka a změně webu.

Metoda Description Návraty
getAll Načte seznam jazyků povolených pro web. string[]
getActive Načte aktuálně aktivní jazyk. string
setActive(language: string) Nastaví daný jazyk jako aktivní jazyk. void

Note

setActive metoda způsobí opětovné načtení stránky.

Příklady metod $pages.languages

Tyto příklady ukazují, jak zobrazit seznam všech jazyků, číst aktivní jazyk a nastavit nový aktivní jazyk.

let allLanguages = $pages.languages.getAll();
let activeLanguage = $pages.languages.getActive();
$pages.languages.setActive('hi-IN');

$pages.agent

Objekt $pages.agent poskytuje metody pro navázání komunikace mezi lokalitou a agentem Microsoft Copilot Studio dostupným aktuálnímu uživateli.

$pages.agent.SendActivity(
    agentSchemaName: string,
    inputActivity: object,
    responseSubscriber: function,
    errorSubscriber: function
);
Název parametru Typ Description
agentSchemaName String Název schématu robota, na kterého se aktivita odesílá.
inputActivity Object Objekt obsahující text nebo událost, které se mají odeslat robotovi.
responseSubscriber funkce Funkce zpětného volání, která se spustí, když agent odešle odpověď.
errorSubscriber funkce Funkce zpětného volání, která zpracovává chyby.

Návratový typ: void – funkce nic nevrací.

Objekt odpovědi od agenta přijatý v následujícím formátu:

název Typ Description
type String Typ aktivity, jako je zpráva.
text String Nepovinná zpráva od agenta.
textFormat String Volitelné, formát textu zprávy, jako je markdown, prostý nebo XML.
Id String ID, které jednoznačně identifikuje aktivitu.
From Object Určuje odesílatele aktivity (včetně ID, jména (volitelného) a informací o roli.
Conversation Object Obsahuje ID konverzace, do které aktivita patří.
InputHint String Volitelné, označuje, jestli robot přijímá, očekává nebo ignoruje uživatelský vstup.
replyToId String ID zprávy odpovědi.

Příklad

Metoda zpětného volání

Definujte funkce zpětného responseSubscribererrorSubscriber volání pro zpracování odpovědí a chyb agenta.

const responseSubscriber = (response) => {  
// Replace with your response handling.
console.log('Agent response:', response);
};

const errorSubscriber = (error) => {
// Replace with your error handling.
console.error('Error:', error);
};  

// Replace with your agent schema name.
const agentSchemaName = 'agent SchemaName';  

Odeslání zprávy agentu

const inputActivity = {
    text: 'Hello!', // Message to the agent.
    };

$pages.agent.SendActivity(agentSchemaName, inputActivity, responseSubscriber, 
  ErrorSubscriber);

Vyvolání události klienta

const inputActivity = {
    name: 'AgentEvent', // The name of the event to be invoked
    value: {key1:'value1', key2:'value2'} // Open-ended value used to carry additional data or payloads necessary for specific agent operations or responses
    };

$pages.agent.SendActivity(agentSchemaName, inputActivity, responseSubscriber, 
  ErrorSubscriber);

Chybové zprávy

Tady jsou možné chybové zprávy, se kterými se můžou uživatelé setkat, a jejich potenciální příčiny.

Typ chyby Příčina Chybová zpráva pro uživatele
Ověření schématu agenta Zadaný neplatný název schématu robota nebo uživatel nemá přístupová oprávnění k agentovi Invalid bot schema name or access denied. Please check the bot schema name and try again.
Chyba načtení tokenu Při načítání tokenu přímého řádku došlo k chybě. Something went wrong while fetching the token. Please try again.
Chyba účtování aktivity (opakování) Při publikování aktivity došlo k chybě a vyžaduje se opakování. Something went wrong while posting the activity: retry.
Chyba účtování aktivity (vypršení časového limitu) Časový limit vypršel při čekání na odchozí zprávu nebo postActivity Timed out while posting activity: Please retry.
Chyba účtování aktivity (neplatná aktivita) Vstupní aktivita nemá text ani název pro vyvolání události. Invalid activity: At least one of text, name, or attachments must be provided.
Chyba aktivity publikování (ID uživatele se nenašlo nebo token se nenašel) Token se nenašel v úložišti relací nebo v tokenu se nenašlo ID uživatele. Error retrieving user ID: {error message}
Chyba účtování aktivity (obecné) Při publikování aktivity došlo k nezadané chybě. Something went wrong while posting the activity: Please try again.
Chyba přímého připojení Při vytváření přímého připojení k robotovi došlo k chybě. Something went wrong while creating direct line connection: Please try again.
Obecná chyba Neočekávaná chyba, která nepatří do výše uvedených kategorií An unexpected error occurred while sending activity: Please try again.