Как мы все знаем, последний выпуск Microsoft Client API References включает в себя множество новых функций. Microsoft предлагает несколько клиентских API, которые позволяют разработчикам беспрепятственно взаимодействовать с Dynamics 365 CRM.

В этом блоге мы рассмотрим один из клиентских API, который использует элемент управления поиском в базе знаний и вызывает определенную функцию всякий раз, когда из результатов поиска открывается какая-либо статья базы знаний.

Справочник по клиентскому API addOnResultOpened:

Когда мы ищем любую статью в элементе управления поиском в базе знаний, используя ключевые слова в соответствии с нашим требованием, мы получаем список статей базы знаний, которые были опубликованы, и после выбора/открытия любой статьи из результатов поиска addOnResultOpened Клиентский API вызовет другую функцию и выполнит указанную задачу, определенную в этой функции.

Метод addOnResultOpened принимает только один параметр типа Function, который будет добавлен к событию OnResultOpened элемента управления поиском в базе знаний.

Событие OnResultOpened возникает, когда статья базы знаний открывается в элементе управления поиском базы знаний во всплывающем или встроенном окне.

Вариант использования:

В этом блоге мы продемонстрируем, как использовать вышеуказанный клиентский API, реализуя простой вариант использования, в котором, когда пользователь открывает любую статью базы знаний из результатов поиска в базе знаний, затем с помощью addOnResultOpened мы вызываем пользовательский JavaScript функция, которая создаст запись Email Activity в CRM, чтобы подтвердить пользователю, что его статья базы знаний была открыта каким-либо пользователем.

В этом блоге мы использовали форму Account Entity, в которой мы собираемся реализовать этот вариант использования. Мы добавили новую вкладку в форму сущности учетной записи под названием «Вкладка «База знаний»», которая содержит элемент управления поиском в базе знаний, как показано на снимке экрана ниже:

Чтобы добавить элемент управления поиском в базе знаний, выполните следующие действия:

Перейдите в раздел Дополнительные настройки > Настройки > Настройка системы > Разверните элемент Объект.

Нажмите на объект, на который вы хотите добавить элемент управления поиском в базе знаний. Перед добавлением элемента управления поиском в базе знаний необходимо убедиться, что сущность, для которой вы добавляете этот элемент управления, включена для управления знаниями. Если для этой сущности не включено управление знаниями, вы не сможете добавить этот элемент управления.

Чтобы включить управление знаниями, вам необходимо установить флажок для управления знаниями в форме объекта, как показано на снимке экрана ниже.

После включения этой функции вам необходимо сохранить и опубликовать настройку, чтобы убедиться, что настройки были успешно сохранены и включены.

Теперь разверните сущность «Учетная запись», щелкните форму и откройте форму, в которую вы хотите добавить элемент управления поиском в базе знаний.

После открытия формы перейдите на вкладку Вставка и добавьте Контроль поиска в базе знаний в раздел формы, куда вы хотите добавить этот элемент управления.

Мы добавили Контроль поиска в базе знаний на вкладке «Вкладка «База знаний»» в разделе «Раздел базы знаний».

После того, как элемент управления поиском в базе знаний будет успешно добавлен в форму сущности, мы напишем код JavaScript для реализации клиентского API addOnResultOpened.

// A namespace defined for New

var New = window.New || {};

 

New.KBSearchOnResultOpened = function (executionContext) {

try {

//Getting the Form Context Object

var formContext = executionContext.getFormContext();

//Getting the knowledge base search control

var myKBSearchControl = formContext.getControl('Account_KBArticles');

//Calling addOnResultOpened function

myKBSearchControl.addOnResultOpened(New.OnResultOpened);

}

catch (err) {

console.log("Inside Catch -> " + err.message);

}

}

 

//Function that need to be called when knowledge article is opened from knowledge search result

New.OnResultOpened = function () {

var confirmStringsMessage = { text: "Do you require any assistance?", title: "Confirmation Dialog" };

var confirmMessageOptions = { height: 200, width: 450 };

 

Xrm.Navigation.openConfirmDialog(confirmStringsMessage, confirmMessageOptions).then(

function (success) {

if (success.confirmed) {

//Getting logged in user's userid

var userID = Xrm.Page.context.getUserId().replaceAll("{", "").replaceAll("}", "");

//getting username of logged in user

var userName = Xrm.Page.context.getUserName();

//getting the current record ID

var currentRecordID = Xrm.Page.data.entity.getId().replaceAll("{", "").replaceAll("}", "");

console.log("userID : " + userID + " and userName : " + userName);

 

//creating data object which is used to passed as parameter while creating email activity

var data = {

"description": "Knowledge Base Article has beed viewed by user - " + userName,   ///Email Body

"[email protected]": "/accounts(" + currentRecordID + ")",

"subject": "Knowledge Base Search Article bas been viewed by somenone",

"email_activity_parties": [

{

"[email protected]": "/systemusers(" + userID + ")",

"participationtypemask": 1   //From Email

},

{

"[email protected]": "/systemusers(6a6b321f-e897-ec11-b400-000d3aca14a7)",

"participationtypemask": 2 //To Email

}

]

};

 

//Creating the Email activity record

Xrm.WebApi.createRecord("email", data).then(

function success(result) {

console.log("Email has been created with ID : " + result.id);

},

function Error(e) {

console.log("New.OnResultOpened -> " + e.message);

}

)

}

else {

console.log("Confirmation dialog has been closed by close button.");

}

});

}

После того, как мы закончим с JavaScript, мы собираемся добавить этот файл JavaScript в качестве веб-ресурса в нашу среду CRM. И вызовите функцию New.KBSearchOnResultOpened при событии изменения выбора вкладки, поскольку элемент управления поиском в базе знаний не имеет никакого события.

После этого все готово для проверки того, что произойдет, когда мы выберем любую статью базы знаний в результатах поиска базы знаний.

Демонстрация:

Сценарий, который мы рассматриваем, заключается в том, что будет пользователь службы поддержки, чья работа состоит в том, чтобы помогать продавцам с их запросами. Таким образом, функциональность, которую мы внедрили, заключается в том, что каждый раз, когда продавец открывает статью базы знаний, наша логика будет спрашивать, требуется ли ему какая-либо помощь. Если да, то уведомление будет отправлено по электронной почте пользователю службы поддержки.

Таким образом, исходя из этого сценария, логика нашего веб-ресурса такова: когда мы выбираем/открываем любую запись, срабатывает addOnResultOpened и отображается диалоговое сообщение с вопросом « Вам нужна помощь?». Если пользователи выберут «Да», будет создано действие электронной почты, которое мы можем увидеть в разделе Временная шкала текущей записи учетной записи.

В разделе Временная шкала мы видим, что действие электронной почты было создано, как показано на изображении ниже:

Заключение:

Таким образом, мы увидели, как с помощью клиентского API addOnResultOpened мы можем дополнительно реализовать дополнительные функции при открытии статьи базы знаний.

Первоначально опубликовано на https://www.inogic.com 17 марта 2022 г.