我决定在 asterisk 服务器上记录通话,并在通话结束后将其下载到我们的数据库中。 Asterisk CDR 数据存储在 mysql 数据库中,我在那里看不到任何唯一的 callId。我想知道是否可以将表中的通话记录写入数据库中,通过一些与cdr相关的键来获取它们?
或者我看到的另一种选择是记录星号服务器上的所有呼叫,通过 ftp 将所需的呼叫下载到我们的计算机并将其保存到我们的服务器。
我肯定会让 asterisk 代替 sip 设备来记录通话。您可以使用拨号方案中的 Monitor 命令以星号记录通话,例如:
exten => 555,1,Answer
exten => 555,2,Monitor(wav,filename)
...
这将自动记录对 555 分机的所有呼叫(您可以使用 dialplan 模式 自动记录对所有分机的所有呼叫,但这取决于您的特定设置)。如果您不想记录全部,您还可以运行 AGI 脚本来区分要记录哪些呼叫。
目标文件名可以由 ani-dnis-datetime 组成以使其唯一或与任何其他星号变量组成。例如:${CALLERID(ani)}-${EXTEN}。您还可以使用唯一呼叫 ID 变量 ${UNIQUEID},例如 ${CALLERID(ani)}-${EXTEN}-${UNIQUEID}。
对于 CDR,您可以使用 cdr_odbc 模块将其作为 csv 或 sqlite 文件,或关系数据库(如 mysql、postgresql 等)。
使呼叫独一无二的是 uniqueid 字段。因此,在您的 CDR 中,您将拥有来源、目的地、涉及的频道、日期、应答时间、拨号状态等,以及此 uniqueid 字段,以便您可以将给定呼叫与给定音频文件(录制的呼叫)关联起来以及涉及的 sip 设备。如果需要,可以定期下载和备份 wav 文件。
希望有帮助!