Latest

callcenter坐席监控

callcenter坐席监控

我们在使用freeswitch-mod-callcenter作为呼叫中心时候,难免需要对坐席的状态、queue状况进行监控。 监听esl-callcenter::info 事件,  查看callcenter的event,来关注callcenter的坐席情况。 1:针对每个坐席进行状态监控 使用esl方式,进行event监听 监听custom  坐席状态变更 agent-status-change When an agent's Status changes, this event is generated with the agent's new Status. Event-Subclass: callcenter::info Event-Name: CUSTOM CC-Agent: 1000@default CC-Action: agent-status-change CC-Agent-Status: Available 2: offering事件接收-agent收到来电 Every time a caller is presented to
yin
一种很棒的办法-sip-2-webrtc

一种很棒的办法-sip-2-webrtc

最近想到一种很棒的办法,使用此办法,可以现在fs-与webrtc的打通。 此种,打通不是freeswitch-自己支持的webrtc,是第三方webrtc。 比如腾讯trtc、pion webrtc会议、aiortc 等。 我们需要使用siphone方式,注册分机到freeswitch。 同时此sipphone必须要能够使用系统的音视频,所以最好是模拟机器。 假设我们现在打造了一个pion-webrtc会议,或者其他的webrtc,只要我们能够实现此分机和webrtc 协商ok,同时能够注册到fs上。 既可以实现,腾讯会议、trtc会议,外呼给一位同事,同时能够接听到视频、语音会议中。
yin
golang-webrtc 初体验

golang-webrtc 初体验

本站专注于rtc、ai领域,为此我们会持续更新各类webrtc服务,解析webrtc源码,理解webrtc原理,分享给各个学习的同志。 我们选择ion-sfu git clone https://github.com/ionorg/ion-sfu.git 下载git,下载webrtc项目代码 我们启动json-rpc方式 执行 go build ./cmd/signal/json-rpc/main.go && ./main -c config.toml 启动服务后,我们需要p2p进行连接 这里我们得写前端js服务。 创建webrtc-peerConnection 对象 const peerConnection = new RTCPeerConnection({ iceServers: [ { urls: 'stun:stun.l.google.com:19302', }, { urls: 'turn:numb.
yin
freeswitch-asr处理流程

freeswitch-asr处理流程

我们在完全切入mrcp和freeswitch之间之前,我们先了解freeswitch-asr是如何处理的。 asr处理核心 freeswitch 源码现在已经将asr处理流程进行隔离。 freeswitch-设定了基于asr的 interface 我们先定位到freeswitch-源码: switch_core_asr.c SWITCH_DECLARE(switch_status_t) switch_core_asr_open(switch_asr_handle_t *ah, const char *module_name, const char *codec, int rate, const char *dest, switch_asr_flag_t *flags, switch_memory_pool_t *pool) { switch_status_
yin

webrtc-IDR request 关键帧

webrtc 采用UDP协议传输媒体数据,丢包的发生不可避免,webrtc为了弥补问题,使用了包括NACK、FEC、IDR request等方式进行处理。 其中NACK,可以理解问反向ack,当接收端发现有packet丢失时候,主动告知发送端进行数据发送。 nack一般处理逻辑,伪代码 def check_and_add_packet(): missed = False if self.max_seq is None: self.max_seq = packet.sequence_number return missed # mark missing packets if uint16_gt(packet.sequence_number, self.max_seq): seq = uint16_add(
yin