【问题标题】:Connect two calls via web application通过 Web 应用程序连接两个呼叫
【发布时间】:2009-11-24 07:29:07
【问题描述】:

我需要向我的基于 java 的 Web 应用程序添加一个功能,允许用户单击链接,该应用程序将自动呼叫用户和另一方,并通过电话连接他们。

有人知道这意味着什么吗?

谢谢

【问题讨论】:

标签: java web-applications telephony


【解决方案1】:

这可以通过Twilio 及其新的、简单的会议 API 来完成。相信我,这真的很简单。另一个选项可能是CloudVox,但我还没有(正式)尝试过他们的服务。

【讨论】:

  • 谢谢 Joel,Twilio 和 Cloudvox 似乎用一种非常简单的方法来做这些事情。
【解决方案2】:

万维网联盟有一套集成的语音交互标准,您会发现它们很有趣。有一种称为 VoiceXML 的标记语言,它类似于 HTML,由 Web 应用程序生成。它与 HTML 的不同之处在于它专门用于基于时间的语音交互而不是视觉交互。因此,您不必看屏幕,而是听音频提示和计算机生成的语音。您无需打字和鼠标操作,而是回话,语音识别器会处理或记录您所说的内容。

有许多公司使用 VoiceXML 来自动化语音响应系统,他们每年处理数十亿个电话。你可能已经和他们谈过很多次了,却没有意识到。这个领域最好的公司之一是 Voxeo,他们有一个开发者网站http://evolution.voxeo.com/,您可以使用它。 Evolution 允许您通过普通电话(或 Skype)调用您的 Web 应用程序。您实际上与基于 VoiceXML 的 Web 浏览器对话,该浏览器将从您的 Java 应用程序服务器获取 VoiceXML 页面,“播放”给您,听您说什么,然后通过表单提交将其报告回您的应用程序,获取要呈现给您的下一页等。

另一个相关的标准是 CCXML,或 Call Control XML。您可以使用它来创建可能包含或不包含语音响应应用程序的电话会议。

因此,在您的情况下,您希望标准 Web 应用程序与 CCXML 服务器通信,并要求它建立与 Web 用户和客户服务热线的呼叫腿。我知道 Voxeo Evolution 也提供 CCXML。

这个领域还有其他优秀的公司。想到的一个是TellMe,它在一两年前被微软收购。这两家公司(以及其他公司)也提供专业服务。

【讨论】:

  • 感谢您的意见 Jim,我目前对这些标记语言和服务一无所知,因此我将研究这些标准并研究实施将涉及什么。不过,有一个起点很棒,因为当我开始查找此内容时,我不知道自己在寻找什么。
  • Carlos,鉴于您正在寻找呼叫控制功能,我建议您首先在 Voxeo 上踢轮胎(如果您计划进行大型商业部署,他们提供大容量托管和前提-基于解决方案)。其他支持 CCXML 的公司包括 Aculab 和 Loquendo(我恰好更密切地关注 Voxeo,与他们合作过。)
  • Jim,您听说过 Joel 指出的 Twilio 和 CloudVox 吗?它们看起来像做 Voxeo 所做的事情但使用更简单的 API 的初创公司。我仍在尝试弄清楚该怎么做,但 CloudVox 有非常简单且可扩展的计划,这将使我只为我需要的东西付费。
  • Carlos,它们听起来确实很相似,所以一定要检查一下这些家伙。 Voxeo 有一系列 API 和广泛的定价计划:您应该会发现这三者大致相当。
【解决方案3】:

所以我想把它写下来作为对上述评论的回答。 Skype API 为 COM、Java 和 Python 中的电话提供了许多选项:

它们为与 Skype 一起工作提供了通信和命令协议层,有关 API 的更多信息请点击此处:

https://developer.skype.com/Docs/ApiDoc/Overview_of_the_Skype_API

每个平台都有所不同,Linux 版本基于 DBus 或 X11。

【讨论】:

  • 谢谢乔恩,我一定会调查的。
【解决方案4】:

试试 FreeSWITCH。我以前做过。它非常简单。当您需要记录通话记帐和所有这些内容时,可能会有点麻烦。我希望能够为您提供一些指南和代码示例,让我先回家。干杯。

使用 FreeSWITCH 的好处是,您将能够处理多个呼叫,而且数量相当多。您将来可能需要它。

注意:您必须使用某种 VoIP 提供商才能做到这一点。我当时用的是Gizmo5,还不错。

对不起,伙计,在某处丢失了 servlet 代码。但不用担心它是一个简单的 servlet。幸运的是,我已将 XML-RPC 的示例 Java 代码添加到 FreeSWITCH wiki 中,实际上那是我的 servlet 正在调用的代码。下面是sn-p。

XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
 XmlRpcClient client = new XmlRpcClient();
 try {
   config.setServerURL(new URL("http://localhost:8080/RPC2"));
   config.setBasicUserName("freeswitch");
   config.setBasicPassword("works");

   client.setConfig(config);           
   // For external phone calls using VoIP. We will use something like below.
   // new Object[]{"originate", "sofia/gateway/gizmo1/6098989898 &bridge(sofia/gateway/gizmo9/0116054545454)"} 
   // gizmo1, and gizmo9 are the accounts configured under freeswitch gateway configuration.
   client.execute("freeswitch.api", new Object[]{"originate", "sofia/internal/1001 &park()"});

 } catch (Exception ex) {
   ex.printStackTrace();
 }

此外,您需要在执行此操作之前进行一些配置。您需要使用您的 VoIP 提供商设置来设置网关。

如需 FreeSWITCH 相关帮助,请查看此SO Thread

【讨论】:

  • FreeSWITCH 与让服务提供商为我做这件事相比看起来很有趣,因为它可能会更便宜,因为一开始系统不会处理太多的呼叫。 Gizmo5 被 Google 收购了,他们不允许任何新的注册,所以我将不得不使用其他东西,但我相信这不会有问题。你能为我挖掘那些指南和样本吗?我将不胜感激。问候。
  • 如果你想要一个工作应用程序将两个调用分支连接在一起,没有 FreeSWITCH,我有一个非常糟糕的编写,大杂烩,burte force 线程处理,有点像使用 JAIN-SIP 的应用程序。但这只是我个人的乐趣,它是一个玩具应用程序只支持一个电​​话。
【解决方案5】:

我知道有 2 个 API 提供商可以满足您的需求:

1) twilio - 可以使用 TwiML(他们的标记)连接到 2 个或更多方。 example

2) Hoiio - 非常容易使用 1 行 RESTful api 调用。 example

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 2023-03-26
    • 2022-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多