c++ - 自己的 Asterisk 模块(SIP 记录器)

标签 c++ linux asterisk

任何人都知道如何编写从 Asterisk 收集 SIP header 数据 的模块。 我找到了如何编写 CDR 收集器的小样本,需要非常接近这个模块但是它会得到 SIP header

确切地说,我需要收集和解析之间的所有数据 <--- SIP 从 UDP 读取:XXX.XX.XX.XX:6060 ---><------------>

附言 是否可以从 AGI 实时获取这些数据?或者我必须编写自己的 Asterisk 模块?

最佳答案

最简单的方法做到这一点

1) 设置 kamailio/opensips 而不是 asterisk 并进行 sip_trace 模块配置

2) 使用 tcpdump 并捕获所有数据包

Asterisk 并非旨在提供此类信息。

不,您不能为此使用 AGI。不,您不能创建将捕获它的模块。

如果你仍然想用 Asterisk 做,你可以

1) 启用调试,解析调试文件中的所有内容或创建记录器模块,例如到数据库。

2) 修补 chan_sip.c 以将该信息存储在变量中,修补您的拨号方案以保存该变量。

关于c++ - 自己的 Asterisk 模块(SIP 记录器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25586115/

相关文章:

linux - 使用 ftrace 和 kprobes(通过使用虚拟地址转换)捕获用户空间程序集?

linux - docker、openmpi 和/proc/mounts 行的意外结束

c - 在 Asterisk 11 中从 H.264/AVC 转码到 HEVC

c++ - C/C++ ftplib : Undefined reference to _imp__FtpInit

c++ - linux eclipse c++ 本地命名空间和 "std::"

c++ - 如何在 Unix C++ 上跟踪进程?

php - Asterisk 执行失败 '/usr/share/asterisk/agi-bin/call_handle.php' : Permission denied

c++ - Qt XML 读取元素并只获取根

c++ - Linux 上未采用分支

asterisk - 在 Asterisk AGI 中与我见面