Enviar notificaciones en la aplicación dentro de aplicaciones basadas en modelos

Los desarrolladores de aplicaciones controladas por modelos pueden configurar notificaciones desde la aplicación para mostrarlas a los usuarios de la aplicación como notificación del sistema o dentro del centro de notificaciones. Su aplicación basada en modelos sondea automáticamente el sistema en busca de nuevas notificaciones y las muestra al usuario. El remitente de la notificación o su administrador del sistema pueden configurar cómo se muestra la notificación y cómo se puede descartar. Las notificaciones aparecen en el centro de notificaciones hasta que el destinatario las descarta o caducan. De forma predeterminada, una notificación caduca después de 14 días, pero su administrador puede anular esta configuración.

Las notificaciones son específicas del usuario. Cada notificación está destinada a un único usuario, identificado como destinatario en el momento del envío de la notificación. No se admite el envío de una notificación a un equipo. Si necesita enviar notificaciones a varios usuarios, debe crear notificaciones para cada usuario individual.

Este artículo describe los pasos para enviar notificaciones en la aplicación a un usuario específico. Para ver cómo aparecen estas notificaciones en las aplicaciones, consulte Notificaciones en aplicación en aplicaciones basadas en modelo.

Habilitar la característica de notificación en aplicación

Para usar la función de notificación en aplicación, debe habilitar el parámetro de configuración Notificaciones en la aplicación. Este parámetro de configuración se almacena dentro de la aplicación basada en modelo.

  1. Inicie sesión en Power Apps.

  2. Abra la solución que contiene la aplicación basada en modelo.

  3. Seleccione la aplicación controlada por modelos y seleccione el menú desplegable Editar para abrirla mediante el diseñador de aplicaciones moderno.

  4. Abra Configuración y cambie a Características.

  5. Habilite Notificaciones en aplicación.

    Captura de pantalla de la configuración de la aplicación controlada por modelos que se usa para habilitar las notificaciones desde la aplicación.

  6. Seleccione Guardar para guardar los cambios en los parámetros de configuración.

  7. Seleccione Publicar en la aplicación basada en modelo.

Nota:

Desencadenador de notificaciones desde la aplicación para @mentions en notas. @mentions en las publicaciones de la escala de tiempo no desencadenan notificaciones. Use @mentions en notas para recibir notificaciones.

Enviar notificaciones en aplicación básicas

Use el SendAppNotification mensaje para enviar notificaciones.

Para obtener más información sobre el mensaje y sus parámetros, vea SendAppNotification Action.

El SDK de Dataverse para .NET no incluye actualmente clases de solicitud y respuesta para el mensaje SendAppNotification. Para obtener clases fuertemente tipadas para este mensaje, debe generar clases o utilizar las clases subyacentes OrganizationRequest y OrganizationResponse. Para obtener más información, consulte Uso de mensajes con el SDK para .NET.

El SendAppNotification mensaje usa tipos abiertos, que habilitan las propiedades dinámicas en la notificación desde la aplicación. Por ejemplo, una notificación puede tener cero a muchas acciones y cada acción puede tener tipos de acción diferentes. Los tipos abiertos permiten tener propiedades dinámicas para las acciones según los tipos de acción seleccionados. Para más información, consulte Uso de tipos abiertos con API personalizadas.

Los siguientes ejemplos básicos muestran cómo usar la API para enviar notificaciones dentro de la aplicación.

Captura de pantalla de una notificación de bienvenida en la aplicación que se muestra como notificación del sistema.

En este ejemplo se usa la función personalizada Example.SendAppNotificationRequest descrita en la sección Creación de una función para el script de cliente .

var SendAppNotificationRequest = new Example.SendAppNotificationRequest(
    title = "Welcome",
    recipient = "/systemusers(<GUID of the user>)",
    body = "Welcome to the world of app notifications!",
    priority = 200000000,
    iconType = 100000000,
    toastType = 200000000,
);

Xrm.WebApi.online.execute(SendAppNotificationRequest).then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        return response.json();
    }
})
.then(function (responseBody) {
    console.log("Response Body: %s", responseBody.NotificationId);
})
.catch(function (error) {
    console.log(error.message);
});

Sondeo de notificaciones

Las notificaciones en aplicación usan sondeos para recuperar notificaciones periódicamente cuando la aplicación se está ejecutando. La aplicación recupera nuevas notificaciones sal inicio de la aplicación basada en modelo y cuando se producen navegaciones en la página, siempre que la última recuperación haya sido hace más de un minuto. Si un usuario permanece en una página durante mucho tiempo, la aplicación no recupera nuevas notificaciones hasta que el usuario navega a otra página.

Tabla de notificación

La aplicación almacena notificaciones enviadas mediante el mensaje SendAppNotification en la tabla Notificación (appnotification) (API web appnotification). En la tabla siguiente se muestran las columnas seleccionadas para la tabla.

Nombre para mostrar Nombre de esquema Description
Cargo Title El título de la notificación.
Propietario OwnerId El usuario que recibe la notificación. Aunque esta columna se puede establecer en un usuario o equipo, establézcala solo en un usuario. No se puede establecer la notificación para un equipo.
Cuerpo Body Detalles sobre la notificación.
IconType IconType La lista de iconos predefinidos. El valor predeterminado es Info. Para obtener más información, vea Cambiar el icono de notificación más adelante en este artículo.
Tipo de notificación ToastType La lista de comportamientos de notificación. El valor predeterminado es Timed. Para obtener más información, consulte Cambio del comportamiento de notificación más adelante en este artículo.
Prioridad Priority Habilita la priorización de notificaciones, lo que determina el orden en que se muestran las notificaciones en el centro de notificaciones. Para obtener más información, consulte Cambio del comportamiento de notificación más adelante en este artículo.
Caducidad (segundos) TTLInSeconds La cantidad de segundos desde que se debe eliminar la notificación si aún no se descartó.
Datos Data JSON que se usa para la extensibilidad y el análisis de datos más completos en la notificación. La longitud máxima es de 5,000 caracteres.

Nota:

La tabla no usa el appmoduleid campo .

Personalizar la notificación

Además de las propiedades básicas de la notificación, puede personalizar la notificación entregada al usuario. Personalizar la notificación implica cambiar los estilos en el Title y Body de la notificación, personalizar el icono de notificación y cambiar el comportamiento de la notificación.

Uso de Markdown en el título y el cuerpo

Los parámetros Title y Body del mensaje SendAppNotification no admite el descuento definido dentro de las propiedades. Puede ajustar los estilos de estas propiedades mediante markdown en la propiedad OverrideContent. Este campo admite la anulación de las cadenas simples de Title y Body con un subconjunto limitado de estilos Markdown.

En la tabla siguiente se muestra markdown compatible.

Estilo de texto Markdown
Negrita **Bold**
Cursiva _Italic_
Lista de viñetas - Item 1\r- Item 2\r- Item 3
Lista numerada 1. Green\r2. Orange\r3. Blue
Hipervínculos [Title](url)

Incluya nuevas líneas en el cuerpo mediante \n\n\n\n.

Este ejemplo muestra cómo crear una notificación agregando una definición de cuerpo personalizada que incluye un enlace en línea.

Captura de pantalla de una notificación en la aplicación que contiene texto y un vínculo insertado.

En este ejemplo se usa la función personalizada Example.SendAppNotificationRequest descrita en la sección Creación de una función para el script de cliente .

var SendAppNotificationRequest = new Example.SendAppNotificationRequest(title = "SLA critical",
    recipient = "/systemusers(<GUID of the user>)",
    body = "Record assigned to you is critically past SLA.",
    iconType = 100000003,
    toastType = 200000000,
    overrideContent = {
        "@odata.type": "#Microsoft.Dynamics.CRM.expando",
        "title": "**SLA critical**",
        "body": "Case record [Complete overhaul required (sample)](?pagetype=entityrecord&etn=incident&id=0a9f62a8-90df-e311-9565-a45d36fc5fe8) assigned is critically past SLA and has been escalated to your manager."

    }
);

Xrm.WebApi.online.execute(SendAppNotificationRequest).then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        return response.json();
    }
})
.then(function (responseBody) {
    console.log("Response Body: %s", responseBody.NotificationId);
})
.catch(function (error) {
    console.log(error.message);
});

Este ejemplo agrega un título personalizado y una definición de cuerpo que permite múltiples enlaces, formato en negrita y formato en cursiva.

Captura de pantalla de una notificación desde la aplicación con un título personalizado, varios vínculos, texto en negrita y texto en cursiva.

En este ejemplo se usa la función personalizada Example.SendAppNotificationRequest descrita en la sección Creación de una función para el script de cliente .

var SendAppNotificationRequest = new Example.SendAppNotificationRequest(title = "Complete overhaul required (sample)",
    recipient = "/systemusers(<GUID of the user>)",
    body = "Maria Campbell mentioned you in a post.",
    priority = 200000000,
    iconType = 100000004,
    toastType = 200000000,
    expiry = 120000,
    overrideContent = {
        "@odata.type": "#Microsoft.Dynamics.CRM.expando",
        "title": "[Complete overhaul required (sample)](?pagetype=entityrecord&etn=incident&id=0a9f62a8-90df-e311-9565-a45d36fc5fe8)",
        "body": "[Maria Campbell](?pagetype=entityrecord&etn=contact&id=43m770h2-6567-ebm1-ob2b-000d3ac3kd6c) mentioned you in a post: _\"**[@Paul](?pagetype=entityrecord&etn=contact&id=03f770b2-6567-eb11-bb2b-000d3ac2be4d)** we need to prioritize this overdue case, [@Robert](?pagetype=entityrecord&etn=contact&id=73f970b2-6567-eb11-bb2b-000d3ac2se4h) will work with you to engage with engineering team ASAP.\"_"
    }
);

// Use the request object to execute the function
Xrm.WebApi.online.execute(SendAppNotificationRequest).then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        // Use response.json() to access the content of the response body.
        return response.json();
    }
})
.then(function (responseBody) {
    console.log("Response Body: %s", responseBody.NotificationId);
})
.catch(function (error) {
    console.log(error.message);
    // handle error conditions
});

Nota:

Power Fx con la función xSendAppNotification no admite OverrideContent.

Cambiar el comportamiento de la notificación

Cambie el comportamiento de notificación desde la aplicación estableciendo ToastType en uno de los valores siguientes.

Tipo de notificación Comportamiento Valor
Programada La notificación aparece durante un breve periodo (el valor predeterminado es cuatro segundos) y luego desaparece. 200000000
Oculto La notificación aparece solo en el centro de notificaciones y no como una notificación del sistema. 200000001

Cambiar el icono de notificación

Cambie el icono de notificación desde la aplicación estableciendo IconType en uno de los valores siguientes. Al usar un icono personalizado, especifique el iconUrl parámetro dentro del OverrideContent parámetro .

Tipo de icono Valor Imagen
Información 100000000 Captura de pantalla del icono de información de una notificación desde la aplicación.
Éxito 100000001 Captura de pantalla del icono de operación correcta para una notificación desde la aplicación.
Error 100000002 Captura de pantalla del icono de error de una notificación desde la aplicación.
Advertencia 100000003 Captura de pantalla del icono de advertencia para una notificación desde la aplicación.
Mención 100000004 Captura de pantalla del icono de mención de una notificación desde la aplicación.
Custom 100000005

El siguiente ejemplo demuestra el uso de Web API para enviar una notificación con un icono personalizado.

POST [Organization URI]/api/data/v9.2/SendAppNotification 
HTTP/1.1
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json

{
  "Title": "Welcome",
  "Body": "Welcome to the world of app notifications!",
  "Recipient": "/systemusers(<Guid of the user>)",
  "IconType": 100000005, // custom
  "OverrideContent": {
    "@odata.type": "#Microsoft.Dynamics.CRM.expando",
    "iconUrl": "/WebResources/cr245_AlertOn" //URL of the image file to be used for the notification icon
  }
}

Establecimiento de la prioridad de notificación

Cambie el orden de las notificaciones en el centro de notificaciones estableciendo .Priority Los siguientes valores están disponibles:

Prioridad Valor
Normal 200000000
Alto 200000001

El valor predeterminado es Normal. El centro de notificaciones ordena las notificaciones por prioridad y creadas en fecha, en orden descendente. Las notificaciones de prioridad alta aparecen en la parte superior de la lista del centro de notificaciones.

Acciones de notificación

Las notificaciones en la aplicación admiten de cero a muchas acciones en la tarjeta de notificación. Se admiten los tres tipos de acciones siguientes:

  • Dirección URL: al seleccionar esta acción, el explorador web va a la dirección URL definida.
  • Panel lateral: al seleccionar esta acción, se abre un panel lateral en la aplicación y carga el contexto definido en el panel.
  • Teams Chat: al seleccionar esta acción, un chat de Teams comienza con usuarios definidos en el contexto de un registro de Dynamics 365.

Definir una acción de dirección URL

El tipo de acción URL permite la navegación desde la acción en la notificación de la aplicación a una URL definida. En la tabla siguiente se enumeran los parámetros de este tipo de acción:

Parámetro Obligatorio Tipo de datos Description
url Cuerda Dirección URL que se va a abrir cuando se selecciona la acción. La dirección URL debe usar uno de los formatos admitidos.
navigationTarget Ninguno Cuerda Este parámetro controla dónde se abre un enlace de navegación. Las opciones son:
  • dialog: se abre en el cuadro de diálogo central.
  • inline: valor predeterminado. Se abre en la página actual.
  • newWindow: se abre en una nueva pestaña del explorador.

Formatos de dirección URL admitidos

Para la seguridad, las acciones de dirección URL solo abren direcciones URL que usan uno de los siguientes formatos:

Formato Example
HTTPS URL https://org.crm.dynamics.com/main.aspx?pagetype=entityrecord&etn=incident&id=<record-id>
HTTP URL http://internalserver/page
Vínculo de correo electrónico mailto:support@contoso.com
Vínculo telefónico tel:+1-800-555-0100
vínculo profundo de Dynamics 365 aplicación móvil dynamicsxrm://deeplink/page
Ruta de acceso del mismo origen a partir de / /main.aspx?pagetype=entityrecord&etn=incident&id=<record-id>
Cadena de consulta del mismo origen a partir de ? ?pagetype=entityrecord&etn=incident&id=<record-id>

Use una dirección URL de mismo origen a partir de / cuando sea posible. Por ejemplo, /main.aspx?... funciona entre entornos sin codificar la dirección URL de la organización.

Las direcciones URL en otros formatos están bloqueadas. Esta restricción ayuda a proteger a los usuarios frente a ataques de scripting entre sitios y redirección abierta. Entre los ejemplos de direcciones URL bloqueadas se incluyen:

  • Rutas de acceso relativas sin sistema operativo, como main.aspx?pagetype=entityrecord&etn=incident&id=<record-id> o pagetype/entityrecord/...
  • Direcciones URL que usan esquemas potencialmente peligrosos, como javascript: o data:
  • Direcciones URL relativas al protocolo, como //external.example/page

Importante

Si una acción usa una dirección URL bloqueada, la notificación sigue apareciendo, pero al seleccionar la acción no se abre la dirección URL. Las notificaciones existentes que contienen direcciones URL bloqueadas también se ven afectadas. Actualice el registro de notificación o el proceso que crea la notificación para usar un formato de dirección URL compatible.

Para la navegación de mismo origen, agregue un elemento que conduce / a la ruta de acceso:

/main.aspx?pagetype=entityrecord&etn=incident&id=<record-id>

Caution

No omita el valor inicial /. Se bloquea una ruta de acceso relativa completa, como main.aspx?... .

El siguiente ejemplo muestra cómo crear una notificación con una sola acción de URL.

Captura de pantalla de una notificación en la aplicación que contiene una sola acción.

En este ejemplo se usa la función personalizada Example.SendAppNotificationRequest descrita en la sección Creación de una función para el script de cliente .

var SendAppNotificationRequest = new Example.SendAppNotificationRequest(title = "Congratulations",
    recipient = "/systemusers(<GUID of the user>)",
    body = "Your customer rating is now an A. You resolved 80% of your cases within SLA thi week and average customer rating was A+",
    iconType = 100000001,
    toastType = 200000000,
    overrideContent = {
        "@odata.type": "#Microsoft.Dynamics.CRM.expando",
        "title": "**SLA critical**",
        "body": "Case record [Complete overhaul required (sample)](?pagetype=entityrecord&etn=incident&id=0a9f62a8-90df-e311-9565-a45d36fc5fe8) assigned is critically past SLA and has been escalated to your manager."

    },
    actions = {
        "@odata.type": "Microsoft.Dynamics.CRM.expando",
        "actions@odata.type": "#Collection(Microsoft.Dynamics.CRM.expando)",
        "actions": [
            {
                "title": "View cases",
                "data": {
                    "@odata.type": "#Microsoft.Dynamics.CRM.expando",
                    "type": "url",
                    "url": "?pagetype=entitylist&etn=incident&viewid=00000000-0000-0000-00aa-000010001028&viewType=1039",
                    "navigationTarget": "newWindow"
                }
            }
        ]
    }
);

Xrm.WebApi.online.execute(SendAppNotificationRequest).then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        return response.json();
    }
})
.then(function (responseBody) {
    console.log("Response Body: %s", responseBody.NotificationId);
})
.catch(function (error) {
    console.log(error.message);
});

Definir una acción de panel lateral

Una acción de panel lateral abre un panel lateral y carga una página definida al seleccionar la acción de la notificación de la aplicación. Para más información, consulte Creación de paneles laterales mediante una API de cliente.

Cuando se usa el tipo de acción del panel lateral, se controlan las opciones del propio panel lateral y la página que se carga en el panel lateral.

En el ejemplo siguiente se muestra cómo crear una notificación de aplicación con dos acciones de panel lateral.

En este ejemplo se usa la función personalizada Example.SendAppNotificationRequest descrita en la sección Creación de una función para el script de cliente .

var SendAppNotificationRequest = new Example.SendAppNotificationRequest(title = "New task",
    recipient = "/systemusers(<GUID of the user>)",
    body = "A new task has been assigned to you to follow up on the Contoso account",
    iconType = 100000000,
    toastType = 200000000,
    actions = {
        "@odata.type": "Microsoft.Dynamics.CRM.expando",
        "actions@odata.type": "#Collection(Microsoft.Dynamics.CRM.expando)",
        "actions": [
            {
                "title": "View task",
                "data": {
                    "@odata.type": "#Microsoft.Dynamics.CRM.expando",
                    "type": "sidepane",
                    "paneOptions": {
                        "@odata.type": "#Microsoft.Dynamics.CRM.expando",
                        "title": "Task Record",
                        "width": 400
                    },
                    "navigationTarget": {
                        "@odata.type": "#Microsoft.Dynamics.CRM.expando",
                        "pageType": "entityrecord",
                        "entityName": "task",
                        "entityId": "<Task ID>"
                    }
                }
            }
        ]
    }
);

Xrm.WebApi.online.execute(SendAppNotificationRequest).then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        return response.json();
    }
})
.then(function (responseBody) {
    console.log("Response Body: %s", responseBody.NotificationId);
})
.catch(function (error) {
    console.log(error.message);
});

Definir una acción de chat de Teams

Una acción de chat de Teams habilita escenarios en los que se inicia un chat de Teams desde la notificación de la aplicación. Esta acción usa la característica de Teams insertada para las aplicaciones de Dynamics 365, que proporciona a los vendedores y agentes la capacidad de chatear en Microsoft Teams desde dentro de las aplicaciones de interacción con el cliente, como el Centro de ventas, el Centro de atención al cliente y las aplicaciones personalizadas.

Nota:

Para usar el tipo de acción de chat de Teams, debe habilitar el chat de Microsoft Teams en Dynamics 365. Para obtener más información, consulte Trabajar con el chat de Microsoft Teams en Dynamics 365.

El tipo de acción proporciona las siguientes opciones:

  • Crear una nueva sesión de chat o abre una existente.
  • Vincule la sesión de chat a un registro de Dynamics 365 o cree un chat sin vincular.

En la tabla siguiente se describen los parámetros para definir una acción de chat de Teams en la notificación de la aplicación.

Parámetro Tipo de datos Description
chatId Cuerda Defina un valor para la ID de chat para abrir un chat existente. Este valor es el identificador de la sesión de chat de Teams, que puede obtener de la id propiedad de la entidad chat en Microsoft Graph. Para obtener más información, consulte Acceder al chat. Para las sesiones de chat de Teams que vincula a registros de Dynamics 365, la asociación se almacena en la tabla de la entidad de asociación de chat de Microsoft Teams (msdyn_teamschatassociation) en Dataverse. El ID de la sesión de chat se almacena en la propiedad Id. de chat de Teams de esta tabla.

Deje este parámetro en blanco para iniciar una nueva sesión de chat.
memberIds GUID[] Matriz de los valores de identificador de usuario de Microsoft Entra ID de cada uno de los participantes que desea incluir en una nueva sesión de chat. No defina valores de identificador de miembro si define un valor para el parámetro chatId . Si define el chatId, abre el chat existente y los miembros del chat existente se incluyen en el chat cuando se abre.
entityContext Expando El contexto de entidad proporciona el registro Dynamics 365 al que se debe vincular la sesión de chat. Por ejemplo, si la sesión de chat es sobre un registro de cuenta de cliente específico, defina el registro de cuenta en este parámetro para que la sesión de chat se vincule a la cuenta y se muestre en la línea de tiempo de la cuenta.

El contexto de entidad incluye los parámetros entityName y recordId , que debe definir para identificar el registro para el contexto de entidad.

No defina un contexto de entidad si define un valor para el parámetro chatId . Si define el chatId, abre el chat ya existente, y el entityContext, ya sea vinculado o desvinculado, ya está establecido para el chat ya existente. Si la acción está creando una nueva sesión de chat (es decir, no proporcionó el parámetro chatId ) y no define el contexto de entidad, la nueva sesión de chat no está vinculada a un registro de Dynamics 365.
entityName Cuerda Parte del contexto de la entidad, el nombre lógico de la tabla de Dataverse para el registro con el que está relacionado el chat.
recordId GUID Parte del contexto de la entidad, esta es la propiedad ID de la tabla definida en el parámetro entityName para el registro al que se vinculará el chat.
chatTitle Cuerda El título del chat de Teams.
initialMessage Cuerda El texto de un mensaje de introducción que puede proporcionar de forma opcional y que se envía automáticamente cuando se crea el chat.

El siguiente ejemplo muestra la creación de una notificación de aplicación con una acción de chat de Teams. Cuando el usuario selecciona la acción en la notificación del sistema, inicia el chat con los participantes definidos. El chat está vinculado a un registro de cuenta definido.

En este ejemplo se usa la función personalizada Example.SendAppNotificationRequest descrita en la sección Creación de una función para el script de cliente .

var SendAppNotificationRequest = new Example.SendAppNotificationRequest(title = "New order posted",
    recipient = "/systemusers(<GUID of the user>)",
    body = "A new sales order has been posted for Contoso",
    iconType = 100000000,
    toastType = 200000000,
    actions = {
        "@odata.type": "Microsoft.Dynamics.CRM.expando",
        "actions@odata.type": "#Collection(Microsoft.Dynamics.CRM.expando)",
        "actions": [
            {
                "title": "Chat with sales rep",
                "data": {
                    "@odata.type": "#Microsoft.Dynamics.CRM.expando",
                    "type": "teamsChat",
                    "memberIds@odata.type": "#Collection(String)",
                    "memberIds": ["<Microsoft Entra ID User ID 1>", "<Microsoft Entra ID User ID 2>"],
                    "entityContext": {
                        "@odata.type": "#Microsoft.Dynamics.CRM.expando",
                        "entityName": "account",
                        "recordId": "<Account ID value>"
                    }
                }
            }
        ]
    }
);

Xrm.WebApi.online.execute(SendAppNotificationRequest).then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        return response.json();
    }
})
.then(function (responseBody) {
    console.log("Response Body: %s", responseBody.NotificationId);
})
.catch(function (error) {
    console.log(error.message);
});

Creación de una función para el script de cliente

En los ejemplos de API de cliente de este artículo se proporcionan ejemplos de scripting de cliente para enviar notificaciones desde la aplicación. Los ejemplos llaman a una SendAppNotificationRequest función. Para completar los ejemplos, debe crear la función reutilizable en su entorno. En el código siguiente se muestra un ejemplo de la función .

var Example = window.Example || {};
Example.SendAppNotificationRequest = function (
   title, 
   recipient, 
   body, 
   priority, 
   iconType, 
   toastType, 
   expiry, 
   overrideContent, 
   actions) 
{
    this.Title = title;
    this.Recipient = recipient;
    this.Body = body;
    this.Priority = priority;
    this.IconType = iconType;
    this.ToastType = toastType;
    this.Expiry = expiry;
    this.OverrideContent = overrideContent;
    this.Actions = actions;
};

Example.SendAppNotificationRequest.prototype.getMetadata = function () {
    return {
        boundParameter: null,
        parameterTypes: {
            "Title": {
                "typeName": "Edm.String",
                "structuralProperty": 1
            },
            "Recipient": {
                "typeName": "mscrm.systemuser",
                "structuralProperty": 5
            },
            "Body": {
                "typeName": "Edm.String",
                "structuralProperty": 1
            },
            "Priority": {
                "typeName": "Edm.Int",
                "structuralProperty": 1
            },
            "IconType": {
                "typeName": "Edm.Int",
                "structuralProperty": 1
            },
            "ToastType": {
                "typeName": "Edm.Int",
                "structuralProperty": 1
            },
            "Expiry": {
                "typeName": "Edm.Int",
                "structuralProperty": 1
            },
            "OverrideContent": {
                "typeName": "mscrm.expando",
                "structuralProperty": 5
            },
            "Actions": {
                "typeName": "mscrm.expando",
                "structuralProperty": 5
            },
        },
        operationType: 0, 
        operationName: "SendAppNotification",
    };
};

Para obtener más ejemplos de scripting de cliente mediante la API de cliente, consulte Tutorial: Escritura del primer script de cliente.

Administración de la seguridad de las notificaciones

La característica de notificación en aplicación usa tres tablas. Un usuario necesita los roles de seguridad correctos para recibir notificaciones y enviar notificaciones a sí mismos u otros usuarios.

Además de los permisos de tabla adecuados, se debe asignar a un usuario el privilegio Enviar notificación dentro de la aplicaciónprvSendAppNotification para ejecutar el mensaje SendAppNotification. El privilegio se otorga al rol Creador de entorno de forma predeterminada. No es necesario para enviar notificaciones en-aplicación creando directamente registros de entidad appnotification sin ejecutar el mensaje SendAppNotification. No es necesario recibir notificaciones.

Uso Privilegios de tabla obligatorios
El usuario no tiene una campana de notificación en aplicación y no recibe ninguna notificación en la aplicación None
El usuario puede recibir notificaciones en aplicación
  • Básico: privilegio de lectura en la tabla de notificaciones de la aplicación.
  • Los privilegios Crear, Lectura, Escritura y Anexar en la configuración de usuario de la aplicación basada en modelo.
  • Privilegios Lectura y Anexar a sobre la definición de configuración.
El usuario puede enviar notificaciones en aplicación a él mismo Básico: privilegio de creación en la tabla de notificaciones de la aplicación. Además, se necesita el privilegio Enviar notificación en la aplicación si se usa SendAppNotification un mensaje.
El usuario puede enviar notificaciones en aplicación a otros Privilegio de creación con nivel de acceso local, profundo o global en la tabla de notificación de la aplicación según la unidad de negocio del usuario receptor. Además, se necesita el privilegio Enviar notificación en la aplicación si se usa SendAppNotification un mensaje.
El usuario puede eliminar notificaciones en aplicación Global: privilegios Eliminar en la tabla de notificaciones de la aplicación.

Agregue el privilegio Enviar notificación en la aplicación a un rol mediante el Selector de privilegios de rol en la pestaña Miscellaneous privileges.

Captura de pantalla del selector de privilegios para asignar el privilegio Enviar In-App notificación.

Almacenamiento de notificación

Dado que la tabla de notificaciones de la aplicación usa la capacidad de almacenamiento de la base de datos de la organización, tenga en cuenta el volumen de notificaciones enviadas y la configuración de expiración. Para obtener más información, consulte Capacidad de almacenamiento de Microsoft Dataverse.

Notificaciones en aplicación frente a notificaciones de inserción

El conector de notificaciones de Power Apps es para las notificaciones push, que son independientes de las notificaciones dentro de la aplicación. Las notificaciones de inserción solo aparecen en la lista de notificaciones del dispositivo móvil para abrir la aplicación. Las notificaciones en aplicación aparecen cuando la aplicación está abierta. Limite el uso de notificaciones push a elementos de alta prioridad, por lo que no sobrecarga al usuario. Para más información, consulte:

Acción SendAppNotification
Crear una fila de tabla usando la API web
createRecord (referencia de API de cliente)
Notificaciones en aplicación en aplicaciones basadas en modelo
appnotification TipoDeEntidad
Referencia de la tabla/entidad de notificación (appnotification)