Agent Assist for Salesforce 语音集成(使用 Twilio Flex)

通过将 Twilio 与 Salesforce Service Cloud Voice (SCV) 集成,Salesforce 代表可以使用 Twilio 平台的功能在 Salesforce 中拨打和接听电话。

准备工作

如需将 Salesforce Voice 与 Twilio Flex 集成,您需要能够使用以下资源:

第 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 连接器插件。

  1. 前往 Twilio 主页,然后在搜索框中输入 Marketplace

    Twilio Home

  2. 依次点击目录 > 流连接器 > Siprec 连接器 > 安装 > 添加实例

  3. 前往配置标签页,然后使用以下详细信息配置插件:

    • 唯一名称SipRec1
    • 会话记录服务器sip:+<GTP-provisioned-phone-number>@216.239.36.145:5672;transport=tls;secure=true;edge=umatilla
  4. 点击保存

配置 Twilio 函数

请按以下步骤配置两个 Twilio 函数:conversation-namewrap-up

  1. 前往 Twilio 控制台,然后在搜索框中输入 Function
  2. 依次点击函数 > 创建服务
  3. 为新服务命名 ui-connector-auth,然后点击下一步
  4. 依次点击添加 + > 添加函数

请按照以下步骤创建 conversation-name 函数。

  1. 将函数命名为 conversation-name
  2. 点击锁形图标,然后将函数公开范围更改为公开
  3. 复制 ui-connector-auth.js 代码并将其粘贴到编辑器中。
  4. 点击保存

您可以使用 wrap-up 函数和 EventCallbackUrl 自动完成通话。这样一来,您就无需在 Salesforce 和 Twilio Flex 中手动结束通话。请按照以下步骤创建一个 wrap-up 函数,以通过 EventCallbackUrl 接收事件。

  1. 前往 Twilio 控制台 > 搜索栏,然后输入 Taskrouter Workspace
  2. 选择 Taskrouter 工作区
  3. 记下工作区列中的 SID。
  4. 前往编辑器,并将函数命名为 wrap-up
  5. 将以下代码添加到编辑器中。

    /**
    * @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);
      }
    };
    
  6. 找到变量 workspaceSid,并使用“Taskrouter 工作区 SID”步骤中的工作区 SID 对其进行更新。

  7. 记下您服务的网址。您必须在下一步中使用 wrap-up 函数的完整网址。

  8. 依次点击保存 > 部署全部

  9. 前往 Twilio 控制台,然后在搜索栏中输入 Taskrouter 工作区

  10. 依次点击您使用的工作区 > 设置 > 事件回调 > 事件回调网址

  11. 输入上一步中 wrap-up 函数的网址。

  12. 点击回调事件,然后将其设置为特定事件

  13. 依次点击全选 > 保存

使用 Flex Studio 配置 IVR

如需设置自动手机菜单,请使用 Twilio Studio 构建可启动 SIPREC 分叉的通话流程。该分支直接向 Agent Assist 发送媒体流。通话流程还会通过 HTTP POST 请求与 Agent Assist 分享手机号码和对话 ID。

请按照以下步骤使用 Flex Studio 配置交互式语音响应 (IVR)。

  1. 前往 Twilio 控制台,然后在搜索框中输入 Studio
  2. 点击 Studio,系统会打开 Studio 信息中心页面,其中列出了所有流。
  3. 在 YouTube 工作室信息中心页面上,您可以执行以下操作:

    • 更新现有流程。
    • 创建流程。

更新现有流程

在 Twilio 控制台中按以下步骤操作,即可更新现有流程。

  1. 选择要更新的流程。
  2. 依次点击开发 > 电话号码 > 管理 > 有效号码。表格中应有一行显示为您的 Flex 账号预配的默认 Twilio 号码。
  3. 前往语音 - 工作室工作流,然后点击语音 IVR

创建流

创建新流程以发出 HTTP 请求、运行函数、分叉流并发送到 Flex。请按照 Twilio 控制台中的以下步骤创建 HTTP 请求流。

  1. 前往 Studio 信息中心页面,然后点击创建新流程
  2. 找到搜索微件,然后输入 HTTP
  3. 发出 HTTP 请求 widget 拖动到流程面板上。
  4. 使用以下详细信息配置 widget,然后点击保存

    • widget 名称register_twilio
    • 请求方法POST
    • Request 网址
      your-ui-connector-cloud-run-url.run.app/register-app
    • 内容类型:application/json
    • 请求正文

      {
      "accountSid": "yourTwilioAccountSid",
      "authToken": "yourTwilioAccountAuthToken"
      }
      

请按照以下步骤创建运行函数流程。

  1. 在搜索 widget 中输入 Run function
  2. 运行函数 widget 拖动到流程面板上,以与 register_twilio widget 的成功失败输出相连。
  3. 使用以下详细信息配置跑步功能 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 }}
  4. 点击保存

请按照以下步骤创建分支流。

  1. 在搜索 widget 中输入 Fork stream
  2. Fork Stream widget 移动到流程面板上,以连接到“发出 HTTP 请求”widget 的 SuccessFail 输出。
  3. 使用以下详细信息配置分叉流 widget:

    • 数据流操作:开始
    • 数据流类型Siprec
    • 连接器名称Siprec1
    • 轨道:两个轨道
    • 媒体资源参数:输入以下媒体资源参数。

      • 关键:话题
      • projects/project-id/conversations/{{trigger.call.CallSid}}
  4. 点击保存

请按照以下步骤创建“发送到 Flex”流程。

  1. 在搜索 widget 中输入发送到 Flex
  2. 发送到 Flex 移到流程面板上,并将分叉流 中的下一步 连接到发送到 Flex
  3. 点击发送到 Flex
  4. 使用以下详细信息配置“发送到 Flex”微件。

    • 工作流:选择您用于 SCV 的工作流。
    • 任务渠道:语音
    • 属性
      {"agent_assist__ConversationId__c":"{{trigger.call.CallSid}}"}
    • 网址方法POST
  5. 依次点击保存 > 发布

第 4 步:为 Agent Assist 配置记录页面

请按照以下步骤为 Agent Assist 配置记录页面。

  1. 为 Agent Assist 创建语音通话记录页面
  2. 依次点击激活 > 应用默认 > 分配为应用默认
  3. 选择 Twilio for Service Cloud Voice
  4. 依次点击下一步 > 保存

第 5 步:测试 Agent Assist 集成

请按照以下步骤测试 Agent Assist。

  1. 前往 Salesforce。
  2. 点击应用应用启动器
  3. 在搜索字段中,输入 Twilio for service cloud voice。系统随即会打开支持请求页面。
  4. 前往全渠道面板,然后点击新建
  5. 点击check_circle 检查,拨打您的 Twilio Flex 号码。您在开始时已记下此信息。
  6. 测试对话双方,确保 Agent Assist 功能按您配置的方式运行。