3

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

有谁知道这意味着什么?

谢谢

4

5 回答 5

5

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

于 2009-11-25T03:11:35.000 回答
3

World-Wide Web Consortium 有一套集成的语音交互标准,您会发现它们很有趣。有一种称为 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,它在一两年前被微软收购。这两家公司(和其他公司)也提供专业服务。

于 2009-11-24T08:26:34.533 回答
2

So I wanted to write this up as an answer to the comment above. The Skype API provides a number of options for telephony in COM, Java and Python:

They provide a communication and command protocol layer for working with Skype, more info on the API here:

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

It's kind of different for every platform, the Linux version is based on DBus or X11.

于 2009-11-24T17:53:23.457 回答
2

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

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

注意:您必须使用某种 VoIP 提供商才能做到这一点。那时我正在使用 Gizmo5,它非常好。

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

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

于 2009-11-24T09:11:37.250 回答
0

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

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

2) Hoiio - 非常易于使用 1 行 RESTful api 调用。例子

于 2011-07-18T06:20:00.757 回答