Asterisk 记录每个呼叫并获取SIP用户名

Asterisk 记录每个呼叫并获取SIP用户名,asterisk,Asterisk,我想在mysql数据库中记录通过星号框进行的每个调用。据我所知,Asterisk并没有提供任何类似的现成服务(或者一些我可以查询的服务,因为AMI允许您查询当前状态,而不是以前的调用) 首先,我只想储存 呼叫来自的设备 原始来电显示 呼叫开始时间 最终来电显示(可在拨号计划中修改) 已拨号码 通话结束时间 我想我知道如何存储所有东西,但我遇到的问题是知道接收呼叫的设备。。。是否存在保存此信息的变量 我想到了两件事来达到这个目的: 为每个设备设置上下文。。。这也有两个选择 我可以有一个ca

我想在mysql数据库中记录通过星号框进行的每个调用。据我所知,Asterisk并没有提供任何类似的现成服务(或者一些我可以查询的服务,因为AMI允许您查询当前状态,而不是以前的调用)

首先,我只想储存

  • 呼叫来自的设备
  • 原始来电显示
  • 呼叫开始时间
  • 最终来电显示(可在拨号计划中修改)
  • 已拨号码
  • 通话结束时间
我想我知道如何存储所有东西,但我遇到的问题是知道接收呼叫的设备。。。是否存在保存此信息的变量

我想到了两件事来达到这个目的:

  • 为每个设备设置上下文。。。这也有两个选择
    • 我可以有一个catch-all扩展,它在mysql数据库中创建条目,并将本地通道拨到我拥有逻辑的上下文。这个解决方案真正糟糕的地方在于,它总是在处理呼叫之前等待几秒钟,但它不知道呼叫何时结束
    • 我可以在每种情况下都有逻辑。。。因此,在拨出逻辑中,我将设备名称传递给拨出并存储信息的函数。明显的缺点是,我拥有的环境和我拥有的设备一样多,很快就会变得难以管理
有什么我遗漏的吗?我想到的另一个选项是在sip.conf处设置文本呼叫者id(b/c我想保留号码)。。。但这会覆盖文本呼叫者id,这对我来说现在并不重要,但可能在某个时候


谢谢

是的,它提供了所有这些现成的功能。请看“cdr_odbc”模块。就我个人而言,我使用cdr_管理器模块获取所有呼叫详细信息,然后这使我有机会应用应用应用程序代码,根据我的业务逻辑对我感兴趣的cdr字段进行按摩/转换。

它不存储被呼叫的设备,对吗?我真的很想知道电话是从哪里打来的编辑商店频道,在大多数情况下,你都可以从那里得到设备。您还可以通过Set(CDR(field\u you\u want)=something)将任何变量存储到userfield或custom字段中