D. CHAPTER SUMMARY
IV. LUNAR LANDER TRAJECTORY MODELING
5. Problem File
EDICIONES
Disponible en: Salesforce Classic y Lightning Experience
Disponible en: Todas las ediciones excepto Personal Edition.
Cree plantillas de vínculos de acción en Configuración para poder crear instancias de grupos de vínculos de acción con propiedades en común desde API de REST de Chatter o Apex. Puede realizar paquetes de plantillas y distribuirlos a otras organizaciones de Salesforce.
Un vínculo de acción es un botón en un elemento de noticias en tiempo real. Hacer clic en un vínculo de acción puede llevar un usuario a una página Web, iniciar la descarga de un archivo o invocar una llamada de API en Salesforce o en un servidor externo. Un vínculo de acción incluye una URL y un método HTTP, y puede incluir un cuerpo de solicitud e información de encabezado como un token de OAuth para la autenticación. Utilice vínculos de acción para integrar servicios externos y de Salesforce en las noticias en tiempo real de modo que esos usuarios puedan realizar acciones para dirigir la productividad y acelerar la innovación.
En este ejemplo, Aprobar y Rechazar son vínculos de acción que realizan llamadas de API en la API de REST de un sitio Web de viajes ficticio para aprobar o rechazar un itinerario. Cuando María creó el itinerario en el sitio Web de viajes, éste realizó una solicitud de API de REST de Chatter para publicar el elemento de noticias en tiempo real con los vínculos de acción para Juan, el responsable de María de modo que pueda aprobar o rechazar el itinerario.
Importante: Los vínculos de acción son una función de desarrollador. Aunque cree plantillas de vínculo de acción en Configuración, debe utilizar Apex o API de REST de Chatter para generar vínculos de acción desde plantillas y agregarlos a elementos de noticias en tiempo real.
EN ESTA SECCIÓN:
Diseño de plantillas de vínculos de acción
Antes de crear una plantilla, considere qué valores desea establecer en la plantilla y qué valores desea establecer con variables de vinculación cuando desea crear una instancia de los grupos de vínculos de acción desde la plantilla.
Crear plantillas de vínculo de acciones
Cree plantillas de vínculos de acción en Configuración para poder crear instancias de grupos de vínculos de acción con propiedades en común desde API de REST de Chatter o Apex. Puede realizar paquetes de plantillas y distribuirlos a otras organizaciones de Salesforce.
Modificar plantillas de vínculo de acciones
Puede modificar todos los campos en una plantilla e grupo de vínculos de acción no publicada y en sus plantillas de vínculo de acción asociadas.
Eliminar plantillas de grupos de vínculos de acción
Cuando elimina una plantilla de grupo de vínculos de acción, elimina sus plantillas de vínculos de acción asociadas y todos los grupos de vínculo de acción instanciados desde las plantillas. Los grupos de vínculos de acción eliminados desaparecen de cualquier elemento de noticias en tiempo real con el que se han asociado.
Plantillas de vínculo de acciones en paquete
Plantillas de vínculo de acciones en paquete para distribuirlos a otras organizaciones de Salesforce.
CONSULTE TAMBIÉN
https://developer.salesforce.com/docs/atlas.en-us.chatterapi.meta/chatterapi/features_action_links.htm
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/connectapi_features_action_links.htm
Diseño de plantillas de vínculos de acción
Antes de crear una plantilla, considere qué valores desea establecer en la plantilla y qué valores desea establecer con variables de vinculación cuando desea crear una instancia de los grupos de vínculos de acción desde la plantilla.
• Descripción general de plantillas de vínculos de acción • Consideraciones a tener en cuenta en el diseño de plantillas • Establecer la hora de vencimiento del grupo de vínculos de acción • Definir variables de vinculación
• Definir quién puede ver el vínculo de acción • Utilizar variables de contexto
Descripción general de plantillas de vínculos de acción
Esta es una plantilla de grupo de vínculos de acción en Configuración:
Cada grupo de vínculos de acción debe incluir al menos un vínculo de acción. Esta plantilla de vínculo de acción de ejemplo cuenta con tres variables de vinculación: el número de versión de API en la URL de acción, el número de partida en el Cuerpo de solicitud HTTP y el valor del token de OAuth en el campo Encabezado HTTP.
La solicitud de API de REST de Chatter para crear una instancia del grupo de vínculos de acción y establecer los valores de las variables de vinculación: POST /connect/action-link-group-definitions { "templateId":"07gD00000004C9r", "templateBindings":[ { "key":"ApiVersion", "value":"v1.0" }, { "key":"ItemNumber", "value":"8675309" }, { "key":"BearerToken", "value":"00DRR0000000N0g!ARoAQMZyQtsP1Gs27EZ8hl7vdpYXH5O5rv1VNprqTeD12xYnvygD3JgPnNR" } ] }
Este es el código de Apex que crea una instancia del grupo de vínculos de acción desde la plantilla y establece los valores de las variables de vinculación:
// Get the action link group template Id.
ActionLinkGroupTemplate template = [SELECT Id FROM ActionLinkGroupTemplate WHERE DeveloperName='Doc_Example'];
// Add binding name-value pairs to a map.
Map<String, String> bindingMap = new Map<String, String>(); bindingMap.put('ApiVersion', '1.0');
bindingMap.put('ItemNumber', '8675309'); bindingMap.put('BearerToken',
'00DRR0000000N0g!ARoAQMZyQtsP1Gs27EZ8hl7vdpYXH5O5rv1VNprqTeD12xYnvygD3JgPnNR');
// Create ActionLinkTemplateBindingInput objects from the map elements. List<ConnectApi.ActionLinkTemplateBindingInput> bindingInputs = new List<ConnectApi.ActionLinkTemplateBindingInput>();
for (String key : bindingMap.keySet()) {
ConnectApi.ActionLinkTemplateBindingInput bindingInput = new ConnectApi.ActionLinkTemplateBindingInput();
bindingInput.key = key;
bindingInput.value = bindingMap.get(key); bindingInputs.add(bindingInput);
}
// Set the template Id and template binding values in the action link group definition. ConnectApi.ActionLinkGroupDefinitionInput actionLinkGroupDefinitionInput = new
ConnectApi.ActionLinkGroupDefinitionInput();
actionLinkGroupDefinitionInput.templateId = template.id;
actionLinkGroupDefinitionInput.templateBindings = bindingInputs;
// Instantiate the action link group definition.
ConnectApi.ActionLinkGroupDefinition actionLinkGroupDefinition =
ConnectApi.ActionLinks.createActionLinkGroupDefinition(Network.getNetworkId(), actionLinkGroupDefinitionInput);
Consideraciones a tener en cuenta en el diseño de plantillas
Consideraciones acerca del diseño de una plantilla:
• Determinar la hora de vencimiento del grupo de vínculos de acción. Consulte Establecer la hora de vencimiento del grupo de vínculos de acción.
• Definir variables de vinculación en la plantilla y establecer sus valores cuando cree una instancia del grupo. No almacene información confidencial en plantillas. Utilice variables de vinculación para agregar información confidencial en el momento de la ejecución. Consulte Definir variables de vinculación.
• Determine quién puede ver el vínculo de acción cuando está asociado con un elemento de noticias en tiempo real. Definir quién puede ver el vínculo de acción.
• Utilice variables de contexto en la plantilla para obtener información acerca del contexto de ejecución del vínculo de acción. Cuando se ejecuta el vínculo de acción, Salesforce cumplimenta los valores y los envía en la solicitud HTTP. Consulte Utilizar variables de contexto.
Establecer la hora de vencimiento del grupo de vínculos de acción
Al crear un grupo de vínculos de acción desde una plantilla, se puede calcular la fecha de vencimiento basándose en un periodo proporcionado en la plantilla o se puede establecer el grupo de vínculos de acción para no caducar nunca.
Para establecer las horas hasta el vencimiento en una plantilla, introduzca un valor en el campo Horas hasta el vencimiento de la plantilla de grupo de vínculos de acción. Este valor es el número de horas desde el cual se ha creado una instancia del grupo de vínculos de acción hasta que se ha eliminado de los elementos de noticias en tiempo real asociados y ya no se puede ejecutar. El valor máximo es 8760, lo que corresponde a 365 días.
Para establecer la fecha de vencimiento del grupo de vínculos de acción cuando crea una instancia para él, establezca la propiedad expirationDate tanto del cuerpo de solicitud Definición de grupo de vínculos de acción (API de REST de Chatter) o la clase de entrada ConnectApi.ActionLinkGroupDefinition (Apex).
Para crear un grupo de vínculos de acción que no caduca, no introduzca un valor en el campo Horas hasta el vencimiento de la plantilla y no introduzca un valor para la propiedad expirationDate cuando cree una instancia del grupo de vínculos de acción.
A continuación le indicamos cómo expirationDate y Horas hasta el vencimiento funcionan conjuntamente al crear un grupo de vínculos de acción desde una plantilla:
• Si especifica expirationDate, se utilizará su valor en el nuevo grupo de vínculos de acción.
• Si no especifica expirationDate y especifica Horas hasta el vencimiento en la plantilla, el valor de Horas hasta el vencimiento se utiliza en el nuevo grupo de vínculos de acción.
• Si no especifica expirationDate u Horas hasta el vencimiento, los grupos de vínculos de acción instanciados desde la plantilla no caducan.
Definir variables de vinculación
Defina variables de vinculación en las plantillas y establezca sus valores cuando cree una instancia del grupo de vínculos de acción.
Importante: No almacene información confidencial en plantillas. Utilice variables de vinculación para agregar información confidencial en el momento de la ejecución. Cuando se establece el valor de un enlace, se almacena en formato cifrado en Salesforce.
Puede definir variables de vinculación en los campos URL de acción, Cuerpo de solicitud HTTP y Encabezados HTTP de una plantilla de vínculos de acción. Una vez la plantilla publicada, puede modificar estos campos, puede mover variables de vinculación entre estos campos y puede eliminar variables de vinculación. Sin embargo, no puede agregar nuevas variables de vinculación. Defina la clave de una variable de vinculación en la plantilla. Cuando crea una instancia del grupo de vínculos de acción, especifique la clave y su valor.
Las claves de las variables de vinculación tienen el formato {!Bindings.key}. La clave admite caracteres Unicode en la clase de caracteres predefinida \w: [\p{Alpha}\p{gc=Mn}\p{gc=Me}\p{gc=Mc}\p{Digit}\p{gc=Pc}]. Este campo URL de acción tiene dos variables de vinculación:
https://www.example.com/{!Bindings.ApiVersion}/items/{!Bindings.ItemId} Este campo Encabezados HTTP tiene dos variables de vinculación:
Authorization: OAuth {!Bindings.OAuthToken} Content-Type: {!Bindings.ContentType}
Especifique las claves y sus valores cuando cree una instancia del grupo de vínculos de acción en API de REST de Chatter: POST /connect/action-link-group-definitions { "templateId":"07gD00000004C9r", "templateBindings" : [ { "key":"ApiVersion", "value":"1.0" }, { "key":"ItemId", "value":"8675309" }, { "key":"OAuthToken", "value":"00DRR0000000N0g_!..." }, { "key":"ContentType", "value":"application/json" } ] }
Especifique las claves de las variables de vinculación y establezca sus valores en Apex: Map<String, String> bindingMap = new Map<String, String>(); bindingMap.put('ApiVersion', '1.0'); bindingMap.put('ItemId', '8675309'); bindingMap.put('OAuthToken', '00DRR0000000N0g_!...'); bindingMap.put('ContentType', 'application/json'); List<ConnectApi.ActionLinkTemplateBindingInput> bindingInputs = new List<ConnectApi.ActionLinkTemplateBindingInput>();
for (String key : bindingMap.keySet()) {
ConnectApi.ActionLinkTemplateBindingInput bindingInput = new ConnectApi.ActionLinkTemplateBindingInput();
bindingInput.key = key;
bindingInput.value = bindingMap.get(key); bindingInputs.add(bindingInput);
}
// Define the action link group definition.
ConnectApi.ActionLinkGroupDefinitionInput actionLinkGroupDefinitionInput = new ConnectApi.ActionLinkGroupDefinitionInput();
actionLinkGroupDefinitionInput.templateId = '07gD00000004C9r'; actionLinkGroupDefinitionInput.templateBindings = bindingInputs;
// Instantiate the action link group definition.
ConnectApi.ActionLinks.createActionLinkGroupDefinition(Network.getNetworkId(), actionLinkGroupDefinitionInput);
Consejo: Puede utilizar la misma variable de vinculación varias veces en plantillas de vínculos de acción y solo proporcionar el valor una vez iniciado la creación de instancias. Por ejemplo, puede utilizar {!Bindings.MyBinding} dos veces en el campo Cuerpo de solicitud HTTP de una plantilla de vínculos de acción y de nuevo en los encabezados HTTP de otra plantilla de vínculo de acción en la misma plantilla de grupo de vínculos de acción y cuando cree una instancia del grupo de vínculos de acción desde la plantilla, deberá proporcionar solo un valor para esa variable compartida.
Definir quién puede ver el vínculo de acción
Seleccione un valor de la lista desplegable Visibilidad del usuario para determinar quién puede ver el vínculo de acción una vez asociado con un elemento de noticias en tiempo real.
Entre las opciones disponibles están Solo el usuario personalizado puede ver y Todos salvo el usuario personalizado pueden ver. Seleccione uno de estos valores para permitir únicamente a un usuario específico ver el vínculo de acción o evitar que un usuario específico lo vea. Luego, introduzca un valor en el campo Alias de usuario personalizado. Este valor es una clave de variable de vinculación. En el código que crea la instancia del grupo de vínculos de acción, utilice la clave y especifique el valor como desee para cualquier variable de vinculación.
Cuando crea una instancia del grupo de vínculos de acción, establezca el valor justo como establecería una variable de vinculación: POST /connect/action-link-group-definitions { "templateId":"07gD00000004C9r", "templateBindings" : [ { "key":"Invitee", "value":"005D00000017u6x" } ] }
Si la plantilla utiliza Solo el responsable del creador puede ver, un usuario que no tiene un responsable recibe un error al crear una instancia de un grupo de vínculos de acción desde la plantilla. Además, el responsable es el mismo a la hora de crear la instancia. Si el responsable del usuario cambia después de crear la instancia, el cambio no se refleja.
Utilizar variables de contexto
Utilice variables de contexto para enviar información acerca del usuario que ha ejecutado el vínculo de acción y el contexto en el que se ha invocado en la solicitud HTTP realizada invocando un vínculo de acción. Puede utilizar variables de contexto en las propiedades actionUrl, headers y requestBody del cuerpo de solicitud de Entrada de definición del vínculo de acción o el objeto ConnectApi.ActionLinkDefinitionInput. También puede utilizar variables de contexto en los campos URL de acción, Cuerpo de solicitud HTTP y Encabezados HTTP de plantillas de vínculos de acción. Puede modificar estos campos, incluyendo agregar y eliminar variables de contexto, una vez publicada una plantilla.
Estas son las variables de contexto disponibles:
Descripción Variable de contexto
El Id. del vínculo de acción ejecutado por el usuario. {!actionLinkId}
El Id. del grupo de vínculos de acción que incluye el vínculo de acción ejecutado por el usuario.
{!actionLinkGroupId}
El Id. de la comunidad en la que el usuario ha ejecutado el vínculo de acción. El valor para su organización interna es la clave vacía
"000000000000000000". {!communityId}
La URL de la comunidad en la que el usuario ha ejecutado el vínculo de acción. El valor para su organización interna es la cadena vacía
“”. {!communityUrl}
El Id. de la organización en la que el usuario ha ejecutado el vínculo de acción.
{!orgId}
El Id. del usuario que ha ejecutado el vínculo de acción. {!userId}
Por ejemplo, supongamos que trabaja para una empresa llamada Survey Example y crea una aplicación para Salesforce AppExchange denominada Survey Example for Salesforce. La empresa A tiene Survey Example for Salesforce instalada. Imaginemos que alguien
de la empresa A se dirige a surveyexample.com y realiza una encuesta. Su código de Survey Example utiliza API de REST de Chatter para crear un elemento de noticias en tiempo real en la organización de Salesforce de la empresa A con el texto de cuerpo Realizar una encuesta y un vínculo de acción con la etiqueta Aceptar.
Este vínculo de acción de interfaz de usuario lleva al usuario de Salesforce a una página Web en surveyexample.com para realizar una encuesta.
Si incluye una variable de contexto {!userId} en el cuerpo de solicitud HTTP o la URL de acción para ese vínculo de acción, cuando un usuario hace clic en el vínculo de acción en las noticias en tiempo real, Salesforce envía el Id. del usuario que hizo clic en la solicitud HTTP que realiza a su servidor.
Si incluye una variable de contexto {!actionLinkId} en el código del servidor Survey Example que crea el vínculo de acción, Salesforce envía una solicitud HTTP con el Id. del vínculo de acción y puede guardarlo en su base de datos.
Este ejemplo incluye la variable de contexto {!userId} en la URL de acción de la plantilla del vínculo de acción:
Consejo: Se pueden utilizar variables de vinculación y variables de contexto en el mismo campo. Por ejemplo, esta URL de acción contiene una variable de vinculación y una variable de contexto: