支持的变量和函数

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

变量

变量用于动态获取和传递数据。Yeastar 通话流程设计支持以下两种类型的变量:
  • Session 变量:存储会话的相关信息,在通话流程中全局可用,不依赖特定组件。

    更多信息,请参见 Session 变量

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

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

Session 变量
变量 类型 说明 示例值
$Session.ani String 来电号码。 "15812340987"
$Session.callid String 通话的唯一标识 ID。 "1751336277.2"
$Session.did String 通话流程关联的 DID 号码。 "5503301"
$Session.flowNum String

通话流程关联的分机号码。

"6900"
$Session.transferingNum String

若通话由其他号码转接,该字段返回转接号码。

"1000"
组件变量
注: 由于同一通话流程中可添加多个相同组件,系统会按照添加顺序为每个组件编号 (如菜单 1、菜单 2)。为确保正确获取到指定组件的输出结果,使用变量时需带上对应的编号。
变量 类型 说明 示例值
提示音 组件
$Prompt{index}.ttsResult String 提示音 组件文本转语音 (TTS) 结果。
  • PromptTTSResult.Success:文本成功转换为语音,并播放给主叫。
  • PromptTTSResult.Timeout:文本未在指定时间内转换为语音。超时后,系统将跳过该提示音,直接将主叫路由至下一个组件。
$Prompt1.ttsResult(STRING)=PromptTTSResult.Success
菜单 组件
$Menu{index}.result String

菜单 组件的输出结果。

  • MenuResult.Timeout:来电者超时未按键,进入超时目的地。
  • MenuResult.ValidOption:来电者按下有效按键,进入对应目的地。
  • MenuResult.InvalidOption:来电者按下无效按键,进入无效输入目的地。

$Menu1.result(STRING)=MenuResult.InvalidOption

$Menu{index}.ttsResult String 菜单 组件文本转语音 (TTS) 结果。
  • MenuTTSResult.Success:文本成功转换为语音,并播放给主叫。
  • MenuTTSResult.Timeout:文本未在指定时间内转换为语音。超时后,系统将跳过该提示音,直接将主叫路由至下一个组件。
$Menu1.ttsResult(STRING)=MenuTTSResult.Success
$Menu{index}.userInput String 来电者按下的按键,不含结束键 (#*)。 "2"
用户输入 组件
$UserInput{index}.result String

用户输入 组件的输出结果。

  • UserInputResult.Timeout:来电者超时未按键,进入超时目的地。
  • UserInputResult.ValidOption:来电者按下有效按键,进入对应目的地。
$UserInput1.result(STRING)=UserInputResult.Timeout
$UserInput{index}.ttsResult String 用户输入 组件文本转语音 (TTS) 结果。
  • UserInputTTSResult.Success:文本成功转换为语音,并播放给主叫。
  • UserInputTTSResult.Timeout:文本未在指定时间内转换为语音。超时后,系统将跳过该提示音,直接将主叫路由至下一个组件。
$UserInput1.ttsResult(STRING)=UserInputTTSResult.Success
$UserInput{index}.userInput String 来电者按下的按键,不含结束键 (#*)。 "2"
录音 组件
$Record{index}.ttsResult String 录音 组件文本转语音 (TTS) 结果。
  • RecordTTSResult.Success:文本成功转换为语音,并播放给主叫。
  • RecordTTSResult.Timeout:文本未在指定时间内转换为语音。超时后,系统将跳过该提示音,直接将主叫路由至下一个组件。
$Record1.ttsResult(STRING)=RecordTTSResult.Timeout
按号码拨打 组件
$DialByNumber{index}.ttsResult String 按号码拨打 组件文本转语音 (TTS) 结果。
  • DialByNumberTTSResult.Success:文本成功转换为语音,并播放给主叫。
  • DialByNumberTTSResult.Timeout:文本未在指定时间内转换为语音。超时后,系统将跳过该提示音,直接将主叫路由至下一个组件。
$DialByNumber1.ttsResult(STRING)=DialByNumberTTSResult.Success
转移 组件
$Transfer{index}.ttsResult String 转移 组件文本转语音 (TTS) 结果。
  • TransferTTSResult.Success:文本成功转换为语音,并播放给主叫。
  • TransferTTSResult.Timeout:文本未在指定时间内转换为语音。超时后,系统将跳过该提示音,直接将主叫路由至下一个组件。
$Transfer1.ttsResult(STRING)=TransferTTSResult.Success
获取分机状态 组件
$GetExtensionStatus{index}.currentProfileName String

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

注: 使用函数判断分机的在线状态时,支持的状态常量如下:
  • "Available"
  • "Away"
  • "Business Trip"
  • "Do Not Disturb"
  • "Lunch Break"
  • "Off Work"
"Available"
$GetExtensionStatus{index}.currentProfile String 分机当前在线状态名称和详细信息。 "Available,work"
$GetExtensionStatus{index}.isInCall Boolean 分机是否正在通话中。
  • True:分机注册的终端至少有一个正在通话。
  • False:分机注册的终端都未处于通话状态。
True
$GetExtensionStatus{index}.isInRing Boolean 分机是否正在响铃。
  • True:分机注册的终端至少有一个正在响铃。
  • False:分机注册的终端都未在响铃。
False
获取队列坐席 组件
$GetQueueAgent{index}.agentList Object

指定队列中处于指定状态的坐席列表,返回坐席分机号及对应状态。

"1001,Log Out;1003,Log Out;1004,Log Out"

$GetQueueAgent{index}.agentNumberList Object 指定队列中处于指定状态的坐席列表,返回坐席分机号。 "1001,1003,1004"
获取队列信息 组件
$GetQueueInfo{index}.availableAgents Integer

空闲坐席数量。

5
$GetQueueInfo{index}.unavailableAgents Integer

忙碌坐席数量。

1
$GetQueueInfo{index}.callsActive Integer

正在接听的队列来电数量。

2
$GetQueueInfo{index}.callsWaiting Integer 队列中等待接听的来电数量。 10
获取坐席状态 组件
$GetAgentStatus{index}.currentProfile String 坐席当前状态名称和信息。
注: 使用函数判断坐席状态时,支持的状态常量如下:
  • 静态坐席状态
    • "Pause{pause_reason}"
    • "Unpause"
  • 动态坐席状态
    • "Log In"
    • "Log Out"
    • "Pause{pause_reason}"
"Log Out"
$GetAgentStatus{index}.isInCall Boolean 坐席是否正在通话中。
  • True:坐席正在通话。
  • False:坐席未在通话。
True
$GetAgentStatus{index}.isInRing Boolean 坐席分机是否正在响铃。
  • True:坐席分机正在响铃。
  • False:坐席分机未响铃。
True
数据库访问 组件
$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 请求 组件
$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($UserInput1.userInput,"1"), FX_EQUAL($Session.ani,"1001"))

在本例中,当用户输入 1 且来电号码为 1001 时,函数返回 True

OR
对两个或多个条件执行逻辑 “或” 运算,只要任一条件满足就返回 True
语法
FX_OR(condition1,condition2, ...)
  • 请求类型:Boolean
  • 响应类型:Boolean
示例
FX_OR(FX_EQUAL($Session.ani,"1001"),FX_EQUAL($GetAgentStatus1.isInCall,False))
在本例中,如果来电号码为 1001 或者坐席当前未在通话,函数返回 True
NOT
对单个条件执行逻辑 “非” 运算,返回相反的布尔值。
语法
FX_NOT(condition)
  • 请求类型:Boolean
  • 响应类型:Boolean
示例
FX_NOT($GetExtensionStatus1.isInCall)

在本例中,如果分机当前未在通话中,函数返回 True

EQUAL
验证两个值是否相等 (值和数据类型均相同)。
语法
FX_EQUAL(value1,value2)
  • 请求类型:不限
  • 响应类型:Boolean
示例
FX_EQUAL($Session.ani,"1001")
在本例中,如果来电号码为字符串类型且值完全等于 "1001",函数返回 True
NOT_EQUAL
验证两个值是否不相等。
语法
FX_NOT_EQUAL(value1,value2)
  • 请求类型:不限
  • 响应类型:Boolean
示例
FX_NOT_EQUAL($GetAgentStatus1.isInRing,True)
在本例中,如果坐席当前未在响铃,函数返回 True
CONTAINS

验证第一个字符串是否包含第二个字符串。

语法
FX_CONTAINS(value1,value2)
  • 请求类型:String
  • 响应类型:Boolean
示例
FX_CONTAINS($GetExtensionStatus1.currentProfile,"Available")
在本例中,如果分机当前在线状态字段包含 Available,函数返回 True
GREATER_THAN
验证第一个值是否大于第二个值。
语法
FX_GREATER_THAN(value1,value2)
  • 请求类型:Integer
  • 响应类型:Boolean
示例
FX_GREATER_THAN($GetQueueInfo1.callsWaiting,5)
在本例中,如果队列中等待接听的来电数量大于 5,函数返回 True
GREATER_THAN_OR_EQUAL
验证第一个值是否大于或等于第二个值。
语法
FX_GREATER_THAN_OR_EQUAL(value1,value2)
  • 请求类型:Integer
  • 响应类型:Boolean
示例
FX_GREATER_THAN_OR_EQUAL($GetQueueInfo1.callsWaiting,5)
在本例中,如果队列中等待接听的来电数量大于或等于 5,函数返回 True
LESS_THAN
验证第一个值是否小于第二个值。
语法
FX_LESS_THAN(value1,value2)
  • 请求类型:Integer
  • 响应类型:Boolean
示例
FX_LESS_THAN($GetQueueInfo1.callsWaiting,5)
在本例中,如果队列中等待接听的来电数量小于 5,函数返回 True
LESS_THAN_OR_EQUAL
验证第一个值是否小于或等于第二个值。
语法
FX_LESS_THAN_OR_EQUAL(value1,value2)
  • 请求类型:Integer
  • 响应类型:Boolean
示例
FX_LESS_THAN_OR_EQUAL($GetQueueInfo1.callsWaiting,5)
在本例中,如果队列中等待接听的来电数量小于或等于 5 ,函数返回 True
TO_BOOLEAN

将指定值转换为布尔类型。

语法
FX_TO_BOOLEAN(value)
  • 请求类型:不限
  • 响应类型:Boolean
示例
FX_TO_BOOLEAN($GetExtensionStatus1.currentProfile)

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

String

CONCATENATE
执行字符串拼接操作,合并多个字符串。
语法
FX_CONCATENATE(string1,string2,...)
  • 请求类型:String
  • 响应类型:String
示例
FX_CONCATENATE("Caller",$Session.ani,"called",$Session.flowNum)
在本例中,拼接来电号码和通话流程号码,函数返回 "Caller1001called6900"。
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,"status")
在本例中,函数从上级组件 HTTP 请求 1 返回的 JSON 内容中获取 status 对应的字符串值。
TO_STRING
将指定值转换为字符串。
语法
FX_TO_STRING(value)
  • 请求类型:不限
  • 响应类型:String
示例
FX_TO_STRING(10086)
在本例中,将 10086 转换为字符串,函数返回 "10086"。

Date Time

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

在本例中,函数返回系统当前的日期和时间 "2025-07-01 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:不限
    • 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 结果中的第三项。
JSON_GET_OBJECT

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

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

    • JSONObject:String

    • key:String

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