首页 > 其他分享 >要在FreeSWITCH 对接钉钉

要在FreeSWITCH 对接钉钉

时间:2023-06-14 11:45:42浏览次数:33  
标签:话单 -- 对接 录音 MySQL FreeSWITCH event

要在FreeSWITCH中使用IP限制并保存录音,并将通话转接到callgw.dingtalk.com:6789,并在请求头中添加X-access-number=被叫号码X-access-token=XXXXX,同时生成录音文件和话单,将话单记录到MySQL数据库中,您可以按以下步骤操作:

  1. 配置IP限制

首先,您需要编辑FreeSWITCH的配置文件(如sip_profiles/external.xml)来添加IP限制。找到或创建一个合适的context(上下文),并为该context设置IP地址过滤规则。例如:

<configuration name="ip_restrictions.conf" description="IP Address Restrictions">
  <network-lists>
    <network-list name="allowed_ips">
      <node type="allow" cidr="192.168.0.0/24"/>
    </network-list>
  </network-lists>
</configuration>

在上述示例中,我们创建了一个名为allowed_ips的网络列表,并允许CIDR为192.168.0.0/24的IP地址。

然后,在您想要应用IP限制的context(上下文)中添加以下代码来应用该网络列表:

<condition field="${sip_network_type}" expression="ipv4">
  <action application="set" data="sip_network_acl=${network_list(allowed_ips)}"/>
</condition>

这将使拥有允许的IP地址连接到该context。

  1. 配置录音

要保存录音文件,您需要在FreeSWITCH的配置文件中进行相应的设置。找到或创建一个合适的context(上下文),并添加以下代码:

<action application="record_session" data="/path/to/recordings/${uuid}.wav"/>

在上述代码中,将录音文件保存到/path/to/recordings目录下,并以通话的UUID作为文件名。

  1. 配置转接到callgw.dingtalk.com:6789

为了将通话转接到callgw.dingtalk.com:6789,您可以使用bridge或相关的Dialplan应用程序。根据您的需求选择合适的方法。

例如,如果您想要使用bridge应用程序将通话转接到该地址,可以添加以下代码:

<action application="bridge" data="{origination_caller_id_number=${caller_id_number}}sofia/gateway/callgw.dingtalk.com:6789"/>

这里使用了${caller_id_number}作为主叫号码变量。

  1. 在请求头中添加X-access-number和X-access-token

要在请求头中添加X-access-number=被叫号码X-access-token=XXXXX,您可以在Dialplan中使用SIP_HEADER应用程序。例如:

<action application="set" data="sip_h_X-access-number=${destination_number}"/>
<action application="set" data="sip_h_X-access-token=3e420ceaifd88fa6"/>

这将在呼叫发起时将请求头添加到SIP消息中。

  1. 生成录音文件和话单,并记录到MySQL数据库

为了生成录音文件和话单,您可以使用FreeSWITCH的事件处理程序(event handler)和Lua脚本。

通过配置event_socket.conf.xml文件,启用事件套接字,以便在通话结束时触发相应的事件。然后,可以编写一个Lua脚本来处理这些事件,并在其中生成录音文件和话单。

以下是一个示例Lua脚本:

-- 引入MySQL模块
local mysql = require("luasql.mysql")

-- 连接MySQL数据库
local env = mysql.mysql()
local conn = env:connect("freeswitch", "freeswitch", "password", "127.0.0.1")

-- 处理record_stop事件
function record_stop(event)
  local uuid = event:getHeader("Unique-ID")
  local filename = event:getHeader("Record-File-Path")
  local duration = event:getHeader("Record-Seconds")

  -- 将录音记录插入到MySQL表格中
  conn:execute(string.format([[INSERT INTO recordings(uuid, filename, duration) VALUES('%s', '%s', %d)]], uuid, filename, duration))
end

-- 注册事件处理程序
session:setHangupHook("record_stop")

-- 关闭数据库连接
conn:close()
env:close()

该脚本会在通话结束时触发record_stop事件,并从中获取唯一标识UUID、录音文件名和持续时间,并将其插入到MySQL数据库中。

需要确保您的FreeSWITCH已正确配置Lua脚本支持,并且已安装了相应的Lua库(如luasql.mysql)。

综上所述,这些是在FreeSWITCH中使用IP限制,保存录音并转接到callgw.dingtalk.com:6789以及生成录音文件和话单,最后记录到MySQL数据库的步骤。请根据您的具体需求和环境进行相应的配置。

标签:话单,--,对接,录音,MySQL,FreeSWITCH,event
From: https://www.cnblogs.com/sunth/p/17479764.html

相关文章

  • 在FreeSWITCH中使用Lua脚本来将电话记录存储到MySQL数据库中
    在FreeSWITCH中使用Lua脚本来将电话记录存储到MySQL数据库中,需要做以下几个步骤:安装MySQL客户端库首先需要通过包管理器(如apt-get或yum)安装MySQL客户端库,以便FreeSWITCH能够与MySQL数据库进行通信。例如,在Ubuntu系统中,可以运行以下命令进行安装:sudoapt-getinstalllibmysq......
  • 对接三方支付平台 + 分布式锁
    一、对接三方支付平台第三方支付平台是指平台提供商在商家和银行之间建立连接,供以支付等交易活动1.1支付宝支付、微信支付……(以支付宝为例)1、通过支付宝的开放平台对接:https://open.alipay.com/2、进入平台API的当面付:https://open.alipay.com/api3、需要支付宝账号,......
  • EKS对接EBS
    EKS对接EBS简介AWSEKS产品为Kubernetes容器集群,EKS组件默认不包含EBS和对象存储S3等插件,需要独立安装组件才能使用Storageclass对接至EBS和S3。另外在组件安装过程中较为特殊的是需要指定IAM角色,该角色需要以命令方式eksctl创建AmazonEBSCSI插件IAM角色IAM创建使......
  • WebRTC十周年、Space X成功对接国际空间站、TikTok复制品Zynn或有快手支持|Decode the
    >>顺便祝大家六一快乐<<DecodetheWeek≠音视频技术周刊 01 SpaceX载人飞船首发成功并与国际空间站对接北京时间5月31日,SpaceX首次载人火箭发射成功,而这只是SpaceX创始人ElonMusk庞大的商业航天计划中的一环。在经历19个小时的飞行后,SpaceX龙飞船与国际空间站成功对接,对接......
  • 电子行业 K 公司对接 Nexperia EDI 项目案例
    项目背景Nexperia是一家全球领先的半导体制造商,专注于提供高性能、高可靠性和创新性的半导体解决方案。公司成立于2017年,是前飞思卡尔半导体业务的一部分,并在全球范围内拥有多个设计、研发和生产基地。Nexperia使用EDI(电子数据交换)来实现高效的业务合作和供应链管理。通过ED......
  • 海康 门禁的对接流程: Unity接入海康威视门禁(获取门禁状态信息、门禁反控等)
    一、海康开放平台Demo测试我们在使用demo脚本之前要进行两次测试,首先使用接口测试工具进行api测试,这样可以确定我们的接口测试是否正常,测试成功后我们在进行Demo测试,这个可以确定我们下载的Demo的脚本可以使用,两个测试都成功后,就可以将脚本拖入到Unity中使用了1.接口测试工具下载......
  • 钉钉机器人客服系统AI知识库对接
    钉钉机器人比较灵活方便,可以按照下面的方式操作,我们现在创建企业内部应用机器人可以单聊,也可以在群里进行@,机器人会通过GPT私有数据知识库自动回复应用场景企业内部知识库机器人,企业员工可以在钉钉上对内部的知识进行咨询支持关键词匹配自动回复支持GPT私有数据聊天咨询创建应......
  • freeswitch透传带SDP的180
     概述freeswitch是一款简单好用的VOIP开源软交换平台。freeswitch对于180/183的消息处理有默认的规则,但是在3GPP的标准中,消息流程会更加复杂,场景更多变。这样就需要我们根据实际环境中的场景定制消息流程。本文只讨论带SDP的183/180消息。环境centos:CentOS release7.0......
  • .Net:对接微信小程序进行授权操作
    原来的写法,使用node.js  其实就是小程序端访问接口,传来一个code参数,接下来后台拿到code之后可以根据code、appid、secret获取session_key和openid,拿到这两个之后后端的工作基本就结束了,可以参考官网接口迁移之后的写法,使用.Net,代码就怎么简单怎么来///<summary>......
  • FreeSwitch基础知识(一)
        总的来说,FreeSwitch由一个稳定的核心(Core)及一些外围模块组成、这些外围模块根据其功能和用途的不同又分为Endpoint、Codec、Application等不同的类别。    FreeSwitch内部使用线程模型来处理并发请求,每个连接都在单独的线程中进行处理,不同的线程间通过Mutex互......