Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
[Este artigo é a documentación de prelanzamento e está suxeito a cambios.]
As APIs cliente de Power Pages axudan aos desenvolvedores a manipular compoñentes da interface, xestionar formularios e listas, xestionar a autenticación de usuarios e interactuar programáticamente cos rexistros Dataverse. A API do cliente faise dispoñible cando carga a túa páxina e pode accederse a ela a través dunha variable global co nome que escollas.
Este artigo usa o nome $pages da variable en todos os exemplos e recomenda que sigas esta convención de nomes para maior coherencia.
Coas APIs do cliente, podes:
Coa $pages API do cliente, podes:
- Recuperar e modificar formularios e controis de formularios
- Mostrar ou ocultar elementos da interface de usuario
- Crea e recupera rexistros usando a API web
- Xestionar a autenticación de usuarios
- Traballo con contido multilingüe
Importante
- Esta é unha funcionalidade de vista previa.
- As funcionalidades en versión preliminar non están destinadas a usarse en produción e poderían ter restrinxida a funcionalidade. Estas funcións están suxeitas a termos suplementarios de uso, e están dispoñibles antes dun lanzamento oficial para que os clientes poidan access cedo e dar opinións.
Inicialización da API do cliente
A $pages API do cliente non se inicializa inmediatamente cando carga a páxina. Usa a Microsoft.Dynamic365.Portal.onPagesClientApiReady función para asignar o obxecto API á $pages variable. Hai dúas formas de inicializar a API do cliente:
Preparación de API baseada en devolución de chamada
Usa unha función de chamada que asigne o obxecto API a unha variable que definas cando estea lista. Dous exemplos amosan como:
Usando unha función anónima:
Microsoft.Dynamic365.Portal.onPagesClientApiReady(($pages) => {
const forms = $pages.currentPage.forms.getAll();
console.log(`Found ${forms.length} forms on the page.`);
});
Usando unha función nomeada:
function start($pages){
const forms = $pages.currentPage.forms.getAll();
console.log(`Found ${forms.length} forms on the page.`);
}
Microsoft.Dynamic365.Portal.onPagesClientApiReady(start)
Preparación da API baseada en promesa/espera
Os usos await para xestionar a promesa devolta pola Microsoft.Dynamic365.Portal.onPagesClientApiReady función para un fluxo asincrónico máis limpo.
let $pages = await Microsoft.Dynamic365.Portal.onPagesClientApiReady();
const forms = $pages.currentPage.forms.getAll();
console.log(`Found ${forms.length} forms on the page.`);
Cando utilizar cada enfoque
A seguinte táboa describe cando usar cada enfoque.
| Enfoque | Cando usar |
|---|---|
| Preparación de API baseada en devolución de chamada | Utilízao cando necesites soportar navegadores antigos ou scripts antigos que non o soporten async/await, ou cando queiras rexistrar múltiples manexadores que se executen cando a API estea lista. Ideal para patróns impulsados por eventos. |
| Preparación da API baseada en promesa/espera | Úsase en ambientes JavaScript modernos que soportan async/await código máis limpo e secuencial. O mellor é cando a túa lóxica depende de que a API estea lista antes de continuar a execución. |
Suxestión
Se a túa base de código xa usa async/await, prefiro o enfoque baseado en Promesa para a consistencia.
Colección $pages.currentPage.forms
A $pages.currentPage.forms colección inclúe métodos para traballar cos elementos da forma na páxina.
$pages.currentPage.forms métodos
Usa estes métodos para listar formularios e obter instancias específicas de formularios.
| Método | Devolucións | Descripción |
|---|---|---|
getAll |
IForm[] |
Devolve todos os formularios engadidos á páxina actual. |
getFormById(id: string) |
IForm |
Recupera un formulario polo seu ID de elemento HTML. |
getFormByName(name: string) |
IForm |
Recupera un formulario co seu nome. |
Exemplos de métodos $pages.currentPage.forms
Estes exemplos mostran como obter todos os formularios e recuperar formularios específicos por ID ou nome.
let forms = $pages.currentPage.forms.getAll();
let form1 = $pages.currentPage.forms.getFormById('form_#1');
let form2 = $pages.currentPage.forms.getFormByName('form_name')
Interface IForm
A IForm interface representa un contedor para controis e pestanas.
Propiedades IForm
As seguintes propiedades describen o formulario e os seus controis e pestanas contidos.
| Propiedade | Tipo | Descripción |
|---|---|---|
id |
cadea | O ID do formulario. |
name |
cadea | O nome do formulario. |
controls |
Control[] |
Todos os controis do formulario. |
tabs |
Tab[] |
Todas as pestanas do formulario. |
isMultiStep |
boolean | Certo se a forma é multipaso; se non, falso. Ver formulario Multistep. |
Métodos IForm
Usa estes métodos para consultar a visibilidade dun formulario e cambiar se é visible.
| Método | Devolucións | Descripción |
|---|---|---|
getVisible |
boolean |
Devolve true se a forma é visible; se non, falso. |
setVisible(isVisible: boolean) |
void |
Establece a visibilidade do formulario. |
Exemplo IForm
O seguinte exemplo recupera un formulario por ID e rexistra a súa visibilidade, número de controis e pestanas.
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.`);
Formulario con varios pasos
Unha forma multipaso é un contedor que contén múltiples formas básicas.
Propiedades da forma multipaso
As seguintes propiedades aplícanse ao contedor de formulario multipaso e describen o que está dispoñible no paso actualmente activo.
| Propiedade | Tipo | Descripción |
|---|---|---|
id |
cadea | O ID do formulario multipaso. |
controls |
Control[] |
Todos os controis están no paso actual. |
tabs |
Tab[] |
Todas as pestanas no paso actual. |
isMultiStep |
boolean | Certo se a forma é multipaso; se non, falso. |
nextButton |
JQuery Element | Representa o seguinte botón (obxecto baleiro se está ausente). |
previousButton |
JQuery Element | Representa o botón anterior (obxecto baleiro se está ausente). |
Métodos de forma multipaso
Usa estes métodos para comprobar a visibilidade e moverte entre pasos en forma de varios pasos.
| Nome | Devolucións | Descripción |
|---|---|---|
getVisible |
boolean |
Devolve true se a forma é visible; se non, falso. |
setVisible(isVisible: boolean) |
void |
Establece a visibilidade do formulario. |
isVisible |
boolean |
Propiedade que indica se a forma debe mostrarse (verdadeira) ou oculta (falsa). |
hasNextStep |
boolean |
Retorna verdadeiro se existe un seguinte paso; se non, falso. |
hasPreviousStep |
boolean |
Retorna verdadeiro se existe un paso anterior; se non, falso. |
goToNextStep |
void |
Navega ao seguinte paso; envía o formulario se non existe o seguinte paso. |
goToPreviousStep |
void |
Navega ata o paso anterior; Fai unha excepción se non existe. |
Exemplo de forma multipaso
Este exemplo mostra como recuperar un formulario de varios pasos, inspeccionalo e avanzar ao seguinte paso.
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();
Tabulador
A Tab contén unha ou máis seccións dentro dun formulario.
Propiedade tab Sections
Un conxunto de seccións dentro da pestana.
Métodos de tabulación
Usa estes métodos para comprobar a visibilidade dunha pestana, recuperar o seu nome e cambiar se é visible.
| Método | Devolucións | Descripción |
|---|---|---|
getVisible |
boolean |
Devolve true se a pestana é visible; se non, falso. |
getName |
string |
Devolve o nome da pestana. |
setVisible(isVisible: boolean) |
void |
Establece a visibilidade da pestana. |
Exemplo de tabulación
Este exemplo recupera un formulario, enumera as súas pestanas e rexistra o nome da primeira pestana.
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()}`);
Sección
As seccións agrupan os controis dentro dunha pestana.
Propiedade de sección Controls
Un conxunto de controis dentro da sección.
Métodos de sección
Usa estes métodos para ler o nome dunha sección e controlar a súa visibilidade.
| Método | Devolucións | Descripción |
|---|---|---|
getVisible |
boolean |
Devolve true se a sección é visible; se non, falso. |
getName |
string |
Devolve o nome da sección. |
setVisible(isVisible: boolean) |
void |
Establece a visibilidade da sección. |
Exemplo de sección
Este exemplo recupera seccións da primeira pestana dun formulario e rexistra detalles básicos.
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()}`);
Control
Os controis representan elementos individuais da forma.
Métodos de control
Usa estes métodos para recuperar ou actualizar o valor, visibilidade e estado desactivado dun control.
| Método | Devolucións | Descripción |
|---|---|---|
getDisabled |
boolean |
Devolve a verdade se o control está desactivado. |
getVisible |
boolean |
Devolve verdadeiro se o control é visible. |
getName |
string |
Devolve o nome do control. |
getValue |
string | undefined |
Recupera o valor actual. |
setDisabled(isDisabled: boolean) |
void |
Establece o estado de desactivado. |
setVisible(isVisible: boolean) |
void |
Establece a visibilidade. |
setValue(value: string) |
void |
Establece un novo valor para o control. |
Exemplo de control
Este exemplo obtén un formulario, comproba a visibilidade do primeiro control e logo agochao.
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.
}
Controis soportados
Todos os controis implementan os métodos estándar de control. Algúns controis proporcionan máis métodos e teñen detalles de implementación diferentes dos métodos de control estándar. Aprende sobre outros métodos e as diferenzas de implementación para diferentes tipos de controis.
$pages.currentPage.lists colección
A colección de listas ofrece métodos para traballar con elementos tradicionais e modernos da lista na páxina.
$pages.currentPage.lists métodos
Usa estes métodos para enumerar todas as listas da páxina e obter unha lista específica polo seu ID de elemento HTML.
| Método | Devolucións | Descripción |
|---|---|---|
getAll |
IList[] |
Devolve todas as listas na páxina actual. |
getListById(id: string) |
IList | Obtén unha lista polo seu ID de elemento HTML. |
Exemplos de $pages.currentPage.lists
Estes exemplos mostran como enumerar todas as listas na páxina e obter unha lista específica polo seu ID de elemento HTML.
let lists = $pages.currentPage.lists.getAll();
let list = $pages.currentPage.lists.getListById('list_#1');
Interface IList
Unha lista representa un compoñente de datos tabular ou en forma de grella.
Propiedades IList
Estas propiedades identifican a lista e indican se usa o modelo moderno de renderizado.
| Propiedade | Tipo | Descripción |
|---|---|---|
id |
cadea | O identificador único da lista. |
isModern |
boolean | Un valor booleano que é verdadeiro para listas modernas e falso noutro caso. |
Métodos IList
Usa estes métodos para comprobar a visibilidade da lista, cambiar se é visible e acceder ao elemento HTML subxacente.
| Método | Devolucións | Descripción |
|---|---|---|
getVisible |
boolean |
Devolve verdadeiro se a lista é visible. |
setVisible(isVisible: boolean) |
void |
Establece a visibilidade da lista. |
getHtmlElement |
HTMLElement |
Devolve o elemento HTML subxacente para a lista. |
Exemplo IList
O seguinte exemplo recupera unha lista por ID e rexistra o seu estado de visibilidade.
let list = $pages.currentPage.lists.getListById('list_#1');
console.log(`List id: ${list.id}`);
if (list.getVisible()) {
console.log('List is currently visible.');
}
$pages.obxecto usuario
O $pages.user obxecto proporciona métodos para iniciar ou desconectar ao usuario.
Métodos $pages.user
Estes métodos non achegan ningún valor.
| Método | Descripción |
|---|---|
signIn |
Redirixe ao usuario á páxina de inicio de sesión. |
signOut |
Pecha sesión co usuario actualmente iniciado sesión. |
$pages.webAPI obxecto
O $pages.webAPI obxecto proporciona métodos para crear e recuperar rexistros dunha fonte de datos.
Método createRecord
Crea un novo rexistro na táboa especificada.
Sintaxe: $pages.webAPI.createRecord(entitySetName: string, data: object): Promise<object>
Devolucións: Unha promesa que se resolve ao rexistro creado ou resultado da operación.
Parámetros do método createRecord
Proporciona a táboa de destino e o obxecto de datos que representa o rexistro para crear.
| Parámetro | Tipo | Descripción |
|---|---|---|
entitySetName |
cadea | O nome do conxunto de entidades. Aprende sobre o nome do conxunto da entidade na API web de Dataverse |
data |
obxecto | Os datos do rexistro para crear. |
Exemplo do método createRecord
Este exemplo demostra chamar createRecord cun nome de conxunto de entidade e un obxecto de datos mínimo.
$pages.webAPI.createRecord('contacts', {
firstName: 'User',
lastName: 'Test'
});
método retrieveRecord
Recupera un rexistro polo seu identificador único.
Sintaxe: $pages.webAPI.retrieveRecord(entitySetName: string, id: string, options?: string): Promise<object>
Devolucións: Unha promesa que se resolve ao obxecto rexistrado.
Parámetros do método retrieveRecord
Especifica a táboa, o ID do rexistro e opcións opcionais de consulta OData $select para dar forma á resposta.
| Parámetro | Tipo | Descripción |
|---|---|---|
entitySetName |
cadea | O nome do conxunto de entidades. Aprende sobre o nome do conxunto de entidades na API web de Dataverse. |
id |
cadea | O identificador único do disco. |
options |
corda (opcional) | Unha cadea opcional de consulta OData $select para limitar os datos devoltos. |
Nota
Aínda que o options parámetro é opcional, para un mellor rendemento sempre limita o número de valores de columna devoltos usando a $select opción.
Exemplo do método retrieveRecord
Este exemplo recupera un único rexistro por ID e limita as columnas retornadas usando unha opción de consulta OData $select .
let record = await $pages.webAPI.retrieveRecord('accounts', 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb', '$select=name');
método retrieveMultipleRecords
Recupera múltiples rexistros baseándose nas opcións de consulta proporcionadas.
Sintaxe: $pages.webAPI.retrieveMultipleRecords(entitySetName: string, options?: string): Promise<object>
Devolucións: Unha Promesa que resolve a un conxunto de obxectos de rexistro.
Parámetros do método retrieveMultipleRecords
Especificar a táboa e a consulta opcional de OData para filtrar os resultados e limitar as columnas retornadas.
| Parámetro | Tipo | Descripción |
|---|---|---|
entitySetName |
cadea | O nome do conxunto de entidades. |
options |
corda (opcional) | Unha cadea de opcións de consulta OData para controlar os datos devoltos. Aprende máis sobre as opcións de consulta OData soportadas pola API web de Dataverse |
Nota
Aínda que o options parámetro é opcional, para un mellor rendemento sempre limita o número de valores de columna devoltos usando a $select opción.
Exemplo do método retrieveMultipleRecords
Este exemplo recupera múltiples rexistros e usa OData $select para $top limitar as columnas retornadas e o número de filas.
let records = await $pages.webAPI.retrieveMultipleRecords('accounts','$select=name&$top=3');
$pages.idiomas
O $pages.languages obxecto proporciona métodos para recuperar a lista de linguas dispoñibles para o sitio web, obter a linguaxe actualmente activa e configurar unha nova linguaxe activa.
$pages.métodos de linguas
Usa estes métodos para ler os idiomas dispoñibles, comprobar o idioma actual e cambialo para o sitio.
| Método | Descripción | Devolucións |
|---|---|---|
getAll |
Recupera a lista de idiomas habilitados para o sitio web. | string[] |
getActive |
Recupera a linguaxe actualmente activa. | string |
setActive(language: string) |
Establece a lingua dada como a lingua activa. | void |
Nota
setActive O método provoca unha recarga da páxina.
Exemplos de métodos $pages.languages
Estes exemplos mostran como listar todas as linguas, ler a linguaxe activa e establecer unha nova linguaxe activa.
let allLanguages = $pages.languages.getAll();
let activeLanguage = $pages.languages.getActive();
$pages.languages.setActive('hi-IN');
$pages.axente
O obxecto $pages.agent proporciona métodos para establecer comunicación entre o sitio e o axente Microsoft Copilot Studio dispoñible para o usuario actual.
$pages.agent.SendActivity(
agentSchemaName: string,
inputActivity: object,
responseSubscriber: function,
errorSubscriber: function
);
| Nome do parámetro | Tipo | Descripción |
|---|---|---|
agentSchemaName |
String | Nome do esquema do bot ao que se envía a actividade. |
inputActivity |
Obxecto | Obxecto que contén o texto ou evento para enviar ao bot. |
responseSubscriber |
función | Función de chamada de retorno que se executa cando o axente envía unha resposta. |
errorSubscriber |
función | Función de chamada de retorno que xestiona erros. |
Tipo de retorno: void - A función non devolve nada.
Obxecto de resposta do axente recibido no seguinte formato:
| Nome | Tipo | Descripción |
|---|---|---|
type |
String | Tipo de actividade, como mensaxe. |
text |
String | Opcional, mensaxe do axente. |
textFormat |
String | Opcional, formato do texto da mensaxe como markdown, plano ou XML. |
Id |
String | ID que identifica de forma única a actividade. |
From |
Obxecto | Especifica o remitente da actividade (inclúe id, nome (opcional) e información do rol). |
Conversation |
Obxecto | Contén o ID da conversa á que pertence a actividade. |
InputHint |
String | Opcional, indica se o bot está aceptando, esperando ou ignorando a entrada do usuario. |
replyToId |
String | ID da mensaxe de resposta. |
Exemplo
Método de chamada de retorno
Define as responseSubscriber funcións e errorSubscriber callback para xestionar as respostas e erros dos axentes.
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';
Enviar mensaxe ao axente
const inputActivity = {
text: 'Hello!', // Message to the agent.
};
$pages.agent.SendActivity(agentSchemaName, inputActivity, responseSubscriber,
ErrorSubscriber);
Invocar evento cliente
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);
Mensaxes de erro
Aquí tes posibles mensaxes de erro que os usuarios poden atopar e as súas posibles causas.
| Tipo de erro | Causa | Mensaxe de erro para o usuario |
|---|---|---|
| Validación do esquema do axente | Nome de esquema de bot inválido proporcionado ou usuario que non ten permisos de acceso ao axente | Invalid bot schema name or access denied. Please check the bot schema name and try again. |
| Erro de token de obtemento | Produciuse un erro ao obter o token de liña directa | Something went wrong while fetching the token. Please try again. |
| Erro na actividade de publicación (reintento) | Ocorreu un erro ao publicar a actividade e é necesario reintentalo. | Something went wrong while posting the activity: retry. |
| Erro na actividade de publicación (tempo morto) | Esgotado mentres agarda mensaxe saínte ou postActividade | Timed out while posting activity: Please retry. |
| Erro na actividade de publicación (actividade inválida) | A actividade de entrada non ten texto nin un nome para invocar o evento. | Invalid activity: At least one of text, name, or attachments must be provided. |
| Erro de actividade de publicación (ID de usuario non atopado ou token non atopado) | O token non se atopa no almacenamento da sesión ou o ID de usuario non se atopa no token | Error retrieving user ID: {error message} |
| Erro na actividade de publicación (xeral) | Ocorreu un erro non especificado durante a publicación da actividade | Something went wrong while posting the activity: Please try again. |
| Erro de conexión directa á liña | Produciuse un erro ao crear unha conexión directa coa liña co bot. | Something went wrong while creating direct line connection: Please try again. |
| Erro xeral | Un erro inesperado que non encaixa nas categorías anteriores | An unexpected error occurred while sending activity: Please try again. |