Вы находитесь здесь:
Разработка шаблонов ссылок действий
Прежде чем создавать шаблон, определите значения, которые должны быть заданы в шаблоне, и значения, которые должны быть заданы посредством переменных связывания при обработке групп ссылок действий из шаблона.
Общие сведения о шаблонах ссылок действий
Ниже указан шаблон группы ссылок действий в настройках.
Каждая группа ссылок действий должна содержать как минимум одну ссылку действия. Данный пример шаблона ссылки действия использует три переменных связывания: номер версии API в поле «URL-адрес действия», номер элемента в поле «Текст запроса HTTP» и значение маркера OAuth в поле «Заголовки HTTP».
Запрос Connect REST API для обработки группы ссылок действий и установки значений переменных связывания.
POST /connect/action-link-group-definitions
{
"templateId":"07gD00000004C9r",
"templateBindings":[
{
"key":"ApiVersion",
"value":"v1.0"
},
{
"key":"ItemNumber",
"value":"8675309"
},
{
"key":"BearerToken",
"value":"00DRR0000000N0g!ARoAQMZyQtsP1Gs27EZ8hl7vdpYXH5O5rv1VNprqTeD12xYnvygD3JgPnNR"
}
]
}Этот код Apex обрабатывает группу ссылок действий по шаблону и задает значения переменных связывания.
// 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);Рекомендации по созданию шаблона
Рекомендации по созданию шаблона:
- Определите время истечения срока действия группы ссылок действий.
- Определите переменные связывания в шаблоне и задайте их значения при обработке группы. Не сохраняйте конфиденциальную информацию в шаблонах. Используйте переменные связывания для добавления конфиденциальных сведений во время выполнения.
- Определите, кто может видеть ссылку действия, когда она связана с элементом ленты.
- Используйте контекстные переменные в шаблоне для получения сведений о контексте выполнения ссылки действия.
При выполнении ссылки действия Salesforce заполняет значения и отправляет их в запросе HTTP.
Установка времени истечения срока действия группы ссылок действий
При создании группы ссылок действий на основе шаблона дата истечения срока действия может быть рассчитана на основе периода, предоставленного в шаблоне, или группа ссылок действий может быть настроена на полное отсутствие срока действия.
Чтобы задать часы до истечения срока действия в шаблоне, введите значение в поле «Часы до истечения срока действия» шаблона группы ссылок действий. Данное значение определяет количество часов между моментом обработки группы ссылок действий и моментом ее удаления из связанных элементов ленты и невозможности выполнения. Максимальное значение - 8760, то есть 365 дней.
Чтобы задать дату истечения срока действия группы ссылок действий при обработке, задайте свойство expirationDate текста запроса «Определение группы ссылок действий» (Connect REST API) или класса ввода ConnectApi.ActionLinkGroupDefinition (Apex).
Чтобы создать группу ссылок действий, срок действия которой не истекает, не вводите значение в поле шаблона «Часы до истечения срока действия» и не вводите значение свойства expirationDate при обработке группы ссылок действий.
Ниже указан способ совместной работы expirationDate и часов до истечения срока действия при создании группы ссылок действий на основе шаблона.
- Если вы укажете
expirationDate, его значение используется в новой группе ссылок действий. - Если вы не укажете
expirationDateи укажете «Часы до истечения срока действия» в шаблоне, значение «Часы до истечения срока действия» будет использовано в новой группе ссылок действий. - Если вы не укажете
expirationDateили часы до истечения срока действия, срок действия групп ссылок действий, обработанных из шаблона, не истечет.
Определение переменных связывания
Определите переменные связывания в шаблонах и задайте их значения при обработке группы ссылок действий.
Переменные связывания можно определить в полях URL-адреса действия, текста запроса HTTP и заголовков HTTP шаблона ссылки действия. После публикации шаблона можно редактировать эти поля, перемещать переменные связывания между этими полями и удалять переменные связывания. Однако, новые переменные связывания не могут быть добавлены.
Определите ключ переменной связывания в шаблоне. При обработке группы ссылок действий укажите ключ и его значение.
Ключи переменной связывания имеют вид {!Bindings.key}.
Ключ поддерживает символы Юникода в предопределенном классе символов \w: [\p{Alpha}\p{gc=Mn}\p{gc=Me}\p{gc=Mc}\p{Digit}\p{gc=Pc}].
Данное поле URL-адреса действия содержит две переменные связывания.
https://www.example.com/{!Bindings.ApiVersion}/items/{!Bindings.ItemId}Данное поле HTTP Heads содержит две переменные связывания.
Authorization: OAuth {!Bindings.OAuthToken}
Content-Type: {!Bindings.ContentType}
Укажите ключи и их значения при обработке группы ссылок действий в Connect REST API.
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"
}
]
}Укажите ключи переменной связывания и задайте их значения в 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.ActionLinkGroupDefinition actionLinkGroupDefinition =
ConnectApi.ActionLinks.createActionLinkGroupDefinition(Network.getNetworkId(), actionLinkGroupDefinitionInput);
{!Bindings.MyBinding} дважды в поле «Текст запроса HTTP» одного шаблона ссылки действия и снова в Заголовках HTTP другого шаблона ссылки действия в одном шаблоне группы ссылок действий, и при обработке группы ссылок действий из шаблона вам нужно будет ввести только одно значение для этой общедоступной переменной. Определение пользователей, которым отображается ссылка действия
Выберите значение в раскрывающемся списке «Доступность пользователя», чтобы определить, кто может видеть ссылку действия после ее связывания с элементом ленты.
Среди доступных вариантов «Доступно только настраиваемому пользователю» и «Доступно всем, кроме настраиваемого пользователя». Выберите одно из этих значений, чтобы разрешить только определенному пользователю просмотр ссылки действия или запретить ее просмотр определенным пользователем. Потом введите значение в поле «Псевдоним настраиваемого пользователя». Это значение является ключом переменной связывания. В коде, обрабатывающем группу ссылок действий, используйте ключ и укажите значение, как и для любой переменной связывания.
Этот шаблон использует значение «Приглашенный по псевдониму настраиваемого пользователя».
При обработке группы ссылок действий задайте значение аналогично установке переменной связывания.
POST /connect/action-link-group-definitions
{
"templateId":"07gD00000004C9r",
"templateBindings" : [
{
"key":"Invitee",
"value":"005D00000017u6x"
}
]
}Если шаблон использует параметр «Доступно только менеджеру автора», то при обработке группы ссылок действий из шаблона пользователь без менеджера получает ошибку. Кроме того, менеджер является менеджером на момент создания. Если менеджер пользователя меняется после мгновенного изменения, это изменение не отображается.
Использование переменных контекста
Используйте переменные контекста для передачи сведений о пользователе, выполнившем ссылку действия, и контексте, в котором она была вызвана в запрос HTTP, выполненный посредством вызова ссылки действия. Вы можете использовать переменные контекста в свойствах actionUrl, headers и requestBody текста запроса определения ссылки действия или объекта ConnectApi.ActionLinkDefinitionInput. Можно также использовать переменные контекста в полях URL-адреса действия, текста запроса HTTP и заголовков HTTP шаблонов ссылок действий. Эти поля, включая добавление и удаление контекстных переменных, можно редактировать после публикации шаблона.
Доступные переменные контекста:
| Переменная контекста | Описание |
|---|---|
{!actionLinkId}
|
Код ссылки действия, выполненной пользователем. |
{!actionLinkGroupId}
|
Код группы ссылок действий, содержащей выполненную пользователем ссылку действий. |
{!communityId}
|
Код сайта, на котором пользователь выполнил ссылку действия. Значением для внутренней организации является "000000000000000000" пустого ключа. |
{!communityUrl}
|
URL-адрес сайта, на котором пользователь выполнил ссылку действия. Значением для внутренней организации является пустая строка "". |
{!orgId}
|
Код организации, в которой пользователь выполнил ссылку действия. |
{!userId}
|
Код пользователя, выполнившего ссылку действия. |
Например, вы работаете в компании под названием «Пример опроса» и создаете приложение для AppExchange под названием «Пример опроса для Salesforce». Компания А установила пример опроса для Salesforce. Предположим, что сотрудник компании А переходит на сайт surveyexample.com и проводит опрос. Код примера опроса использует Connect REST API для создания элемента ленты в организации Salesforce компании А с текстом «Пройти опрос» и ссылкой действия с меткой OK.
Данная ссылка действия UI перенаправляет пользователя из Salesforce на веб- страницу на surveyexample.com для участия в опросе.
Если вы добавляете переменную контекста {!userId} в текст запроса HTTP или URL-адрес действия для этой ссылки действия, когда пользователь нажимает на ссылку действия в ленте, Salesforce отправляет код пользователя, нажавшего в запросе HTTP, который он отправляет на ваш сервер.
Если вы добавите переменную контекста {!actionLinkId} в серверный код примера опроса, создающий ссылку действия, Salesforce отправит запрос HTTP с кодом ссылки действия, и вы сможете сохранить его в базе данных.
Данный пример содержит переменную контекста {!userId} в URL-адресе действия в шаблоне ссылки действия.
https://www.example.com/{!Bindings.apiVersion}/doSurvey?salesforceUserId={!userId}См. также:
- Создание шаблонов ссылок действий
- Редактирование шаблонов ссылок действий
- Удаление шаблонов групп ссылок действий
- Пакетирование шаблонов ссылок действий
- Руководство разработчика Apex: Работа со ссылками действий
- Руководство разработчика Apex: Определение ссылки действия в шаблоне и публикация сообщения с элементом ленты
