FreeSWITCH默认使用使用XML Dialplan配置各种呼叫流程,但是功能相对有限,为此Freeswitch通过嵌入其他语言(如Lua、JavaScript、Python、Perl、Java等)解析器扩展其功能。
Lua模块默认是自动加载(Lua5.2),文档全面且其本身轻量,所以是最佳的选择。
Lua环境中,Freeswitch自动生成一个session对象。默认情况下,Lua执行完成后会自动挂断电话,如果想在执行完成后继续通话,需要在Lua中调用session:setAutoHangup(false)。
session包含的主要函数:
answer:应答
answered:是否已应答
bridged:是否已桥接
consoleLog:日志输出,session:consoleLog(“info”, “show info”)
execute(app, data):执行App,session:execute(“playback”, mySound)
executeString(api_string):执行字符串中的命令,session:executeString("playback "…mySound)
getVariable:获取通道变量,get_uuid(相当于getVariable(“uuid”))
setVariable:设定通道变量
hangup:挂机
streamFile:放音,相当于app中的playback
recordFile:录音
read:相当于app中的read,用于播放一个声音并获取DTMF。
playAndGetDigits:相当于app中的play_and_get_digits。session:playAndGetDigits (min_digits, max_digits, max_attempts, timeout, terminators, prompt_audio_files, input_error_audio_files, digit_regex, variable_name, digit_timeout, transfer_on_failure)
sleep:睡眠,毫秒数
setInputCallback:在放音或录音时,设定用户按下DTMF键后触发的一些功能。
sayPhrase:session:sayPhrase(macro_name [,macro_data] [,language])
speak:使用指定tts朗读文本
say:使用预定义的语法读出日期、时间、数字等。
transfer:转移
其他常用Freeswitch命令:
fsApi=freeswitch.API():获取调用API的接口,fsApi:executeString(…)执行API命令
freeswitch.bridge:桥接两个通道
freeswitch.consoleLog:输出日志
freeswitch.getGlobalVariable:获取全局变量,freeswitch.getGlobalVariable(“script_dir”)获取脚本文件的路径