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

kamailio-ACC模块介绍【kamailio6.0. X】

Acc 模块

作者
Jiri Kuthan
iptel.org
jiri@iptel.org

Bogdan-Andrei Iancu
Voice Sistem SRL
bogdan@voice-system.ro

Ramona-Elena Modroiu
rosdev.ro
ramona@rosdev.ro

编辑
Bogdan-Andrei Iancu
Voice Sistem SRL
bogdan@voice-system.ro

Sven Knoblich
1&1 Internet AG
sven.knoblich@1und1.de

版权
© 2002, 2003 FhG FOKUS
© 2004, 2006 Voice Sistem SRL
© 2011 1&1 Internet AG


目录

  1. 管理员指南
    1. 概述
      1.1 通用示例
    2. 额外计费
      2.1 概述
      2.2 定义与语法
      2.3 工作原理
    3. 多呼叫腿计费
      3.1 概述
      3.2 配置
      3.3 记录的数据
    4. 呼叫数据记录生成
      4.1 概述
      4.2 CDR 额外信息
      4.2.1 定义与语法
      4.3 多呼叫腿的 CDR
      4.3.1 概述
      4.3.2 配置
      4.3.2.1 螺旋代理示例
      4.3.3 记录的数据
    5. 依赖
      5.1 Kamailio 模块
      5.2 外部库或应用程序
    6. 参数
      6.1 early_media (整数)
      6.2 failed_transaction_flag (整数)
      6.3 failed_filter (字符串)
      6.4 report_ack (整数)
      6.5 report_cancels (整数)
      6.6 detect_direction (整数)
      6.7 acc_prepare_flag (整数)
      6.8 acc_prepare_always (整数)
      6.9 acc_extra_nullable (整数)
      6.10 multi_leg_info (字符串)
      6.11 log_flag (整数)
      6.12 log_missed_flag (整数)
      6.13 log_level (整数)
      6.14 log_facility (字符串)
      6.15 log_extra (字符串)
      6.16 db_flag (整数)
      6.17 db_missed_flag (整数)
      6.18 db_table_acc (字符串)
      6.19 db_table_missed_calls (字符串)
      6.20 db_url (字符串)
      6.21 acc_method_column (字符串)
      6.22 acc_from_tag_column (字符串)
      6.23 acc_to_tag_column (字符串)
      6.24 acc_callid_column (字符串)
      6.25 acc_sip_code_column (字符串)
      6.26 acc_sip_reason_column (字符串)
      6.27 acc_time_column (字符串)
      6.28 db_extra (字符串)
      6.29 db_insert_mode (整数)
      6.30 cdr_enable (整数)
      6.31 cdr_skip (字符串)
      6.32 cdr_expired_dlg_enable (整数)
      6.33 cdr_start_on_confirmed (整数)
      6.34 cdr_facility (整数)
      6.35 cdr_extra (字符串)
      6.36 cdr_extra_nullable (整数)
      6.37 cdr_start_id (字符串)
      6.38 cdr_end_id (字符串)
      6.39 cdr_duration_id (字符串)
      6.40 cdr_log_enable (整数)
      6.41 cdrs_table (字符串)
      6.42 time_mode (整数)
      6.43 time_attr (字符串)
      6.44 time_exten (字符串)
      6.45 time_format (字符串)
      6.46 reason_from_hf (整数)
      6.47 clone_msg (整数)
      6.48 cdr_on_failed (整数)
      6.49 acc_extra_size (整数)
      6.50 cdr_extra_size (整数)
    7. 函数
      7.1 acc_log_request(comment)
      7.2 acc_db_request(comment, table)
      7.3 acc_request(comment, table)
  2. 常见问题

1. 概述

ACC 模块用于将事务信息记录到不同的后端,如 syslog 和 SQL。通过单独的模块 acc_radius 可以启用对 RADIUS 的支持。

acc_diameter 模块中提供了对 Diameter 协议的早期支持,但未与当前 Diameter 协议保持同步。如果需要 Diameter 支持,请使用 ims_charging 模块。

要为事务计费并选择使用哪一组后端,脚本编写者只需设置一些标志(参见模块参数部分的标志定义)。如果为特定后端设置了计费标志,ACC 模块将在事务完成时报告。模块的典型用法不需要特定的脚本命令——功能通过事务处理隐式绑定。脚本编写者只需使用适当的 setflag 标记事务以进行计费。即使如此,模块仍允许脚本编写者通过某些脚本函数在特殊情况下强制计费。

默认情况下,计费模块会记录事务的一组固定属性。如果要通过添加更多信息来自定义计费,请参阅下一章关于额外计费的内容。

固定的最小计费信息包括:

  • 请求方法名称
  • From 头的 TAG 参数
  • To 头的 TAG 参数
  • Call-Id
  • 最终回复的 3 位状态码
  • 最终回复的原因短语
  • 事务完成时的时间戳

如果请求中不存在某个值,则记录为空字符串。

注意:

  • 单个 INVITE 可能会生成多个计费报告——这是由于 SIP 的分叉特性。
  • 所有与计费相关的标志都需要在请求处理路由中设置——只有“missed-call”标志可以从其他类型的路由中切换。
  • 如果 UA 在通话中途失败,代理将永远不会发现。通常,更好的做法是从终端设备(如 PSTN 网关)进行计费,因为它最了解呼叫状态(包括媒体状态和 PSTN 状态)。然而,基于 CDR 的日志记录可以选择记录来自过期对话的现有信息(cdr_extra 中的 dlg_vars)。请参阅 cdr_expired_dlg_enable 参数。

SQL 后端支持已编译到模块中。

1.1 通用示例
loadmodule "modules/acc/acc.so"
modparam("acc", "log_level", 1)
modparam("acc", "log_flag", 1)if (uri=~"sip:+40") { /* 呼叫罗马尼亚 */if (!proxy_authorize("sip_domain.net", "subscriber")) {proxy_challenge("sip_domain.net", "0");exit;}if (method=="INVITE" && !check_from()) {log("from!=digest\n");sl_send_reply("403","Forbidden");}setflag(1); /* 设置计费标志 */t_relay();  /* 进入有状态模式 */
};

2. 额外计费

2.1 概述

除了静态的默认信息外,ACC 模块还允许动态选择要记录的额外信息。这允许您记录任何伪变量(AVP、请求的部分等)。

2.2 定义与语法

通过 xxx_extra 参数选择额外信息,指定要记录的附加信息的名称。这些信息通过伪变量定义,可能包括头、AVP 值或其他消息或系统值。参数语法为:

xxx_extra = extra_definition (';'extra_definition)*
extra_definition = log_name '=' pseudo_variable

支持的伪变量列表可在 Kamailio 文档 中找到。

2.3 工作原理

某些伪变量可能返回多个值(如头或 AVP)。在这种情况下,返回的值将以逗号分隔的格式嵌入单个字符串中。


3. 多呼叫腿计费

3.1 概述

由于转发操作,SIP 呼叫可能具有多个腿。例如,用户 A 呼叫用户 B,用户 B 将呼叫转发给用户 C。只有一个 SIP 呼叫,但有两条腿(A 到 B 和 B 到 C)。记录呼叫腿对于正确计费是必要的。

3.2 配置

通过一组 AVP 为每个呼叫腿存储一组值。脚本编写者必须确保正确插入这些 AVP。

3.3 记录的数据

对于每个呼叫,所有 AVP 集的值将被记录。记录方式取决于数据后端:

  • syslog:所有腿集将作为一个记录字符串添加。
  • 数据库:每个腿集将单独记录。
  • RADIUS:所有腿集将添加到同一 RADIUS 计费消息中。

4. 呼叫数据记录生成

4.1 概述

除了基于事务的日志记录外,还可以直接从 Kamailio 生成和记录呼叫数据记录(CDR)。CDR 记录依赖于对话框模块。

4.2 CDR 额外信息

类似于事务额外信息,CDR 额外信息通过 cdr_extra 参数定义。

4.3 多呼叫腿的 CDR

与普通计费不同,CDR 日志记录使用对话框而不是事务来记录数据。


5. 依赖

5.1 Kamailio 模块

该模块依赖于以下模块:

  • tm:事务管理器
  • 数据库模块:如果使用 SQL 支持
  • rr:记录路由,如果启用了 detect_direction 参数
  • dialog:对话框,如果启用了 cdr_enable 参数
5.2 外部库或应用程序

无。


6. 参数

6.1 early_media (整数)

是否应记录早期媒体(任何带有正文的临时回复)?
默认值为 0(否)。

6.2 failed_transaction_flag (整数)

事务失败时(SIP 状态码 >= 300)是否应记录事务的标志。
默认值为未设置(无标志)。

6.3 failed_filter (字符串)

失败响应代码的字符串(300 到 999),用逗号分隔。即使设置了 failed_transaction_flag,如果响应代码在列表中,失败事务也不会被记录。
默认值为未设置(无过滤)。

6.4 report_ack (整数)

是否尝试记录端到端的 ACK?
默认值为 0(否)。

6.5 report_cancels (整数)

是否显式记录 CANCEL 事务?
默认值为 0(否)。

6.6 detect_direction (整数)

控制顺序请求的方向检测。
默认值为 0(禁用)。

6.7 acc_prepare_flag (整数)

事务标志,指示是否可以在稍后计费。
默认值为未设置(无标志)。

6.8 acc_prepare_always (整数)

是否始终准备所有请求以标记事务稍后计费。
默认值为未设置。

6.9 acc_extra_nullable (整数)

如果设置为 1,数据库额外字段在未定义或为 $null 时设置为 NULL。
默认值为 0。

6.10 multi_leg_info (字符串)

定义用于每条呼叫腿计费的 AVP 集。
默认值为 0(禁用)。

6.11 log_flag (整数)

请求标志,用于通过 syslog 记录事务。
默认值为未设置(无标志)。

6.12 log_missed_flag (整数)

请求标志,用于通过 syslog 记录未接呼叫。
默认值为未设置(无标志)。

6.13 log_level (整数)

记录计费消息的日志级别。
默认值为 1(L_NOTICE)。

6.14 log_facility (字符串)

记录计费消息的日志设施。
默认值为 LOG_DAEMON。

6.15 log_extra (字符串)

要记录的额外值。
默认值为 NULL。

6.16 db_flag (整数)

请求标志,用于通过数据库记录事务。
默认值为未设置(无标志)。

6.17 db_missed_flag (整数)

请求标志,用于通过数据库记录未接呼叫。
默认值为未设置(无标志)。

6.18 db_table_acc (字符串)

成功呼叫的计费表名。
默认值为 “acc”。

6.19 db_table_missed_calls (字符串)

未接呼叫的计费表名。
默认值为 “missed_calls”。

6.20 db_url (字符串)

SQL 地址。
默认值为 NULL(SQL 禁用)。

6.21 acc_method_column (字符串)

存储请求方法名称的列名。
默认值为 “method”。

6.22 acc_from_tag_column (字符串)

存储 From 头 TAG 参数的列名。
默认值为 “from_tag”。

6.23 acc_to_tag_column (字符串)

存储 To 头 TAG 参数的列名。
默认值为 “to_tag”。

6.24 acc_callid_column (字符串)

存储 Callid 值的列名。
默认值为 “callid”。

6.25 acc_sip_code_column (字符串)

存储最终回复状态码的列名。
默认值为 “sip_code”。

6.26 acc_sip_reason_column (字符串)

存储最终回复原因短语的列名。
默认值为 “sip_reason”。

6.27 acc_time_column (字符串)

存储事务完成时间戳的列名。
默认值为 “time”。

6.28 db_extra (字符串)

要记录到数据库的额外值。
默认值为 NULL。

6.29 db_insert_mode (整数)

如果设置为 1,使用 INSERT DELAYED 添加记录。
默认值为 0。

6.30 cdr_enable (整数)

启用 CDR 报告。
默认值为 0(禁用)。

6.31 cdr_skip (字符串)

跳过具有此 dlg_var 设置的对话框的 CDR 生成。
默认值为 NULL。

6.32 cdr_expired_dlg_enable (整数)

是否在对话框过期时启用 CDR 日志记录?
默认值为 0(禁用)。

6.33 cdr_start_on_confirmed (整数)

是否从对话框确认时开始计时?
默认值为 0(从对话框创建时开始)。

6.34 cdr_facility (整数)

CDR 消息的日志设施。
默认值为 LOG_DAEMON。

6.35 cdr_extra (字符串)

定义自定义 CDR 字段的伪变量集。
默认值为 NULL。

6.36 cdr_extra_nullable (整数)

自定义 CDR 字段是否可以为 NULL?
默认值为 0。

6.37 cdr_start_id (字符串)

修改用于存储开始时间的 ID。
默认值为 “start_time”。

6.38 cdr_end_id (字符串)

修改用于存储结束时间的 ID。
默认值为 “end_time”。

6.39 cdr_duration_id (字符串)

修改用于存储持续时间的 ID。
默认值为 “duration”。

6.40 cdr_log_enable (整数)

控制是否将 CDR 记录写入 syslog。
默认值为 1(启用)。

6.41 cdrs_table (字符串)

存储对话框 CDR 的数据库表名。
默认值为 “”(无数据库存储)。

6.42 time_mode (整数)

存储与事件时间相关的额外值。
默认值为 0。

6.43 time_attr (字符串)

存储事件时间的 syslog 属性或数据库列名。
默认值为未设置。

6.44 time_exten (字符串)

存储事件时间的扩展值的 syslog 属性或数据库列名。
默认值为未设置。

6.45 time_format (字符串)

指定时间格式。
默认值为 “%Y-%m-%d %H:%M:%S”。

6.46 reason_from_hf (整数)

从何处获取 sip_reason。
默认值为 0(从状态行获取)。

6.47 clone_msg (整数)

是否克隆请求结构以避免并发访问。
默认值为 1。

6.48 cdr_on_failed (整数)

是否存储失败对话框的 CDR?
默认值为 1。

6.49 acc_extra_size (整数)

设置计费记录中额外属性的最大数量。
默认值为 64。

6.50 cdr_extra_size (整数)

设置 CDR 中额外属性的最大数量。
默认值为 64。


7. 函数

7.1 acc_log_request(comment)

报告请求,例如用于报告未接呼叫。
参数:

  • comment:要附加的注释,可以包含伪变量。
7.2 acc_db_request(comment, table)

将请求报告发送到数据库。
参数:

  • comment:要附加的注释,可以包含伪变量。
  • table:要使用的数据库表。
7.3 acc_request(comment, table)

将计费记录写入 LOG 和 DATABASE 后端。
参数:

  • comment:用于生成 SIP 响应代码和文本字段的注释。
  • table:要使用的数据库表。

2. 常见问题

2.1 旧的 log_fmt 参数发生了什么?

该参数已被废弃,由额外计费功能取代。

2.2 旧的 multi_leg_enabled 参数发生了什么?

该参数已被 multi_leg_info 参数取代。

2.3 旧的 src_leg_avp_id 和 dst_leg_avp_id 参数发生了什么?

这些参数已被 multi_leg_info 参数取代。

2.4 在哪里可以找到更多关于 Kamailio 的信息?

请访问 Kamailio 官方网站。

2.5 在哪里可以发布关于此模块的问题?

请查看我们的邮件列表:

  • 用户邮件列表:[sr-users@lists.kamailio.org](https://lists.kamailio.org/mailman3/postorius

相关文章:

kamailio-ACC模块介绍【kamailio6.0. X】

Acc 模块 作者 Jiri Kuthan iptel.org jiriiptel.org Bogdan-Andrei Iancu Voice Sistem SRL bogdanvoice-system.ro Ramona-Elena Modroiu rosdev.ro ramonarosdev.ro 编辑 Bogdan-Andrei Iancu Voice Sistem SRL bogdanvoice-system.ro Sven Knoblich 1&1 Internet …...

数据库对象

数据库对象 数据库对象是构成数据库结构的基本单位,它们定义了数据库存储的数据类型、数据的组织方式以及数据之间的关系。在数据库中,对象可以包括表,视图,索引,触发器,存储过程,函数等多种类…...

EtherCAT主站IGH-- 27 -- IGH之globals.h文件解析

EtherCAT主站IGH-- 27 -- IGH之globals.h文件解析 0 预览一 该文件功能宏定义数据结构打印宏三 h文件翻译四 c文件翻译该文档修改记录:总结0 预览 一 该文件功能 该文件包含了一些全局定义和宏,用于 IgH EtherCAT 主站(EtherCAT Master)的实现。包括了一些超时设定、宏定义…...

2025多目标优化创新路径汇总

多目标优化是当下非常热门且有前景的方向!作为AI领域的核心技术之一,其专注于解决多个相互冲突的目标的协同优化问题,核心理念是寻找一组“不完美但均衡”的“帕累托最优解”。在实际中,几乎处处都有它的身影。 但随着需求场景的…...

15JavaWeb——Maven高级篇

Maven高级 Web开发讲解完毕之后,我们再来学习Maven高级。其实在前面的课程当中,我们已经学习了Maven。 我们讲到 Maven 是一款构建和管理 Java 项目的工具。经过前面 10 多天 web 开发的学习,相信大家对于 Maven 这款工具的基本使用应该没什…...

使用Ollama本地化部署DeepSeek

1、Ollama 简介 Ollama 是一个开源的本地化大模型部署工具,旨在简化大型语言模型(LLM)的安装、运行和管理。它支持多种模型架构,并提供与 OpenAI 兼容的 API 接口,适合开发者和企业快速搭建私有化 AI 服务。 Ollama …...

蓝桥杯刷题DAY1:前缀和

所谓刷题,讲究的就是细心 帕鲁服务器崩坏【算法赛】 “那个帕鲁我已经观察你很久了,我对你是有些失望的,进了这个营地,不是把事情做好就可以的,你需要有体系化思考的能力。” 《幻兽帕鲁》火遍全网,成为…...

【基于SprintBoot+Mybatis+Mysql】电脑商城项目之用户注册

🧸安清h:个人主页 🎥个人专栏:【计算机网络】【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🎯项目基本介绍 🚦项…...

MINIRAG: TOWARDS EXTREMELY SIMPLE RETRIEVAL-AUGMENTED GENERATION论文翻译

感谢阅读 注意不含评估以后的翻译原论文地址标题以及摘要介绍部分MiniRAG 框架2.1 HETEROGENEOUS GRAPH INDEXING WITH SMALL LANGUAGE MODELS2.2 LIGHTWEIGHT GRAPH-BASED KNOWLEDGE RETRIEVAL2.2.1 QUERY SEMANTIC MAPPING2.2.2 TOPOLOGY-ENHANCED GRAPH RETRIEVAL 注意不含评…...

微服务入门(go)

微服务入门(go) 和单体服务对比:里面的服务仅仅用于某个特定的业务 一、领域驱动设计(DDD) 基本概念 领域和子域 领域:有范围的界限(边界) 子域:划分的小范围 核心域…...

Baklib揭示内容中台实施最佳实践的策略与实战经验

内容概要 在当前数字化转型的浪潮中,内容中台的概念日益受到关注。它不再仅仅是一个内容管理系统,而是企业提升运营效率与灵活应对市场变化的重要支撑平台。内容中台的实施离不开最佳实践的指导,这些实践为企业在建设高效内容中台时提供了宝…...

C++11新特性之lambda表达式

1.介绍 C11引入了lambda表达式。lambda表达式提供一种简洁的方式来定义匿名函数对象,使得在需要临时定义一个函数时非常方便。 2.lambda表达式用法 lambda表达式的基本用法为: [捕获列表](参数列表)->返回类型 { 函数体 …...

洛谷 P10289 [GESP样题 八级] 小杨的旅游 C++ 完整题解

一、题目链接 P10289 [GESP样题 八级] 小杨的旅游 - 洛谷 二、题目大意 n个节点之间有n - 1条边,其中k个节点是传送门,任意两个传送门之间可以 以0单位地时间相互到达。问从u到v至少需要多少时间? 三、解题思路 输入不必多讲。 cin >> …...

使用 Tauri 2 + Next.js 开发跨平台桌面应用实践:Singbox GUI 实践

Singbox GUI 实践 最近用 Tauri Next.js 做了个项目 - Singbox GUI,是个给 sing-box 用的图形界面工具。支持 Windows、Linux 和 macOS。作为第一次接触这两个框架的新手,感觉收获还蛮多的,今天来分享下开发过程中的一些经验~ 为啥要做这个…...

JWT入门

一、初识JWT:新时代的身份认证方案 在分布式系统成为主流的今天,传统的Session认证方式逐渐显露出局限性。JWT(JSON Web Token)作为现代Web开发的认证新标准,凭借其无状态、跨域友好和安全性等特性,正在成为…...

Python - Quantstats量化投资策略绩效统计包 - 详解

使用Quantstats包做量化投资绩效统计的时候因为Pandas、Quantstats版本不匹配踩了一些坑;另外,Quantstats中的绩效统计指标非常全面,因此详细记录一下BUG修复方法、使用说明以及部分指标的内涵示意。 一、Quantstats安装及版本匹配问题 可以…...

智慧园区管理系统推动企业智能运维与资源优化的全新路径分析

内容概要 在当今快速发展的商业环境中,园区管理的数字化转型显得尤为重要。在这个背景下,快鲸智慧园区管理系统应运而生,成为企业实现高效管理的最佳选择。它通过整合互联网、物联网等先进技术,以智能化的方式解决了传统管理模式…...

【数据结构-字典树】力扣14. 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入:strs [“flower”,“flow”,“flight”] 输出:“fl” 示例 2: 输入:strs [“dog”,“racecar…...

《深入浅出HTTPS​​​​​​​​​​​​​​​​​》读书笔记(31):HTTPS和TLS/SSL

《深入浅出HTTPS​​​​​​​​​​》读书笔记(31):HTTPS和TLS/SSL TLS/SSL协议和应用层协议无关,它只是加密应用层协议(比如HTTP)并传递给下层的TCP。 HTTP和TLS/SSL协议组合在一起就是HTTPS, HTTPS等…...

Go学习:Go语言中if、switch、for语句与其他编程语言中相应语句的格式区别

Go语言中的流程控制语句逻辑结构与其他编程语言类似,格式有些不同。Go语言的流程控制中,包括if、switch、for、range、goto等语句,没有while循环。 目录 1. if 语句 2. switch语句 3. for语句 4. range语句 5. goto语句(不常用…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

安卓基础(aar)

重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...

DAY 45 超大力王爱学Python

来自超大力王的友情提示:在用tensordoard的时候一定一定要用绝对位置,例如:tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾: tensorboard的发展历史和原理tens…...

如何把工业通信协议转换成http websocket

1.现状 工业通信协议多数工作在边缘设备上,比如:PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发,当设备上用的是modbus从站时,采集设备数据需要开发modbus主站;当设备上用的是西门子PN协议时&#xf…...

背包问题双雄:01 背包与完全背包详解(Java 实现)

一、背包问题概述 背包问题是动态规划领域的经典问题,其核心在于如何在有限容量的背包中选择物品,使得总价值最大化。根据物品选择规则的不同,主要分为两类: 01 背包:每件物品最多选 1 次(选或不选&#…...