基于freeswitch的开发的四种方式:
swig 介绍
freeswitch 中的嵌入式脚本
这些嵌入式脚本主要用于编写IVR类的应用,主要用来控制一路通话的呼叫流程。
LUA
Lua模块的文档也是最全的。
Lua 语法简介
Lua 的语法非常简介易懂。
相似性
区别
其他
将电话路由到 Lua 脚本
Session 相关函数
Session 相关的几个常用的函数:
身份证号的例子用 Lua 改写:
Lua中的 read 比 Dialplan App中的read少了一个参数,因为session:read()能返回值。
timeout 是收齐所有号的超时值,digit_timeout是允许的两次按键之音的时间间隔最大值,transfer_on_failure 表示如果失败后是否转到 Dialplan 中的一个 Extension上;格式是 failed XML dialplan。
非 Session 函数和独立的 Lua脚本
Event 相关函数
一个完整的例子:
保存到 /tmp/event.lua 中,执行结果:
Chat 相关函数
下面的 Lua脚本可以在 Chatplan 中执行,收到消息后先打印出来,然后修改目的号码和主机,并且发送出去。
在 Chatplan中可以使用以下方法调用 Lua脚本:
Lua 拨号计划
Dialplan 有三个要素:Extension、Context、Dialplan的名字,在 Lua Dialplan中,dialplan的名字是Lua,context是Lua脚本的路径。
把脚本另存为 /tmp/db.lua,使用originate测试:
originate 首先呼叫 uesr/1000,接听后,转入Lua Dialplan中的/tmp/dp.lua 这一 context 进行路由。
可以在 XML Dialplan 中转入 Lua dialplan:
执行 sofia profile internal rescan。如果是注册用户拨打,还需要修改 User Directory 中的 user_context,如 1000.xml:
连接数据库
执行结果:
查看数据库:
其他脚本语言
JavaScript
是web浏览器上最主流的编程语言,最早用于配合HTML渲染页面,遵循EMCAScript标准。
通过加载 mod_v8 模块可以使用JavaScript解析器,该模块基于Google的V8 JavaScript库。
使用JavaScript(app)执行一个Session相关的脚本,或jsrun(api)执行一个非Session相关的脚本。
Python
安装:
在freeswitch的源代码目录中:
可以将Lua或js脚本放到任意路径中,但python有自己的环境和Package/module机制,因而需要配置特殊的路径。/usr/lib/python2.7/dist-packages/。