介绍
本指南将介绍如何创建一个呼叫流程App,该呼叫流程App可以读取呼叫者按下的一系列数字。很多时候,我们面临着读出一系列数字的需要。例如,我们的用户希望在使用DTMF发出一个号码(数字)请求的同时,3CX能够读出他们所输入的号码(数字),来判断是输入是否正确。我们使用此示例来说明如何使用3CX呼叫流设计器 创建呼叫流程App来执行此操作:
- 3CX CFD:“请输入您的客户代码”。
- 用户输入:1234。
- 3CXCFD:“输入的客户代码为1234”。
由于数字读取可能是呼叫流程App的某个部分所需的内容,因此该功能应该封装在自定义组件中。CFD可以创建自定义组件,然后可以在呼叫流程App的相应位置利用它们。
第1步:创建项目
首先,我们需要创建一个新项目。打开CFD并转到“File” > “New” > “Project”,选择要保存此项目的文件夹,然后输入项目名称,例如“ PlayDigitsDemo ”。
第2步:创建自定义组件
要创建组件以接收数字序列作为输入并播放的数字序列,请使用以下步骤:
- 在“Project Explorer”面板中,右键单击项目名称,然后选择“New Component”。
- 将新组件的名称更改为“PlayDigits”。
- 单击新的自定义组件“PlayDigits.comp”,然后在“properties Windows(属性窗口)”中,单击“Variables(变量)”项右侧的按钮打开“Variable集合编辑器”。
- 在“Variable集合编辑器”中添加两个名为“Digits”和“Index”的变量。在“Digits”变量接受来自呼叫者输入的数字,所以该组件知道哪些数字需要读出。“Index”变量是内部变量,允许组件迭代数字。请按以下步骤操作:
- 单击“添加”按钮添加新变量。
- 将新变量的名称更改为“Digits”。
- Digits变量应具有以下属性:
- Accessibility:ReadWrite
- Initial Value:<Blank>
- Scope:Public
- 单击“添加”按钮以添加另一个变量。
- 将新变量的名称更改为“Index”。
- Index变量应具有以下属性:
- Accessibility:ReadWrite
- Initial Value:0
- Scope:Private
- 完成后,按“确定”保存更改。
现在我们已经创建好了自定义组件,我们需要在内部设计该组件。为此,我们需要一个“Loop” 组件来迭代数字序列。在“Loop” 组件中,我们添加了“Prompt Playback” 组件来播放该迭代中的数字。在同一个循环中,我们还需要另一个“Increment Variable”组件来增加前面创建的索引变量。这允许循环迭代呼叫者提供的所有数字。要了解如何更详细地完成此操作:
创建循环组件
- 从“ Components”工具箱中,将“Loop ”组件拖到设计器中。
- 从“ properties Windows(属性窗口)”中,将“Loop”组件的名称更改为“ digitsLoop ”。
- 在设计器中双击“ digitsLoop ”组件,在弹出的对话框中将Condition属性更改为:LESS_THAN(callflow$.Index,LEN(callflow$.Digits))
- 只要Index(callflow $ .Index)小于数字序列LEN(callflow $ .Digits)的长度,此条件就会导致循环继续迭代。
创建提示音播放
- 首先我们需要制作的音频文件来播放每个数字。将“0.wav”,“1.wav”等音频文件复制到此项目的“Audio”文件夹下面。我们需要所有从0到9的数字的WAV文件,这些音频文件可以从3CX的提示音里下载。
- 从“ Components”工具箱中,拖动“ Prompt Playback”组件并将其放入“digitsLoop”中。
- 将“ Prompt Playback”组件的名称属性更改为“ playDigit ”。
- 选择“ playDigit ”组件,然后从“properties Windows(属性窗口)”中单击属性“ Prompt”右侧的按钮打开“Prompt集合编辑器”。
- 单击“ Add”按钮,将提示类型更改为“Dynamic Audio File Prompt”。
- 将“ Audio File Expression”设置为:CONCATENATE(MID(callflow$.Digits,callflow$.Index,1),”.wav”)
- 此表达式获取此特定迭代的数字,并将其连接到“.wav”的相关音频文件。这样,“ Prompt Playback”组件将播放所需的数字。
- 完成后单击“OK”保存设置 。
创建增量变量组件
- 从“ Components”工具箱中,将一个“ Increment Variable”组件,并将其拖放到“DigitsLoop”组件中,在“ PlayDigit ” 组件下方。
- 将“Increment Variable”组件的名称更改为“ incrementIndex ”。
- 将“ VariableName ”属性的表达式设置为:callflow$.Index
从上面的示例截图来看,该“Loop”组件现已准备就绪,我们需要从主流程中调用它。
第3步:调用组件来播放数字
我们有一个组件可以播放一系列数字,现在我们可以在我们的App中使用它:
- 双击“Project Explorer”面板中的“flow”项,来打开主呼叫流程设计器。
- 添加“User Input”组件以询问呼叫者的输入的数字。将该组件重命名为“requestInput”。根据需要添加语音提示音。
- 在“Valid Input”分支中, 将自定义的“ PlayDigits ”组件添加到这里 – 就是我们刚刚创建的组件的实例。
- 将“ PlayDigits ”组件的名称更改为“ playEnteredDigits ”。
- 选中“playEnteredDigits”这个组件,然后将“Digits”属性更改为下列表达式:Buffer
这样,从呼叫者输入的数字缓冲区中检索要播放的数字。如上面的示例callflow所示。
第4步:构建和部署到3CX电话系统
该项目已构建完成将上传到我们的3CX系统里,具体步骤如下:
- 选择“Build”> “Build All”,CFD将生成文件“PlayDigitsDemo.zip”这样一个文件。
- 转到“3CX管理控制台”> “高级” > “呼叫流程App” > “添加/更新”,然后上载上一步中由CFD创建的zip文件。
- 上传的Call FlowApp状态变为绿色,就表示上传成功,现在我们可以拨打电话测试一下,输入一个号码,Call FlowApp会将其播放给您。
总结
除了本例中解决的特定问题外,还必须注意在自定义的组件中封装常见行为的能力。这是一个非常强大的概念,提供了几个好处:
- 通过具有可重复使用组件加速呼叫流程App的开发。
- 简化主呼叫流程的设计,避免了设计器增长到无法管理的程度。
- 使呼叫流程App更易于理解和维护。
进一步扩展这个概念,我们可以创建各种可重用的组件,例如播放日期或时间,执行用户输入的通用验证等。