组件 – 您的组件

首页/3CX管理员手册/组件 – 您的组件

组件 – 您的组件

介绍

组件是呼叫流或拨号器的主要构建模块,并执行基本操作,如播放提示,录制来自呼叫者的音频,请求用户输入,访问数据库等。 有两种类型的组件 – 一种具有“分支”,例如“菜单”组件或不带“组件”,类似于“提示播放”组件。

当在设计器中选择一个组件时,“属性”窗口显示其输入属性。 这些是组件工作所需的选项,例如数据库连接信息。 此外,一些组件具有执行后公开的输出属性,其中包含执行结果,例如数据库返回的数据。 为用户定义的组件创建的公共属性可以用作输入和输出。

图片1如果组件右上角出现红色警报标志,则该组件具有无效的属性值。 点击它来获得更多的细节。

组件默认选项

将组件添加到设计器时,将自动使用您设置的默认选项进行配置。 您可以从菜单“工具>选项>组件模板”中更改组件默认值。 请注意,这里输入的值是常量值,而不是表达式,因为这里不在项目的上下文中。 因此,常量字符串值不能包含引号。

主组件

以下是您的应用程序开箱即用的主要构建块。 您可以从“属性”窗口配置它们,或者通过双击组件打开配置对话框。 当输入属性为表达式时,单击文本框右侧的按钮打开表达式编辑器。

菜单

图片2

此组件为单位数选项配置菜单。 当用户输入无效选项或不输入任何DTMF时,它将处理重试逻辑。 当选择有效选项或尝试所有重试时,执行完成。 输入属性如下:

  • AllowDtmfInput:True允许提示被DTMF输入中断。否则的话。
  • MaxRetryCount:无效输入或超时的重试尝试次数。重试计数器是唯一的,并使用相同的计数器计数无效输入或无输入。
  • 超时:在播放指定的超时提示之前等待用户输入的时间(以秒为单位)。
  • IsValidOption_N:指定当用户按N时会发生什么。它可能是有效或无效的选项。有效的选项在设计器中显示为分支。
  • InitialPrompts:执行菜单第一次播放的提示列表。
  • 后续提示:稍后播放的提示列表(超时或无效选项)。
  • 超时提示:当用户没有输入任何数字时,提示播放列表。播放超时提示后,随后的提示将被播放。
  • InvalidDigitPrompts:用户输入无效数字时提示的提示列表。播放无效数字提示后,随后的提示将被播放。

当菜单结束时,其一个分支上的执行继续(有效的选项分支或超时或无效选项分支)。 执行后,菜单组件会显示以下输出属性:

  • 结果:菜单执行的结果。 它可以是以下常量值之一:Timeout,MenuResult.InvalidOption或MenuResult.ValidOption。

用户输入

图片3

该组件以DTMF数字的形式从呼叫者收集信息。 当用户输入无效数字时,处理重试逻辑,数字比预期少,或根本没有输入任何内容。 当呼叫者输入有效输入或尝试所有重试时,执行完成。 输入属性如下:

  • AllowDtmfInput:True允许提示被DTMF输入中断。否则的话。
  • MaxRetryCount:无效输入或超时的重试尝试次数。重试计数器是唯一的,并使用相同的计数器计数无效输入或无输入。
  • FirstDigitTimeout:在播放指定的超时提示之前等待第一个数字的时间(以秒为单位)。
  • InterDigitTimeout:在播放指定的无效数字提示之前等待后续数字的时间,以秒为单位。
  • FinalDigitTimeout:在返回输入的数据之后等待MinDigits之后的数字的时间(以秒为单位)。
  • MinDigits:用户必须输入的最小位数。
  • MaxDigits:用户可输入的最大位数。
  • StopDigit:指定用户必须按数字才能完成数据输入。
  • IsValidDigit_N:指定当用户按N时会发生什么。它可能是有效或无效的数字。
  • InitialPrompts:执行菜单第一次播放的提示列表。
  • 后续提示:播放后续时间(超时或无效数字)后的提示列表。
  • 超时提示:当用户没有输入任何数字时,提示播放列表。播放超时提示后,随后的提示将被播放。
  • InvalidDigitPrompts:用户输入无效数字时提示的提示列表。播放无效数字提示后,随后的提示将被播放。

当用户输入结束时,其一个分支(“有效输入”或“无效输入”)上的执行继续执行。 执行后,用户输入组件会显示以下输出属性:

  • 结果:以下值之一:
  • Timeout:用户最后没有输入任何数字。 UserInputResult.InvalidDigits:用户在上次尝试中输入了无效数字或小于MinDigits。 UserInputResult.ValidDigits:用户输入MinDigits和MaxDigits之间的有效数字,可选择终止StopDigit的输入。
  • 缓冲区:用户输入的数字(包括用户输入的StopDigit)。

提示播放

该组件允许播放提示列表。 输入属性如下:

  • AllowDtmfInput:True允许提示被DTMF输入中断。 否则的话。
  • 提示:组件执行时提示的提示列表。

记录

图片4

该组件记录来自呼叫者的音频。 录制前,播放指定的提示列表。 如果设置了蜂鸣声属性,则在提示之后并在开始录制之前,将向呼叫者发出蜂鸣声。 当达到MaxTime中指定的秒数时,录音将会完成,或者当设置TerminateByDtmf属性时,主叫方按下DTMF键。 录制的音频可以自动保存到文件中。 输入属性如下:

  • 哔声:如果为真,录音开始前会发出一声音。
  • 提示:录制前播放提示的列表(提示类型中描述了可用的提示类型)。
  • MaxTime:记录的最长持续时间(以秒为单位)。
  • TerminateByDtmf:如果为真,则任何DTMF按键将停止录制。
  • SaveToFile:如果为true,录制的音频将被保存到FileName指定的文件中。 该值是一个表达式。
  • FileName:必须保存录像文件的名称。 仅当SaveToFile评估为true时有效。 该值是一个表达式。

当记录结束时,其一个分支(“录音”或“无记录”)继续执行。 执行后,记录组件会显示以下输出属性:

  • 结果:录音结果:
  • NothingRecorded:没有录音。
  • StopDigit:通过DTMF按键停止录制。
  • Completed:通过达到最大音频长度停止录制。
  • 持续时间:录制音频的持续时间(以秒为单位)。
  • StopDigit:当Result = RecordResult.StopDigit时,用户按下的DTMF数字。
  • AudioId:包含音频的变量,可用于将其播放回用户。

转移

图片5

使用此组件传输呼叫。 只支持盲传。 该呼叫将与CFD应用程序断开连接,并转移到指定的目的地。 输入属性如下:

  • 目的地:必须传送呼叫的目的地号码。 该值是一个表达式。

当传输完成时,断开处理程序流程将继续执行,因为呼叫与应用程序断开连接。

拨打电话

图片6

该组件允许在双方之间进行外拨呼叫。 该语音应用程序将不会处理此呼叫。 组件指示3CX调用Origin中指定的号码,将其置于保持状态,然后调用Destination中指定的号码。 当双方相连时,3CX将连接在一起。 该组件例如用于从内部扩展名到外部号码的呼叫是有用的。 输入属性如下:

  • 原产地:呼叫的第一方的号码。 该值是一个表达式,因此您可以从数据库获取数字。
  • 目的地:呼叫的第二方的号码。 该值是一个表达式,因此您可以从数据库获取数字。

断开电话

该组件断开当前呼叫。 它没有特殊的输入属性,在执行后不会显示任何输出属性。 当该组件执行结束时,在Disconnect处理程序流程上继续执行。

图片7

该组件允许加密数据,解密数据和执行散列计算。支持的算法是用于加密和解密的TripleDES,以及执行哈希计算的MD5算法。 TripleDES算法允许使用已知的密钥加密和解密文本。哈希计算是一种单向算法,原始值不能从散列中获取。

加密和MD5哈希计算的结果是一个字节数组。 CFD需要对字节数组进行编码,以便将它们存储为字符串。有两种可能的编码格式:十六进制和Base64。十六进制格式由每个字节的表示形式表示为十六进制(从00到FF)的字节值的两个字符。 Base64格式用于根据世界范围内已知的格式(http://en.wikipedia.org/wiki/Base64)对字节进行编码。

当使用TripleDES算法时,密钥必须是24个字符的字符串。要处理的文本是一个返回字符串的表达式。输入属性如下:

  • 算法:使用算法。 它可以是TripleDES或HashMD5。
  • 格式:用于将加密流转换为文本的编码格式。 在加密数据时,这是如何编写结果的。 解密数据时,输入文本是如何到达的。 它可以是十六进制或Base64。
  • 动作:要执行的动作。 仅当算法为TripleDES时有效。 它可以是加密或解密。
  • Key:用于对称算法的秘密密钥。 仅当算法为TripleDES时有效。 TripleDES必须有24个字符的长度。
  • 文本:加密,解密或计算哈希的文本。 该值是一个表达式。

执行后,Encryption组件会公开以下输出属性:

结果:包含加密,解密或MD5哈希结果,根据指定的加密算法进行编码。

数据库访问

图片8

该组件允许在SQL Server或PostgreSQL数据库上执行操作。 您可以执行三种不同类型的语句:查询,非查询和标量。

  • 查询语句返回一个记录列表。 例如,“SELECT * FROM TABLE”。
  • NonQuery语句执行插入或修改,并返回受影响的记录数量。 例如,“INSERT VALUES(VALUE1)INTO TABLE”。
  • 标量语句执行数据搜索,但返回唯一值。 例如,“SELECT COUNT(*)FROM TABLE”。

该组件具有以下输入属性:

  • DatabaseType:数据库的类型。它可以是SqlServer或PostreSQL。
  • UseConnectionString:True设置连接字符串,或False分别设置每个属性。
  • ConnectionString:数据库连接字符串。仅当UseConnectionString设置为True时有效。该值是一个表达式。
  • 服务器:数据库服务器名称或IP地址。仅当UseConnectionString设置为False时有效。该值是一个表达式。
  • 端口:必须建立连接的端口号。仅当UseConnectionString设置为False时有效。该值是一个表达式。
  • 数据库:连接到服务器时要使用的数据库。仅当UseConnectionString设置为False时有效。该值是一个表达式。
  • UserName:连接数据库时使用的用户名。仅当UseConnectionString设置为False时有效。该值是一个表达式。
  • 密码:连接数据库时使用的密码。仅当UseConnectionString设置为False时有效。该值是一个表达式。
  • StatementType:语句的类型。使用Query执行返回行的SQL语句(例如SELECT)。使用NonQuery执行不返回行的SQL语句(例如INSERT,DELETE,UPDATE)。使用Scalar执行返回单个值的SQL语句(例如,SUM,COUNT)。
  • 超时:在终止尝试执行SQL语句并生成错误之前等待的秒数。值为0表示没有限制,应该避免,因为尝试执行SQL语句可能无限期地等待。
  • SqlStatement:要执行的SQL语句,包括可变参数的占位符。
  • 参数:与SQL语句一起使用的参数列表。

在某些情况下,单独设置服务器,端口,数据库,用户名和密码是不够的,因为您可能需要一些特殊属性才能连接到数据库。 在这种情况下,可以直接为SQL Server或PostreSQL设置连接字符串。

“SQL语句”输入属性可能包含可变部分。 为了在SQL语句中插入参数值,请按文本框右侧的按钮,并选择所需的参数。 使用表达式设置参数。 为了创建参数的表达式,请按网格最后一列上的省略号按钮。

数据库访问组件在执行后公开以下输出属性,其中包含根据所选语句的类型的处理结果:

  • QueryResult:包含从数据库返回的每一行的表。 表达式编辑器函数GET_TABLE_ROW_COUNT和GET_TABLE_CELL_VALUE允许读取整个表。 第一个函数返回表中的记录数量,因此可以通过循环组件进行分步。 第二个功能允许获取指定行和列号的单元格值。 索引从零开始。
  • NonQueryResult:包含受影响的行数的整数值。
  • ScalarResult:包含从数据库返回的值的字符串值。

E-Mai发送器

图片9

此组件允许发送电子邮件,包括附件。 您可以使用用户名和密码的身份验证连接,指定发件人和不同的收件人地址(To,CC或BCC),设置主题和邮件正文以及附加文件。 输入属性如下:

  • SMTP服务器:SMTP服务器名称或IP地址。该值是一个表达式。
  • 服务器端口:必须建立与SMTP服务器的连接的端口号。该值是一个表达式。
  • EnableSSL:指定是否必须使用SSL完成与SMTP服务器的连接。该值是一个表达式。
  • UserName:连接到SMTP服务器时使用的用户名。该值是一个表达式。
  • 密码:连接到SMTP服务器时使用的密码。该值是一个表达式。
  • 来自:邮件的“从”字段中使用的电子邮件地址。该值是一个表达式。
  • 至:邮件的“到”字段中要使用的电子邮件地址,以逗号分隔,如果多于一个。该值是一个表达式。
  • CC:在邮件的“cc”字段中使用的电子邮件地址,以逗号分隔,多于一个。该值是一个表达式。
  • BCC:在邮件的“bcc”字段中使用的电子邮件地址,以逗号分隔,多于一个。该值是一个表达式。
  • 主题:电子邮件的主题。该值是一个表达式。
  • 正文是HTML:表示正文是HTML还是纯文本。
  • 正文:电子邮件的正文。该值是一个表达式。
  • 优先级:电子邮件的优先级。
  • IgnoreMissingAttachments:True以静默方式忽略运行时缺少的附件文件,False会在发生该情况时导致运行时错误。
  • 附件:使用电子邮件发送的附件列表。

发送附件时,要发送的附件的名称是一个常量字符串值(不需要引号)。 附件文件使用返回3CX服务器中文件路径的表达式进行设置。 为了在服务器中创建附件文件的表达式,请按网格最后一列的省略号按钮。

启动外部脚本

图片10

该组件允许执行C#代码(.NET Core 1.0)。 您需要指定对象类型(名称空间和类名称)和方法名称。 应用程序将创建一个指定对象的实例,并使用提供的参数列表调用该实例上指定的方法。 输入属性如下:

  • C#文件:包含要执行的代码的C#文件。 请注意,您必须使用NET Core 1.0代码,并且不能使用NET Core 1.0以外的类。
  • ObjectType:要创建的对象的类型。 这是包含命名空间的类名。
  • MethodName:执行方法的名称。 将创建ObjectType类型的对象,并在该对象实例上执行该方法。
  • 参数:调用方法时使用的参数列表。 每个参数都可以是一个表达式。 每个参数的名称是信息性的,不用于验证方法来调用。

从下拉列表中选择C#文件,其中包含项目“Libraries”文件夹中的每个C#文件。 如果文件系统不在列表中,您可以浏览文件系统中的C#文件。

参数名称是常量字符串值,不需要引号。 使用表达式设置参数值。 为了创建参数的表达式,请按网格最后一列上的省略号按钮。

启动外部脚本组件在执行后会显示以下输出属性:

  • 返回值:包含调用方法返回的值。

读/写文件

图片11

该组件允许读取和写入文本文件。

读取操作是逐行执行的。 可以指定要读取的第一行的索引(从零开始)以及要读取的行的数量。 它也可以配置为一次读取整个文件。

写入操作允许以不同的模式打开文件:“附加”,“创建”,“创建新”,“打开”,“打开创建”和“截断”。 “附加”模式将在文件末尾添加文本。 “创建”模式将创建文件,如果它不存在,或者截断它,如果它已经存在,所以它始终以空文件开头。 “CreateNew”非常相似,但文件不能存在以成功。 “打开”模式将直接打开文件,并从头开始写入它,覆盖它上面的内容,而“OpenOrCreate”几乎相同,但如果文件不存在,则会创建它。 最后,“截断”模式必须打开现有文件并截断它。 要写入的数据是“内容”属性中的信息。 如果设置了AppendFinalCrLf属性,则在行末添加回车符和换行字符。

该组件具有以下输入属性:

  • FileName:读取或写入文件的绝对路径。 该值是一个表达式。
  • OpenMode:当Action被写入时,使用Append,Create,CreateNew,Open,OpenOrCreate或Truncate。 当Action被读取时使用Open或OpenOrCreate。
  • 动作:要执行的动作。 它可以是读或写。
  • 内容:写入文件的文字。 只有当Action被写入时才有效。 该值是一个表达式。
  • AppendFinalCrLf:True在写入文件后附加最后一个CR LF。 否则的话。 只有当Action被写入时才有效。
  • LinesToRead:从文件读取的行数。 仅当Action被读取时才有效。 该值是一个表达式。
  • FirstLineToRead:从文件读取的第一行的从零开始的索引。 仅当Action被读取时才有效。 该值是一个表达式。
  • ReadToEnd:覆盖LinesToRead,直到达到文件结尾为止。 仅当Action被读取时才有效。 该值是一个表达式。

“读/写到文件”组件在执行后会显示以下输出属性:

  • EOF_Reached:指示当Action被读取时文件的结尾是否已经到达。
  • 结果:包含当Action被读取时从文件读取的文本。

打开一个套接字

图片12

该组件允许使用TCP或UDP协议发送和接收数据。 您需要指定目标服务器和端口,以及要发送的信息。 如果设置了属性WaitForResponse,它将等待服务器的响应,否则在信息发送后立即关闭套接字。 输入属性如下:

  • ConnectionType:要建立的连接类型。 TCP或UDP。
  • 服务器主机:服务器主机名或IP地址。 该值是一个表达式。
  • 端口:服务器侦听传入连接的端口号。 该值是一个表达式。
  • 数据:要发送到服务器的数据。 该值是一个表达式。
  • WaitForResponse:True发送数据后等待响应。 否则的话。

此组件在执行后会显示以下输出属性:

响应:如果设置了WaitForResponse属性,则包含服务器响应。

HTTP请求

图片13

该组件向Web服务器发送HTTP请求。 您可以使用所有可用的方法(DELETE,GET,HEAD,OPTIONS,POST,PUT,TRACE)。 输入属性如下:

  • URI:请求必须发送的URI。 该值是一个表达式。
  • 请求类型:HTTP请求的类型。 可用值为DELETE,GET,HEAD,OPTIONS,POST,PUT,TRACE。
  • 内容类型:当HTTP请求需要向服务器发送内容时,此属性指定内容类型。
  • 内容:当HTTP请求需要向服务器发送内容时,该属性指定实际的内容。 该值是一个表达式。
  • 超时:等待HTTP请求完成的时间,以秒为单位。 零意味着永远等待。
  • 标题:请求中要发送的标题列表。 可以使用表达式设置每个标题。

标题名称是常量字符串值,不需要引号。 标题值是表达式。 为了创建标题值的表达式,请按网格最后一列上的省略号按钮。

执行后,HTTP请求组件会显示以下输出属性:

  • 响应状态代码:包含Web服务器返回的HTTP状态代码。 数字200(OK)表示请求被成功处理。
  • 响应内容:此属性包含来自Web服务器的响应。

Web服务(POST)

图片14

该组件允许执行Web服务。 它使用POST方法执行Web请求到指定的URI和WebServiceName。 例如,如果URI为“http://www.example.com”,WebServiceName为“WSName”,组件将发送HTTP请求到“http://www.example.com/WSName”。 输入属性如下:

  • URI:Web服务所在的URI。 该值是一个表达式。
  • WebServiceName:要调用的方法的名称。 该值是一个表达式。
  • 内容类型:要发送到服务器的内容类型。
  • 内容:要发送到服务器的内容。 该值是一个表达式。
  • 超时:等待HTTP请求完成的时间,以秒为单位。 零意味着永远等待。
  • 标题:请求中要发送的标题列表。 可以使用表达式设置每个标题。

标题名称是常量字符串值,不需要引号。 标题值是表达式。 为了创建标题值的表达式,请按网格最后一列上的省略号按钮。

执行后,Web Service(POST)组件会公开以下输出属性:

  • 响应状态代码:包含Web服务器返回的HTTP状态代码。 数字200(OK)表示请求被成功处理。
  • 响应内容:此属性包含来自Web服务器的响应。

用户自定义的组件

用户自定义的组件将自动添加到工具箱中。 它们可用于分组通用功能,降低图形复杂度以及本地化错误处理程序或断开处理程序。

这些组件公开的公共属性将自动显示在“属性”窗口中。 用户可以为这些属性设置表达式,以便自定义组件行为。

组件可以在内部更新属性值,因此它们也可以用作组件输出。