Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Asterisk获取通话记录_C#_Asterisk_Phone Call - Fatal编程技术网

C# 从Asterisk获取通话记录

C# 从Asterisk获取通话记录,c#,asterisk,phone-call,C#,Asterisk,Phone Call,我正在写一个c#sip电话应用程序,我需要获取通话记录。我使用PortSip作为客户端sip库。它有一个问题:该库具有通话记录功能,但约10%的通话没有记录(不知道为什么,即使重新启动StartRecording也没有帮助,它只是无法开始记录当前通话)。 所以我决定在asterisk服务器上记录通话,并在通话结束后将其下载到我们的数据库中。星号CDR数据存储在mysql数据库中,我看不到任何唯一的callId。我想知道我们是否可以将表中的通话记录写入数据库,通过一些键获取它们,这些键与cdr有关

我正在写一个c#sip电话应用程序,我需要获取通话记录。我使用PortSip作为客户端sip库。它有一个问题:该库具有通话记录功能,但约10%的通话没有记录(不知道为什么,即使重新启动StartRecording也没有帮助,它只是无法开始记录当前通话)。
所以我决定在asterisk服务器上记录通话,并在通话结束后将其下载到我们的数据库中。星号CDR数据存储在mysql数据库中,我看不到任何唯一的callId。我想知道我们是否可以将表中的通话记录写入数据库,通过一些键获取它们,这些键与cdr有关?

或者我看到的另一个选择是在asterisk服务器上记录所有呼叫,通过ftp将所需的呼叫下载到我们的计算机并保存到我们的服务器。

我肯定会让asterisk记录呼叫,而不是sip设备。您可以使用拨号计划中的命令在星号中记录通话,如:

exten => 555,1,Answer
exten => 555,2,Monitor(wav,filename)
...
这将自动记录对555分机的所有呼叫(您可以使用自动记录对所有分机的所有呼叫,但这将取决于您的特定设置)。如果不想记录所有呼叫,还可以运行AGI脚本来区分要记录的呼叫

目标文件名可以由ani dnis datetime组成,以使其唯一或具有任何属性。例如:${CALLERID(ani)}-${extn}。您还可以使用唯一的调用id变量${UNIQUEID},如${CALLERID(ani)}-${EXTEN}-${UNIQUEID}

至于CDR,您可以使用该模块将其作为csv或sqlite文件,或者像mysql、postgresql等关系数据库

使呼叫唯一的是uniqueid字段。因此,在CDR中,您将拥有来源、目的地、涉及的频道、日期、应答时间、拨号状态等,以及此唯一ID字段,因此您可以将给定呼叫与给定音频文件(录制的呼叫)以及相关sip设备相关联。如果需要,可以定期下载和备份wav文件


希望有帮助

谢谢你的回答。现在我们要做的是:如果我的客户端软件无法本地记录文件,我会发送一些DTMF来触发星号上的记录。之后,我计划从服务器获取文件。。顺便说一下,我的“cdr”mysql数据库中的“uniqueid”列是空的!有什么配置错误吗?从我的客户那里找到带有${CALLERID(ani)}-${EXTEN}-${UNIQUEID}by UNIQUEID的录制文件可以节省我的时间。不客气!请注意,让客户端控制录制开始/停止的时间是不安全的,因此我建议在服务器端进行控制。这里还提到了您遇到的问题:但我自己没有这个问题,所以您可能希望将此问题与配置文件一起作为另一个问题发布。顺便说一句,在链接中,它还提到这个uniqueid不能保证是唯一的:(所以我会选择ani dnis datetime和/或包括来源频道和uniqueid字段。干杯。