freeswitch嵌入python脚本

本文介绍如何在FreeSWITCH 1.6.8版本中启用Python模块,并通过示例展示如何编写Python脚本来实现电话呼叫处理。适用于Debian 8.5_x64系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

操作系统:debian8.5_x64

freeswitch 版本 : 1.6.8

python版本:2.7.9

开启python模块

安装python lib库

apt-get install python-dev

编辑modules.conf,开启python模块:

languages/mod_python

编译安装:

./configure && make && make install

在modules.conf.xml中开启python支持;

启动freeswitch;

测试脚本

API测试

添加测试脚本:

文件路径:/usr/local/freeswitch/scripts/test1.py

文件内容:

import freeswitch

def fsapi(session,stream,env,args):
    stream.write("hello")
    freeswitch.consoleLog("info","test")

控制台测试

freeswitch@debian8> python test1
hello
2016-09-06 23:06:09.069753 [NOTICE] mod_python.c:212 Invoking py module: test1
2016-09-06 23:06:09.069753 [DEBUG] mod_python.c:283 Call python script
2016-09-06 23:06:09.069753 [INFO] switch_cpp.cpp:1360 test
2016-09-06 23:06:09.069753 [DEBUG] mod_python.c:286 Finished calling python script
freeswitch@debian8>

APP测试

文件路径: /usr/local/freeswitch/scripts/testCall.py

文件内容:

import freeswitch
def handler(session, args):
    session.answer()
    freeswitch.console_log("info","testCall")
    session.streamFile("local_stream://moh")
    freeswitch.msleep(3000)
    session.hangup()

在dialplan中加入如下配置:

<extension name="python test script">
        <condition field="destination_number" expression="^400123456$">
            <action application="python" data="testCall"/>
        </condition>
</extension>

注册话机,拨打400123456号码即可听到moh声音,同时看到freeswitch控制台日志。

本文github地址:

https://github.com/mike-zhang/mikeBlogEssays/blob/master/2016/20160906_freeswitch嵌入python脚本.md

欢迎补充 

### 关于 FreeSWITCH 中 Lua 脚本的使用 在 FreeSWITCH 控制台中,可以通过两种方式运行 Lua 脚本:`lua` 和 `luarun` 命令。当使用 `lua` 命令时,控制台会被阻塞直到脚本完成执行[^1]。而通过 `luarun` 执行,则会在新线程中启动脚本,不会影响控制台操作,不过这种方式下脚本无法访问流对象。 #### 示例 1: 创建简单的 Lua 脚本并调用 假设我们希望编写一个简单的 Lua 脚本来播放一段欢迎语音: ```lua -- welcome.lua session:answer() session:sleep(2000) session:streamFile("ivr/8000/wilkommen.wav") ``` 此脚本的功能如下: - 首先接听来电 (`session:answer()`)。 - 接着暂停两秒以便稳定连接状态 (`session:sleep(2000)`)。 - 最后播放预定义的声音文件 [`wilkommen.wav`](`session:streamFile()`)[^4]。 要让这个脚本生效,在拨号计划配置文件 `/etc/freeswitch/dialplan/default.xml` 中添加以下扩展名: ```xml <extension name="Welcome Call"> <condition field="destination_number" expression="^1234$"/> <action application="lua" data="welcome.lua"/> </extension> ``` 这样拨打号码 `1234` 的呼叫将会触发该 Lua 脚本。 #### 示例 2: 订阅事件 利用 Lua 脚本还可以实现更复杂的逻辑处理,比如监听特定类型的事件。下面是一个例子展示如何设置事件消费者来接收指定名称的事件通知: ```lua local event_name = "CUSTOM" local sub_class_type = "my_event" function handle_event(event) local body = event:getBody() print(body) end con = freeswitch.EventConsumer(event_name, sub_class_type) while true do local evt = con:popEvent() if evt then handle_event(evt) end end ``` 上述代码片段展示了如何订阅自定义事件,并在其发生时打印其主体内容[^2]。 #### 示例 3: 开发小游戏应用 另一个有趣的案例是在电话系统上开发一个小游戏。例如设计一个猜数字的游戏程序,用户输入一系列按键尝试猜测随机生成的目标数值。以下是简化版的设计思路概述: 修改默认拨号计划中的 XML 定义部分,增加一个新的条件分支指向我们的游戏脚本位置: ```xml <extension name="Number Guessing Game"> <condition field="destination_number" expression="^7890$"/> <action application="lua" data="/path/to/game.lua"/> </extension> ``` 随后创建对应的 Lua 游戏逻辑脚本 game.lua 来响应用户的交互行为[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值