FreeSWITCH 学习笔记(一)

本文档详细记录了FreeSWITCH的安装、配置和使用过程,包括Windows安装、源码下载、后台启动、密码修改、客户端使用、端口管理、错误排查、CLI命令及模块配置等方面,还涵盖了FreeSWITCH的日志、SIP协议、Dialplan、模块加载、用户注册、端口占用、防火墙设置、呼叫管理、音视频处理等多个关键知识点,是FreeSWITCH初学者的全面学习笔记。
摘要由CSDN通过智能技术生成

【1】FreeSWITCH学习笔记

1、Windows安装包下载地址:

http://files.freeswitch.org/windows/installer/

2、源码下载地址:

http://files.freeswitch.org/freeswitch-1.2.10.tar.gz

3、FreeSWITCH后台模式启动

命令:freeswitch -nc(即No Console)

后台模式没有控制台

4、windows平台默认密码已修改为:liu1234

5、windows平台客户端分别为:X-Lite 和 EyeBeam

6、freeswitch默认使用UDP的5060端口。如果先启动客户端,会占用这个端口,所以,建议先启动freeswitch,再启动客户端。

7、如果运行freeswitch出现以下错误,是因为端口被占用了。

Cannot lock pid file /usr/local/freeswitch/run/freeswitch.pid.

8、如果输入fs_cli,提示如下类似错误:

[ERROR] fs_cli.c:1610 main() Error Connecting [Socket Connection Error]

说明FreeSWITCH没有启动 或 mod_event_socket没有正确加载,请检查TCP的8021端口是否处于监听状态或被其他进程占用。

9、freeswitch -nonat

freeSWITCH启动时默认会启用uPnP(或NAT_PMP)协议试图查找你的路由器是否支持并在你的路由器上“打洞”,如果你的路由器不支持该协议,这一步可能耗时比较长,因而影响启动速度。

所以,如果你只是在内网测试并且一天启动很多次的话,建议关掉这个选项。

组合参数(后台模式启动),启动命令:freeswitch -nc -nonat

10、修改配置XML文件后,必须先使用命令使之生效:reloadxml

11、客户端注册错误:

(1)提示408:Request Timeout

一般都是由于防火墙引起的。关闭防火墙(本地CentOS系统):

临时关闭:service iptables stop

永久关闭:chkconfig iptables off

(2)提示408:forbidden

一般都是由于账号密码配置错误,鉴权没有通过而被禁止注册。

12、可以在freeswitch中使用originate命令发起一次呼叫。假设1000已经注册,那么命令:

originate user/1000 &echo

originate是freeswitch内部的一个命令,它用于控制freeswitch发起一个呼叫。

13、打印变量值。命令global_getvar 与 eval

global_getvar sound_prefix

eval ${sound_prefix}

global_getvar local_ip_v4

eval ${local_ip_v4}

14、自动加载模块的配置文件位置:

/usr/local/freeswitch/conf/autoload_configs/modules.conf.xml文件

15、用户目录默认配置文件在conf/directory/下,系统自带的配置文件为default.xml.

dial-string 一个至关重要的参数。

16、CentOS 系统让所有用户显示行号

输入命令:vim /etc/vimrc

在vimrc文件的最后添加:set nu

保存:wq

手动加载配置:source /etc/bashrc

这样不管是哪个用户在vim下都显示行号

17、FreeSWITCH启动后,在执行命令reloadxml时,错误提示:

+OK [[error near line 6290]: unexpected closing tag </condition>]

表示最近编辑过的xml文件格式有问题,标签形式不完整缺个“/”

18、reloadxml命令可以直接用快捷键F6执行。

console loglevel 7命令可以直接用快捷键F8执行

19、FreeSWITCH命令:查询已注册用户

sofia status profile internal  (REGISTRATIONS值:显示多少用户已注册)

具体谁是否注册?可以使用如下命令:

sofia status profile internal reg XXXX

20、默认快捷键集
  <cli-keybindings>
    <key name="1" value="help"/>
    <key name="2" value="status"/>
    <key name="3" value="show channels"/>
    <key name="4" value="show calls"/>
    <key name="5" value="sofia status"/>
    <key name="6" value="reloadxml"/>
    <key name="7" value="console loglevel 0"/>
    <key name="8" value="console loglevel 7"/>
    <key name="9" value="sofia status profile internal"/>
    <key name="10" value="sofia profile internal siptrace on"/>
    <key name="11" value="sofia profile internal siptrace off"/>
    <key name="12" value="version"/>
  </cli-keybindings>

21、dialplan中的测试条件可以迭加,但是不可以嵌套。

eg: 如下无效条件

<extension name="***">
 <condition field="***" expression="***">
 <condition field="***" expression="***">
  <action application="***"/>
 </condition>
 </condition>
</extension>

正确:
<extension name="***">
 <condition field="***" expression="***"/>
 <condition field="***" expression="***">
  <action application="***"/>
 </condition>
</extension>

22、xml dialplan支持非常丰富的功能。

但在测试或编写程序时,经常用到一些临时的或很简单的dialplan,如果每次都需要修改xml,不仅麻烦,而且执行效率低。

所以,一种短小、轻便的dialplan便因此而生了。

23、App的参数中可能会有逗号,因而会与默认的App间的逗号分隔符相冲突,以下的m语法形式将默认的逗号改为^分隔。

originate user/1000 ‘m:^playback/tmp/beep.wav^bridge:{ignore_early_media=true,originate_caller_id_number=1000}user/1001’inline

24、FreeSWITCH命令:show dialplan 命令?????系统默认支持的Dialplan

25、一般来说,运营商都把应答时间作为计费的开始时间。

26、bridge操作是阻塞的,它会一直等到b-leg释放后才继续往下走。

27、常用的Dialplan App: play_and_get_digits与read类似,但它比read更高级。

28、在Dialplan中使用API命令。

<action application="set" data="api_result=${expr(1+1)}"/>

expr类似于UNIX中的expr命令,它计算一个表达式并输出结果,如:

freeswitch> expr 1+1

29、set 与 export的区别:

set程序仅仅会作用于当前的Channel(a-leg)

export程序可以将变量设置到两个Channel(a-leg和b-leg)上, 如果当时b-leg还没有创建,则会在创建时进行设置。

另外,export也可以通过nolocal参数将变量值限制仅仅设置到b-leg上:

<action application="export" data="nolocal:my_var=my_value">

更重要的是set也具有能往b-leg上赋值的能力:

<action application="set" data="export_vars=var1, var2, var3"/>

30、取消某些通道变量的定义。对它赋一个特殊的值(_undef_)或使用unset App,代码如下:
<action application="set" data="var1=_undef_"/>
<action application="unset" data="var1"/>

31、在实际应用中,可以截取变量值的部分操作。使用格式:“${var:位置:长度}”。

32、execute_extension与transfer类似,都需要Dialplan的“三要素”作为参数,但不同的是:

前者是临时执行一些Dialplan制定的App,它不会重新进入ROUTING阶段。

33、获取SIP消息的方法:

在freeswitch命令上上执行:sofia global siptrace on

如果想关闭trace,可执行命令:sofia global siptrace off

34、FreeSWITCH相关协议

SIP:会话发起协议

SDP:会话描述协议

RTP:实时传输协议 

RTCP:实时传输控制协议

35、SIPProfile相当于一个SIPUA,通过各种不同的配置参数可以配置一个UA的行为。一个系统中可以有多个SIPProfile,

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 了解VoIP和SIP协议 在开始学习FreeSWITCH之前,您应该了解VoIP和SIP协议的基础知识。VoIP是“Voice over Internet Protocol”的简称,它使得可以通过互联网传输语音和多媒体信息。而SIP协议是 VoIP中最重要的协议之一,它负责建立、维护、修改、解散会话。 建议阅读材料: - Understanding VoIP: What is Voice over IP and How it Works - SIP Tutorial: Session Initiation Protocol 2. 学习Linux和命令行 FreeSWITCH是一款基于Linux操作系统的开源软件。因此,了解Linux并能够在命令行中有效使用是必要的。您需要知道如何安装和配置Linux操作系统,基本的命令和文件操作,以及如何管理系统和服务。 建议阅读材料: - The Linux Command Line - Linux Basics for Hackers 3. FreeSWITCH基础知识 学习FreeSWITCH的基础知识是必要的。了解FreeSWITCH的架构、组件、配置文件、模块等基础知识,可以使您更好地理解FreeSWITCH的工作原理。可以从官方的文档中开始学习,从Hello World的入门到API的使用都可以了解。 建议阅读材料: - FreeSWITCH Official Documentation - FreeSWITCH 1.6 Cookbook 4. 熟悉FreeSWITCH的模块 FreeSWITCH 是可扩展的,并内置了许多模块,可以通过配置文件启用。熟悉FreeSWITCH的各种模块可以帮助您更好地应用和扩展FreeSWITCH。这里列举一些常用的模块: - mod_sofia:SIP和SDP处理模块 - mod_dialplan_xml:用于呼叫路由的控制器 - mod_python:用于自定义应用程序以及与其他Web框架交互 - mod_conference:用于多方音频、视频会议 - mod_rtmp:用于流媒体传输 - mod_callcenter:用于呼入呼出中心的自动呼叫分配 建议阅读材料: - FreeSWITCH 1.6 Cookbook - FreeSWITCH 1.6.5 Documentation 5. 熟悉FreeSWITCH的API FreeSWITCH 提供了多种编程语言的接口,如 Python、Lua、JavaScript、Java、NET等。学习如何使用这些API可以让您更好地自定义和扩展FreeSWITCH。 您可以使用API来控制和监视FreeSWITCH,例如添加自定义应用程序、处理呼叫事件、监听录音文件等。 建议阅读材料: - FreeSWITCH Official Wiki - FreeSWITCH 1.6 Cookbook 6. 实际应用 通过实际应用,您可以将学到的知识应用到实际的场景中。例如,您可以构建一个呼叫中心应用程序、电话会议系统、多媒体流处理应用程序等。实践可以帮助您更好地了解FreeSWITCH的工作原理和解决问题。 建议阅读材料: - FreeSWITCH Official Wiki - FreeSWITCH 1.6 Cookbook 最后,需要注意的是,学习FreeSWITCH是一个长期的过程。您需要继续学习新的技术和应用,并了解最新的开发趋势。使用社区和在线资源,加入邮件列表和社交媒体,和其他人交流和分享经验,都可以帮助您不断提高技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值