event socket
A:
nc -l -k 192.168.0.100 8040
B:
nc 192.168.0.100 8040
外连就是freeswitch代替B
内连就是freeswitch代替A
外连
dialplan/default.xml
<extension name="socket">
<condition field="destination_number" expression="^1237$">
<action application="socket" data="192.168.0.100:8040 async full"/>
</condition>
</extension>
watch -n 1 'netstat -an|grep 8040'
监控nc端口
用客户端拨打1237
看端口变成 ESTABLISHED
去终端A 输入
connect 回车两下
Event-Name: CHANNEL_DATA
Core-UUID: c6699b05-fb5b-4feb-ae89-1d302ae28b21
FreeSWITCH-Hostname: bogon
FreeSWITCH-Switchname: bogon
FreeSWITCH-IPv4: 192.168.0.100
FreeSWITCH-IPv6: 2408%3A84e1%3A41%3A926d%3Af0f6%3A8a6f%3Ac0d%3A699c
Event-Date-Local: 2019-05-31%2011%3A22%3A50
Event-Date-GMT: Fri,%2031%20May%202019%2003%3A22%3A50%20GMT
Event-Date-Timestamp: 1559272970377169
Event-Calling-File: mod_event_socket.c
Event-Calling-Function: parse_command
Event-Calling-Line-Number: 2011
Event-Sequence: 829
Channel-Direction: inbound
Channel-Logical-Direction: inbound
Channel-Username: 1006
Channel-Dialplan: XML
Channel-Caller-ID-Name: 1006
Channel-Caller-ID-Number: 1006
Channel-Orig-Caller-ID-Name: 1006
Channel-Orig-Caller-ID-Number: 1006
Channel-Network-Addr: 192.168.0.101
Channel-ANI: 1006
Channel-Destination-Number: 1237
输入命令播放声音
sendmsg
call-command: execute
execute-app-name: playback
execute-app-arg: local_stream://moh
两下回车
返回
Content-Type: command/reply
Reply-Text: +OK
客户端开始播放声音
############
内连
配置 默认有
在 autoload_configs/event_socket.conf.xml里面
打开注释apply-inbound-acl ,value改成成lan
和修改ip
不改会报错:[WARNING] mod_event_socket.c:2641 IP 172.18.1.112 Rejected by acl "loopback.auto"
<configuration name="event_socket.conf" description="Socket Client">
<settings>
<param name="nat-map" value="false"/>
<!--<param name="listen-ip" value="::"/>-->
<param name="listen-ip" value="192.168.0.100"/>
<param name="listen-port" value="8021"/>
<param name="password" value="ClueCon"/>
<!--<param name="apply-inbound-acl" value="loopback.auto"/>-->
<param name="apply-inbound-acl" value="lan"/>
<!--<param name="stop-on-bind-error" value="true"/>-->
</settings>
</configuration>
端口为8021
所以用
#nc 192.168.0.100 8021
nc localhost 8021
auth ClueCon 两下回车
源码里的testclient.c
freeswitch/libs/esl/下的
#include <stdio.h>
#include <stdlib.h>
#include <esl.h>
int main(void)
{
esl_handle_t handle = {{0}};
esl_connect(&handle, "192.168.0.100", 8021, NULL, "ClueCon");
esl_send_recv(&handle, "api status\n\n");
if (handle.last_sr_event && handle.last_sr_event->body) {
printf("%s\n", handle.last_sr_event->body);
} else {
// this is unlikely to happen with api or bgapi (which is hardcoded above) but prefix but may be true for other commands
printf("%s\n", handle.last_sr_reply);
}
esl_disconnect(&handle);
return 0;
}
#########
/opt/meituan/sip/freeswitch/libs/esl# make
生成.lib/libesl.a
FSDG-code/chapter19/myesl$ make
######
open -a /Applications/Google\ Chrome.app
open "http://www.baidu.com"
分享到:
相关推荐
- **加载流程**:`mod_event_socket_load()`注册事件处理函数`event_handler()`,创建APP接口`socket_function`和API接口`event_sink_function`。加载完成后,`mod_event_socket_runtime()`线程负责接收连接,初始...
### Freeswitch之mod_callcenter模块介绍 #### 模块概述 `mod_callcenter`是Freeswitch中的一个强大模块,主要用于实现呼叫中心的功能。它能够处理来电分配、队列管理、座席状态监控等常见呼叫中心场景的需求。本文...
ESL(Event Socket Library)是Freeswitch提供的一种接口,用于与Freeswitch服务器进行通信。它是基于事件驱动的,允许外部应用程序发送命令到Freeswitch,接收服务器的响应,以及订阅和处理Freeswitch产生的事件。...
自由切换事件套接字这是一个正在进行的抽象类,用于处理 freeswitch 的 eventsocket 命令行。 目前只实现了入站服务器。安装..代码块:: bash pip 安装 freeswitch-eventsocketTornado 的 IOLoop 下的实现下面是下的...
Freeswitch是一款开源、多平台的VoIP通信系统,它支持多种协议和控制方式,其中包括XML配置和Event Socket Library(ESL)API。本资源主要关注的是通过ESL进行控制的方式,这是一种更加灵活且程序化的交互方式,尤其...
本文将深入探讨一个与这一主题相关的项目:“FS-ESL_jssip_freeswitch_esl_mixj1i_”,这个项目实现了JSSIP与ESL(Event Socket Library)方式连接FreeSwitch,从而在Web应用中整合了VoIP功能。 **FreeSwitch**是一...
3. **API与Event Socket**:FreeSWITCH提供了丰富的API接口和Event Socket协议,允许通过网络与FreeSWITCH进行通信,进行实时控制和监控。Event Socket协议允许外部程序发送命令到FreeSWITCH,实现复杂的业务逻辑。 ...
FS还提供了Event Socket API,允许外部应用程序通过TCP连接与Freeswitch交互,控制通话流程。 4. **语音与视频处理**:Freeswitch内置了音频和视频编解码器,如G.711、Opus、VP8等。它还支持音频视频混合、回声消除...
go-eventsocket, 面向go编程语言的FreeSWITCH事件套接字库 eventsocketFreeSWITCH 事件套接字 程序语言库。它支持入站和出站事件套接字连接,充当连接FreeSWITCH或者接受来自FreeSWITCH的连接以控制调用调用的客户端...
Java ESL调用FreeSWITCH发起呼叫 ... 修改D:\VS\freeswitch-1.6.19\Win32\Debug\conf\autoload_configs\event_socket.conf.xml文件 所依赖包:JAVA调用FreeSWITCH: 需要Jar包:org.freeswitch.esl.client-0.9.2.jar
要创建自定义事件,你需要编写一个ESL(Event Socket Library)事件处理器。通过这个库,你可以发送和接收事件,与FreeSwitch进行交互。事件的定义通常在C语言的源代码文件中完成,包括事件名称、数据结构和处理函数...
This framework helps interact with the FreeSwitch via its mod_event_socket. For more information about the mod_event_socket refer to FreeSwitch web site. It is fully asynchronous. Also it offers more ...
vim /etc/freeswitch/autoload_configs/event_socket.conf.xml ``` 将 `<param name="listen-ip" value=":"/>` 改为 `<param name="listen-ip" value="127.0.0.1"/>` 4. 启动 Freeswitch 使用以下命令启动 ...
eventsocket是FreeSWITCH的事件套接字的扭曲协议。 该协议在单个文件类中同时支持事件套接字的入站和出站方法。 它可以用于各种各样的目的。 它的目标是简单和可扩展,并将FreeSWITCH的所有功能导出到基于Twisted的...
使用FreeSwitch的内置脚本语言如Lua或ESL(FreeSWITCH Event Socket Library)编写脚本,可以创建复杂的语音流程逻辑,结合中文语音包实现交互式语音应用。 10. **拓展与开发** 开发者可以基于FreeSwitch API和...
开发部分则深入探讨了FreeSwitch的编程接口和开发工具,如XML控制接口(Mod_xml_curl)、Lua脚本支持和FreeSWITCH Event Socket Library(FESL)。通过这些工具,开发者可以编写自定义模块,实现高级功能,如通话...
书中首先会介绍Freeswitch的基本架构和核心组件,包括Event Socket Library、Mod_python、Mod_lua等模块,以及如何配置和管理这些模块以满足不同的通信需求。 接下来,书中将详细讲解Freeswitch的脚本语言——XML ...
外围模块是可以动态加载和卸载的动态库,例如`mod_sofia`、`mod_socket`等。核心与外围模块之间通过API进行通信,由于它们运行在同一地址空间内,因此可以直接通过函数调用来进行交互。 **核心(Core)的主要功能包括...
本主题聚焦于如何在C语言环境下使用ESL(Event Socket Library)来连接并通信FreeSwitch,这是一个开源的、功能强大的实时通信平台。FreeSwitch提供了一个丰富的API集合,其中包括ESL,用于与外部应用程序进行交互。...