Rails连接到Asterisk并拨打电话

时间:2013-10-14 14:42:59

标签: ruby-on-rails sip voip asterisk

嗨,我一整天用Google搜索,但我找不到答案。

我必须写一个与星号对话的网络应用程序。 它应该能够执行ClicktoCall操作。 你们能推荐一些东西吗?

我遇到了一些项目,但我仍然不确定。

我只想连接到Asterisk并通过网络应用程序进行调用。

谢谢

4 个答案:

答案 0 :(得分:1)

如果您是Ruby程序员,最好的方法是挂钩Asterisk adhearsion。它包含了Asterisk的AGI和Manager(MAPI)API。

另请参阅SIP, asterisk, adhearson and VoIP,特别是Adam Kalsey的回答。他为Tropo工作,赞助了这个项目。

答案 1 :(得分:0)

首先您需要知道,Asterisk使用的协议是SIP,您可以在Wikipedia了解更多信息。

由于你想使用rails应用程序,你可能也想使用ruby,所以有一个名为OverSip的ruby实现,你可以查看他们的API并查看它是否符合你的要求。

如果您的目标是网络电话,则需要WebRTC,Flash或Java小程序。对于WebRTC,您可以查看sipML5以获取开源解决方案。 您还可以选择使用手机启动从一个号码到另一个号码的呼叫的界面。当第一个呼叫被接听时,服务器开始在目的地振铃。

此外,您还可以使用twilio,tropo等云通信提供商。

答案 2 :(得分:0)

试试此Google搜索: rails asterisk manager interface

我立刻看到了一些有趣的事情。我不是想成为一个如果那些使用谷歌类型的人,只是不想粘贴我从这个谷歌搜索找到的所有链接。

检查出来,希望它有所帮助。

答案 3 :(得分:0)

有几种方法可以做到这一点,但最简单的三种是

1。在Asterisk服务器上生成呼叫文件

这些文件应写入dir

  

/ var / spool / asterisk / outgoing

Asterisk随后将提取文件,进行处理并删除它。 这样做非常具有侵略性,因此建议将文件写入一个临时目录,然后将其移到假脱机目录中进行处理。

文件格式的教程在这里:

https://www.voip-info.org/asterisk-auto-dial-out/

(我个人觉得这有点“ hacky”,并且更喜欢通过API调用来实现)

2。通过AMI API接口生成调用。

使用AMI API的Originate函数来生成调用。只需配置manager.conf文件,就可以很容易地进行设置,您可以通过调用API来在端口5038上设置HTTP服务器。

https://www.voip-info.org/asterisk-config-managerconf/

3。使用ARI API设置呼叫

首先,您需要设置ari.conf,到目前为止,这已经足够:

[general]
enabled = yes
pretty=yes
allowed_origins=http://ari.asterisk.org

[my_username]
type = user
read_only = no
password = my_password
password_format = plain

设置起来有点复杂,但是只要您精通技术怪胎,这实际上并不难。只需设置两个通道,设置一个混合桥,然后将两个通道都添加到桥中。

要设置click2call,您甚至不需要这样做...

这是我们使用的呼叫(红宝石):

其中 #{sip_id}是您的注册SIP用户名 #{number}是发送到拨号计划的分机 #{USERNAME} #{PASSWORD}来自ari.conf

HTTParty.post("http://sipserver.com/ari/channels?endpoint=SIP/#{sip_id}&extension=#{number}&context=outgoing&priority=1&timeout=30&api_key=#{USERNAME}:#{PASSWORD}")

(请注意,如果需要发送 variable参数,则将其作为原始命令的单独JSON发送)

一个真正有用的工具来理解它是如何工作的 http://ari.asterisk.org。我们已经在ari.conf中允许此来源,因此应该可以使用了。记住要在防火墙等中打开端口。

设置服务器IP和端口,API_KEY的格式为:my_username:my_password