嗨,我已经用谷歌搜索了一整天,但我找不到答案。
我必须编写一个与星号对话的网络应用程序。它应该能够进行 ClicktoCall 操作。你们能推荐一些东西吗?
我遇到了一些项目,但我仍然不确定。
我只想连接到 Asterisk 并从网络应用程序进行呼叫。
谢谢
嗨,我已经用谷歌搜索了一整天,但我找不到答案。
我必须编写一个与星号对话的网络应用程序。它应该能够进行 ClicktoCall 操作。你们能推荐一些东西吗?
我遇到了一些项目,但我仍然不确定。
我只想连接到 Asterisk 并从网络应用程序进行呼叫。
谢谢
如果您是一名 Ruby 程序员,那么与 Asterisk 挂钩的最佳方式是adhearsion。它为您封装了 Asterisk 的 AGI 和 Manager (MAPI) API。
还可以查看SIP、星号、adhearson 和 VoIP,尤其是 Adam Kalsey 的回答。他为Tropo 工作,后者赞助了adhearsion 项目。
试试这个谷歌搜索:rails asterisk manager interface
我马上就看到了一些有趣的事情。如果那些使用谷歌类型的人,我不想成为其中之一,只是不想粘贴我从谷歌搜索中找到的所有链接。
看看吧,希望对你有帮助。
首先你需要知道,Asterisk 使用的协议是 SIP,你可以在Wikipedia了解更多。
由于您想使用 rails 应用程序,您可能也想使用 ruby,因此有一个名为OverSip的 ruby 实现,您可以检查他们的API并查看它是否符合您的要求。
如果您的目标是网络通话,您将需要一个WebRTC、Flash 或 Java 小程序。对于 WebRTC,您可以查看sipML5以获取开源解决方案。您还可以选择一个界面,该界面将使用您的手机从一个号码开始呼叫另一个号码。当第一个呼叫被接听时,服务器开始在目的地振铃。
您也可以使用云通信提供商,如 twilio、tropo 等。
有几种方法可以做到这一点,但三种最简单的方法是
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