介绍
在呼叫流程中,我们通常需要根据不同的条件决定做不同的事情。例如,如果我们通过数据库确认客户 ID 和 PIN 有效,我们可能需要将呼叫转移到特定的呼叫队列并执行操作,否则将执行另一个操作。或者我们让调用者重试输入一个 ID,多次迭代一组组件,例如 “User Input”,验证等。为此,我们需要使用变量,循环和条件。本指南介绍了可用的相关组件。
变量(Variables)
变量就像一个有名字的 “盒子”,你可以在里面存储数值并在以后检索。项目存在以下几个级别的变量:
- 项目等级:任何调用呼叫流程,拨号程序或用户定义的组件都可以在整个项目中使用此级别定义的变量。这些是可用于在项目对象之间共享数据的全局变量,例如,调用呼叫流程和用户定义的组件。
- 呼叫流程或拨号程序级别:这些变量在 callflow 或 dialer 中可见,但任何子组件都看不到。
- 用户自定义组件级别:这些变量可以是公共的或私有的。公共变量由父调用流程,拨号程序或用户组件可见,可用于设置参数和自定义组件行为。私有变量仅在内部可见,用于用户定义的组件。
变量可以是只读的,即只能在初始化期间第一次分配;或者是可读写的,即稍后在呼叫处理期间可以改变该值。
调用之间不共享变量。当系统一次处理多个调用时,每个调用都有自己的一组变量实例。在呼叫 2 中无法看到呼叫 1 中设置的值,因为它们是独立的。
要创建变量,请转到 “Project Explorer” 面板,根据要使用的变量级别选择项目,调用流程,拨号程序或组件,然后转到 “Properties Window”,其中显示了 “Variables” 项。单击右侧的按钮打开 “Variable Collection Editor” 并根据需要创建任意数量的变量。
会话变量(Session Variables)
这些是您可以在调用流中用于不同目的的会话变量:
- session.ani: 连接到 CFD app 的呼叫者的号码。
- session.audioFolder: 保存此应用程序音频的文件夹的路径。
- session.callid: 此通话的唯一 ID。请注意,该值无法与CDR或3CX服务器其他部分中的呼叫ID匹配。
- session.did: 呼叫者使用的 DID 达到 3CX。
- session.dnis: 呼叫流标识符,即呼叫此呼叫流程时需要拨打的名称。
- session.transferingExtension: 当分机将呼叫转移到 CFD 应用程序时,此变量包含转移呼叫的分机号码。
呼叫流程组件(Call Flow Components)
以下是适用于您的应用程序的内置呼叫流组件。你可以在 “Properties Window” 或者通过双击对应组件对他们进行操作。当需要的输入值是表达式时,可以通过点击右侧的 fx 图标打开 表达式编辑器 进行编辑。
赋值(Assign a Variable)
该组件会将一个数值赋给一个已经存在的可读写变量。组件有两个参数可填写:
- Variable Name: 变量名称必须是已经存在的变量。可以通过表达式编辑器选择需要的变量。
- Expression: 这里填写的是需要赋给对应变量的值。表达式编辑器中允许用户简单创建复杂的表达式。用户可以选择使用常量字符串,变量或内置函数,其中每个参数都是一个新表达式,可以使用新的“表达式编辑器”对话框进行编辑。从列表中选择变量,该列表显示当前范围中的每个可用只读和读写变量。有关可用函数的详细信息,请参阅“表达式编辑器”指南。
变量自增(Increment Variable)
该组件允许递增现有的数字读写变量。它的输入属性是:
- VariableName: 变量名称减量必须引用已有变量。“变量选择器”对话框允许选择可用变量。
创建分支(Create a Condition)
该组件允许在满足条件时选择要执行的分支。
用户可以在右侧的 “Properties Window” 下方的 “Add Branch” 添加分支。每个分支都有一个判断条件,当条件判断结果为 true 才会进入该分支。分支从左向右执行,选中分支后可以对分支执行左移和右移操作。
最多执行一个分支。当分支的条件满足后会自动执行对应分支,后续分支不会被执行。当最后一个分支判断为 false 时,则不会执行任何分支。
时间条件(Date & Time Condition)
该组件会根据日期时间选择一个分支执行,组件支持 DID 过滤。
用户可以在右侧的 “Properties Window” 下方的 “Add Branch” 添加分支。每个分支有以下三个参数:
- DID Filter: 当指定的 3CX DID 呼叫抵达时才激活该分支。有以下几个选项:
- AllDIDs: 允许所有 DID 呼叫。
- AllDIDsWithExceptions: 允许除了指定 DID 以外的呼叫。
- SpecificDIDs: 只允许指定 DID 的呼叫。
- DID Filter List: 当 DID Filter 的值为 AllDIDsWithExceptions 或 SpecificDIDs 时需要的 DID 列表。需要注意的是这里填写的 DID 号码为字符串格式。
- DateTimeConditions: 这是适用于此分支的日期和时间条件列表。
只有当 DID 过滤和时间判断同时通过才会执行分支的流程。选中分支后可以对分支进行左移和右移操作。该组件也是最多执行一个分支。
日期和时间条件由 “Date Time Condition Collection Editor” 配置。在该编辑器中有两种日期和时间条件,你要可以根据自己的需求添加多条判断。当第一行的计算结果为 true 时,整个日期和时间条件也会计算为 true。以上图为例,该分支在 0 – 7 点,18 – 24 点执行。
该编辑器中有几种时间类型:
- Day of week: 指定每周的特定日期,比如每周一。
- Specific day: 指定的日期,比如具体的节假日。
- Date range: 指定的日期范围。
- 3CX Office Hours: 根据 3CX 上班时间激活分支。
- 3CX Out of Office Hours: 根据 3CX 下班时间激活分支。
循环(Loop)
该组件允许在满足条件时循环执行组件。“Loop” 组件中包含的组件执行 0 到 N 次。当 Loop 判断为 true 时才会继续执行循环。Loop 有以下参数:
- Condition: 必须求值为 true 才能执行的表达式。
Call Flow Log
该组件将信息写入 “3CXCallFlow.log” 文件。它的输入属性是:
- Level: 日志等级。有 Trace, Debug, Info, Warn, Error 和 Critical 这几种。
- Text: 记录的文本信息。
要通过 “3CXCallFlow.log” 中写入的信息调试 CFD app,请在 3CX“仪表板” > “活动日志 ”> “设置” 中将日志详细级别设置为 “Medium” 或 “Verbose” :
- Off – 不记录信息
- Low – 只记录 Error 和 Critical 信息
- Medium – 记录 Info, Error 和 Critical 信息
- Verbose – 记录所有信息
退出呼叫流(Exit Callflow)
该组件允许退出当前 app,也可以断开呼叫。这是执行的最后一个组件。在这种情况下,不执行“Disconnect Handler” 流程。
CFD 用户手册