因为我从来没写过java程序,也不熟悉ava语法,所以代码可能无法编译,或者语法错误。请自行更正。
配置 event_socket.conf.xml
打开/usr/local/freeswitch/conf/autoload_configs/event_socket.conf.xml(yum apt安装是/etc/freeswitch/autoload_configs/event_socket.conf.xml)<configuration name="event_socket.conf" description="Socket Client">
<settings>
<param name="nat-map" value="false"/>
<param name="listen-ip" value="0.0.0.0"/>
<param name="listen-port" value="8021"/>
<param name="password" value="ClueCon"/>
<param name="apply-inbound-acl" value="loopback.auto"/>
<!--<param name="stop-on-bind-error" value="true"/>-->
</settings>
</configuration>
- 如果你的系统不支持IPV6把 listen-ip 设置为 “0.0.0.0”默认是”::”。
- apply-inbound-acl 是配置允许哪些IP可以连接esl接口,默认是只允许本机。可以修改为”loopback.auto,你的IP/32”,如果你和FreeSWITCH服务器不在一个网络,请设置”loopback.auto,你的公网IP/32”,/32是掩码,比如你想192.168.1.0整个网段都可以访问,就是”192.168.1.0/24”。
- 修改配置后,重启FreeSWITCH才会生效。
下载 java esl-client
git cloen https://github.com/esl-client/esl-client.git
连接esl
final Client inboudClient = new Client(); |
执行API
sendApiCommand或者sendBackgroundApiCommand(bgapi后台执行,比拨号命令 originate
就需要bgapi执行 )。
具体命令参考https://freeswitch.org/confluence/display/FREESWITCH/mod_commandssendBackgroundApiCommand("originate","user/1000 9999")
执行APP
sendMessage可以用来执行APP。具体APP参考https://freeswitch.org/confluence/display/FREESWITCH/mod_dptoolsSendMsg msg = new SendMsg("呼叫的uuid");
msg.addCallCommand("execute");
msg.addExecuteAppName("playback");
msg.addExecuteAppArg("file.wav");
inboudClient.sendMessage(msg);