Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

If multiple accounts or contacts can be found in CRM by phone number, the system displays a grid underneath the phone, with some information of the records found.

The grid has the following columns:

  • Icon reflecting the type of entity (account or contact)

  • Name (clickable to open the record)

  • Address and City

  • Checkbox button to select a record in the context of the current call

Address and City columns of the grid can be fully customized, plus name replaced using a custom plugin. The example code of such a plugin:

var SampleCustomer = SampleCustomer || {};
SampleCustomer.Plugins = SampleCustomer.Plugins || {};

SampleCustomer.Plugins.manipulateSearchResults = async function(context) {
    debugger;
    context.customerSearchResults.setColumnHeaders(["foo", "bar"]);
    context.customerSearchResults.setRowData("b41a1595-e321-ec11-b6e6-6045bd8a1d39", "foo", ["bar", "qwe"]);
};

The context parameter of the JS plugin function contains a customerSearchResults property. It is an instance of Enreach.API.customerSearchResults class, which has the following methods:

dataRows property

An array of objects found by multiple matches feature. Each item within the array has the following properties:

  • id: GUID of the entity

  • name: display name

  • type: entity logical name

  • fieldValues: additional fields displayed in the grid

By iterating the array of search results, additional information can be retrieved for each one by using CIF CRUD APIs.

setColumnHeaders(columnHeaders) function

Manipulates the column headers of the grid. Only Address and City columns ca be overridden. Default columns are removed when the method is called.

  • columnHeader: string array of column headers

setRowData(id, name, fieldValues) function

Updates the values of a particular item.

  • id: primary key (GUID) of the item

  • name: the value which should be displayed in Name column of the grid

  • fieldValues: array of additional field (string) values to be displayed

The number of columns given to setColumnHeaders and length of fieldValues array have to be identical.

Within the plugin all the features of CIF API can be used, e.g. to retrieve any record and supply the retrieved data to setRowData function.

CIF API reference:

Remember to call CIF APIs by using await, so e.g to retrieve a record, call

var contact = await Microsoft.CIFramework.retrieveRecord("contact", id, "?$select=fullname,telephone1");

The custom plugin then has to be inserted right before the grid is rendered by Display Customer search results OoB plugin on Incoming call answered event.

  • No labels