在自定义 Visualforce 页面上创建点击拨号
该集成在默认 Salesforce 页面上启用了点击拨号功能,例如联系人或帐户页面。 当座席单击默认 Salesforce 页面上的电话号码时,客户端会自动拨打该电话号码或自动填充 “姓名” 或 “号码” 框。 (点击拨号的行为取决于座席在队列设置下的选择。 有关详细信息,请参阅 配置点击拨号。) 客户端使用这些 Salesforce 页面中的相关对象填充 “名称” 和 “相关对象” 框。
您还可以通过向自定义 Visualforce 页面添加点击拨号组件,在这些页面上提供点击拨号功能。
以下是使用 Visualforce 页面上的点击拨号组件并使用 Apex 控制器从 Salesforce 提取数据的示例。 有关更多信息,请参阅 Salesforce 文档 中的 支持:单击拨号 和 Apex JSON 入门。
点击拨号组件
点击拨号组件将点击拨号功能添加到自定义 Visualforce 页面,并允许您为 EntityID 和 params 属性分配值。 这两个属性从 Apex 控制器中提取数据,以填充客户端中的 “名称” 和 “相关对象” 框。 EntityID 和 params 属性还会自动将 “名称” 和 “相关对象” 框与 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 对象
对 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。