作者
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
ACC 模块用于将事务信息记录到不同的后端,如 syslog 和 SQL。通过单独的模块 acc_radius
可以启用对 RADIUS 的支持。
acc_diameter
模块中提供了对 Diameter 协议的早期支持,但未与当前 Diameter 协议保持同步。如果需要 Diameter 支持,请使用 ims_charging
模块。
要为事务计费并选择使用哪一组后端,脚本编写者只需设置一些标志(参见模块参数部分的标志定义)。如果为特定后端设置了计费标志,ACC 模块将在事务完成时报告。模块的典型用法不需要特定的脚本命令——功能通过事务处理隐式绑定。脚本编写者只需使用适当的 setflag
标记事务以进行计费。即使如此,模块仍允许脚本编写者通过某些脚本函数在特殊情况下强制计费。
默认情况下,计费模块会记录事务的一组固定属性。如果要通过添加更多信息来自定义计费,请参阅下一章关于额外计费的内容。
固定的最小计费信息包括:
如果请求中不存在某个值,则记录为空字符串。
注意:
cdr_extra
中的 dlg_vars
)。请参阅 cdr_expired_dlg_enable
参数。SQL 后端支持已编译到模块中。
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(); /* 进入有状态模式 */
};
除了静态的默认信息外,ACC 模块还允许动态选择要记录的额外信息。这允许您记录任何伪变量(AVP、请求的部分等)。
通过 xxx_extra
参数选择额外信息,指定要记录的附加信息的名称。这些信息通过伪变量定义,可能包括头、AVP 值或其他消息或系统值。参数语法为:
xxx_extra = extra_definition (';'extra_definition)*
extra_definition = log_name '=' pseudo_variable
支持的伪变量列表可在 Kamailio 文档 中找到。
某些伪变量可能返回多个值(如头或 AVP)。在这种情况下,返回的值将以逗号分隔的格式嵌入单个字符串中。
由于转发操作,SIP 呼叫可能具有多个腿。例如,用户 A 呼叫用户 B,用户 B 将呼叫转发给用户 C。只有一个 SIP 呼叫,但有两条腿(A 到 B 和 B 到 C)。记录呼叫腿对于正确计费是必要的。
通过一组 AVP 为每个呼叫腿存储一组值。脚本编写者必须确保正确插入这些 AVP。
对于每个呼叫,所有 AVP 集的值将被记录。记录方式取决于数据后端:
除了基于事务的日志记录外,还可以直接从 Kamailio 生成和记录呼叫数据记录(CDR)。CDR 记录依赖于对话框模块。
类似于事务额外信息,CDR 额外信息通过 cdr_extra
参数定义。
与普通计费不同,CDR 日志记录使用对话框而不是事务来记录数据。
该模块依赖于以下模块:
detect_direction
参数cdr_enable
参数无。
是否应记录早期媒体(任何带有正文的临时回复)?
默认值为 0(否)。
事务失败时(SIP 状态码 >= 300)是否应记录事务的标志。
默认值为未设置(无标志)。
失败响应代码的字符串(300 到 999),用逗号分隔。即使设置了 failed_transaction_flag
,如果响应代码在列表中,失败事务也不会被记录。
默认值为未设置(无过滤)。
是否尝试记录端到端的 ACK?
默认值为 0(否)。
是否显式记录 CANCEL 事务?
默认值为 0(否)。
控制顺序请求的方向检测。
默认值为 0(禁用)。
事务标志,指示是否可以在稍后计费。
默认值为未设置(无标志)。
是否始终准备所有请求以标记事务稍后计费。
默认值为未设置。
如果设置为 1,数据库额外字段在未定义或为 $null
时设置为 NULL。
默认值为 0。
定义用于每条呼叫腿计费的 AVP 集。
默认值为 0(禁用)。
请求标志,用于通过 syslog 记录事务。
默认值为未设置(无标志)。
请求标志,用于通过 syslog 记录未接呼叫。
默认值为未设置(无标志)。
记录计费消息的日志级别。
默认值为 1(L_NOTICE)。
记录计费消息的日志设施。
默认值为 LOG_DAEMON。
要记录的额外值。
默认值为 NULL。
请求标志,用于通过数据库记录事务。
默认值为未设置(无标志)。
请求标志,用于通过数据库记录未接呼叫。
默认值为未设置(无标志)。
成功呼叫的计费表名。
默认值为 “acc”。
未接呼叫的计费表名。
默认值为 “missed_calls”。
SQL 地址。
默认值为 NULL(SQL 禁用)。
存储请求方法名称的列名。
默认值为 “method”。
存储 From 头 TAG 参数的列名。
默认值为 “from_tag”。
存储 To 头 TAG 参数的列名。
默认值为 “to_tag”。
存储 Callid 值的列名。
默认值为 “callid”。
存储最终回复状态码的列名。
默认值为 “sip_code”。
存储最终回复原因短语的列名。
默认值为 “sip_reason”。
存储事务完成时间戳的列名。
默认值为 “time”。
要记录到数据库的额外值。
默认值为 NULL。
如果设置为 1,使用 INSERT DELAYED 添加记录。
默认值为 0。
启用 CDR 报告。
默认值为 0(禁用)。
跳过具有此 dlg_var
设置的对话框的 CDR 生成。
默认值为 NULL。
是否在对话框过期时启用 CDR 日志记录?
默认值为 0(禁用)。
是否从对话框确认时开始计时?
默认值为 0(从对话框创建时开始)。
CDR 消息的日志设施。
默认值为 LOG_DAEMON。
定义自定义 CDR 字段的伪变量集。
默认值为 NULL。
自定义 CDR 字段是否可以为 NULL?
默认值为 0。
修改用于存储开始时间的 ID。
默认值为 “start_time”。
修改用于存储结束时间的 ID。
默认值为 “end_time”。
修改用于存储持续时间的 ID。
默认值为 “duration”。
控制是否将 CDR 记录写入 syslog。
默认值为 1(启用)。
存储对话框 CDR 的数据库表名。
默认值为 “”(无数据库存储)。
存储与事件时间相关的额外值。
默认值为 0。
存储事件时间的 syslog 属性或数据库列名。
默认值为未设置。
存储事件时间的扩展值的 syslog 属性或数据库列名。
默认值为未设置。
指定时间格式。
默认值为 “%Y-%m-%d %H:%M:%S”。
从何处获取 sip_reason。
默认值为 0(从状态行获取)。
是否克隆请求结构以避免并发访问。
默认值为 1。
是否存储失败对话框的 CDR?
默认值为 1。
设置计费记录中额外属性的最大数量。
默认值为 64。
设置 CDR 中额外属性的最大数量。
默认值为 64。
报告请求,例如用于报告未接呼叫。
参数:
将请求报告发送到数据库。
参数:
将计费记录写入 LOG 和 DATABASE 后端。
参数:
该参数已被废弃,由额外计费功能取代。
该参数已被 multi_leg_info
参数取代。
这些参数已被 multi_leg_info
参数取代。
请访问 Kamailio 官方网站。
请查看我们的邮件列表: