当前位置: 首页 > news >正文

FreeSWITCH 呼出之我见

少量呼出,不在本文讨论之列

如果是我来实现批量呼出,那么可能是这样:

先建一张数据库的表,字段有:

id 自增加,主键

caller varchar 主叫号码

called varchar 被叫号码

service varchar 业务相关字段

uuid varchar channel-uuid,如果为空,那么调用 fs_cli -x 'create_uuid'

done int  是否已完成

然后起一个 taskloop.lua 进行处理:

每秒处理一次

调用 status 查看

如果当前 channels 数超过某个阈值,则退出

如果当前 sps 超过某个阈值,则退出

调用 fsapi 呼出,并写回数据库的表

回头给出 taskloop.lua 的具体内容


讨论另外一个问题:

fs --- 语音网关 --- 运营商

运营商说,语音网关发送 INVITE,每个源端口有 30 sps 的限制,比如:

语音网关 5060   --- 运营商

语音网关 5062  --- 运营商

语音网关 5064  --- 运营商

语音网关 5066  --- 运营商

如上图所示,这样就能做到 120 sps

那么要怎样配置呢?

非常简单呀!

比如在 fs 起多个 SIP Profile:

<profile name="external0"><gateways><X-PRE-PROCESS cmd="include" data="gw/wgw1.xml"/></gateways><param name="rtp-ip" value="$${local_ip_v4}"/><param name="sip-ip" value="$${local_ip_v4}"/><param name="sip-port" value="5060"/>...  
</profile> <profile name="external1"><gateways><X-PRE-PROCESS cmd="include" data="gw/gw2.xml"/></gateways><param name="rtp-ip" value="$${local_ip_v4}"/><param name="sip-ip" value="$${local_ip_v4}"/><param name="sip-port" value="5062"/>...  
</profile> <profile name="external2"><gateways><X-PRE-PROCESS cmd="include" data="gw/gw3.xml"/></gateways><param name="rtp-ip" value="$${local_ip_v4}"/><param name="sip-ip" value="$${local_ip_v4}"/><param name="sip-port" value="5064"/>...  
</profile> <profile name="external3"><gateways><X-PRE-PROCESS cmd="include" data="gw/gw4.xml"/></gateways><param name="rtp-ip" value="$${local_ip_v4}"/><param name="sip-ip" value="$${local_ip_v4}"/><param name="sip-port" value="5066"/>...  
</profile> 

4 个 SIP Profile,其中每个 Profile 对应一个网关,所有的这些网关都指向同一个语音网关

接着就是 distributor 的配置,非常简单:

<configuration name="distributor.conf" description="Distributor Configuration"><lists><list name="testdist"><node name="gw1" weight="1"/><node name="gw2" weight="1"/><node name="gw3" weight="1"/><node name="gw4" weight="1"/></list></lists>
</configuration>

最后是拨号字符串的配置

以前这样写:

originate sofia/gateway/gwxx/1234567 &echo

现在调整为:

originate sofia/gateway/${distributor(testdist)}/1234567 &echo

除了用 fs mod_distributor 之外是否还有别的办法呢?

换我上的话我肯定用 Kamailio,控制起来比较方便


建表(PostgreSQL):

CREATE TABLE dialtasks (
    id SERIAL PRIMARY KEY NOT NULL,
    uuid VARCHAR DEFAULT '',
    caller VARCHAR NOT NULL,
    called VARCHAR NOT NULL,
    service VARCHAR NOT NULL,
    done INTEGER DEFAULT 0  
);

插入测试数据:

insert into dialtasks(caller, called, service)  values ('1234567', '777777', 'foo');


taskloop.lua 的内容可以是:

todo


http://www.mrgr.cn/news/82766.html

相关文章:

  • java常见面试题
  • [备忘.OFD]OFD是什么、OFD与PDF格式文件的互转换
  • 起重机检测数据集VOC+YOLO格式2316张1类别
  • Spring 复习笔记
  • Vue笔记-001-声明式渲染
  • 【简博士统计学习方法】3. 统计学习方法的三要素
  • 自定义字典转换器用于easyExcel 导入导出
  • 51单片机(二)中断系统与外部中断实验
  • INT305 Machine Learning
  • Linux 35.6 + JetPack v5.1.4之 pytorch升级
  • 【LC】2469. 温度转换
  • Haskell语言的面向对象编程
  • 【python如何使用随机模块】
  • 智能工厂的设计软件 应用场景的一个例子: 为AI聊天工具添加一个知识系统 之23 “单子”职业能力原型:PIN语言/AI操作系统/robot扮演的actor
  • DX12 快速教程(3) —— 画矩形
  • easyx空洞武士项目总结
  • 基于springboot+vue的餐饮连锁店管理系统的设计与实现
  • 3272 小蓝的漆房
  • 【设计模式-2】23 种设计模式的分类和功能
  • 代码随想录算法训练营day23