本贴只做记录,感兴趣的朋友可以私信我或加我Q询问464744895

需求:根据电话号码,自动拨打电话TTS生成语音进行提示

用的是提供外呼技术支持的服务商,测试代码可用:

package weixin.dianhua;
import java.net.Socket;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;import net.sf.json.JSONObject;import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.PostMethod;import java.io.*;import Decoder.BASE64Encoder;
import java.util.TreeMap;public class dmdemo_10256_test {
//    public static void main(String[] args) throws Exception
//    {public void dianhua(String userstr,String tel)throws Exception{HttpClient client = new HttpClient();client.getHostConfiguration().setHost("***.******.***", 80, "http");//client.getHostConfiguration().setHost("114.55.234.215", 80, "http");HttpMethod method = getPostMethod(userstr,tel);client.executeMethod(method);//System.out.println(method.getStatusLine());/*String response =   new String(method.getResponseBodyAsString().getBytes("utf-8"));System.out.println(response);      *//* getResponseBodyAsStream start */InputStream inputStream = method.getResponseBodyAsStream();   BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));   StringBuffer response = new StringBuffer();   String read = "";while((read = br.readLine()) != null){   response.append(read);  }           System.out.println(response);/* getResponseBodyAsStream start */             method.releaseConnection();}public static String encrypt(String strKey, String strIn) throws Exception {String ivstr = strKey.substring(0, 16);SecretKeySpec skeySpec = getKey(strKey);Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");IvParameterSpec iv = new IvParameterSpec(ivstr.getBytes());cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);byte[] encrypted = cipher.doFinal(strIn.getBytes());return new BASE64Encoder().encode(encrypted);}private static SecretKeySpec getKey(String strKey) throws Exception {byte[] arrBTmp = strKey.getBytes();byte[] arrB = new byte[16]; // 创建一个空的16位字节数组(默认值为0)for (int i = 0; i < arrBTmp.length && i < arrB.length; i++) {arrB[i] = arrBTmp[i];}SecretKeySpec skeySpec = new SecretKeySpec(arrB, "AES");return skeySpec;}private static HttpMethod getPostMethod(String userstr,String tel) throws Exception {PostMethod post = new UTF8PostMethod("/api/v2/data");       // 数据请求接口//PostMethod post = new UTF8PostMethod("/api/dm_1.php");           // 数据请求接口int vccId = 200027;int proId = 10356;String token = "631ddb2c05e054303c318d06d2202420c2ee1691";Map templateInfo = new LinkedHashMap();//templateInfo.put("productPrice", "99.8");//templateInfo.put("productName", "产品名称");
//        String userstr = "今天下午三点开会";templateInfo.put("remindMsg", userstr);// LinkedHashMap 是HashMap的一个子类,如果需要输出的顺序和输入的相同Map data = new LinkedHashMap();   // 顺序是完全随机,具有很快的访问速度Map map = new TreeMap();          // 默认是按键值的升序排序map.put("phoneNum", tel);map.put("callInterval", 20);map.put("callNum", 0);map.put("templateInfo", templateInfo);data.put("vccId", vccId);data.put("proId", proId);String mapStr = JSONObject.fromObject(map).toString();        String str = mapStr + token;String sign = SHA1(str);data.put("sign", sign);        //data.put("data", encrypt(token, mapStr));data.put("data", map);      //MessageDigest md = MessageDigest.getInstance("SHA-1");//md.reset();JSONObject json = JSONObject.fromObject(data);post.setRequestBody(json.toString());System.out.println(json);//System.exit(0);return post;}public static String SHA1(String decript) {try {MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1");digest.update(decript.getBytes());byte messageDigest[] = digest.digest();// Create Hex StringStringBuffer hexString = new StringBuffer();// 字节数组转换为 十六进制 数for (int i = 0; i < messageDigest.length; i++) {String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);if (shaHex.length() < 2) {hexString.append(0);}hexString.append(shaHex);}return hexString.toString();} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return "";}/** 中文转unicode编码*/public static String gbEncoding(final String gbString) {char[] utfBytes = gbString.toCharArray();String unicodeBytes = "";for (int i = 0; i < utfBytes.length; i++) {String hexB = Integer.toHexString(utfBytes[i]);if (hexB.length() <= 2) {hexB = "00" + hexB;}unicodeBytes = unicodeBytes + "\\u" + hexB;}return unicodeBytes;}/** unicode编码转中文*/public static String decodeUnicode(final String dataStr) {int start = 0;int end = 0;final StringBuffer buffer = new StringBuffer();while (start > -1) {end = dataStr.indexOf("\\u", start + 2);String charStr = "";if (end == -1) {charStr = dataStr.substring(start + 2, dataStr.length());} else {charStr = dataStr.substring(start + 2, end);}char letter = (char) Integer.parseInt(charStr, 16); // 16进制parse整形字符串。buffer.append(new Character(letter).toString());start = end;}return buffer.toString();}
}

UTF8工具

package weixin.dianhua;import org.apache.commons.httpclient.methods.PostMethod;public class UTF8PostMethod extends PostMethod{public UTF8PostMethod(String url){super(url);}@Overridepublic String getRequestCharSet() {//return super.getRequestCharSet();return "utf-8";}
}

如果任何疑问或学习交流,请搜索公众号"老秦的快乐生活"获取我的联系方式

java实现自动拨打电话语音提示相关推荐

  1. Android入门篇(四):自动拨打电话、手动拨打电话

    Android入门篇(四):自动拨打电话.手动拨打电话 一.前言 最近在做的项目需要用到自动拨号的这一功能,17年写了一个,最近拿出来用发现不能使用了,后面查资料据说是因为Android 6(api2 ...

  2. Android手机拨打电话、手动发送短信与自动拨打电话、自动发送短信(代码很简单哦)

    Android实现手动拨打电话,即点击后跳转到手机默认电话号码输入页面,可以将相应号码传送过去: <span style="font-size:18px;"> Inte ...

  3. android 自动拨打电话和挂断电话(反射和intent方式)

    欢迎来到博主的技术分享博客 今天分享的技术主要内容是自动拨打电话和挂断电话.自动拨打电话分为两种,一种是通过反射ITelephony这个类直接调用call方法,一种是通过intent方法.而挂断电话则 ...

  4. Android实现拨打电话和发送短信,Android手机拨打电话、手动发送短信与自动拨打电话、自动发送短信(代码很简单哦)...

    Android实现手动拨打电话,即点击后跳转到手机默认电话号码输入页面,可以将相应号码传送过去: Intent intent = new Intent(Intent.ACTION_DIAL, Uri. ...

  5. python实现自动拨打电话_twilio python自动拨打电话,播放自定义mp3音频的方法

    有个小项目,需求是某事件发生时,给客户打电话,提醒客户.需要事先录制好一段音频,客户接通电话后,自动播放. 1. 注册twilio账号 2. 买一个电话号码 3. 安装twilio pip insta ...

  6. python实现自动拨打电话_python 实现手机自动拨打电话的方法(通话压力测试)

    现在能用自动化实现的,尽量使用自动化程序去操作,代替人工去操作,更有效率. 今天说下用python结合adb命令去实现安卓手机端的通话压力测试. #操作前先在设置里打开power键可以结束通话按钮,否 ...

  7. python实现自动打电话-python 实现手机自动拨打电话的方法(通话压力测试)

    现在能用自动化实现的,尽量使用自动化程序去操作,代替人工去操作,更有效率. 今天说下用python结合adb命令去实现安卓手机端的通话压力测试. #操作前先在设置里打开power键可以结束通话按钮,否 ...

  8. python 实现打电话_python 实现手机自动拨打电话的方法(通话压力测试)

    现在能用自动化实现的,尽量使用自动化程序去操作,代替人工去操作,更有效率. 今天说下用python结合adb命令去实现安卓手机端的通话压力测试. #操作前先在设置里打开power键可以结束通话按钮,否 ...

  9. html自动拨打电话,javascript之网页点击直接拨打电话和发送短信

    熟悉html的都知道可以采用url链接的方式,直接通过网页拨打电话和发送短信,但是在ios设备和andriod设备中发送短信的代码却不一样,一下我们探究如何识别设备并自动适配相应的代码. 拨打电话 发 ...

  10. java web实现拨打电话_Android实现打电话功能

    初学安卓,入门的应用 .打电话. 新建Android 项目 layout 控件布局 :activity_main.xml xmlns:tools="http://schemas.androi ...

最新文章

  1. 【Linux】一步一步学Linux——systemctl命令(147)
  2. 全国计算机等级考试题库二级C操作题100套(第53套)
  3. android版本10好不好,一加正式推送Android 10系统 流畅性怎么样
  4. php $GLOBALS 超全局变量的理解
  5. 5W2H法分析用户流失内因
  6. ftp客户端工具,几款优秀的ftp客户端工具
  7. 微信声音锁会上传到服务器吗,微信声音锁原理是什么?微信声音锁安全吗?
  8. 全球制造业“看上去很美”
  9. java 停止定时器_Java/Android计时器(开始,暂停,恢复,停止)
  10. 如何创建数据透视表的方法
  11. b站pink老师JavaScript的PC端网页特效 案例代码——仿京东放大镜效果
  12. 【C/C++】基础概念
  13. Opencv中的erode和dilate(腐蚀和膨胀-python实现)
  14. iOS动手做一个直播app开发(代码篇)
  15. CSS 样式的 initial(默认)和 inherit(继承)以及 unset
  16. 关于kali连不上网络
  17. Date类对象与字符串的互相转换
  18. jquery ajax 事件执行顺序
  19. Deepin/Uos中添加PPA时显示找不到命令
  20. pymongo查询列表元素_pymongo相关操作

热门文章

  1. 武汉有哪些牛逼的互联网公司?
  2. 超清视频制作:视频补帧+超分辨率
  3. 氨基酸三字母转一个字母
  4. Java实现 LeetCode 34 在排序数组中查找元素的第一个和最后一个位置
  5. 吉首大学2019年程序设计竞赛(重现赛)A:SARS病毒(找规律 or 推公式+欧拉降幂+快速幂)
  6. 利用Python将PDF转化为图片的方法
  7. 面试笔试杂项积累-Unity
  8. gdb x 命令详解
  9. html -----硬回车和软回车
  10. C51最小单片机系统