asterisk - 将插件写入 "catch" 语音流

asterisk - write plugin to "catch" voice stream

我已经在服务器上安装了 Asterisk 和 FreePBX。我已经设置了一些用于测试的扩展,并为它们配置了语音邮件。我发现语音邮件文件存储在 /var/spool/asterisk/voicemail/default/(EXTENSION)/tmp/(TMPFILE).wav 并且它们后来被移动到 /var/spool/asterisk/voicemail/default/(EXTENSION)/INBOX/msg####.wav

我想将语音数据实时流式传输到另一台服务器,以便服务器可以开始处理数据。那就是我想在 Asterisk 收到呼叫后立即开始流式传输数据,我不想在发送声音之前等待挂断。

我正在寻找如何连接到 Asterisk 以获取语音数据。目前我有几个想法:

1) 定期检查 /tmp 目录中的新文件,并在它们可用时立即开始读取它们。但是文件名是随机的,我也想知道是谁在打电话。看起来像死胡同。如果我在 Asterisk 尝试移动文件时读取它们,文件也可能会卡住?

2) 也许我可以为 Asterisk 编写一个插件,它可以在流程的正确步骤中获取文件。如果是这样,我需要什么来编写这样的插件以及如何配置它以便在语音邮件模块接收到 phone 时立即访问语音数据?

您可以使用 EAGI 程序,它可以从频道 #3 获取声音。

http://www.voip-info.org/wiki/view/Asterisk+EAGI

您还可以为 asterisk 做 c/c++ 应用程序,它将进行流式处理(有关示例,请参阅应用程序/文件夹中的源代码)