专为易燃易爆环境设计的扩音电话
基于SIP协议的网络电话机
基于SIP协议的IP对讲机
实现不同通信网络之间的互联互通。
为应急通信系统提供应急广播设备
专用的应急指挥通中心通信调度设备
提供寻呼、广播、对讲、电话、报警等功能...
集成了语音、视频、即时消息、会议的通信平台...
基于电话通信技术,为企业提供客服呼叫方案...
用于实时调度和指挥工作,快速响应和协调沟通...
为制造业、矿业、石油化工、等场所,构建可靠的通信方案...
为高速公路、地铁、隧道等交通场所提供应通信方案...
处理客户的查询、投诉、技术支持、订单处理...
专门为处理紧急情况而设计的通信系统
专门设计用于危险环境中的通信系统
公司动态简介
行业知识简介
博客
2017-08-16
最近由于项目需要一直在研究Sip电话,Sip电话是基于sip协议的实现voip即网络IP电话的的功能。那么问题来了?我们打电话都是使用某动,某通,某信的电话卡,这种电话卡是在全国范围内收费的gms卡,如果我们要做一个在网络中可以使用的电话,那该如何实现呢? 假如我要在一个局域网中实现打电话的功能,我需要客户端或者手机终端,需要手机号码,需要一个程控交换机,程控交换机中设置手机号码,及手机号的密码,即用户名,密码。设置好手机号码之后,在客户端或者手机终端中使用已经配置好的手机号码,密码,及程控交换机所在的服务器地址。 程控交换机有很多开源的,刚开始我用的是elastix,项目官网,这个项目是基于cneter os的一个开源项目,使用及命令和使用linux类似。安装完之后,可以通过浏览器访问其所在的地址,然后在打开的页面中进行配置,刚开始使用比较繁琐,资料较少,不建议使用。之后我又找啊找,发现了另外一个非常简单好用的FreeSWITCH,也是一个开源项目.FreeSWITCH项目地址,点击下载安装即可,地址当中是windows平台下的,如果你用的是其他平台的那可以在官网下载即可。安装之后点击运行,即可。(我的安装完之后,点击运行,窗口出现了闪退,刚开始也很郁闷,不过在当天晚上,解决了,你想知道为什么?哈哈哈。。。右键,选择使用管理员权限运行即可。有没有蛋蛋的忧伤席面而来。) 然后我们来说明使用情况 1.首先是账号,默认的有1000-1019这20个账号,密码默认是1234,配置文件在这个目录下: C:\Program Files\FreeSWITCH\conf\directory\default 其他一些配置比较多就先转载吧。 以下为转载内容 (1) 配置网关 在 \conf\sip_profiles\external 中添加一个XML文件,名为:gw-DID.xml。内容如下: // sip provider 提供的服务器IP // sip provider 提供的DID账号 // sip provider 提供的DID账号密码 // sip provider 提供的服务器IP (2)配置拨码计划 在 \conf\dialplan 中修改 public.xml,添加如下内容: <extension> <condition field="destination_number" expression="^88888888$"> <action application="transfer" data="1008 XML default"/> </condition> </extension> 通过 FS_CLI 输入 reloadxml 即可。 通过FreeSwitch同时呼叫多个用户 通过FreeSwitch可以对多个终端进行呼叫,依据振铃顺序不同,可以分为:同振 和 顺振 。 同振是指多个终端同时振铃;顺振是指多个终端顺序振铃。 下面实现如下应用, 某用户拨叫 2000 这个接入号码,希望 1000 和 1001 同时振铃,其中任一个接听来话,另一个停止振铃。 (1) 在 \conf\dialplan\default.xml中添加如下内容, <extension> <condition field="destination_number" expression="^2000$"> <action application="bridge" data="sofia/internal/1000@192.168.0.183,sofia/sip/1001@192.68.0.183"/> </condition> </extension> 在 FS_CLI.exe 中运行 reloadxml 即可。 下面实现如下应用, 某用户拨叫 2000 这个接入号码,希望 1000 和 1001 顺序振铃,其中任一个接听来话,另一个停止振铃。 2)在 \conf\dialplan\default.xml中添加如下内容, <extension> <condition field="destination_number" expression="^2000$"> <action application="bridge" data="sofia/internal/1000@192.168.0.183|sofia/sip/1001@192.68.0.183"/> </condition> </extension> 在 FS_CLI.exe 中运行 reloadxml 即可。 在FreeSwitch中修改主叫显示名称 如果你想通过你的IP话机呼叫其他用户的时候,在对方话机显示能标识你的名称,在FreeSwitch中该怎么配置? 需求: 1000 和 1001 分别是两部话机,1000时张三的话机,1001是李四的话机。若1000发起呼叫,需要在对方话机上显示“zhangsan”;若1001发起呼叫,需要在对方话机上显示“lisi”. 配置: 进入 \conf\directory\default*.xml (1) 编辑 1000.xml ,找到 ,修改为 ; (2) 编辑 1000.xml ,找到 ,修改为 ; 通过 FS_CLI.exe 运行 reloadxml 即可。 FreeSwitch中修改注册用户的密码 在FreeSwitch系统中,所有用户的密码默认为 1234,该设置在 \conf\vars.xml 中,如下所示: 若需要修改默认密码的话,直接修改该处即可。 那用户的密码和默认密码怎么关联起来?请看下面的配置文件,以 用户 1000 为例,打开 \conf\directory\default\1000.xml ,找到如下设置: 即可找到他们之间的联系。若需要修改某用户的密码,直接修改 value 值即可。 修改配置完成后,通过 FS_CLI.exe 运行 reloadxml 即可。 FreeSwitch中用户不经过认证即可注册成功 一般来说,FreeSwitch中的SIP 用户都需要通过用户名和密码进行认证后才能注册成功,并进行通话。若有特殊需要,也可以设置为无认证即可使用,具体设置如下 : 打开 \conf\sip_profiles\internal.xml ,将如下两条设置去掉注释即可, 即: <param value="true"/> <param value="true"/> 在 FS_CLI.exe 中运行 reloadxml 即可。 FreeSwitch中添加新组 FreeSwitch中默认有三个组,分别为:sales ,billing,support。 在 \conf\directory\default.xml 中可以查到。 注意: 在 FreeSwitch中,同一个用户可以在不同的分组中存在。官方解释如下 : type=”pointer” is a pointer so you can have the same user in multiple groups. It basically means to keep searching for the user in the directory. 若需要添加一个 名为 ZOO的新组,需要在 \conf\directory\default.xml 中,找到 标签,然后添加如下内容即可, <group> <users> <user type="pointer"/> <user type="pointer"/> <user type="pointer"/> <user type="pointer"/> <user type="pointer"/> </users> </group> 在 FS_CLI.exe 中输入 reloadxml,重新加载新的XML文件即可。 FreeSwitch中添加新用户 FreeSwitch 中默认配置了20个用户,分别是: 1000 到 1019。在 \conf\directory\default 目录下有每个用户的XML配置文件。 若想新添加一个用户,可以通过如下步骤进行: (1)在/conf/directory/default/增加一个用户配置文件.如下所示: <include> <user> <params> <param value="$${default_password}"/> <param value="1020"/> </params> <variables> <variable value="domestic,international,local"/> <variable value="1020"/> <variable value="default"/> <variable value="Extension 1020"/> <variable value="1020"/> <variable value="$${outbound_caller_name}"/> <variable value="$${outbound_caller_id}"/> <variable value="techsupport"/> </variables> </user> </include> (2) 修改拨号计划,以使得其他用户可以呼到他。如下所示: 在 \conf\dialplan\default.xml中,修改 如下 语句 - <extension> <condition field="destination_number" expression="^(10[01][0-9])$"> 为 -》 <extension> <condition field="destination_number" expression="^(10[012][0-9])$"> (3) 在 FS_CLI.exe 中运行 reloadxml,即可生效。 FreeSwitch中配置网关的方法 在VOIP通信系统中,经常要用到网关。那么网关怎么和FreeSwitch在一起配合使用? 有如下需求: 有一虚拟运营商(即:SIP PROVIDER ),提供拨打外线的功能。从该处购买一 SIP 账号,具体配置信息如下: 用户名:user 密码: pass 服务器IP:100. 100.100.100 想通过和该SIP PROVIDER 对接实现拨打外线功能。即:0+要拨打的号码,就送到该SIP PROVIER (说明:此时的 SIP PROVIDER 相当于一网关)。 解决方法: 1)添加一个网关 在 \conf\sip_profiles\external 中添加一个名为GW_TEST.xml 的文件,内容如下: <gateway> <param value="100. 100.100.100"/> <param value="user"/> <param value="pass"/> </gateway> (2) 新建一个拨码计划 在 \conf\dialplan\default 中新建一个名为 call_gw_test.xml 的文件 ,内容如下: <include> <extension> <condition field="destination_number" expression="^0(\d+)$"> <action application="bridge" data="sofia/gateway/GW_TEST/$1"/> </condition> </extension> </include> (3) 通过 FS_CLI.exe 运行 reloadxml ,即可生效。 FreeSwitch中的录像功能和播放录像功能 FreeSwitch 系统中的录像功能 和 播放录像功能,系统都默认提供。 按默认配置,通过IP电话拨打9193,即可录像;通过IP电话拨打9194即可播放录像。 同时,我测试了一种有趣的用法,描述如下: (1) 1000 呼叫 9193 并且发送视频; (2) 1001 呼叫 9194 ,可以看到 1000 上传的视频,但非实时; (3) 1002 呼叫 9194, 可以看到 1000 上传的视频,但非实时。 这样看来,一个点播系统,FreeSwitch 默认就支持!稍加改造,就可以变为一套视频直播系统。 实现上述功能的配置文件在 \conf\dialplan\default.xml 中,如下所示: [录像] <extension> <condition field="destination_number" expression="^9193$"> <action application="answer"/> <action application="record_fsv" data="/tmp/testrecord.fsv"/> </condition> </extension> [播放录像] <extension> <condition field="destination_number" expression="^9194$"> <action application="answer"/> <action application="play_fsv" data="/tmp/testrecord.fsv"/> </condition> </extension> FreeSwitch的录音功能 一般电话系统都可以将本系统内的语音通话录制下来,FreeSwitch 系统中也可以进行语音录制。 需求: 录制系统中的所有通话。 实现: (1)建立一个文件夹 freeswitch/recordings/archive/ ,用来存储录音文件; (2)修改拨码计划,打开 \conf\dialplan\default.xml 找到下面的语句: <extension> <condition field="destination_number" expression="^(10[01][0-8])$"> #p#分页标题#e# 在其下,添加: <action application="set" data="RECORD_TITLE=Recording ${destination_number} ${caller_id_number} ${strftime(%Y-%m-%d %H:%M)}"/> <action application="set" data="RECORD_COPYRIGHT=(c) 2011"/> <action application="set" data="RECORD_SOFTWARE=FreeSWITCH"/> <action application="set" data="RECORD_ARTIST=FreeSWITCH"/> <action application="set" data="RECORD_COMMENT=FreeSWITCH"/> <action application="set" data="RECORD_DATE=${strftime(%Y-%m-%d %H:%M)}"/> <action application="set" data="RECORD_STEREO=true"/> <action application="record_session" data="$${base_dir}/recordings/archive/${strftime(%Y-%m-%d-%H-%M-%S)}_${destination_number}_${caller_id_number}.wav"/> (3)在 FS_CLI.EXE 中运行 reloadxml 或 按 F6 即可生效。 查询 FreeSwitch 支持的音频文件格式,可以在 FS_CLI.exe 中运行 show file 命令。 FreeSwitch播放语音文件 上一篇介绍了 FreeSwitch 的录音功能,若想回放这些录音,是否可以实现?或者说,通过 FreeSwitch ,,是否可以直接播放语音文件? FreeSwitch 中有一个 playback 的 application ,可以播放语音文件。 具体用法如下: (1)播放本地文件 <action application="set" data="playback_terminators=none"/> <action application="playback" data="sounds/soundfile.wav"/> (2)播放远程服务器上的文件 <action application="playback" data="${http_get()}"/> FreeSwitch中的会议功能(1) FreeSwitch 默认支持会议功能,有如下特点: (1) 不需要创建一个会议室的操作,只需要通过 conference 拨码计划就可以实现; (2) 会议室不真正存在, 直到有人呼入为止; (3) 会议功能很强大,能实现灵活控制。 这样讲太学术化,来点直观的,步骤如下: (1) 运行 FREESWITCH 服务器程序; (2) 注册 1000、1001、1002三部IP话机; (3) 通过 1000 呼叫 3000,通话建立后, 1000 将听到一段保持音乐; (4) 通过 1001 呼叫 3000,通话建立后, 1001将能听到1000的声音,1000也能听到1001的声音; (5) 通过 1002 呼叫 3000,通话建立后, 1002将能听到 1000 和 1001的声音,1001能听到1000和1002的声音,1000也能听到 1001 和 1002 的声音。 那 3000 这个号码是怎么来的? 请看 \conf\dialplan\default.xml 中的内容,如下所示: <extension> <condition field="destination_number" expression="^(30\d{2})$"> <action application="answer"/> <action application="conference" data="$1-${domain_name}@default"/> </condition> </extension> ...... FreeSwitch中的会议功能(2) FreeSwitch 提供了一些控制会议成员行为的方法,罗列如下: (1)Talk volume: The volume of the audio the caller sends (that is, gain control). 与会成员讲话的音量控制; (2)Listen volume: The volume of the audio the caller hears. 与会成员收听语音的音量控制; (3)Energy threshold: The minimum energy level of the audio from the caller to be considered talking. Raising the energy level will cut down on background noise when a participant is in a noisy environment. 语音门限控制 。 具体用法,可以查看:\conf\autoload_configs\console.conf.xml ,内容如下: <caller-controls> <group> <control action="mute" digits="0"/> // 静音 <control action="deaf mute" digits="*"/> // 解除静音 <control action="energy up" digits="9"/> // 增加门限 <control action="energy equ" digits="8"/> // <control action="energy dn" digits="7"/> // 降低门限 <control action="vol talk up" digits="3"/> // 提高讲话音量 <control action="vol talk zero" digits="2"/> // 讲话音量设置为0 <control action="vol talk dn" digits="1"/> // 降低讲话音量 <control action="vol listen up" digits="6"/> // 提高收听音量 <control action="vol listen zero" digits="5"/> // 收听音量设置为0 <control action="vol listen dn" digits="4"/> // 降低收听音量 <control action="hangup" digits="#"/> // 退出会议 </group> </caller-controls> FreeSwitch中的会议功能(3) FreeSwitch中可以设置主持人以及会议密码。设置了主持人后,可以影响会议的开展;设置了会议密码后,与会成员必须输入正确密码才能入会。 主持人对会议的影响主要体现在以下两个方面: (1)直到主持人入会后,会议才开始; (2)主持人退出会议后,会议才结束。 #p#分页标题#e# 那怎么设置主持人?方法如下: <action application="conference" data="$1@default"/> // 未设置主持人 <action application="conference" data="$1@default+flags{moderator}"/> // 设置了主持人 如何设置会议密码?方法如下: <action application="conference" data="$1@default+1234"/> // 设置入会密码为 1234 如何既设置主持人,又设置会议密码?方法如下: <action application="conference" data="$1@default+1234+flags{moderator}"/> FreeSwitch中的会议功能(4) FreeSwitch 是否支持视频会议?答案是 支持的! FreeSwitch 默认只支持与会成员看到当前“嗓门最大”的那个人的视频。 在实际应用中,当讲话人改变时,视频会切换,但切换的时候,视频会有马赛克现象。此问题期待高手解决! 场景描述如下: 三个用户 1000、1001、1002 都注册到同一台服务器。 (1)1000 呼叫 3000,进入会议,同时发送自己的视频,1000 可以看到自己; (2)1001 呼叫 3000,进入会议,可以看到 1000 的视频。若1001也发送自己的视频,双方看到的视频是当前讲话声音大的一方的视频; (3)1002 呼叫 3000,进入会议,可以看到当前讲话一方的视频。若 1002 也发送自己的视频,三方看到的视频是当前讲话声音大的一方的视频。 再扩展下思维,能否让 FreeSwitch 实现融屏功能,实现与会各方都能彼此看到自己!那FreeSwitch就更强大了。以下是几个相关的资源简介: (1)BigBluebutton 这个视频会议项目中用到了 FreeSwitch, 项目主页: 。但对视频的处理只是转发各路视频,没有实现融屏合成一路视频推送到各方显示。 (2)openvcs 是一个开源的 SIP MCU 实现,项目主页: 。 在 Windows 下实现了融屏的原型设计,但在效率以及并发处理方面,还有许多需要完善的地方。但提供了一个开发 SIP MCU 的思路,这个是很有价值的。 FreeSwitch中的会议功能(5) 邀请手机用户或座机用户入会: 在 FS_CLI.EXE 中运行 类似 conference dial Sofia/gateway/xyz/1234567890 即可。 FreeSwitch中的音乐保持功能 Music on hold(MOH) ,即:音乐保持,在一般电话系统中都存在。FreeSwitch也支持该功能,并且保持音乐可配置。 FreeSwitch默认的配置中,用户通过某IP话机拨打 9664 ,呼叫建立后,就可以听到保持音乐。 查看当前系统中音乐文件的路径,可以通过 FS _CLI.EXE 运行 show_local_stream 来显示。 如果你想修改默认的保持音乐,可以自己添加一些好听的音乐进来,方法如下: (1)在 \sounds\music 新建一个文件夹 MOH_TEST,并拷贝音乐文件进去(WAV文件); (2)在 \conf\autoload_configs\local_stream.conf.xml 中添加如下内容, (3) 在 \conf\vars.xml 中添加如下内容, (4) 在 \conf\dialplan\default 中添加一个名为 moh_test_call.xml 的文件。
联系我们
028-83110277
IP电话机、视频电话机供应商
手机:
成都世讯电科信息技术有限公司是一家多媒体融合通信解决方案及运营服务提供商,公司专注于为广大用户提供简单高效的通信产品和真正符合行业用户需求的行业应用解决方案,让用户享受到个性化、私密性强又具开放性、兼容性强又易于管理的高科技服务,帮助用户实现办公及运营通信的现代化与网络信息化。
公司拥专注于IP多媒体解决方案的应用与实施,有IP多媒体通信系统(IPBX)、IP多媒体通信平台定制与搭建(运营、对讲广播、门禁、调度、音视频会议及与视频监控交互式应用等)、IP电话机、视频电话机、项目租赁、云通信及系统集成等服务。
电话:028-83110277
Q Q:86313858