星号-编写插件以“捕获”语音流

问题描述 投票:0回答:2

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

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

我正在寻找如何挂接到星号以获取语音数据的方法。到目前为止,我有一些想法:

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

2)也许我可以为Asterisk编写一个插件,该插件可以在过程的正确步骤中提取文件。如果是这样,我需要编写什么插件,如何配置它以在语音邮件模块拿起电话后立即访问语音数据?

audio asterisk voip freepbx
2个回答
2
投票

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

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

您也可以为星号制作c / c ++应用程序,它将进行流处理(有关示例,请参阅apps /文件夹中的源代码)


0
投票

我知道这篇文章来自2015年,但是如果您仍然需要这样做,我基于app_mixmonitor.c编写了一个星号C应用程序,该应用程序使用websockets将原始音频数据发送到websocket服务器。请参见下面的链接:

https://github.com/nadirhamid/asterisk-audiofork

是否满足您不知道的要求。我知道EAGI方法会更灵活,因为它的级别更高。在github上有EAGI的示例。或者您可以将星号audiohooks API与C一起使用。

一些EAGI示例:

https://github.com/phatjmo/eagi_lex

https://github.com/phsultan/asterisk-eagi-google-speech-recognition

我希望此信息对您有所帮助。

感谢

© www.soinside.com 2019 - 2024. All rights reserved.