支持的变量和函数

本文介绍 Yeastar 消息流程设计中支持的变量和函数。

变量

可在支持表达式的组件中 (如 条件组件) 使用变量动态获取存储在当前消息流程中的值。Yeastar 消息流程设计支持以下两种类型的变量:
  • Session 变量:存储当前消息会话中的相关信息,在消息流程中全局可用,不依赖特定组件。

    更多信息,请参见 Session 变量

  • 组件变量:存储特定组件返回的数据,仅在对应组件添加至消息流程后可用。

    更多信息,请参见 组件变量

Session 变量
变量 类型 说明 示例值
$Session.contactNumber String 客户号码。 "15812340987"
$Session.channelNumber String 消息渠道号码。 "LC00113"
$Session.contactName String 与客户号码匹配的联系人的姓名。 "Leo Bell"
$Session.contactFirstName String 与客户号码匹配的联系人的名称。 "Leo"
$Session.contactLastName String 与客户号码匹配的联系人的姓氏。 "Bell"
组件变量
注:
  • 在将下表中的组件添加到消息流程中后,系统将组件的返回信息存储在相应的变量中。支持表达式的组件可以在整个消息流程中使用这些变量。
  • 由于同一消息流程中可添加多个相同组件,系统会按照添加顺序为每个组件 ID 编号 (如 Menu 1、Menu 2)。为确保正确获取到指定组件的输出结果,使用变量时需带上对应的编号。
变量 类型 说明 示例值
菜单 组件
$Menu{index}.receivedMessage String 客户回复菜单的消息内容。 "1"
等待回复 组件
$WaitForReply{index}.receivedMessage String 客户回复的消息内容。 "转人工。"
获取分机状态 组件
$GetExtensionStatus{index}.currentProfileName String

分机当前在线状态的名称。

注: 使用函数判断分机的在线状态时,支持的状态常量如下:
  • "Available"
  • "Away"
  • "Business Trip"
  • "Do Not Disturb"
  • "Lunch Break"
  • "Off Work"
"Available"
$GetExtensionStatus{index}.currentProfile String 分机当前在线状态名称和详细信息。 "Available,work"
$GetExtensionStatus{index}.isUnavailable Boolean 分机是否未注册。 False
获取分机信息 组件
$GetExtensionInfo{index}.number String 分机号码。 "1001"
$GetExtensionInfo{index}.name String 分机名称。 "Phillip Huff"
$GetExtensionInfo{index}.email String 邮箱地址。 "phillip@sample.com"
$GetExtensionInfo{index}.mobileNumber String 手机号码。 "15880123456"
获取企业联系人信息 组件
$GetCompanyContactInfo{index}.contactName String 联系人姓名。 "Leo Poll"
$GetCompanyContactInfo{index}.company String 公司名称。 "YS"
$GetCompanyContactInfo{index}.email String 邮箱地址。 "leo@ys.com"
$GetCompanyContactInfo{index}.phonebookList String 联系人所属的企业联系人群组。 "All"
$GetCompanyContactInfo{index}.remark String 备注信息。 "remark"
$GetCompanyContactInfo{index}.business String 办公号码。 "01082345678"
$GetCompanyContactInfo{index}.business2 String 办公号码 2。 "02160123456"
$GetCompanyContactInfo{index}.mobile String 手机号码。 "13800001234"
$GetCompanyContactInfo{index}.mobile2 String 手机号码 2。 "15900005678"
$GetCompanyContactInfo{index}.home String 家庭号码。 "01087654321"
$GetCompanyContactInfo{index}.home2 String 家庭号码 2。 "075523456789"
$GetCompanyContactInfo{index}.businessFax String 公司传真。 "01082345679"
$GetCompanyContactInfo{index}.homeFax String 家庭传真。 "02160123457"
$GetCompanyContactInfo{index}.other String 其他号码。 "4008880000"
数据库访问 组件
$DatabaseAccess{index}.queryResult Object

查询语句返回的结果集 (表格形式)。

提示: 你可以结合以下函数,从查询结果中获取具体数据:
  • GET_TABLE_ROW_COUNT(table):获取表格的总行数。
  • GET_TABLE_CELL_VALUE(table,row,column):获取指定行和列的单元格值。
"demo%40yeastar.com"
$DatabaseAccess{index}.nonQueryResult Integer 非查询语句返回的受影响的行数。 99
$DatabaseAccess{index}.scalarResult String Scalar 查询语句返回的单一值。 "10"
HTTP Request component
$HttpRequest{index}.responseContent String HTTP 请求响应的正文内容。

{"authenticated": true, "user": "10000"}

$HttpRequest{index}.responseStatusCode String HTTP 请求响应码。
注: 使用函数判断响应码时,确保比较的常量为纯数字,不包含状态消息短语。
"200"

函数

函数用于判断条件和处理数据,实现对消息流程的灵活控制。Yeastar 消息流程设计支持以下函数:

Boolean

AND
对两个或多个条件执行逻辑 “与” 运算,仅当所有条件同时满足时才返回 True
语法
FX_AND(condition1,condition2, ...)
  • 请求类型:Boolean
  • 响应类型:Boolean
示例
FX_AND(FX_EQUAL($Menu1.reveivedMessage,"1"), FX_EQUAL($Session.contactNumber,"15812340987"))

在本例中,当客户回复菜单 1 的消息内容为 "1" 且客户号码为 "15812340987" 时,函数返回 True

OR
对两个或多个条件执行逻辑 “或” 运算,只要任一条件满足就返回 True
语法
FX_OR(condition1,condition2, ...)
  • 请求类型:Boolean
  • 响应类型:Boolean
示例
FX_OR(FX_EQUAL($Session.contactNumber,"15812340987"),FX_NOT($GetExtensionStatus1.isUnavailable))
在本例中,满足以下任一条件时,函数返回 True
  • 客户号码为 "15812340987" 。
  • 分机已注册。
NOT
对单个条件执行逻辑 “非” 运算,返回相反的布尔值。
语法
FX_NOT(condition)
  • 请求类型:Boolean
  • 响应类型:Boolean
示例
FX_NOT($GetExtensionStatus1.isUnavailable)

在本例中,如果分机未注册,函数返回 True

EQUAL
验证两个值是否相等 (值和数据类型均相同)。
语法
FX_EQUAL(value1,value2)
  • 请求类型:Any
  • 响应类型:Boolean
示例
FX_EQUAL($Session.contactNumber,"15812340987")
在本例中,如果客户号码完全等于"15812340987",函数返回 True
NOT_EQUAL
验证两个值是否不相等。
语法
FX_NOT_EQUAL(value1,value2)
  • 请求类型:Any
  • 响应类型:Boolean
示例
FX_NOT_EQUAL($GetExtensionStatus1.isUnavailable,True)
在本例中,如果分机已注册,函数返回 True
CONTAINS
验证第一个字符串是否包含第二个字符串。
语法
FX_CONTAINS(value1,value2)
  • 请求类型:String
  • 响应类型:Boolean
示例
FX_CONTAINS($GetCompanyContactInfo1.company,"Yeastar")
在本例中,如果公司名称包含 "Yeastar",函数返回 True
GREATER_THAN
验证第一个值是否大于第二个值。
语法
FX_GREATER_THAN(value1,value2)
  • 请求类型:Integer
  • 响应类型:Boolean
示例
FX_GREATER_THAN($DatabaseAccess1.nonQueryResult,20)
在本例中,如果 数据库访问 1 组件非查询语句返回的受影响行数大于 20,函数返回 True
GREATER_THAN_OR_EQUAL
验证第一个值是否大于或等于第二个值。
语法
FX_GREATER_THAN_OR_EQUAL(value1,value2)
  • 请求类型:Integer
  • 响应类型:Boolean
示例
FX_GREATER_THAN_OR_EQUAL($DatabaseAccess1.nonQueryResult,20)
在本例中,如果 数据库访问 1 组件非查询语句返回的受影响行数大于或等于 20,函数返回 True
LESS_THAN
验证第一个值是否小于第二个值。
语法
FX_LESS_THAN(value1,value2)
  • 请求类型:Integer
  • 响应类型:Boolean
示例
FX_LESS_THAN($DatabaseAccess1.nonQueryResult,20)
在本例中,如果 数据库访问 1 组件非查询语句返回的受影响行数小于 20,函数返回 True
LESS_THAN_OR_EQUAL
验证第一个值是否小于或等于第二个值。
语法
FX_LESS_THAN_OR_EQUAL(value1,value2)
  • 请求类型:Integer
  • 响应类型:Boolean
示例
FX_LESS_THAN_OR_EQUAL($DatabaseAccess1.nonQueryResult,20)
在本例中,如果 数据库访问 1 组件非查询语句返回的受影响行数小于或等于 20,函数返回 True
TO_BOOLEAN
将指定值转换为布尔类型。
注: 如果参数是字符串 "0""False"null,则此函数返回 False
语法
FX_TO_BOOLEAN(value)
  • 请求类型:Any
  • 响应类型:Boolean
示例
FX_TO_BOOLEAN($GetExtensionStatus1.currentProfileName)

在本例中,系统将 获取分机状态 组件返回的值转换为布尔值。例如,当前状态为 Available,函数返回 True。组件返回任意有效的状态值时,此函数返回 True

String

CONCATENATE
执行字符串拼接操作,合并多个字符串。
语法
FX_CONCATENATE(string1,string2,...)
  • 请求类型:String
  • 响应类型:String
示例
FX_CONCATENATE("Customer Name: ",$Session.contactName)
在本例中,拼接字符串 "Customer Name: " 和客户对应的联系人名称,函数返回 "Customer Name: Leo Bell"。
TRIM
移除指定字符串开头和结尾的多余字符 (例如空格、换行符等)。
语法
FX_TRIM(value)
  • 请求类型:String
  • 响应类型:String
示例
FX_TRIM(" Hello ")

在本例中,移除字符串前后的空格,函数返回 "Hello"。

LEFT
从字符串开头提取指定数量的字符。
语法
FX_LEFT(text,count)
  • 请求类型
    • text: String
    • count: Integer
  • 响应类型:String
示例
FX_LEFT("13800138000",3)
在本例中,从字符串开头提取前 3 个字符,函数返回 "138"。
MID
从指定位置开始提取指定长度的字符。
语法
FX_MID(text,start_position,length)
  • 请求类型
    • text: String
    • start_position: Integer
    • length: Integer
  • 响应类型:String
示例
FX_MID("13800138000",4,4)
在本例中,从第 4 个字符开始提取 4 个字符,函数返回 "0013"。
RIGHT
从字符串的末尾开始提取指定数量的字符。
语法
FX_RIGHT(text,count)
  • 请求类型
    • text: String
    • count: Integer
  • 响应类型:String
示例
FX_RIGHT("13800138000",4)
在本例中,提取字符串最后 4 个字符,函数返回 "8000"。
UPPER
将指定文本字符串中的所有字母转换为大写。
语法
FX_UPPER(text)
  • 请求类型:String
  • 响应类型:String
示例
FX_UPPER("Yeastar")
在本例中,将所有字母转换为大写,函数返回 "YEASTAR"。
LOWER
将指定文本字符串中的所有字母转换为小写。
语法
FX_LOWER(text)
  • 请求类型:String
  • 响应类型:String
示例
FX_LOWER("Yeastar")
在本例中,将所有字母转换为小写,函数返回 "yeastar"。
REPLACE
将指定的子字符串替换为另一个子串。
语法
FX_REPLACE(text,target,replacement)
  • 请求类型
    • text:String
    • target:String
    • replacement:String
  • 响应类型:String
示例
FX_REPLACE("+8613800138000","+86","")
在本例中,将国家代码 +86 替换为空字符串,函数返回 "13800138000"。
REPLACE_REG_EXP
使用正则表达式匹配文本中的内容,并替换为指定字符串。
语法
FX_REPLACE_REG_EXP(text,expression,replacement)
  • 请求类型
    • text: String
    • expression: String
    • replacement: String
  • 响应类型:String
示例
FX_REPLACE_REG_EXP("Call123", "[0-9]", "X")
在本例中,使用正则表达式 [0-9] 匹配所有数字字符,并将其替换为 X,返回 "CallXXX"
JSON_GET_STRING

根据指定的 key 从 JSON 对象中获取对应的字符串值。

语法
FX_JSON_GET_STRING(JSONObject,key)
  • 请求类型:

    • JSONObject:String

    • key:String

  • 响应类型:String
示例
FX_JSON_GET_STRING($HttpRequest1.responseContent,"user")
在本例中,HTTP 请求 1 组件返回的 JSON 内容如下:
{
    "authenticated": true,
    "user": "10000"
}
函数返回 user 对应的值 "10000"。
TO_STRING
将指定值转换为字符串。
语法
FX_TO_STRING(value)
  • 请求类型:Any
  • 响应类型:String
示例
FX_TO_STRING(10086)
在本例中,将 10086 转换为字符串,函数返回 "10086"。

Date Time

NOW
返回当前的日期和时间。
语法
FX_NOW()
  • 请求类型:无,无需填写参数。
  • 响应类型:dateTime
示例
FX_NOW()

在本例中,函数返回系统当前的日期和时间 "2026-08-12 17:29:08"。

Number

LEN
返回文本字符串中的字符个数。
语法
FX_LEN(text)
  • 请求类型:String
  • 响应类型:Integer
示例
FX_LEN("13800138000")
在本例中,函数返回 11,表示文本字符串长度为 11 位。
SUM
对两个或多个 32 位整型数值求和。
语法
FX_SUM(value1,value2,...)
  • 请求类型:Integer
  • 响应类型:Integer
示例
FX_SUM(100,200,300)
在本例中,对三个值进行求和,函数返回 600。
SUM_LONG
对两个或多个 64 位整型数值求和。
语法
FX_SUM_LONG(value1,value2,...)
  • 请求类型:Integer
  • 响应类型:Integer
示例
FX_SUM_LONG(1000000000,2500000000)
在本例中,对两个值进行求和,函数返回 3500000000。
NEGATIVE
返回 32 位整型数值的相反数 (负值)。
语法
FX_NEGATIVE(value)
  • 请求类型:Integer
  • 响应类型:Integer
示例
FX_NEGATIVE(100)
在本例中,函数返回 -100。
NEGATIVE_LONG
返回 64 位整型数值的相反数 (负值)。
语法
FX_NEGATIVE_LONG(value)
  • 请求类型:Integer
  • 响应类型:Integer
示例
FX_NEGATIVE_LONG(1000000000)
在本例中,函数返回 -1000000000。
MULTIPLY
对两个或多个 32 位整型值进行乘法运算。
语法
FX_MULTIPLY(value1,value2,...)
  • 请求类型:Integer
  • 响应类型:Integer
示例
FX_MULTIPLY(10,20,3)
在本例中,函数返回 600。
MULTIPLY_LONG
对两个或多个 64 位整型值进行乘法运算。
语法
FX_MULTIPLY_LONG(value1,value2,...)
  • 请求类型:Integer
  • 响应类型:Integer
示例
FX_MULTIPLY_LONG(100000,20000)
在本例中,函数返回 2000000000。
DIVIDE
对两个 32 位整型值进行除法运算,将第一个值除以第二个值。
语法
FX_DIVIDE(value1,value2)
  • 请求类型:Integer
  • 响应类型:Integer
示例
FX_DIVIDE(100,20)
在本例中,计算 100 除以 20,函数返回 5。
DIVIDE_LONG
对两个 64 位整型值进行除法运算,将第一个值除以第二个值。
语法
FX_DIVIDE_LONG(value1,value2)
  • 请求类型:Integer
  • 响应类型:Integer
示例
FX_DIVIDE_LONG(10000000000,2000000000)
在本例中,计算 10000000000 除以 2000000000,函数返回 5。
ABS
返回 32 位整型值的绝对值 (非负数)。
语法
FX_ABS(value)
  • 请求类型:Integer
  • 响应类型:Integer
示例
FX_ABS(-100)
在本例中,函数返回 100。
ABS_LONG
返回 64 位整型值的绝对值 (非负数)。
语法
FX_ABS_LONG(value)
  • 请求类型:Integer
  • 响应类型:Integer
示例
FX_ABS_LONG(-10000000000)
在本例中,函数返回 10000000000。
GET_TABLE_ROW_COUNT
返回表格中的行数。
语法
FX_GET_TABLE_ROW_COUNT(table)
  • 请求类型:不限
  • 响应类型:Integer
示例
FX_GET_TABLE_ROW_COUNT($DatabaseAccess1.queryResult)
在本例中,函数返回 数据库访问 1 组件查询结果的行数。
GET_LIST_ITEM_COUNT
返回列表中的项数。
语法
FX_GET_LIST_ITEM_COUNT(list)
  • 请求类型:不限
  • 响应类型:Integer
示例
FX_GET_LIST_ITEM_COUNT($DatabaseAccess1.queryResult)
在本例中,函数返回 数据库访问 1 组件查询结果的项数。
JSON_GET_INTEGER

根据指定的 key 从 JSON 对象中获取对应的整数值。

语法
FX_JSON_GET_INTEGER(JSONObject,key)
  • 请求类型:

    • JSONObject:String

    • key:String

  • 响应类型:Integer
示例
FX_JSON_GET_INTEGER($HttpRequest1.responseContent,"httpStatus"
在本例中,函数从组件 HTTP 请求 1 组件返回的 JSON 内容中获取 httpStatus 对应的整数值。
TO_INTEGER
将指定值转换为 32 位整型值。
语法
FX_TO_INTEGER(value)
  • 请求类型:String
  • 响应类型:Integer
示例
FX_TO_INTEGER("12345")
在本例中,将字符串 "12345" 转换为整型,函数返回 12345。
TO_LONG
将指定值转换为 64 位整型值。
语法
FX_TO_LONG(value)
  • 请求类型:String
  • 响应类型:Integer
示例
FX_TO_LONG("1234567890123")
在本例中,将字符串 "1234567890123" 转换为 64 位整型值,函数返回 1234567890123。

Object

GET_TABLE_CELL_VALUE
获取表格中指定行和列的值。
语法
FX_GET_TABLE_CELL_VALUE(table,row,column)
  • 请求类型:
    • table: Any
    • row: Integer
    • column: Integer
  • 响应类型:Object
示例
FX_GET_TABLE_CELL_VALUE($DatabaseAccess1.queryResult,0,1)
在本例中,函数返回 数据库访问 1 组件结果中第 1 行第 2 列的值。
GET_LIST_ITEM
获取列表中指定索引位置的值。
语法
FX_GET_LIST_ITEM(list,index)
  • 请求类型:

    • list:不限

    • index:Integer

  • 响应类型:Object
示例
FX_GET_LIST_ITEM($DatabaseAccess1.queryResult,2)
在本例中,函数返回 数据库访问 1 组件结果中的第三项。
GET_JSON_ARRAY_ITEM
从 JSON 数组中指定索引的对象中获取指定字段的值。
语法
FX_GET_JSON_ARRAY_ITEM(jsonData,arrayKey,index,fieldName)
  • 请求类型:
    • jsonData:String

      arrayKey:String

    • index:Integer

      fieldName:String

  • 响应类型:Object
示例
FX_GET_JSON_ARRAY_ITEM($HttpRequest1.responseContent,"data",0,"phoneNumber")
在本例中,函数返回 JSON 数组中 data 第一个对象的 phoneNumber 字段的值。
JSON_GET_OBJECT

根据指定的 key 从父级 JSON 对象中获取对应的嵌套 JSON 对象。

语法
FX_JSON_GET_OBJECT(JSONObject,key)
  • 请求类型:

    • JSONObject:String

    • key:String

  • 响应类型:Object
示例
FX_JSON_GET_OBJECT($HttpRequest1.responseContent,"data")
I在本例中,函数从 HTTP 请求 1 组件返回的 JSON 内容中获取 data 字段对应的 JSON 对象。