当前位置: 首页 > article >正文

Java:阿里云联络中心“双呼A”功能系统接入

1.背景

最近公司做的项目需要在线支持拨打虚拟电话给联系人,就对阿里云呼叫服务(云联络中心)进行调研测试。本文主要针对“双呼A”这一功能后端对接进行简单说明,有问题欢迎一起交流

2.准备工作

  • 阿里云账号(个人/企业)
  • 开通云联络中心->进入云联络中心管理控制台
  • 个人账号: 创建实例
  • 企业账号: 可先创建体验版演示实例

具体开通参考:如何开通和使用云联络中心_云联络中心(Cloud Contact Center)-阿里云帮助中心

 3.双呼A接口

双呼和传统的双方通话不同,主叫并不直接呼叫对方,而是通过一个背靠背代理(Back to Back Agent),背靠背代理首先呼叫主叫方,接通后,再呼叫被叫方,然后把二者拉进一个会场。在这种方式下,由于每个呼叫的所有消息流经背靠背代理,因此服务提供商可以据此提供增值服务,比如计时、录音、隐藏真实号码等等。

4.JAR包

<!-- AliYun 阿里云联络中心-->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.21</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>ccc20200701</artifactId>
    <version>2.27.1</version>
</dependency>

5.代码 

5.1 对接接口

package com.service;

import com.alibaba.fastjson.JSONObject;
import com.aliyun.tea.TeaModel;

import javax.servlet.http.HttpServletRequest;

public class AliYunCallService extends CommonService{
    private static final String ALIYUN_ACCESS_KEY = Config.get("aliyun.access.key");
    private static final String ALIYUN_ACCESS_SECRET = Config.get("aliyun.access.secret");
    private static final String ALIYUN_CALL_INSTANCE_ID = Config.get("aliyun.call.instance.id");
    private static final String ALIYUN_CALL_END_POINT = Config.get("aliyun.call.end.point");


    private static String instanceId ;

    private HttpServletRequest request;

    private static com.aliyun.ccc20200701.Client aliYunCallClient;

    static {
        init();
        instanceId = ALIYUN_CALL_INSTANCE_ID;
    }

    public String getInstance() {
        return instanceId;
    }

    public static void init(){
        try{
            com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                    .setAccessKeyId(ALIYUN_ACCESS_KEY)
                    .setAccessKeySecret(ALIYUN_ACCESS_SECRET);
            config.endpoint = ALIYUN_CALL_END_POINT;
            aliYunCallClient = new com.aliyun.ccc20200701.Client(config);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    public TeaModel startBack2BackCall (String caller,String callee,String broker) throws Exception {
        com.aliyun.ccc20200701.models.StartBack2BackCallRequest StartBack2BackCallRequest = new com.aliyun.ccc20200701.models.StartBack2BackCallRequest()
                .setInstanceId(instanceId)
                .setCaller(caller)
                .setCallee(callee)
                .setBroker(broker)
                .setTimeoutSeconds(60);
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        return aliYunCallClient.startBack2BackCallWithOptions(StartBack2BackCallRequest, runtime).getBody();
    }

    public TeaModel getCallDetailRecord (String contactId) throws Exception {
        com.aliyun.ccc20200701.models.GetCallDetailRecordRequest request = new com.aliyun.ccc20200701.models.GetCallDetailRecordRequest()
                .setInstanceId(instanceId)
                .setContactId(contactId);
        return aliYunCallClient.getCallDetailRecord(request).getBody();
    }
   

}

 5.2 测试代码

    @Test
    public void call() {
        AliYunCallService aliYunCallService = new AliYunCallService();
        try {
       System.out.println("StartBack2BackCall"+aliYunCallService.startBack2BackCall("131********","151********","0102157****").toMap());  
      System.out.println("GetCallDetailRecord"+aliYunCallService.getCallDetailRecord("job-57********").toMap());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }


http://www.kler.cn/a/374482.html

相关文章:

  • web三、 window对象,延时器,定时器,时间戳,location对象(地址),本地存储-localStorage,数组去重new Set
  • Java复习|图形用户界面AWT、Swing----银行客户管理系统【校课版】【1】
  • 用C#(.NET8)开发一个NTP(SNTP)服务
  • 【Rust自学】5.3. struct的方法(Method)
  • Linux 中的 cat 命令:使用、原理与源码解析
  • java全栈day19--Web后端实战(java操作数据库3)
  • vscode | 开发神器vscode快捷键删除和恢复
  • 【VM实战】VMware迁移到VirtualBox
  • 无人机之感知避让技术篇
  • 【网络】什么是 ICMP (Internet Control Message Protocol)?
  • 双指针习题篇(上)
  • 基于SpringBoot的健身房系统的设计与实现(源码+定制+开发)
  • 如何在1个账号上,1个客户6个人同时服务
  • 鸿蒙网络编程系列41-仓颉版HttpRequest模拟登录示例
  • C++——酒店管理系统
  • 二百七十二、Kettle——ClickHouse中增量导入数据重复性统计表数据(1天1次)
  • Python中的PDF处理工具:PyPDF2和ReportLab使用指南
  • 慢sql优化和Explain解析
  • MySQL数据表导入到clickhouse数据库中
  • linux命令行的艺术
  • Spring Boot + Vue:打造高效图书借阅管理平台
  • 第三百零四节 Log4j教程 - Log4j配置
  • 微积分复习笔记 Calculus Volume 1 - 4.3 Maxima and Minima
  • 导出列表数据到Excel并下载
  • echarts 实现3D饼状图 加 label标签显示
  • Xcode 15.4 运行flutter项目,看不到报错信息详情?