通过将 Twilio 与 Salesforce Service Cloud Voice (SCV) 集成,Salesforce 代表可以使用 Twilio 平台的功能在 Salesforce 中拨打和接听电话。
准备工作
如需将 Salesforce Voice 与 Twilio Flex 集成,您需要能够使用以下资源:
- Salesforce 和 Agent Assist 资源
- Salesforce 应用的 Agent Assist
Flex 账号
按照 Twilio 设置页面中的说明创建 Flex 账号。记下您的账号字符串标识符 (SID)、Twilio 手机号码和身份验证令牌。
Google Telephony Platform 配置的手机号码
按照 Google Telephony Platform 中的说明获取已配置的手机号码,以便与 Twilio 的 Siprec 连接器插件集成。
第 1 步:设置 Twilio Service Cloud Voice
按照 Twilio 指南中的说明,将 Salesforce SCV 设置为以 Twilio 作为合作伙伴电话服务提供商。
第 2 步:将 Agent Assist 与 Twilio Flex 集成
请按照以下步骤将 Agent Assist 与 Twilio Flex 集成。
安装 SIPREC 连接器插件
借助 SIPREC 连接器插件,您的 Twilio Flex 账号可以创建语音通话媒体流的 SIPREC 分叉,并将其发送给 Agent Assist。请按照以下步骤安装 SIPREC 连接器插件。
前往 Twilio 主页,然后在搜索框中输入 Marketplace。
依次点击目录 > 流连接器 > Siprec 连接器 > 安装 > 添加实例。
前往配置标签页,然后使用以下详细信息配置插件:
- 唯一名称:
SipRec1 - 会话记录服务器:
sip:+<GTP-provisioned-phone-number>@216.239.36.145:5672;transport=tls;secure=true;edge=umatilla
- 唯一名称:
点击保存。
配置 Twilio 函数
请按以下步骤配置两个 Twilio 函数:conversation-name 和 wrap-up。
- 前往 Twilio 控制台,然后在搜索框中输入 Function。
- 依次点击函数 > 创建服务。
- 为新服务命名
ui-connector-auth,然后点击下一步。 - 依次点击添加 + > 添加函数。
请按照以下步骤创建 conversation-name 函数。
- 将函数命名为
conversation-name。 - 点击锁形图标,然后将函数公开范围更改为公开。
- 复制
ui-connector-auth.js代码并将其粘贴到编辑器中。 - 点击保存。
您可以使用 wrap-up 函数和 EventCallbackUrl 自动完成通话。这样一来,您就无需在 Salesforce 和 Twilio Flex 中手动结束通话。请按照以下步骤创建一个 wrap-up 函数,以通过 EventCallbackUrl 接收事件。
- 前往 Twilio 控制台 > 搜索栏,然后输入 Taskrouter Workspace。
- 选择 Taskrouter 工作区。
- 记下工作区列中的 SID。
- 前往编辑器,并将函数命名为
wrap-up。 将以下代码添加到编辑器中。
/** * @desc A Twilio Function that wraps up a conversation automatically to avoid agents being stuck * in a wrap up state while in Salesforce's Service Console. */ exports.handler = function(context, event, callback) { const response = new Twilio.Response(); const client = context.getTwilioClient(); /** * @TODO Add your workspaceSid to this variable. */ const workspaceSid = "" response.appendHeader('Content-Type', 'application/json'); if (!event.EventType) { response.setBody({}); return callback(null, response); } /** * This event is dispatched with the Event Callback Url, which is assigned in a Taskrouter Workspace's * Settings. */ if (event.EventType === 'task.wrapup') { client.taskrouter.v1.workspaces(workspaceSid) .tasks(event.TaskSid) .update({ assignmentStatus: 'completed', reason: 'Auto-completed via Function' }) .then(() => { response.setBody({ status: "completed" }); callback(null, response); }) .catch(err => { response.setStatusCode(500); response.setBody({ error: err.message }); callback(null, response); }); } else { response.setBody({ status: "ignored" }); callback(null, response); } };找到变量
workspaceSid,并使用“Taskrouter 工作区 SID”步骤中的工作区 SID 对其进行更新。记下您服务的网址。您必须在下一步中使用
wrap-up函数的完整网址。依次点击保存 > 部署全部。
前往 Twilio 控制台,然后在搜索栏中输入 Taskrouter 工作区。
依次点击您使用的工作区 > 设置 > 事件回调 > 事件回调网址。
输入上一步中
wrap-up函数的网址。点击回调事件,然后将其设置为特定事件。
依次点击全选 > 保存。
使用 Flex Studio 配置 IVR
如需设置自动手机菜单,请使用 Twilio Studio 构建可启动 SIPREC 分叉的通话流程。该分支直接向 Agent Assist 发送媒体流。通话流程还会通过 HTTP POST 请求与 Agent Assist 分享手机号码和对话 ID。
请按照以下步骤使用 Flex Studio 配置交互式语音响应 (IVR)。
- 前往 Twilio 控制台,然后在搜索框中输入 Studio。
- 点击 Studio,系统会打开 Studio 信息中心页面,其中列出了所有流。
在 YouTube 工作室信息中心页面上,您可以执行以下操作:
- 更新现有流程。
- 创建流程。
更新现有流程
在 Twilio 控制台中按以下步骤操作,即可更新现有流程。
- 选择要更新的流程。
- 依次点击开发 > 电话号码 > 管理 > 有效号码。表格中应有一行显示为您的 Flex 账号预配的默认 Twilio 号码。
- 前往语音 - 工作室工作流,然后点击语音 IVR。
创建流
创建新流程以发出 HTTP 请求、运行函数、分叉流并发送到 Flex。请按照 Twilio 控制台中的以下步骤创建 HTTP 请求流。
- 前往 Studio 信息中心页面,然后点击创建新流程。
- 找到搜索微件,然后输入 HTTP。
- 将发出 HTTP 请求 widget 拖动到流程面板上。
使用以下详细信息配置 widget,然后点击保存。
- widget 名称:
register_twilio - 请求方法:
POST - Request 网址:
your-ui-connector-cloud-run-url.run.app/register-app
- 内容类型:application/json
请求正文:
{ "accountSid": "yourTwilioAccountSid", "authToken": "yourTwilioAccountAuthToken" }
- widget 名称:
请按照以下步骤创建运行函数流程。
- 在搜索 widget 中输入 Run function。
- 将运行函数 widget 拖动到流程面板上,以与
register_twiliowidget 的成功和失败输出相连。 使用以下详细信息配置跑步功能 widget:
- widget 名称:
conversation_name - 服务:
ui-connector-auth - 环境:界面
- 函数:
/conversation-name 函数参数:输入以下函数参数
- 令牌:
{{ widgets.register_twilio.parsed.token }}
- 端点:
your-ui-connector-cloud-run-url.run.app/conversation-name
- 电话:
{{ trigger.call.From | replace_first:'+','' }}
ConversationName:projects/project/locations/location/conversations/{{ trigger.call.CallSid }}
- 令牌:
- widget 名称:
点击保存。
请按照以下步骤创建分支流。
- 在搜索 widget 中输入 Fork stream。
- 将 Fork Stream widget 移动到流程面板上,以连接到“发出 HTTP 请求”widget 的 Success 和 Fail 输出。
使用以下详细信息配置分叉流 widget:
- 数据流操作:开始
- 数据流类型:
Siprec - 连接器名称:
Siprec1 - 轨道:两个轨道
媒体资源参数:输入以下媒体资源参数。
- 关键:话题
- 值:
projects/project-id/conversations/{{trigger.call.CallSid}}
点击保存。
请按照以下步骤创建“发送到 Flex”流程。
- 在搜索 widget 中输入发送到 Flex。
- 将发送到 Flex 移到流程面板上,并将分叉流 中的下一步 连接到发送到 Flex。
- 点击发送到 Flex。
使用以下详细信息配置“发送到 Flex”微件。
- 工作流:选择您用于 SCV 的工作流。
- 任务渠道:语音
- 属性:
{"agent_assist__ConversationId__c":"{{trigger.call.CallSid}}"} - 网址方法:
POST
依次点击保存 > 发布。
第 4 步:为 Agent Assist 配置记录页面
请按照以下步骤为 Agent Assist 配置记录页面。
- 为 Agent Assist 创建语音通话记录页面。
- 依次点击激活 > 应用默认 > 分配为应用默认。
- 选择 Twilio for Service Cloud Voice。
- 依次点击下一步 > 保存。
第 5 步:测试 Agent Assist 集成
请按照以下步骤测试 Agent Assist。
- 前往 Salesforce。
- 点击应用应用启动器。
- 在搜索字段中,输入 Twilio for service cloud voice。系统随即会打开支持请求页面。
- 前往全渠道面板,然后点击新建。
- 点击check_circle 检查,拨打您的 Twilio Flex 号码。您在开始时已记下此信息。
- 测试对话双方,确保 Agent Assist 功能按您配置的方式运行。