2011-01-30 260 views
0

我想实现一个简单的VoIP系统,它可以实现以下功能;通过VoIP播放音频文件

  1. 用户上传mp3或wav文件并给出电话号码。
  2. 拨打给定的电话号码,当手机被选中时,播放上传的mp3/wav文件。一旦整个文件被播放,电话就挂断了。

我想知道是否有任何开源库支持这??或使用我可以实现这一目标的开源软件?

+0

什么平台,操作系统等? – 2011-01-30 20:49:08

回答

0

是的你可以使用Asterisk,Freeswitch(我的个人喜好)或许多类似于此的其他平台。

一旦你有FreeSWITCH的设置,看看这个链接的时候,先要 http://wiki.freeswitch.org/wiki/Javascript_QuickStart

+0

啊,我只是更仔细地阅读你的消息。我的解决方案基于用户调用freeswitch。在你的情况下,看看:http://wiki.freeswitch.org/wiki/Mod_commands#originate – ajpyles 2011-02-03 02:00:10

0

使用ivrworx用于简单的测试

见流光例子。

1

我为我的工作做了类似的测试。

我使用FreeSWITCH的有

  1. 一个测试框架对我的箱子在我的办公室,我已经创造了一些用户在FreeSWITCH的箱的密码。
  2. 然后,我使用sip测试工具/客户端来管理到sip代理的连接,以另一个用户。

例如......说我的FreeSWITCH的是IP:120.0.0.7

我登记上作为FreeSWITCH的用户5000,我想打电话给用户4000谁也注册。

我请使用SIPP(Linux版)SIPCLI(窗口)

SIPP

SIPP的好处是,它是真正的强大,可以做性能测试无数,什么不是。但是,发送音频有点具有挑战性,但它是可行的。你基本上发送PCAP录制音频的一些编解码器(G711,G729等),所以你运行像这样的命令:

sudo sipp -s [the phone number/ user] [your freeswitch] -sn uac_pcap -mi [your ip] -l 1 -m 1 

最后两个参数(L和M)设置多少负荷,默认西普将每秒发送10次。你几乎不需要那个。所以我说“限制呼叫#”和米说“一次只能运行x个呼叫”。

SIPCLI

的更容易的方法是sipcli(但它是一个仅适用于Windows的工具。) 在sipcli,你基本上可以发送一个wav文件,以及文本到语音。我喜欢它。它有一个内置的库,可以拨打该号码,并且可以传递类似-t的内容“这是对sip和v o i p测试的测试工具的测试。”它会在通话中将其转换为音频。你也可以打造出指向WAV您录制文件的场景....

SIPCLI会使用这样的命令SIPP连接:

sipcli [user/phone number] -d [domain or proxy] -t "This is text i want converted to speech on the phone call" 

,你也可以在链路传递到一个wav 。

sipcli也可以发送dtmf音,或者您可以指向dtmf音的wav。

情景编辑器起初有点复杂,需要一些习惯。但是一旦你掌握了制作场景文件的过程,这很容易。 SIPP的

优势

SIPP可以捕捉性能指标(过在你的配置起点和终点之间的毫秒所有的时间) SIPP可以在您需要的最终带动数以千计的电话 SIPP可以斜坡上升电话或将它们动态加载下来 SIPP可以生成统计数据和csv文件以供分析 您编写的SIPP场景正在自行构建数据包。因此,您可以更好地控制您的数据包在INVITE上发送的内容。 SIPP是开源

SIPP的否定

SIPP不能发送wav文件 SIPP不能产生它自己的DTMF音(它使用pcaps,这是有问题的) SIPP不能生成文本语音 SIPP有些复杂得走SIPCLI

优势

SIPCLI可以CONV ert文本到即时语音 SIPCLI可以使用录制的wav发送给收件人 SIPCLI易于使用 SIPCLI也可以充当接收者(即,一个IVR播放问候和服用输入) SIPCLI有一些逻辑来验证接收到的数据(例如用户按下#3,然后#4)。SIPCLI的

否定

SIPCLI不会让你有访问它发送的SIP头(对测试的控制较少) SIPCLI不执行加载或性能指标 SIPCLI的编辑器起初有点困难,但它不像学习SIPP的高级功能那么难 SIPCLI不是开源的。 ...这是试用90%有用。要获得其他10%(更长的电话),您需要以70美元购买。

我也尝试过其他工具,如PJSua,但这两个是我的面包和黄油,用于测试你正在谈论的场景。

关于框架/软件/代理...我使用Freeswitch。