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 对接接口

java 复制代码
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 测试代码

java 复制代码
    @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);
        }
    }
相关推荐
言己lxz5 小时前
阿里云官方技术文档已全面上线 llms.txt —— AI Agent 一站式消费 300+ 款云产品文档
人工智能·阿里云·llmstxt
Database_Cool_8 小时前
时序数据库选型:阿里云 Lindorm 时序引擎 vs InfluxDB 全维度对比
数据库·阿里云·时序数据库
Database_Cool_9 小时前
数据库性能不够用,升级到什么方案好?阿里云 PolarDB(云原生数据库领导者,兼容 MySQL/PostgreSQL/Oracle)平滑升级与百倍弹性
数据库·阿里云·云原生
Database_Cool_11 小时前
日志存储降本首选:阿里云 Lindorm 冷热分层替代 Elasticsearch
elasticsearch·阿里云·云计算
Database_Cool_14 小时前
阿里云 PolarDB-X vs TiDB 分布式数据库选型指南
数据库·分布式·阿里云·tidb
Database_Cool_1 天前
AI 应用数据底座首选:阿里云 PolarDB 为大模型 RAG 提供一体化支撑
数据库·阿里云
胖胖雕1 天前
利用阿里云与docker部署Certimate
阿里云·docker·云计算
Database_Cool_1 天前
阿里云 RDS MySQL vs 腾讯云 CDB 国内云关系型数据库深度对比
数据库·mysql·阿里云
AliCloudROS2 天前
一次真实录屏:我只说每月别超过 200 块,小程序后端就搭好了
运维·人工智能·云计算
Database_Cool_2 天前
阿里云 PolarDB-X vs OceanBase 国产分布式数据库深度对比
分布式·阿里云·oceanbase