gpt4 book ai didi

freeswitch开源通信 python模块介绍

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章freeswitch开源通信 python模块介绍由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1、概述

freeswitch支持多种语言的业务开发,包括C/C++,java,python,js,lua,Golang等等.

freeswitch在使用python做业务开发时,有俩种接入方式,一种是ESL接口,另一种是mod_python模块.

python的ESL接口是通过socket套接字与freeswitch进行命令交互,包括发送命令、命令响应和事件回调等,类似于在外部增加一个第三方模块控制fs行为.

ESL接口部分会在后续的章节中详细介绍.

今天我们要介绍的是fs内部的mod_python语言支持模块,该模块允许我们使用python脚本开发fs呼叫控制流程.

2、环境

centos:CentOS release 7.0 (Final)或以上版本 。

freeswitch:v1.8.7 。

GCC:4.8.5 。

3、安装mod_python模块

freeswitch源码安装时,默认不安装mod_python模块,需要我们进入目录编译安装.

?
1
2
3
4
5
6
7
cd / root / freeswitch - 1.8 . 7 / src / mod / languages / mod_python
make install
 
cd / usr / local / freeswitch / mod
ll - tr
- rwxr - xr - x. 1 root root 753208 9 14 10 : 41 mod_python.so
- rwxr - xr - x. 1 root root 1360 9 14 10 : 41 mod_python.la

4、python脚本

增加testapi.py脚本 。

?
1
2
3
4
5
vi / usr / local / freeswitch / scripts / testapi.py
import freeswitch
def fsapi(session,stream,env,args):
     stream.write( "hello" )
     freeswitch.consoleLog( "info" , "test" )

增加testapp.py脚本 。

?
1
2
3
4
5
6
7
8
vi / usr / local / freeswitch / scripts / testapp.py
import freeswitch
def handler(session, args):
  session.answer()
  freeswitch.console_log( "info" , "testCall\n" )
  session.streamFile( "local_stream://moh" )
  freeswitch.msleep( 3000 )
  session.hangup()

5、配置启动

修改freeswitch模块加载配置文件 。

?
1
2
3
4
cd / usr / local / freeswitch / conf / autoload_configs
vi modules.conf.xml
<! - - Languages - - >
<load module = "mod_python" / >

修改dialplan拨号计划 。

?
1
2
3
4
5
6
7
8
9
10
11
cd / usr / local / freeswitch / conf / dialplan
vi public.xml
<include>
<context name = "public" >
<extension name = "test" >
<condition>
<action application = "python" data = "testapp" / >
< / condition>
< / extension>

启动freeswitch 。

?
1
2
3
4
5
6
7
8
cd / usr / local / freeswitch / bin
. / freeswitch - nonat
2021 - 09 - 14 10 : 57 : 06.392800 [NOTICE] mod_python.c: 551 Python Framework Loading...
2021 - 09 - 14 10 : 57 : 06.405965 [CONSOLE] switch_loadable_module.c: 1540 Successfully Loaded [mod_python]
2021 - 09 - 14 10 : 57 : 06.405982 [NOTICE] switch_loadable_module.c: 292 Adding Application 'python'
2021 - 09 - 14 10 : 57 : 06.406012 [NOTICE] switch_loadable_module.c: 315 Adding Chat Application 'python'
2021 - 09 - 14 10 : 57 : 06.406030 [NOTICE] switch_loadable_module.c: 338 Adding API Function 'pyrun'
2021 - 09 - 14 10 : 57 : 06.406046 [NOTICE] switch_loadable_module.c: 338 Adding API Function 'python'

6、测试

在freeswitch命令行中输入命令,使用python调用API接口 。

?
1
2
3
4
freeswitch@localhost.localdomain> python testapi
2021 - 09 - 14 11 : 13 : 56.068722 [NOTICE] mod_python.c: 212 Invoking py module: testapi
2021 - 09 - 14 11 : 13 : 56.088701 [INFO] switch_cpp.cpp: 1443 test
hello

在日志打印中,我们可以看到mod_python模块调用了testapi脚本,并打印了“test“和”hello“.

注意事项,python调用命令中,python脚本的后缀“.py“要去掉.

通过其他sip server发送呼叫请求到本机,查看日志:

?
1
2
3
4
5
6
7
8
9
10
11
2021 - 09 - 14 11 : 24 : 40.988720 [NOTICE] switch_channel.c: 1114 New Channel sofia / external / 10011 @ 192.168 . 0.110 [ 73b09c9b - 6a62 - 4372 - 839b - 4c076af7dfc2 ]
2021 - 09 - 14 11 : 24 : 40.988720 [INFO] mod_dialplan_xml.c: 637 Processing 10011 < 10011 > - > 10012 in context public
2021 - 09 - 14 11 : 24 : 40.988720 [NOTICE] mod_python.c: 212 Invoking py module: testapp
2021 - 09 - 14 11 : 24 : 40.988720 [NOTICE] sofia_media.c: 92 Pre - Answer sofia / external / 10011 @ 192.168 . 0.110 !
2021 - 09 - 14 11 : 24 : 40.988720 [NOTICE] switch_cpp.cpp: 685 Channel [sofia / external / 10011 @ 192.168 . 0.110 ] has been answered
2021 - 09 - 14 11 : 24 : 40.988720 [INFO] switch_cpp.cpp: 1443 testCall
2021 - 09 - 14 11 : 24 : 40.988720 [WARNING] mod_local_stream.c: 870 Unknown source moh, trying 'default'
2021 - 09 - 14 11 : 24 : 40.988720 [ERR] mod_local_stream.c: 878 Unknown source default
2021 - 09 - 14 11 : 24 : 43.988724 [NOTICE] switch_cpp.cpp: 733 Hangup sofia / external / 10011 @ 192.168 . 0.110 [CS_EXECUTE] [NORMAL_CLEARING]
2021 - 09 - 14 11 : 24 : 44.008687 [NOTICE] switch_core_session.c: 1744 Session 2 (sofia / external / 10011 @ 192.168 . 0.110 ) Ended
2021 - 09 - 14 11 : 24 : 44.008687 [NOTICE] switch_core_session.c: 1748 Close Channel sofia / external / 10011 @ 192.168 . 0.110 [CS_DESTROY]

在日志打印中,我们可以看到在dialplan拨号计划的执行过程中,通过mod_python调用了“testapp“,testapp.py脚本中应答了这通呼叫,打印日志”testcall“,并在3秒后挂机.

总结:

freeswitch做业务开发时,支持多种语言接入,很方便,用户可以根据自己的技能栈来选择接入方式和语言.

但是,不同语言在呼叫性能上肯定有差异,这个就需要用户自己来测试并评估实际使用中的差别了.

到此这篇关于有关freeswitch python模块的详情介绍的文章就介绍到这了,更多相关freeswitch python模块内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://www.cnblogs.com/qiuzhendezhen/p/15272323.html 。

最后此篇关于freeswitch开源通信 python模块介绍的文章就讲到这里了,如果你想了解更多关于freeswitch开源通信 python模块介绍的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com