freeswitch实战经验

接触过freeswitch的童鞋们都知道,freeswitch自动会议室功能,比如大家都拨3000这个号码,就可以进行电话会议功能了。但是,现在有这么一个场景:现在某个主持人想开电话会议,想直接由freeswitch主动向需要参加会议的成员打电话,成员接通电话后就直接进入会议室,能否实现呢?

答案是肯定的。

实现原理和演化步骤:

1、freeswitch的bin目录下有一个叫做fs_cli的可执行文件,可以执行freeswitch的外部命令,格式fs_cli -x “命令串”;

2、freeswitch的命令里头,有一个某个号码向另外一个号码打电话的命令,格式:originate 被叫用户 主叫用户;

3、结合以上两点,就可以写出可以在linux下,会议室主动向某个号码主动发出邀请电话的执行的命令了,比如以会议室3000这个号码向号码为1001和1002的打电话,则分别执行以下两行的linux命令行:

 fs_cli -x "originate user/1001 3000"

 fs_cli -x "originate user/1002 3000"

4、你现在就可以做个WEB系统,管理你的会议室号码和会议的成员,点击下"发起会议"按钮,循环调用linux命令的方式,给所有的成员打电话了,成员接听电话后,就自动进入会议室了。

5、为了简化WEB调用方式,可以在服务器上编写一个sh脚本,WEB代码通过调用这个脚本来实现以上功能,以下是我项目的sh脚本,它有两个输入参数,一个是成员号码,一个是会议号码:

#获取第一个参数和第二个参数,分别代表被呼叫的号码和会议室号码

       shortNum="$1"; 
       groupNum="$2"; 
       nohup /usr/local/freeswitch/bin/fs_cli -x "originate user/$shortNum $groupNum" >> /home/switch/webtask/tmp/call.log &

通过freeswitch,可以实现用户与用户之间发送短信,那能否做个WEB系统,实现通过服务器向一堆用户发送短信呢?
答案必须是肯定的!

 1、还是使用fs_cli,这个东西我不在重复描述,见我另外一篇博文: http://my.oschina.net/hetiangui/blog/138174
      2、使用freeswitch的发送短信命令,格式如下:
          chat sip|消息发送者|消息接收者|信息内容
       chat表示命令(固定值),sip表示发送协议(可以认为是固定值,还有另外一个协议,这里不讲),后面是消息发送者、消息接收者和消息内容,用|分隔;
       3、freeswitch内部有个系统用户,就是0000000000;
       4、如果用户的短号是1001,该用户所在的freeswitch的服务器IP是xxx.xxx.xxx.xxx,则该用户的全地址是:[email protected]
       5、完整的,通过调用linux命令实现系统向1001这个用户发送hello word的命令内容为:fs_cli -x "chat sip|0000000000|[email protected]|hello world!" ,这里假设sip服务器的IP为130.38.185.103。
       6、还是像上篇文章,可以将发送短信的命令封装成一个sh脚本,简化WEB程序调用,脚本如下:
       #第一个参数表示接收人的短号 ,第二个参数表示消息内容 
        receiver="$1"; 
        msg="$2";
       /usr/local/freeswitch/bin/fs_cli -x "chat sip|0000000000|[email protected]|$msg"

你可能感兴趣的:(freeswitch实战经验)