0

嗨,我已经用谷歌搜索了一整天,但我找不到答案。

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

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

我只想连接到 Asterisk 并从网络应用程序进行呼叫。

谢谢

4

4 回答 4

2

如果您是一名 Ruby 程序员,那么与 Asterisk 挂钩的最佳方式是adhearsion。它为您封装了 Asterisk 的 AGI 和 Manager (MAPI) API。

还可以查看SIP、星号、adhearson 和 VoIP,尤其是 Adam Kalsey 的回答。他为Tropo 工作,后者赞助了adhearsion 项目。

于 2013-10-14T22:05:16.947 回答
0

试试这个谷歌搜索:rails asterisk manager interface

我马上就看到了一些有趣的事情。如果那些使用谷歌类型的人,我不想成为其中之一,只是不想粘贴我从谷歌搜索中找到的所有链接。

看看吧,希望对你有帮助。

于 2013-10-15T02:34:12.847 回答
0

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

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

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

您也可以使用云通信提供商,如 twilio、tropo 等。

于 2013-10-14T15:08:56.010 回答
0

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

1.在Asterisk服务器上生成调用文件

这些文件应该写入目录

/var/spool/星号/传出

Asterisk 然后会拾取文件,处理并删除它。这样做非常激进,因此建议将文件写入临时目录,然后将其移动到假脱机目录进行处理。

文件格式的教程在这里:

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

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

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

使用 AMI API 的 Originate 函数生成调用。设置它非常容易,只需配置manager.conf文件即可在端口 5038 上设置 HTTP 服务器,您可以调用 API。

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,您甚至不需要这样做......

这是我们使用的调用(ruby):

#{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}")

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

了解其工作原理的一个非常有用的工具是 http://ari.asterisk.org上的招摇。我们已经在 ari.conf 中允许了这个来源,所以它应该准备好了。请记住在防火墙等中打开您的端口。

设置您的服务器 IP 和端口,API_KEY 采用以下格式:my_username:my_password

于 2018-07-13T08:56:26.493 回答