在自定义 Visualforce 页面上创建点击拨号

注意: 本文适用于适用于 Salesforce 的 Genesys 云。

该集成在默认 Salesforce 页面上启用了点击拨号功能,例如联系人或帐户页面。 当座席单击默认 Salesforce 页面上的电话号码时,客户端会自动拨打该电话号码或自动填充 “姓名” 或 “号码” 框。 (点击拨号的行为取决于座席在队列设置下的选择。 有关详细信息,请参阅 配置点击拨号。) 客户端使用这些 Salesforce 页面中的相关对象填充 “名称” 和 “相关对象” 框。 

您还可以通过向自定义 Visualforce 页面添加点击拨号组件,在这些页面上提供点击拨号功能。 

提示: 如果在开发模式下创建 Visualforce 页面,则在创建页面后退出开发模式。 启用开发模式后,点击拨号事件不起作用。

以下是使用 Visualforce 页面上的点击拨号组件并使用 Apex 控制器从 Salesforce 提取数据的示例。 有关更多信息,请参阅 Salesforce 文档 中的 支持:单击拨号 和 Apex JSON 入门。

点击拨号组件

点击拨号组件将点击拨号功能添加到自定义 Visualforce 页面,并允许您为 EntityIDparams 属性分配值。 这两个属性从 Apex 控制器中提取数据,以填充客户端中的 “名称” 和 “相关对象” 框。 EntityIDparams 属性还会自动将 “名称” 和 “相关对象” 框与 Salesforce 页面上的活动关联起来。 

属性 必需/可选 描述 注释
号码 必需 要拨打的号码。
entityID 可选 要与活动自动关联的相关对象(例如联系人或帐户)的 ID。  entityID 属性仅适用于单个记录。 要将其他记录添加到交互日志中的 “名称” 和 “相关对象” 中,请使用 params 对象中的关 属性。
params 可选 用于点击拨号的其他数据的 JSON 字符串。 请参阅 params 对象
<apex:page standardController="Account" extensions="CustomClickToDialController" showHeader="true">
   <support:clickToDial number="3172222222" entityId="{!id}" params="{!json}"/>
</apex:page>

params 对象

属性 数据类型 描述 注释
自动放置 布尔值 如果设置为 true 或未设置,集成会自动拨打电话。 如果为 false,集成将在 “姓名” 或 “号码” 框中填充电话号码。
来电者 ID 字符串 向电话接听者显示的电话号码。 电信公司对 CallerID 的支持 各不相同。
主叫姓名 字符串 向电话接听者显示的姓名。 电信公司对 callerIDName 的支持 各不相同。
交互属性 对象 要添加到交互组件的键值对属性。
交互类型 字符串 交互类型。

价值观: 打电话,短信。

如果未提供 Interaction Type,则默认为调用。

queueId 字符串 要代表其拨打电话或发送短信的队列的 ID。
关联 对象 要与活动自动关联的单个对象或对象数组。

params 对象使用以下格式。 Salesforce json.Serialize API 使用这种格式进行 关联, 以序列化联系人和帐户等对象。

{
    autoPlace: true,
    callerId: '317-555-0123',
    callerIdName: 'Some Name Here',
    interactionAttributes: {
        CustomAttribute: 'Data here'
    },
    interactionType: 'call',
    queueId: 'Queue id GUID',
    associations: [
        {
            Id: '00000000000',
            Name: 'AccountName',
            attributes: {
                type: 'Account'
            }
        },
        {
            Id: '11111111111',
            Name: 'John Smith',
            attributes: {
                type: 'Contact'
            }
        }
    ]
}

有关此组件的更多信息,请参阅 Salesforce 文档 中的 支持:单击拨号。

Apex 控制器

Apex 控制器执行以下操作:

  • 从 Salesforce 检索后端数据。
  • 使用 Salesforce json.Serialize API 生成 JSON 字符串。
  • 将此数据添加为自定义 Visualforce 页面上点击拨号组件中的 entityID 和 params 属性的值。
  • 返回谁/什么记录。
public class CustomClickToDialController {

   public CustomClickToDialController(ApexPages.StandardController stdController){}

    // Returns an ID of a Who/What record (for the entityId attribute).
    public String getId(){
       Contact contact = [SELECT id, name FROM Contact LIMIT 1];
       return contact.id;
    }

    // Returns a JSON string representation of Who/What record(s) (for the params attribute).
    // It could be a single Who/What record or a list of Who/What records.
public String getJson(){
        List accountList = [Select id, name FROM Account LIMIT 1];
        String accounts = JSON.serialize(accountList);
        
        JSONGenerator gen = JSON.createGenerator(false);
        
        gen.writeStartObject();
        gen.writeStringField('associations', accounts);
        gen.writeStringField('callerId', '317-555-0123');
        gen.writeStringField('callerIdName', 'Some Name Here');
        gen.writeStringField('interactionType', 'call');
        gen.writeBooleanField('autoPlace', true);
        gen.writeStringField('queueId', 'Queue id GUID);
        gen.writeFieldName('interactionAttributes');
        gen.writeStartObject();
        gen.writeStringField('CustomAttribute', 'Data here');
        gen.writeEndObject();
        gen.writeEndObject();
        
        return gen.getAsString();
    }
}

所有返回的 “谁” 记录都显示在交互日志的 “名称” 列表中。 如果只返回一条 “谁” 记录,则该记录将自动与交互日志中的 “名称” 框关联。

所有返回的记录都显示在交互日志的 “相关对象” 列表中。 如果只返回一条 “什么记录”,则该记录将自动与交互日志中的 “相关对象” 框关联。

“名称” 和 “相关对” 框中的自动关

有关详细信息,请参阅 点击拨号配置点击拨号

有关集成的更多信息,请参阅 关于适用于 Salesforce 的 Genesys Cloud