星号AGI记录文件命令

时间:2013-06-07 23:13:09

标签: c# asterisk

我正在为我的FastAGI使用Asterisk.Net库。我做RecordFileCommand,我知道它保存在var / lib / asterisk / sound目录中。我的问题是如何使用Asterisk.Net库获取录制的文件?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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)

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