• [技术干货] SDK和服务网格相比,有哪些优缺点?
    SDK(Software Development Kit)和服务网格(Service Mesh)在微服务架构中各自扮演着不同的角色,具有各自的优缺点。以下是对两者优缺点的比较:SDK的优点: 简洁易用:SDK通常设计为简洁易用,开发者可以通过阅读文档和少量代码就能实现对接,降低了学习和使用的门槛。 稳定可靠:SDK提供稳定可靠的API和服务,确保开发者在使用时不会遇到过多的问题和故障。 高效性能:SDK设计者会考虑性能问题,确保SDK在运行时不会过多占用系统资源,减少内存占用、内存抖动和电量消耗。 易于维护:SDK的架构设计和模块化原则有助于减少耦合,降低维护成本。 SDK的缺点: 业务逻辑与服务治理耦合:在SDK中,业务逻辑和服务治理逻辑往往耦合在一起,导致升级和维护困难。 多语言支持困难:为每种语言、每种框架都开发一套完整的SDK会增加维护成本。 升级困难:SDK升级可能需要业务应用修改版本号并重新发布,增加了升级成本。 服务网格的优点: 解耦:服务网格将服务治理功能下沉到基础设施层,与业务逻辑完全解耦,使开发者更专注于业务逻辑的开发。 统一治理:服务网格可以方便地实现多语言、多协议的统一流量管控、监控等治理需求,降低了维护成本。 可观察性:服务网格在服务调用级别上提供统一的遥测指标,提高了系统的可观察性。 流量控制:服务网格提供智能路由、超时重试、熔断等流量控制功能,提高了系统的稳定性和可用性。 安全性:服务网格提供了保护网络调用的功能和基础设施,如服务的认证、服务间通信的加密等。 服务网格的缺点: 增加复杂度:服务网格引入Sidecar代理等组件,增加了整体链路和操作运维的复杂性。 运维人员技能要求高:运维人员需要成为容器编排工具(如Kubernetes)和服务网格技术的专家。 引入延迟:服务网格可能为系统调用增加毫秒级别的延迟,在特定场景下可能难以接受。 平台适配:服务网格的侵入性迫使开发人员和运维人员适应平台并遵守平台的规则。 综上所述,SDK和服务网格各有其优缺点,选择使用哪种技术取决于具体的业务需求和场景。
  • [问题求助] 谁有SDK开发包的DEMO
    原来官方提供的sdk demo下载地址 cid:link_0 已经失效,无法下载。谁已经下载过的,能否共享一下!
  • [问题求助] 求助:为什么这个华为的车牌识别的api无法调用?其他几个开通了以后都可以使用,
    其他几个开通了以后都可以使用,但是这个显示好像没有和环境配置上,但是其他的身份证识别护照识别发票识别我都是用同样的方式进行调用的为什么会这样呢???
  • [问题求助] cann包社区版7.0.0.alpha001兼容哪些昇腾驱动
    只使用了 7.0.0.alpha001 的lib库,昇腾的驱动都能兼容吗?
  • [问题求助] 在uos系统上使用websocket控制OpenEye的sdk调用setAnswerWay失败
    【问题来源】招行【问题简要】在uos系统上,websocket控制openeye注册后调用setAnswerWay设置自动接听失败【问题类别】AICC【OpenEye版本】【问题现象描述】在uos系统上使用openeye发现呼叫时发现主叫方openeye会出现弹框提示用户是否接听还是拒绝,期望能够通过setAnswerWay api来设置openeye的自动接听。在uos系统上websocket和openeye建立了连接并注册后调用setAnswerWay报错提示参数有误。在win系统上能够正确调用并设置。
  • [问题求助] OpenEye在uos系统上调用setAnswerWay失败
    问题简要: 在uos系统上,websocket控制openeye注册后调用setAnswerWay设置自动接听失败openEye版本 错误信息 在win系统上调用setAnswerWay api设置自动接听是正常可用的返回成功信息,uos系统上调用发现不行,请问是uos系统目前不支持这个api还是实现或则环境存在问题呢?这是在win系统下openeye回调的信息显示是没有问题的
  • [问题求助] 使用华为IPC SDK 进行保存实况数据( IVS_PU_SaveRealData)生成视频文件时的问题
    1、生成文件结果图2、代码实现图(C#语言)在使用华为IPC SDK 进行保存实况数据( IVS_PU_SaveRealData)生成视频文件时的问题,文件夹中生成的是一堆无法播放的mp4 文件如:1、生成文件结果图图。实现代码如上:2、代码实现图。现在我想请教 应该如何设置将实况数据保存生成到一个视频文件(mp4)中并且能播放? 
  • [技术干货] 模型压缩部署概述【转载】
    一、模型在线部署深度学习和计算机视觉方向除了算法训练/研究,还有两个重要的方向: 模型压缩(模型优化、量化)、模型部署(模型转换、后端功能SDK开发)。所谓模型部署,即将算法研究员训练出的模型部署到具体的端边云芯片平台上,并完成特定业务的视频结构化应用开发。现阶段的平台主要分为云平台(如英伟达 GPU)、手机移动端平台(ARM 系列芯片)和其他嵌入式端侧平台(海思 3519、安霸 CV22、地平线 X3、英伟达 jetson tx2 等芯片)。对于模型部署/移植/优化工程师来说,虽然模型优化、量化等是更有挑战性和技术性的知识,但是对于新手的我们往往是在做解决模型无法在端侧部署的问题,包括但不限于:实现新 OP、修改不兼容的属性、修改不兼容的权重形状、学习不同芯片平台的推理部署框架等。对于模型转换来说,现在行业主流是使用 Caffe 和 ONNX 模型作为中间模型。1.1,深度学习项目开发流程在高校做深度学习 demo 应用一般是这样一个过程,比如使用 Pytorch/TensorFlow 框架训练出一个模型,然后直接使用 Pytorch 框架做推理(test)完成功能验证,但是在工业界这是不可能的,因为这样模型推理速度很慢,一般我们必须有专门的深度学习推理加速框架去做模型推理(inference)。以 GPU 云平台推理框架 TensorRT 为例,简单描述模型训练推理过程就是:训练好网络模型(权重参数数据类型为 FP32)输入 TensorRT,然后 TensorRT 做解析优化,并进行在线推理和输出结果。两种不同的模型训练推理过程对比如下图所示: 前面的描述较为简单,实际在工业届,理想的深度学习项目开发流程应该分为三个步骤: 模型离线训练、模型压缩和模型在线部署,后面两个步骤互有交叉,具体详情如下:模型离线训练:实时性低,数据离线且更新不频繁,batchsize 较大,消耗大量 GPU 资源。设计开发模型网络结构;准备数据集并进行数据预处理、EDA 等操作;深度学习框架训练模型:数据增强、超参数调整、优化器选择、训练策略调整(多尺度训练)、TTA、模型融合等;模型测试。模型优化压缩:主要涉及模型优化、模型转换、模型量化和模型编译优化,这些过程很多都在高性能计算推理框架中集成了,各个芯片厂商也提供了相应的工具链和推理库来完成模型优化压缩。实际开发中,在不同的平台选择不同的推理加速引擎框架,比如 GPU 平台选择 TensorRT,手机移动端(ARM)选择 NCNN/MNN,NPU 芯片平台,如海思3519、地平线X3、安霸CV22等则直接在厂商给出的工具链进行模型的优化(optimizer)和压缩。模型优化 Optimizer:主要指计算图优化。首先对计算图进行分析并应用一系列与硬件无关的优化策略,从而在逻辑上降低运行时的开销,常见的类似优化策略其包括:算子融合(conv、bn、relu 融合)、算子替换、常数折叠、公共子表达式消除等。模型转换 Converter:Pytorch->Caffe、Pytorch->ONNX、ONNX模型->NCNN/NPU芯片厂商模型格式(需要踩坑非常多,Pytorch、ONNX、NPU 三者之间的算子要注意兼容)。注意 ONNX 一般用作训练框架和推理框架之间转换的中间模型格式。模型量化 Quantizer:主要指训练后量化(Post-training quantization PTQ);权重、激活使用不同的量化位宽,如速度最快的量化方式 w8a8、速度和精度平衡的量化方式 w8a16。模型编译优化(编译优化+NPU 指令生成+内存优化)Compiler:模型编译针对不同的硬件平台有不同优化方法,与前面的和硬件无关的模型层面的优化不同。GPU平台存在 kernel fusion 方法;而 NPU 平台算子是通过特定二进制指令实现,其编译优化方法包括,卷积层的拆分、卷积核权重数据重排、NPU 算子调优等。模型部署/SDK输出: 针对视频级应用需要输出功能接口的SDK。实时性要求高,数据线上且更新频繁,batchsize 为 1。主要需要完成多模型的集成、模型输入的预处理、非DL算法模块的开发、 各个模块 pipeline 的串联,以及最后 c 接口(SDK)的输出。板端框架模型推理: Inference:C/C++。不同的 NPU 芯片/不同的公司有着不同的推理框架,但是模型的推理流程大致是一样的。包括:输入图像数据预处理、加载模型文件并解析、填充输入图像和模型权重数据到相应地址、模型推理、释放模型资源。这里主要需要学习不同的模型部署和推理框架。pipeline 应用开发: 在实际的深度学习项目开发过程中,模型推理只是其中的基础功能,具体的我们还需要实现多模型的集成、模型输入前处理、以及非 DL 算法模块的开发: 包括检测模块、跟踪模块、选帧模块、关联模块和业务算法模块等,并将各模块串联成一个 pipeline,从而完成视频结构化应用的开发。SDK集成: 在完成了具体业务 pipeline 的算法开发后,一般就需要输出 c 接口的 SDK 给到下层的业务侧(前后端)人员调用了。这里主要涉及 c/c++ 接口的转换、pipeline 多线程/多通道等sample的开发、以及大量的单元、性能、精度、稳定性测试。芯片平台板端推理 Inference,不同的 NPU 芯片有着不同的 SDK 库代码,但是模型运行流程类似。不同平台的模型的编译优化是不同的,比如 NPU 和一般 GPU 的区别在于后端模型编译上,GPU 是编译生成 kernel library(cuDNN 函数),NPU 是编译生成二进制指令;前端的计算图优化没有本质区别,基本通用。所以综上所述,深度学习项目开发流程可以大致总结为三个步骤: 模型离线训练、模型优化压缩和模型部署/SDK输出,后两个步骤互有交叉。前面 2 个步骤在 PC 上完成,最后一个步骤开发的代码是需要在在 AI 芯片系统上运行的。最后以视差模型在海思 3519 平台的部署为例,其模型部署工作流程如下: 1.2,模型训练和推理的不同为了更好进行模型优化和部署的工作,需要总结一下模型推理(Inference)和训练(Training)的不同:网络权重值固定,只有前向传播(Forward),无需反向传播,因此:模型权值和结构固定,可以做计算图优化,比如算子融合等;输入输出大小固定,可以做 memory 优化,比如 feature 重排和 kernel 重排。batch_size 会很小(比如 1),存在 latency 的问题。可以使用低精度的技术,训练阶段要进行反向传播,每次梯度的更新是很微小的,需要相对较高的精度比如 FP32 来处理数据。但是推理阶段,对精度要求没那么高,现在很多论文都表明使用低精度如 in16 或者 int8 数据类型来做推理,也不会带来很大的精度损失。二、手机端CPU推理框架的优化对于 HPC 和软件工程师来说,在手机 CPU 端做模型推理框架的优化,可以从上到下考虑:算法层优化:最上面就是算法层,如可以用winograd从数学上减少乘法的数量(仅在大channel尺寸下有效);框架优化:推理框架可以实现内存池、多线程等策略;硬件层优化:主要包括: 适应不同的硬件架构特性、pipeline和cache优化、内存数据重排、NEON 汇编优化等。转自:cid:link_0
  • [教程] 轻松搞定图像识别调用
    前言基于java使用SDK实现图像识别,主要以媒资图像标签和名人识别为例。一、环境配置Maven(没有直接下载华为的SDK包,而是使用Maven安装依赖)JDK19(官方的SDK包要求JDK版本必须高于JDK8版本,大家根据自己只要满足版本要求即可)开发工具:IDEA 2023.3(其他版本也可)能创建Maven项目即可开通图像识别服务(目前是免费体验):这里我开通的是图像标签/媒资图像标签和名人识别服务。设置访问密钥服务区域:我开通的服务区域是华北-北京四关键步骤Maven项目的创建和Java环境变量的配置我就不再赘诉,这是大家学习java早已熟练掌握的,这里只讲诉易错的。开通图像识别服务 华为云首页就有云产品体验区(找不到就在搜索栏检索),勾选AI: 点击“立即体验”后,找到服务列表,开通你想要的服务(点击开通): 设置访问密钥 在控制台找到“我的凭证”: 找到“访问密钥”,如果没有就新增,新增后一定要下载密钥的CSV文件,他会有提示让你下载,防止你忘记: 下载完csv文件后用记事本打开即可看到AK和SK: Maven引入依赖配置 版本可以自己切换 <dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-image</artifactId> <version>3.1.8</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.70</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.16</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.16.0</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.13.0</version> </dependency>二、图像识别实例媒资图像标签功能介绍:对用户传入的图像可以返回图像中的物体名称、所属类别及置信度信息。使用图片是网上的,仅作学习使用: 代码如下:/** * @Version: 1.0.0 * @Author: Dragon_王 * @ClassName: RunImageMediaTaggingSolution * @Description: 媒资图像标签 * @Date: 2024/1/8 11:51 */ /** * 此demo仅供测试使用,强烈建议使用SDK * 使用前需配置依赖jar包。jar包可通过下载SDK获取 */ import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.image.v2.region.ImageRegion; import com.huaweicloud.sdk.image.v2.*; import com.huaweicloud.sdk.image.v2.model.*; public class RunImageMediaTaggingSolution { public static void main(String[] args) { //此处需要输入您的AK/SK信息 String ak = "你的AK"; String sk = "你的SK"; ICredential auth = new BasicCredentials() .withAk(ak) .withSk(sk); ImageClient client = ImageClient.newBuilder() .withCredential(auth) .withRegion(ImageRegion.valueOf("cn-north-4")) //此处替换为您开通服务的区域 .build(); RunImageMediaTaggingRequest request = new RunImageMediaTaggingRequest(); ImageMediaTaggingReq body = new ImageMediaTaggingReq(); body.withThreshold(10f); body.withLanguage("zh"); body.withUrl("https://tse2-mm.cn.bing.net/th/id/OIP-C.SIuEnb1-arhtDNqfdICVqAHaE7?rs=1&pid=ImgDetMain"); //此处替换为公网可以访问的图片地址 request.withBody(body); try { RunImageMediaTaggingResponse response = client.runImageMediaTagging(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } }运行结果: //运行结果如下 class RunImageMediaTaggingResponse { result: class ImageMediaTaggingResponseResult { tags: [class ImageMediaTaggingItemBody { confidence: 83.63 type: 动物 tag: 金毛犬 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 金毛犬 en: Golden retriever } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 动物 en: Animal } instances: [] }, class ImageMediaTaggingItemBody { confidence: 81.78 type: 动物 tag: 金毛 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 金毛 en: Golden hair } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 动物 en: Animal } instances: [] }, class ImageMediaTaggingItemBody { confidence: 77.00 type: 动物 tag: 金毛寻猎犬 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 金毛寻猎犬 en: Golden Retriever } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 动物 en: Animal } instances: [] }, class ImageMediaTaggingItemBody { confidence: 62.60 type: 动物 tag: 贵妇犬 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 贵妇犬 en: Poodle } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 动物 en: Animal } instances: [] }, class ImageMediaTaggingItemBody { confidence: 59.02 type: 生活 tag: 狗链 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 狗链 en: Dog chain } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 生活 en: Life } instances: [] }, class ImageMediaTaggingItemBody { confidence: 53.84 type: 动物 tag: 宠物狗 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 宠物狗 en: Pet dog } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 动物 en: Animal } instances: [] }, class ImageMediaTaggingItemBody { confidence: 48.01 type: 动物 tag: 狗狗 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 狗狗 en: Dog } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 动物 en: Animal } instances: [] }, class ImageMediaTaggingItemBody { confidence: 44.02 type: 动物 tag: 犬 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 犬 en: Dog } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 动物 en: Animal } instances: [] }, class ImageMediaTaggingItemBody { confidence: 42.11 type: 动物 tag: 纯种犬 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 纯种犬 en: Purebred dog } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 动物 en: Animal } instances: [] }, class ImageMediaTaggingItemBody { confidence: 38.65 type: 动物 tag: 中华田园犬 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 中华田园犬 en: Chinese pastoral dog } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 动物 en: Animal } instances: [] }] } } Process finished with exit code 0名人识别功能介绍:分析并识别图片中包含的敏感人物、明星及网红人物,返回人物信息及人脸坐标。使用照片是网上的照片,仅作学习使用: 代码如下:/** * @Version: 1.0.0 * @Author: Dragon_王 * @ClassName: RunCelebrityRecognitionSolution * @Description: 媒资标签 * @Date: 2024/1/9 16:23 */ import com.alibaba.fastjson.JSON; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.image.v2.ImageClient; import com.huaweicloud.sdk.image.v2.model.RunCelebrityRecognitionRequest; import com.huaweicloud.sdk.image.v2.region.ImageRegion; import com.huaweicloud.sdk.image.v2.model.CelebrityRecognitionReq; import com.huaweicloud.sdk.image.v2.model.RunCelebrityRecognitionResponse; public class RunCelebrityRecognitionSolution { public static void main(String[] args) { // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全 // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK String ak = "你的AK"; String sk = "你的SK"; ICredential auth = new BasicCredentials() .withAk(ak) .withSk(sk); ImageClient client = ImageClient.newBuilder() .withCredential(auth) .withRegion(ImageRegion.valueOf("cn-north-4")) //此处替换为您开通服务的区域 .build(); RunCelebrityRecognitionRequest request = new RunCelebrityRecognitionRequest(); CelebrityRecognitionReq body = new CelebrityRecognitionReq(); body.withThreshold(0f); body.withUrl("https://tse1-mm.cn.bing.net/th/id/OIP-C.tM6jifW1xaCDP7Kia9QiYwHaKD?rs=1&pid=ImgDetMain"); //此处替换为公网可以访问的图片地址 request.withBody(body); try { RunCelebrityRecognitionResponse response = client.runCelebrityRecognition(request); System.out.println(response.getHttpStatusCode()); System.out.println(JSON.toJSONString(response)); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } }运行结果:200 {"httpStatusCode":200,"result":[{"confidence":0.9985551,"faceDetail":{"w":132,"h":186,"x":197,"y":79},"label":"成龙"}]} Process finished with exit code 0总结以上就是华为云的AI图像识别服务调用,这里提供官方文档
  • [问题求助] 技能组排队等待音配置成通过IVR流程,在排队等待一段时间后溢出到其他队列失败
     【问题来源】【必填】                 天安人寿       【问题简要】【必填】                       技能组排队等待音配置成通过IVR流程,在排队等待一段时间后溢出到其他队列失败   【问题类别】【必填】                  IVR(gsl)     【AICC解决方案版本】【必填】                AICC 23.100            【期望解决时间】【选填】                           尽快            【问题现象描述】【必填】       技能组排队等待音配置成通过IVR流程(IVR_Paidui_4008133.GSL),在排队等待一段时间后,查询另外一些技能组是否有空闲坐席,有的话直接转移呼叫,无空闲坐席继续在原技能组排队等待;现在的问题是经过”查询设备“、”队列状态“判断有可用坐席时,调用”转移呼叫“节点报错,无法转接呼叫,报错信息如下:   2023-09-21 16:03:55.282  205 $107$[转移呼叫]   2023-09-21 16:03:55.285  205 CCS(0)(0,10108)->IVR(255)(11,205): 拆线: 原因: [未定义: 717]   2023-09-21 16:03:55.286  205 CccRequestReroutingWithVDN WaitReturn=0 DeviceTyp=1 DeviceNo=5 DeviceVDN=1 Time=1695283393 Dsn=8291 Handle=1 Server=0 Ret=0   这个问题原来开过一个贴子(https://bbs.huaweicloud.com/forum/thread-0279130667516801004-1-1.html?ticket=ST-92399263-A7pVcfojfUltSrgEoURQTOZc-sso),依帖子中老师的建议:配置技能组的超时时长,排队等待超时时调用IVR流程实现重新排队和溢出功能。这种能实现这个功能,但选择重新排队用户又重新进入了队列,原来的等待时长就从0计算了,大屏监控中显示的最长排队等待时长也变为从重新排队时计算了,业务不接受这种方式!通过配置技能组等待音为IVR流程实现能完美实现这个功能,但现在溢出到其他技能组时报错,能否解决这个问题?谢谢! 
  • [问题求助] 华为云下发消息,设备联动-执行动作-发送通知,显示如下结果,点击同意授权也没反应,该怎么办
    我用esp8266连接华为云,使用的MQTT协议,属性值可以成功上报给华为云,但是想要实现短信提醒功能时出现如下图的问题该怎么办,求大神指点!!!
  • [问题求助] 鸿蒙开发使用ets语言,目前没有可用的对象存储服务sdk
    鸿蒙开发使用ets语言,目前没有可用的对象存储服务sdk,因为后续鸿蒙开发者会越来越多,希望增加一下
  • [问题求助] 技能组排队超时处理方式配置成IVR流程,在这个IVR流程中如何获取到原始的呼叫ID?  
     【问题来源】【必填】                 天安人寿       【问题简要】【必填】                       技能组排队超时处理方式配置成IVR流程,在这个IVR流程中如何获取到原始的呼叫ID?   【问题类别】【必填】                  IVR(gsl)     【AICC解决方案版本】【必填】                AICC 23.100            【期望解决时间】【选填】                           尽快            【问题现象描述】【必填】              技能组排队超时处理方式配置成IVR流程,IVR流程中播报”很抱歉,现在坐席繁忙,如需电话回复请按1号键,继续等待请按2号键,结束请挂机“,用户按1记录数据库后挂断,第一次按2后继续在原技能组请求路由继续排队,第二次及以后按2后查询其他三个技能组是否有空闲坐席,有空闲坐席直接溢出,无空闲坐席继续在原技能组请求路由继续排队。       现在的问题是在排队超时的IVR流程中如何获取到原始的呼叫ID?我做了如下尝试:      1、通过获取呼叫ID节点获取的呼叫ID和发起转接流程呼叫ID不同,且多次排队超时调用此流程获取到的呼叫ID都不尽相同,我想通过呼叫ID为KEY值记录排队超时次数就行不通了     2、通过操作人工台数据,发起转接端能设置成功,排队超时IVR流程中无法获取到设置的人工台数据     3、通过操作IE信息设置/获取UUI信息,从发起端日志可看到设置成功了,但排队超时IVR流程中也无法获取到设置的UUI信息 附件为测试日志,test.GSL为发起转接的IVR流程,IVR_YiChu_4008133.GSL为排队超时IVR流程
  • [问题求助] 技能组排队等待音配置成通过IVR流程,在排队等待一段时间后溢出到其他队列的坐席失败 
    【问题来源】【必填】               天安人寿     【问题简要】【必填】                     技能组排队等待音配置成通过IVR流程,在排队等待一段时间后溢出到其他队列的坐席失败 【问题类别】【必填】                IVR(gsl)   【AICC解决方案版本】【必填】              AICC 23.100          【期望解决时间】【选填】                         尽快          【问题现象描述】【必填】            技能组排队等待音配置成通过IVR流程(IVR_Paidui_4008133.GSL),在排队等待一段时间后,查询另外一些技能组是否有空闲坐席,有的话直接转移呼叫,无空闲坐席继续在原技能组排队等待;现在的问题是经过”查询设备“、”队列状态“判断有可用坐席时,调用”转移呼叫“节点报错,无法转接呼叫,报错信息如下: 2023-09-21 16:03:55.282  205 $107$[转移呼叫] 2023-09-21 16:03:55.285  205 CCS(0)(0,10108)->IVR(255)(11,205): 拆线: 原因: [未定义: 717] 2023-09-21 16:03:55.286  205 CccRequestReroutingWithVDN WaitReturn=0 DeviceTyp=1 DeviceNo=5 DeviceVDN=1 Time=1695283393 Dsn=8291 Handle=1 Server=0 Ret=0 
  • [问题求助] 【java-sdk】使用obs的并发分段上传比直接上传速度还慢
    您好,我在使用OBS javasdk的文件上传API,使用中,我发现,对于大文件,使用官方提供的并发上传文件示例,比直接调 putObject方法速度还慢,具体代码如下:1.并发分段上传代码官方示例https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_0607.html2.调用 putObject 上传文件public SaveObjectResult saveObject(String bucket, String objectKey, MultipartFile file) throws Exception { // 校验桶名称是否正确 bucket = checkBucketName(bucket); InputStream in = file.getInputStream(); SaveObjectResult saveObjectResult = new SaveObjectResult(); saveObjectResult.setOk(Boolean.FALSE); saveObjectResult.setStorageMediaType(OSSTypeEnum.OBS.name()); PutObjectResult putObjectResult = getClient().putObject(bucket, objectKey, in); if (putObjectResult != null && putObjectResult.getStatusCode() == HttpStatus.HTTP_OK) { saveObjectResult.setOk(Boolean.TRUE); saveObjectResult.setAccessUrl(putObjectResult.getObjectUrl()); } return saveObjectResult; }此处直接使用ObsCLient 的 PutObjectResult putObject(String bucketName, String objectKey, InputStream input) 方法。测试结果发现,使用并发分段上传,并没有节省时间,反而比直接使用putObject还慢,为什么会这样?怎么优化,才能让上传更快?