日期:2014-05-20  浏览次数:22534 次

Java如何自动拨打电话?
需求是,当系统中发生某些事件时,如某些异常等,需要自动拨打用户电话进行通知

应该如何实现,或者有现成的模块可以使用,支持windows, linux

------解决方案--------------------
想法真好啊。
------解决方案--------------------
打电话
你的意思是,发生异常后自动拨打语言电话吧?
这个可以考虑使用别人的语音引擎、比如“科大讯飞”



------解决方案--------------------
第一种:有语音网关的接口对接一下就行。
第二种:使用java的串口技术,监听事件,满足的时候用串口猫(使用AT指令)电话你
------解决方案--------------------
你这个有点高级啊。。一般都是alarm推送到指定mailbox或者ftp

就算自动打电话你这边也没人说话,你这个应该也是提醒吧。短信提醒好点。
------解决方案--------------------
想法很好,不过实现起来很复杂,需要不少人力以及设备,以及涉及到PBX的相关技术。一般可以考虑的实现方案为:
应用软件 <-----> Internet <-----> SIP trunk <-----> PSTN <-----> 目标电话设备

拨打电话的流程一般为:
应用软件发送SIP请求到SIP Trunk,由SIP Trunk路由到上层供应商或者PSTN(公共电话网络),然后PSTN会把电话路由到目标电话设备。

需要你们考虑的问题包括:
1. 如何生成SIP请求?可以使用第三方类库,但是,我个人的工作经验证明java
------解决方案--------------------
上面那个帖子不小心发错了。。。。这个是完整版。
-------------------------------------------------------------------------------

想法很好,不过实现起来很复杂,需要不少人力以及设备,以及涉及到PBX的相关技术。一般可以考虑的实现方案为:
应用软件 <-----> Internet <-----> SIP trunk <-----> PSTN <-----> 目标电话设备

拨打电话的流程一般为:
应用软件发送SIP请求到SIP Trunk,由SIP Trunk路由到上层供应商或者PSTN(公共电话网络),然后PSTN会把电话路由到目标电话设备。

需要你们考虑的问题包括:
1. 如何生成SIP请求?可以使用第三方类库,但是,我个人的工作经验证明java类库对SIP的支持很不好,如果你们有懂C++的,可以考虑用SOFIA-SIP协议栈,这个最直接。另外我认为最简单的办法是用python的一个第三方模块,PJSIP-python,可以模拟IP电话的大部分行为,还可以播放本地音频文件,并且很容易使用。

2. 你们能不能找到可用的SIP TRUNK,国内的PBX形势我不太了解,但是一般的SIP TRUNK都要收费的。联系好SIP TRUNK的供应商后,就可以路由你们的SIP消息到他们的SIP TRUNK IP地址,之后的事情就不需要你们管了。

3. 当然你们实力足够的话可以自己假设SIP TRUNK,需要一台linux服务器,在上面安装开源PBX软件,基本上都用Asterisk或者FreeSwitch。然后需要ATA来将SIP TRUNK连接到PSTN。

4. 另外不一定要通过应用软件来发送SIP请求,Asterisk有一个远程管理API(AMI)模块,可以用java socket连接到AMI模块,然后发送AMI命令,这样Asterisk就可以自动拨打电话,并且可以播放音频。当然前提是你们要懂得编写asterisk 的dialplan(拨号计划)。

总的来说比较复杂,如果拨打电话只是你们项目中一个小需求的话就太浪费人力物力了,那样的话你们可以考虑发送SMS短消息。简单的说就是如果软件产生了异常,那么可以生成一个email,发送给email to SMS 网关,这个EMAIL就可以转变为短信发送给目标手机。这个办法会很简单,但是前提是你们要弄清楚中国移动是否有email to SMS网关,以及网关的地址。我估计这么大的供应商不管怎么说也该有个email to SMS网关吧。

N年没来CSDN,以上来就看到和本行相关的问题,就忍不住多说了一些,楼主给分吧。。。
------解决方案--------------------
引用:
想法真好啊。
这个你可以参考参考
------解决方案--------------------
肯定费力费钱。 
------解决方案--------------------
引用:
打电话
你的意思是,发生异常后自动拨打语言电话吧?
这个可以考虑使用别人的语音引擎、比如“科大讯飞”
你可以追问e2楼。上一条发错了!
------解决方案--------------------
引用:
Quote: 引用:

打电话
你的意思是,发生异常后自动拨打语言电话吧?
这个可以考虑使用别人的语音引擎、比如“科大讯飞”
你可以追问e2楼。上一条发错了!


从来没听说过这个,google了一下,大概是语音合成技术,和拨打电话无关。。。
------解决方案--------------------
引用:
Quote: 引用:

上面那个帖子不小心发错了。。。。这个是完整版。
-------------------------------------------------------------------------------

想法很好,不过实现起来很复杂,需要不少人力以及设备,以及涉及到PBX的相关技术。一般可以考虑的实现方案为:
应用软件 <-----> Internet <-----> SIP trunk <-----> PSTN <-----> 目标电话设备
... ...
N年没来CSDN,以上来就看到和本行相关的问题,就忍不住多说了一些,楼主给分吧。。。

晕死,太复杂
有没有现成的产品?直接调用就可以用的?


可以搜索一下云通讯平台,提供API直接调用,国外比较著名的我就知道一个Twilio,应该支持中国地区的电话路由。我们的团队也正准备开发这种服务。
------解决方案--------------------
还得搞个IVR。。。。
------解决方案--------------------
引用:
还得搞个IVR。。。。


这个应该不需要
------解决方案--------------------
云通讯平台一般不用硬件设备,可以直接调用API。由于你的需求不是很复杂,所以只要那个东西能打电话就可以。
------解决方案--------------------
你的需求是矛盾的:
1. 首先如果想通过软件拨打电话,必须要有互联网,通过SIP协议才可以与公共电话网络互联。
2. 如果想方便的话,就只能依靠现存的SIP TRUNK,也就是其他公司的API,否则只有自己架设SIP TRUNK。

你们的想法很新颖,但是需要耗费很多额外的人力物力,把你们的需求简单化:就是当系统有错误时,你们需要通知某些人。一般的企业都是通过发送邮件或者短信,事实证明邮件或者短信是最有效的手段,你们只需要一个SMTP服务器。
------解决方案--------------------
很多程序员都喜欢考虑太多的东西,害怕以后要改变代码,比如你所担心的如果那个公司以后倒闭了怎么办,等等。其实以我的观点来看完全没有必要担心,你写个打电话的接口,先用他们的API来实现,以后如果他们倒闭了,那么你就换一套API呗,打电话的功能实现起来一点也不复杂,一个经验丰富的程序员一天就能把原型写出来。