当前位置: 首页 > 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语句(不常用…...

保姆级教程:用Docker Compose一键部署Calibre-Web,再也不用担心电子书管理了

零基础打造个人电子书库:Docker Compose全栈部署Calibre-Web实战指南 在数字阅读时代,如何高效管理日益增长的电子书资源成为许多读者的痛点。传统文件管理方式难以满足多设备同步、元数据整理和阅读进度跟踪等需求,而Calibre-Web正是为解决这…...

《QGIS快速入门与应用基础》239:指北针样式选择(预设/自定义)

作者:翰墨之道,毕业于国际知名大学空间信息与计算机专业,获硕士学位,现任国内时空智能领域资深专家、CSDN知名技术博主。多年来深耕地理信息与时空智能核心技术研发,精通 QGIS、GrassGIS、OSG、OsgEarth、UE、Cesium、OpenLayers、Leaflet、MapBox 等主流工具与框架,兼具…...

告别低效苦读!研一新生文献阅读全流程AI工具选择指南(6款工具实战对比)

研一开学第一个月,导师丢来20篇英文文献让你"先看看"。你打开第一篇Nature子刊,密密麻麻的专业术语让你头皮发麻。用翻译软件逐句翻译?格式全乱了,图表公式看不懂。硬着头皮啃原文?一个下午只看完3页&#x…...

TranslucentTB深度解析:如何用5MB内存实现Windows任务栏的视觉革命

TranslucentTB深度解析:如何用5MB内存实现Windows任务栏的视觉革命 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 在Windows…...

Ubuntu 24.04 环境实战:ROS 2 Kilted 实现 SLAM 建图与 Nav2 导航

一、构建地图 1、安装依赖 安装 slam_toolbox 算法库: sudo apt install ros-kilted-slam-toolbox安装 TurtleBot3 全套支持包: sudo apt install ros-kilted-turtlebot3*2、使用清华源 如果apt安装很慢,请先配置清华源: sud…...

美团、腾讯、字节怎么选?3个真实案例告诉你答案

美团、腾讯、字节怎么选?3个真实案例告诉你答案 2026校招季,三个朋友的不同选择 大厂直通车-校招大礼包:入口入口 写在前面 2026届秋招结束了。 我的三个朋友小A、小B、小C都拿到了心仪的offer。有意思的是,他们分别选了字节、腾…...

ETH-01模块避坑指南:为什么HTTP协议不行而TCP直接监听成功?

ETH-01模块协议选择实战:从HTTP困境到TCP高效监听 第一次拿到ETH-01这个串口转以太网模块时,我和大多数开发者一样,本能地选择了HTTP协议进行通信测试。毕竟在Web开发领域,HTTP就像空气一样无处不在。但当我花了整整两天时间调试…...

TranslucentTB:轻量任务栏视觉增强工具,让Windows桌面颜值提升300%

TranslucentTB:轻量任务栏视觉增强工具,让Windows桌面颜值提升300% 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB …...

智能客服体验问题诊断:从技术架构到优化实践

智能客服体验问题诊断:从技术架构到优化实践 智能客服作为企业与用户交互的重要窗口,其体验好坏直接影响用户满意度和业务转化率。一个响应迟钝、答非所问的客服机器人,不仅无法解决问题,反而会加剧用户的不满。本文将从一个开发者…...

档案宝 档案管理系统怎么样?为什么企业选择他?

在当今信息化高速发展的时代,企业档案管理已经从传统的纸质化时代迈向了数字化、智能化的新阶段。随着企业规模的不断扩大和业务类型的日益复杂,档案管理面临着前所未有的挑战:档案数量激增、查找困难、存储空间紧张、安全隐患突出等问题严重…...