Java如何自动拨打电话?

小灰狼 技术主管  2014-01-16 05:03:19
需求是,当系统中发生某些事件时,如某些异常等,需要自动拨打用户电话进行通知

应该如何实现,或者有现成的模块可以使用,支持windows, linux
...全文
4519 21 2 打赏 收藏 举报
写回复
21 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
cryingzgz 2014-01-23
引用 20 楼 hemowolf 的回复:
首先感您的批评与建议,不过某些地方不敢苟同 为什么软件打电话就一定要走互联网? 用手机打电话没要求你要上互联网吧!那么如果某个厂商开发出这样一款硬件产品,有天线、可插入手机卡、使用GSM或3G无线通信协议连接到运营商机站,只是打电话、发短信的这些操作由软件完成,不就可以了吗?如果厂商对外提供API接口,供用户提供被叫用户的电话号码、短信内容、语音文本等参数,不就达到我的目标了吗。 这种需求并不是奇葩,经过几天的搜索,已经找到几家类似的厂商,基本上只需要花几百块钱买一个设备,再到移动、联通或者电话办张手机卡,就可以通过串口、TCP端口接到我的电脑或私有网络里,就可以发送短信或拨打电话了。当然通信费还是要向运营商交的。接口很简单,基本上是我们关心的被叫号码、短信内容、语音内容等信息发送,以及响应信息的接收。
我的话的确有点不完整,私有网络也可以打电话。需要通过ATA来接入公共电话网络。不过与ATA设备的交互还需要SIP协议栈来实现。
  • 打赏
  • 举报
回复
小灰狼 2014-01-20
引用 18 楼 cryingzgz 的回复:
你的需求是矛盾的: 1. 首先如果想通过软件拨打电话,必须要有互联网,通过SIP协议才可以与公共电话网络互联。 2. 如果想方便的话,就只能依靠现存的SIP TRUNK,也就是其他公司的API,否则只有自己架设SIP TRUNK。 你们的想法很新颖,但是需要耗费很多额外的人力物力,把你们的需求简单化:就是当系统有错误时,你们需要通知某些人。一般的企业都是通过发送邮件或者短信,事实证明邮件或者短信是最有效的手段,你们只需要一个SMTP服务器。
首先感您的批评与建议,不过某些地方不敢苟同 为什么软件打电话就一定要走互联网? 用手机打电话没要求你要上互联网吧!那么如果某个厂商开发出这样一款硬件产品,有天线、可插入手机卡、使用GSM或3G无线通信协议连接到运营商机站,只是打电话、发短信的这些操作由软件完成,不就可以了吗?如果厂商对外提供API接口,供用户提供被叫用户的电话号码、短信内容、语音文本等参数,不就达到我的目标了吗。 这种需求并不是奇葩,经过几天的搜索,已经找到几家类似的厂商,基本上只需要花几百块钱买一个设备,再到移动、联通或者电话办张手机卡,就可以通过串口、TCP端口接到我的电脑或私有网络里,就可以发送短信或拨打电话了。当然通信费还是要向运营商交的。接口很简单,基本上是我们关心的被叫号码、短信内容、语音内容等信息发送,以及响应信息的接收。
  • 打赏
  • 举报
回复
cryingzgz 2014-01-17
云通讯平台一般不用硬件设备,可以直接调用API。由于你的需求不是很复杂,所以只要那个东西能打电话就可以。
  • 打赏
  • 举报
回复
小灰狼 2014-01-17
找了个叫大榕树的东西,好象是一个类似于 model 的合子,接个网线,发送字符串命令过去,就可以发短信,拨打电话了,几百块钱一个,通信费另算 类似的产品应该还有吧
  • 打赏
  • 举报
回复
cryingzgz 2014-01-17
引用 13 楼 jike316 的回复:
还得搞个IVR。。。。
这个应该不需要
  • 打赏
  • 举报
回复
2399 2014-01-17
还得搞个IVR。。。。
  • 打赏
  • 举报
回复
cryingzgz 2014-01-17
引用 7 楼 hemowolf 的回复:
[quote=引用 6 楼 cryingzgz 的回复:] 上面那个帖子不小心发错了。。。。这个是完整版。 ------------------------------------------------------------------------------- 想法很好,不过实现起来很复杂,需要不少人力以及设备,以及涉及到PBX的相关技术。一般可以考虑的实现方案为: 应用软件 <-----> Internet <-----> SIP trunk <-----> PSTN <-----> 目标电话设备 ... ... N年没来CSDN,以上来就看到和本行相关的问题,就忍不住多说了一些,楼主给分吧。。。
晕死,太复杂 有没有现成的产品?直接调用就可以用的?[/quote] 可以搜索一下云通讯平台,提供API直接调用,国外比较著名的我就知道一个Twilio,应该支持中国地区的电话路由。我们的团队也正准备开发这种服务。
  • 打赏
  • 举报
回复
cryingzgz 2014-01-17
引用 10 楼 facetoqiang 的回复:
[quote=引用 2 楼 hzw2312 的回复:] 打电话 你的意思是,发生异常后自动拨打语言电话吧? 这个可以考虑使用别人的语音引擎、比如“科大讯飞”
你可以追问e2楼。上一条发错了![/quote] 从来没听说过这个,google了一下,大概是语音合成技术,和拨打电话无关。。。
  • 打赏
  • 举报
回复
facetoqiang 2014-01-17
引用 2 楼 hzw2312 的回复:
打电话 你的意思是,发生异常后自动拨打语言电话吧? 这个可以考虑使用别人的语音引擎、比如“科大讯飞”
你可以追问e2楼。上一条发错了!
  • 打赏
  • 举报
回复
兔子托尼啊 2014-01-17
肯定费力费钱。
  • 打赏
  • 举报
回复
facetoqiang 2014-01-17
引用 1 楼 rui888 的回复:
想法真好啊。
这个你可以参考参考
  • 打赏
  • 举报
回复
小灰狼 2014-01-17
引用 6 楼 cryingzgz 的回复:
上面那个帖子不小心发错了。。。。这个是完整版。 ------------------------------------------------------------------------------- 想法很好,不过实现起来很复杂,需要不少人力以及设备,以及涉及到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,以上来就看到和本行相关的问题,就忍不住多说了一些,楼主给分吧。。。
晕死,太复杂 有没有现成的产品?直接调用就可以用的?
  • 打赏
  • 举报
回复
cryingzgz 2014-01-17
很多程序员都喜欢考虑太多的东西,害怕以后要改变代码,比如你所担心的如果那个公司以后倒闭了怎么办,等等。其实以我的观点来看完全没有必要担心,你写个打电话的接口,先用他们的API来实现,以后如果他们倒闭了,那么你就换一套API呗,打电话的功能实现起来一点也不复杂,一个经验丰富的程序员一天就能把原型写出来。
  • 打赏
  • 举报
回复
cryingzgz 2014-01-17
你的需求是矛盾的: 1. 首先如果想通过软件拨打电话,必须要有互联网,通过SIP协议才可以与公共电话网络互联。 2. 如果想方便的话,就只能依靠现存的SIP TRUNK,也就是其他公司的API,否则只有自己架设SIP TRUNK。 你们的想法很新颖,但是需要耗费很多额外的人力物力,把你们的需求简单化:就是当系统有错误时,你们需要通知某些人。一般的企业都是通过发送邮件或者短信,事实证明邮件或者短信是最有效的手段,你们只需要一个SMTP服务器。
  • 打赏
  • 举报
回复
小灰狼 2014-01-17
引用 16 楼 cryingzgz 的回复:
云通讯平台一般不用硬件设备,可以直接调用API。由于你的需求不是很复杂,所以只要那个东西能打电话就可以。
这个方案不是很合适 一方面,我们的语音不是事先录好的,而是根据系统实时状态创建的一段文本,在电话中阅读文本内容 另一方面,这个平台要求我们的系统必须连接到互联网上,而我们的客户很有可能只是把系统放在一个私网里运行 最后,一个不好的假设,一旦使用这个平台,则我的产品的这项功能便必须依赖于这家公司,如果哪天这家公司战略方面发生变化,甚至是倒闭了,我们的产品功能也跟着要改变
  • 打赏
  • 举报
回复
cryingzgz 2014-01-16
上面那个帖子不小心发错了。。。。这个是完整版。 ------------------------------------------------------------------------------- 想法很好,不过实现起来很复杂,需要不少人力以及设备,以及涉及到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,以上来就看到和本行相关的问题,就忍不住多说了一些,楼主给分吧。。。
  • 打赏
  • 举报
回复
cryingzgz 2014-01-16
想法很好,不过实现起来很复杂,需要不少人力以及设备,以及涉及到PBX的相关技术。一般可以考虑的实现方案为: 应用软件 <-----> Internet <-----> SIP trunk <-----> PSTN <-----> 目标电话设备 拨打电话的流程一般为: 应用软件发送SIP请求到SIP Trunk,由SIP Trunk路由到上层供应商或者PSTN(公共电话网络),然后PSTN会把电话路由到目标电话设备。 需要你们考虑的问题包括: 1. 如何生成SIP请求?可以使用第三方类库,但是,我个人的工作经验证明java
  • 打赏
  • 举报
回复
teemai 2014-01-16
你这个有点高级啊。。一般都是alarm推送到指定mailbox或者ftp 就算自动打电话你这边也没人说话,你这个应该也是提醒吧。短信提醒好点。
  • 打赏
  • 举报
回复
咖啡加蛋 2014-01-16
第一种:有语音网关的接口对接一下就行。 第二种:使用java的串口技术,监听事件,满足的时候用串口猫(使用AT指令)电话你
  • 打赏
  • 举报
回复
BUG胡汉三 2014-01-16
打电话 你的意思是,发生异常后自动拨打语言电话吧? 这个可以考虑使用别人的语音引擎、比如“科大讯飞”
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
Java SE
加入

6.2w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2014-01-16 05:03
社区公告
暂无公告