【问题标题】:asterisk - write plugin to "catch" voice stream星号 - 编写插件来“捕捉”语音流
【发布时间】:2015-12-01 17:45:18
【问题描述】:

我已经在服务器上安装了 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 编写一个插件,它可以在流程的正确步骤中提取文件。如果是这样,我需要编写这样的插件吗?如何配置它以在语音邮件模块拿起电话后立即访问语音数据?

【问题讨论】:

    标签: audio asterisk voip freepbx


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回复。这听起来很到位。 EAGI 看起来很直接,我也找到了一个很好的例子。但是我可以将 EAGI 脚本配置为用于所有来电吗?我可以在 EAGI 中收到电话号码吗?
    • 请阅读有关 AGI 的更多信息。当然,您可以通过 AGI 控制所有呼叫。但无论如何,您需要先阅读星号书。
    • 我设法让解决方案发挥作用。这很简单,但是音频质量真的很差。我一直在寻找增加它的方法。是否可以?如果没有,我想我需要找到另一个解决方案......
    • 采样率 8khz。所有 voip 都可以使用它。您可以使用 16khz(宽带编解码器),但是当您调用 POTS 线路时会重新采样。所以没有意义。 EAGI 也会重新采样到 8khz,只是因为它与旧脚本兼容。
    • 您可以将窄带流录制到文件中,这没有问题。但是您无法从PSTN获取窄带。谷歌“g722+星号”。我不能说补丁 c/c++ 代码对你来说是否简单,对不起
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 2016-09-26
    • 2014-07-09
    • 1970-01-01
    • 2013-08-09
    相关资源
    最近更新 更多