0

我需要能够根据当前座席的特定按钮按下来转移正在进行的呼叫任务。这目前可以通过从 Action Framework调用TransferTask Flex 操作或通过在 Flex 中的任务上下文中对任务使用 transfer 方法来完成。

复杂性来自于确定任务需要转移给谁的逻辑。根据他们的技能和之前的分配,要转移到的代理列表从我们的后端 API 中按顺序排列。我们的 Flex 插件检索列表,使用即时查询仅针对当前可用的代理,然后需要:

  • 尝试列表中的第一个代理 60 秒或直到他们拒绝转移
  • 如果 60 秒已到或第一个代理拒绝转移,请立即尝试列表中的所有可用代理,直到其中一个接听

任务对象上的 TransferTask 操作和传输方法通过将当前任务更新为“正在传输”状态来工作,并且需要一个绕过任何 Taskrouter 工作流配置的传输目标(workerSid 或 queueSid),所以我不确定在这种情况下可以使用内置的传输机制。

我能想到的实现自定义路由逻辑的主要方式是创建一个新任务,这意味着 TaskRouter 工作流可以处理路由逻辑。但是,这也需要相当多的工作,例如:

  • 替换转移任务的 AcceptTask Flex 操作以调用将第二个代理添加到会议并接受预订的函数
  • 用于为第一个代理和第二个代理检索当前会议的参与者列表的自定义逻辑(默认情况下,如果另一个参与者以编程方式添加到与当前任务关联的会议,则 Flex TaskCanvas 不会显示所有详细信息)
  • 用于将参与者开/关保持和从当前会议中删除参与者的自定义逻辑
  • 客户挂机时处理任务完成的自定义逻辑(如果以编程方式添加第三个参与者并且客户挂机,则会议结束,但第二个(转移)任务仍处于已分配状态
  • 如果第一个和转移代理都离开了会议,则用于完成会议的自定义逻辑(如果以编程方式添加了第三个参与者并且两个代理都离开了,则 2 个任务已完成,但会议仍然开放,其中有客户)。
  • 等(我确定还有其他情况,例如第二个代理需要根据需要将客户转移到第三个代理,我还没有检查过)

理想情况下,我希望尽可能少地使用标准的 TransferTask 操作,但我不认为这是可行的。我认为我可以做的另一件事是在初始任务中设置一些属性,其中包含要转移到的第一个代理的详细信息以及合适的代理列表,以及:

  1. 触发向第一个代理的转移。如果不成功(不适用 60 秒超时),则:
  2. 触发转移到每个人队列,当在 Flex 中创建和接收预订时,如果接收预订的座席不在合适的座席列表中,则自动拒绝预订(这会导致 Flex 屏幕在预订出现,然后立即消失)。

与创建和管理全新任务相比,我是否缺少任何可以使实施自定义传输路由更容易的东西?

4

0 回答 0