安装opensips

1. 安装opensips

ubuntu下安装:

1)执行以下的脚本

openSIPS | APT Repository

2)apt-get install opensips

安装完毕后,再选择需要的module继续安装,不需要编译

如果只是用作load balancer,那么只需要安装

apt-get install opensips-mysql-module opensips-auth-modules opensips-http-modules opensips-tls-openssl-module opensips-tlsmgm-module

3)执行osipsconfig获取新的脚本

保存好脚本后,会看到新的脚本在哪里,编辑脚本

4)重启opensips

opensips restart

2. 安装opensips-cli

apt-get install opensips-cli

vi ~/.opensips-cli.cfg

将以下的配置黏贴到.opensips-cli.cfg里面

[default]
log_level: WARNING
prompt_name: opensips-cli
prompt_intro: Welcome to OpenSIPS Command Line Interface!
prompt_emptyline_repeat_cmd: False
history_file: ~/.opensips-cli.history
history_file_size: 1000
output_type: pretty-print
communication_type: fifo
fifo_file: /tmp/opensips_fifo
 
# 选择模块添加数据库表结构
database_modules: ALL
 
# 数据库脚本目录
database_schema_path: /root/soft/opensips-3.3.1/scripts
 
# 数据库管理员账号
#database_admin_url: postgres://root@localhost
database_admin_url: mysql://root@localhost
 
# 会新建数据库账号:opensips,密码:opensipsrw
# database_url: postgres://opensips:opensipsrw@localhost
database_url: mysql://opensips:opensipsrw@localhost
# 数据库名称
database_name: opensips
 
domain: 10.10.3.153
 
plain_text_password: true

 3. 安装mysql

apt install mysql-server
apt install mysql-client
apt install libmysqlclient-dev

vim /etc/mysql/mysql.conf.d/mysqld.cnf
将bind-address后的127.0.0.1 改为0.0.0.0
bind-address = 0.0.0.0

打开vim /etc/mysql/my.cnf文件 增加
[mysqld]
sql_mode='' 
character-set-server = latin1

service mysql restart

初始化mysql命令:
mysql_secure_installation

创建用户
CREATE USER 'opensips'@'localhost' IDENTIFIED BY 'opensipsrw'; 
GRANT ALL PRIVILEGES ON opensips.* TO 'opensips'@'localhost'; 
flush privileges;

4. 创建并配置数据库

opensips-cli -x database create

 5. 插入dispatcher模块的需要负载均衡的mrcpserver

INSERT INTO `dispatcher` (`setid`, `destination`, `state`, `weight`, `priority`, `attrs`, `description`) VALUES(19, 'sip:10.129.39.88:7010', 0, 1, 100, 'pstn=100', 'TTS_MRCP_CLIENT_FS_7010'),(19, 'sip:10.129.39.88:7011', 0, 1, 100, 'pstn=100', 'TTS_MRCP_CLIENT_FS_7011');

6. 将dispatcher对应的route代码加入到/etc/opensips/opensips.cfg的配置文件中

loadmodule "dialog.so"
modparam("dialog", "profiles_with_value", "caller ; domain")
modparam("dialog", "profiles_no_value", "progress ; active")
modparam("dialog", "db_mode", 2)
modparam("dialog", "db_url", "mysql://opensips:opensipsrw@localhost/opensips")route {# 省略无关代码 ...if (is_method("INVITE")) {xlog("ua = $ua , callid = $ci, fu = $fu , tu = $tu , ru = $ru , du =$du src:$si, $(rb{sdp.line,m})");$var(dlgPingTag) = "Pp";if ( $ua == "OPENSIPS_TTS_MRCP_CLIENT" ) {$var(dlgPingTag) = "";  # TTS 的SIP通道不能做 OPTION 探测}if ( !create_dialog("$var(dlgPingTag)")) {send_reply(500,"Internal Server Error");exit;}if ( $ua == "OPENSIPS_TTS_MRCP_CLIENT" ) {# 指定 setid 为 19,与插入 dispatcher 表的数据相匹配,选择可用的节点$var(lbRst) = ds_select_dst(19, 4);if($var(lbRst) == -1) {xlog("Failed by dispatcher group_id: 19");t_reply(480, "MRCP server Unavailable");exit();}if ( $var(lbRst) > 0) {$ru = "sip:" + $(du{uri.host}) + ":" + $dp;xlog("[$fU->$rU] Route to $ru");} else {xlog("[$fU->$rU] No available server now");t_reply(480, "$var(node_type) Unavailable");exit();}} else {# 其他类型 INVITE 处理 .....}}route(relay);
}route[relay] {# for INVITEs enable some additional helper routesif (isflagset("NAT")) {add_rr_param(";nat=yes");} if (!t_relay()) {send_reply(500,"Internal Error");}exit;
}
7. FreeSWITCH 的配置

在 FreeSWITCH 的 conf/mrcp_profiles 目录 下新增一个配置文件,将其指向 OpenSIPS 服务器并指定 UA 名称,然后重启 FreeSWITCH

<include><!-- UniMRCP Server MRCPv2 --><profile name="opensips-tts-mrcp2" version="2"><!-- OpenSIPS 服务器地址 端口号--><param name="server-ip" value="127.0.0.1"/><param name="server-port" value="8060"/><!-- FreeSWITCH IP、端口以及 SIP 传输方式 --><param name="client-ip" value="$${local_ip_v4}" /><param name="client-port" value="5072"/><param name="sip-transport" value="udp"/><param name="speechsynth" value="speechsynthesizer"/><param name="speechrecog" value="speechrecognizer"/><!-- SIP 请求携带的 ua 名称 --><param name="ua-name" value="OPENSIPS_TTS_MRCP_CLIENT"/> <!-- Add any default MRCP params for SPEAK requests here --><synthparams></synthparams><!-- Add any default MRCP params for RECOGNIZE requests here --><recogparams><!--param name="start-input-timers" value="false"/--></recogparams></profile>
</include>

参考资料:

Opensips 3.3.1安装配置_ubuntu 18.04 安装opensips-CSDN博客

OpenSIPS 3.1 负载均衡 MRCP 服务器的实现_opensips 负载均衡_谈谈1974的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/177354.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

arcpy.message实现探索

arcpy 位置D:\Program Files\GeoScene\Pro\Resources\ArcPy\arcpy\__init__.py ”““AddMessage(消息) 创建可以使用任何GetMessages函数访问的地理处理信息消息(Severity0)。 message(字符串):要添加的消息。”“ arcpy.geoprocessing D:\Program Files\GeoScene\Pro\Re…

5.4 完整性约束命名子句

思维导图: 笔记&#xff1a;5.4 完整性约束命名子句 定义: 完整性约束是在CREATE TABLE语句中定义的。SQL为CREATE TABLE语句提供了CONSTRAINT子句&#xff0c;用于对完整性约束进行命名。命名的目的是方便增加或删除约束。 基本结构: CONSTRAINT <完整性约束名称> &l…

python实现MC协议(SLMP 3E帧)的TCP服务端(篇一)

python实现MC协议&#xff08;SLMP 3E帧&#xff09;的TCP服务端是一件稍微麻烦点的事情。它不像modbusTCP那样&#xff0c;可以使用现成的pymodbus模块去实现。但是&#xff0c;我们可以根据协议帧进行组包&#xff0c;自己去实现帧的格式&#xff0c;而这一切可以基于socket模…

jdk官网下载(详细步骤)

jdk全部版本下载网址 Java Archive | Oraclehttps://www.oracle.com/java/technologies/downloads/archive/ 下载之前先建立oracle账号(免费创建)&#xff0c;不用特意去搜&#xff0c;你点击下载jdk的时候会自动弹出来&#xff0c;自己建立一个账号就能下载了 找到自己要下载…

C++数据结构算法篇Ⅰ

C数据结构算法篇Ⅰ &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C算法 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 主要内容讲解数据结构中的链表结构 文章目录 C数据…

PHP服务器端电商API原理及示例讲解(电商接口开发/接入)

下面小编就为大家分享一篇PHP服务器端API原理及示例讲解(接口开发)&#xff0c;具有很好的参考价值&#xff0c;希望对大家有所帮助 相信大家都做过PHP请求电商API接口获取数据&#xff0c;比如淘宝平台商品API接口&#xff0c;订单接口&#xff0c;京东接口&#xff0c;1688接…

Python画图之皮卡丘

Python-turtle画出皮卡丘&#xff08;有趣小游戏&#xff09; 一、效果图二、Python代码 一、效果图 二、Python代码 import turtledef getPosition(x, y):turtle.setx(x)turtle.sety(y)print(x, y)class Pikachu:def __init__(self):self.t turtle.Turtle()t self.tt.pensi…

Android广播BroadcastReceiver

BroadcastReceiver组件 BroadcastReceiver是Android中的一个组件&#xff0c;用于接收和处理系统广播或应用内广播。它可以监听系统事件或应用内自定义的广播&#xff0c;并在接收到广播时执行相应的操作。 广播是一种用于在应用组件之间传递消息的机制。通过发送广播&#x…

如何使用查看器筛选、搜索功能进行数据定位?

前言 我们曾探讨过观测云如何通过将内置视图与查看器相联结&#xff0c;实现更全面的数据关联分析。&#xff08;参见《内置视图联动查看器&#xff0c;实现数据关联分析》&#xff09;这里提到的查看器&#xff0c;实际是一个功能全面且强大的数据查看分析工具。其提供多种搜…

土壤数据库辅助工具SPAW计算土壤导水率

土壤数据库辅助工具SPAW 首先下载SPAW工具 点击打开 根据之前的1比100土壤数据查表得到各个组分含量 其中 Field Capacity是田间持水量 Matric Bulk Density是基质粒密度 参考文章 【SWAT水文模型】ArcSWAT土壤数据库辅助工具SPAW简述

Security ❀ DNS协议常见DOS攻击详解

文章目录 1. DNS协议基础概述2. DNS报文详解2.1. DNS Request 请求包2.2. DNS Reply 响应包 3. DNS Request Flood3.1. 攻击原理3.2. 防护方法3.2.1. TC源认证3.2.2. 被动防御3.2.3. CNAME防护模式3.2.4. *CANME类型解析过程** 4. DNS Reply Flood4.1. 攻击原理4.2. 防护方法 5…

2023年【R1快开门式压力容器操作】最新解析及R1快开门式压力容器操作复审考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 R1快开门式压力容器操作最新解析是安全生产模拟考试一点通生成的&#xff0c;R1快开门式压力容器操作证模拟考试题库是根据R1快开门式压力容器操作最新版教材汇编出R1快开门式压力容器操作仿真模拟考试。2023年【R1快…

Express框架开发接口之书城商店原型图

这是利用Axure画的&#xff0c;简单画一下原型图&#xff0c;根据他们的业务逻辑我们完成书城商店API开发 首页 分类 购物车 个人中心

批量采集各类自媒体平台内容为word文档带图片软件【支持18家自媒体平台的爬取采集】

批量采集各类自媒体平台内容为word文档带图片软件介绍&#xff1a; 1、支持头条号、大鱼号、企鹅号、一点号、凤凰号、搜狐号、网易号、趣头条、东方号、时间号、惠头条、WiFi万能钥匙、新浪看点、简书、QQ看点、快传号、百家号、微信公众号的文章批量采集为docx文档并带图片。…

分布式事务(再深入)——分布式事务理论基础 Java分布式事务解决方案

前言 事务(TRANSACTION)是一个不可分割的逻辑单元&#xff0c;包含了一组数据库操作命令&#xff0c;并且把所有的命令作为一个整体向系统提交&#xff0c;要么都执行、要么都不执行。 事务作为系统中必须考虑的问题&#xff0c;无论是在单体项目还是在分布式项目中都需要进行…

力扣:147. 对链表进行插入排序(Python3)

题目&#xff1a; 给定单个链表的头 head &#xff0c;使用 插入排序 对链表进行排序&#xff0c;并返回 排序后链表的头 。 插入排序 算法的步骤: 插入排序是迭代的&#xff0c;每次只移动一个元素&#xff0c;直到所有元素可以形成一个有序的输出列表。每次迭代中&#xff0c…

c++ Vector 学习

vevtor 是c 中自带得动态数组&#xff0c;dynamic array array can hold different values/objects of same type 可以装不同得类型或者对象 dynamic size can be changed at runtime 可以运行得时候改变 要使用的话&#xff0c;先引入 #include <vector> std::vector…

性能压力测试主要目标及步骤

性能压力测试是软件开发生命周期中至关重要的一部分&#xff0c;旨在评估应用程序或系统在高负载和极端条件下的性能表现。这种测试有助于发现性能瓶颈、资源耗尽和错误&#xff0c;以确保应用程序在真实使用情况下的可靠性和稳定性。本文将探讨性能压力测试的概念、方法和最佳…

ps提示vcruntime140.dll无法继续执行此代码的多种解决方法分享

我在安装Photoshop软件时遇到了一个问题&#xff0c;即在运行过程中弹出了一个错误提示框&#xff0c;显示“由于找不到vcruntime140.dll&#xff0c;无法继续执行此代码”&#xff0c;我通过查找资料了解到vcruntime140.dll是一个动态链接库文件&#xff0c;它是Visual C Redi…

AI时代,ChatGPT与文心一言选哪一个?

&#x1f388;个人公众号:&#x1f388; :✨✨✨ 可为编程✨ &#x1f35f;&#x1f35f; &#x1f511;个人信条:&#x1f511; 为与不为皆为可为&#x1f335; 你们平时都是在什么情况下使用GPT的呢&#xff1f;为何使用&#xff1f;都使用什么平台的&#xff1f; 针对以上问…