七陌API对接实战:外呼接口及通话记录推送

2024-01-17 09:20

本文主要是介绍七陌API对接实战:外呼接口及通话记录推送,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通过白码低代码开发平台对接七陌外呼接口,实现选择客户进行外呼,并保存通话记录的功能。

外呼接口实现:

官方接口文档:http://developer.7moor.com/v2docs/dialout/ 

1、对接数据查询

向七陌商务索取到七陌用户中心账号密码,在查询页面查询到三个参数

 let accountId = "T0********";//账户idlet apiSecret = "495b60****************5f0555af";//账户secretlet host = "https://openapis.7moor.com";//请求域名

查询页面:http://developer.7moor.com/data-query/ 

2、接口鉴权信息

时间戳//时间let date = new Date();let YY = date.getFullYear();let MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1);let DD = (date.getDate() + 1 <= 10 ? '0' + date.getDate() : date.getDate());let hh = (date.getHours() + 1 <= 10 ? '0' + date.getHours() : date.getHours());let mm = date.getMinutes() + 1 <= 10 ? '0' + date.getMinutes() : date.getMinutes();let ss = date.getSeconds() + 1 <= 10 ? '0' + date.getSeconds() : date.getSeconds();let time = YY + MM + DD + hh + mm + ss;

包头验证信息Authorization

  //包头验证信息 Authorization的值为 Base64编码(账户Id +冒号+时间戳) let buffer = $modules.lib.Buffer.from(accountId + ":" + time);let authorization = buffer.toString("base64");请求参数sig//sig, 32位大写MD5加密 (帐号Id + 帐号APISecret +时间戳)const crypto = $modules.crypto;const hash = crypto.createHash('md5');let sig = hash.update(accountId + apiSecret + time).digest('hex').toLocaleUpperCase();

3、外呼接口请求地址

  //请求地址

    let url = host + "/v20180426/call/dialout/" + accountId + "?sig=" + sig;

4、请求头部

//请求头部let headers = {"Content-Type": "application/json;charset=utf-8","Authorization": authorization,}

5、请求体

相关参数参考官方文档:http://developer.7moor.com/v2docs/dialout/ 

//请求体let data = {"FromExten": $input.FromExten,"Exten": $input.Exten,"ExtenType": typeMap[$input.ExtenType],"ActionID": $input.ActionID,"DialoutStrVar": $input.DialoutStrVar,};为了方便用户端理解,extenType参数输入增加map//ExtenType maplet typeMap = {"手机": "Local","软电话": "sip","IP话机": "gateway",}

6、发起外呼请求

//外呼   

 let call = await $modules.curl(url, {method: "post",dataType: "json",headers,data,});

7、输出请求结果

 //输出

    //$output.sig = sig;

    //$output.authorization = authorization;

    $output.request = data;

    $output.result = call.data;

    $output.success = call.data.Succeed.toString();

    $output.msg = call.data.Message;

坐席接听方式说明:外呼时强制坐席使用该接听方式进行外呼。Local为“手机”,”sip为“软电话”需登录企话宝,gateway为“语音网关”,需注册绑定IP话机。

Sip方式外呼效果:

外呼效果图

通话记录事件推送实现

官方接口文档:对外事件推送 - 容联七陌|开发者中心 

1、设置推送地址

添加一个webhook,设置路径。

路径

将完整路径复制,与用户中心账户名一并发给七陌业务员,让对方配置该路径。

配置路径

2、处理接收的信息

async function hook($req = request, $resp = response, $modules = modules) {

    //返回字符串 200,告知七陌已成功接收

    $resp.body = "200";

    let json = {

        query: $req.query,//接收的数据,get方式

        body: $req.body,//接收的数据,post方式

        timestamp: new Date().toString()

    }

    //保存接收的数据

    $modules.data.saveData("60177fad283f87288d276269", {

        "60177fc32f8b27288c6023dd": JSON.stringify(json)

    })

}

接收到的数据:

接收数据

这篇关于七陌API对接实战:外呼接口及通话记录推送的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/615559

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

如何更优雅地对接第三方API

如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程中,有不少场景会对接第三方的API,例如第三方账号登录,第三方服务等等。第三方服务会提供API或者SDK,我依稀记得早些年Maven还没那么广泛使用,通常要对接第三方

springboot实战学习(1)(开发模式与环境)

目录 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 (3)前端 二、开发模式 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 Validation:做参数校验Mybatis:做数据库的操作Redis:做缓存Junit:单元测试项目部署:springboot项目部署相关的知识 (3)前端 Vite:Vue项目的脚手架Router:路由Pina:状态管理Eleme

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma