是否可以将 SIP 请求记录到星号中的数据库?我对这些细节感兴趣:
- 时间戳
- SIP方法
- 状态码
- 来源号码/分机
- 目的地号码/分机
我很确定可以将 queue_log 事件转换为 SIP 请求并从中获取上述信息。但是,由于并非每个呼叫都经过呼叫队列,因此此解决方案不适用于我。
也许可以通过使用AMI来实现?或者编写自定义拨号方案?请分享您对这个问题的看法。
是否可以将 SIP 请求记录到星号中的数据库?我对这些细节感兴趣:
我很确定可以将 queue_log 事件转换为 SIP 请求并从中获取上述信息。但是,由于并非每个呼叫都经过呼叫队列,因此此解决方案不适用于我。
也许可以通过使用AMI来实现?或者编写自定义拨号方案?请分享您对这个问题的看法。
没有办法做到这一点。
Asterisk 不会记录 sip 消息,除非你打开了 sip 调试。
如果您需要控制消息级别,请查看 kamailio/opensips 项目。
我曾经为一位需要非常详尽的实时统计数据的客户工作。为了让一切正确,我们必须结合 CDR、CEL 和 queue_logs。最后,这是一个非常复杂的系统,但当时我们还没有看到其他方法。好吧,我们做到了,但这是不可行的。
您可以问的最简单的问题之一是:谁(A)打电话给谁(B)以及谁接听了电话(C)。如果你能回答这个问题,你基本上可以回答哪个客户(A),呼叫哪个分机(B),这可能反映了客户的兴趣。要找出工作负载发生的位置,您必须拥有最终扩展名 (C)。
听起来很简单,但实际上很难做到,具体取决于客户的设置。如果您有混合技术,例如用于呼出呼叫的 ISDN,以及用于呼入(公司内部)呼叫的 SIP(星号/freeswitch),您可能会发现根本没有可用的呼叫详细记录。
即使对于入站 SIP 电话,我也可以告诉您,在某些情况下,仅找出正确的 A、B、C 扩展是非常困难的!!!首先,您必须知道 Asterisk 内部知道两个所谓的“腿”,其中两条腿代表两个通道之间的桥梁(如果我错了,请纠正我)。我不是这里的专家,但将其视为两个端点相互交谈。在该术语中,没有“最初称为扩展 B”。此外,CEL 和 CDR 并不反映这一点。CDR 中有“dst”和“src”字段,但实际上“channel”和“dstchannel”对您来说更有价值。“dstchannel”有时看起来像“SIP/dialnumber@foobar”,但前提是您的 SIP 帐户以某种方式与给定号码相关(extension=dialnumber)。请注意,客户通常不关心分机或拨号号码之间的区别,但在 SIP 中您必须关心。
真正有帮助的是如果您使用自定义 CDR 变量。将星号配置为使用“custom_cdr”驱动程序进行 CDR 日志记录,并可能使用“custom_cel”进行 CEL 日志记录。然后您可以在您的拨号方案中设置 CDR 变量,它们会自动写入 CDR/CEL 后端日志记录工具(例如 ODBC)。
最后一点要考虑:将 A、B 和 C 视为人。让 A 打电话给 B。让 B 让 A 暂停,然后问 C 人是否可以根据她的经验接任。将呼叫从 A<->B 转移到 A<->C(B 挂机)。您认为您从中获得了多少 CDR 和多少 CEL?字段是如何填充的?在 CDR 中,这看起来像是 A 一直在与 B 交谈。只有通过查看 CEL,您才会注意到有一个 TRANSFER 事件给您提示。(对不起,如果从我的记忆中,现在可能完全不同了)。
有了这个相当可怕的答案,我敦促您花很长时间在需求工程上,而不是从星号和 kamailio 开始。询问客户希望您的解决方案涵盖哪些用例。相信我,你不可能涵盖一切。考虑使用灵活的数据格式来存储统计信息。考虑基于文档的数据库,例如 MongoDB。
如果你想从纯 Asterisk 开始,你应该使用 AMI。也许有一些自定义进程监听事件,聚合它们并通过缓存使它们可用,因此您不必查询 AMI 并将负载放在 Asterisk 上。
我希望这会有所帮助,但可能您正在尝试实现完全不同的目标。:)
玩得开心。
让我们使用星号 -r连接星号服务器
然后键入命令 sip set debug on。您可以找到运行日志和所有 sip 请求。
你能澄清一件事吗?你只想要日志吗?如果是,请按照以下步骤操作,
除此之外,如果我需要存储额外的数据,或者如果我想对通话做点什么,那么我会用自定义函数编写自己的拨号计划,并使用 mysql 数据库来存储我需要的数据。如果您想编写自己的应用程序,则需要在您的系统上安装 asterisk 和 asterisk-addon 并开始在 asterisk-addon/apps 目录下编写您自己的应用程序,并将共享库放在 lib 或 lib64 中,具体取决于您的系统类型。进行任何类型的更改后,不要忘记重新启动星号。让我知道我是否能够消除您的疑问。