0

I'm using the Asterisk.Net library for my FastAGI. I do RecordFileCommand and I know it was saved on the var/lib/asterisk/sound directory. My question is how to get the recorded file using the Asterisk.Net library?

4

2 回答 2

2

我有一种感觉,您需要在库之外寻找另一种方法才能检索文件。

作为其他语言的开发人员,我可能会有一个脚本来对我的文件进行后期处理,例如,您可以使用h扩展名对文件进行后期处理。

在我展示的这个示例中,我使用 system 命令使用系统 shell 复制文件。我将存储受监视对话的文件复制到共享挂载点。

如果您希望在主机外对音频文件进行后处理,那将是我的建议。

exten => _X.,1,Answer()
same =>      n,AGI(agi://10.0.0.8/yourApp)
same =>      n,MixMonitor(recording.ulaw)
same =>      n,Dial(SIP/example/8005551212)
exten =>   h,1,System(cp /var/spool/asterisk/monitor/recording.ulaw /mnt/shared)
于 2013-06-10T12:21:36.347 回答
0

简单的答案是你不能。

正如 dougBTV 指出的那样,扩展器的答案是使用另一种方法。

如果您希望立即在 .net 应用程序中执行此操作,最好的办法是使用 SSH 和SharpSSH下载文件

请原谅 vb.net:

Imports Tamir.SharpSsh.java.io
Imports Tamir.SharpSsh.jsch

            'Connect to the SFTP server
            jsch = New JSch()
            session = jsch.getSession(user, host, port)
            session.setPassword(password)
            Dim config2 As Hashtable = New Hashtable()
            config2.Add("StrictHostKeyChecking", "no")
            session.setConfig(config2)
            session.connect()

            sftp = DirectCast(session.openChannel("sftp"), ChannelSftp)
            sftp.connect()

            sftp.get(sftpPath,localpath)

您还可以将文件流式传输到内存中。从那里您可以转换/存储文件等。

于 2013-07-04T03:45:46.483 回答