• [问题求助] 如何收费
    5G消息的通道、平台和相关增值能力是如何收费的
  • [问题求助] 消息通知的日志记录在哪里?左侧面板没有日志的选项卡
    消息通知的日志记录在哪里?左侧面板没有日志的选项卡
  • [问题求助] 函数和工作流,两个单词都一样,它们的推送方式配置有区别吗?还是也一样?
    函数和工作流,两个单词都一样,它们的推送方式配置有区别吗?还是也一样?
  • [问题求助] default协议,会以怎样的方式推送消息?
    default协议,会以怎样的方式推送消息?
  • [问题求助] 消息标签有什么用?TMS又是什么?
    消息标签有什么用?TMS又是什么?
  • [问题求助] 消息通知服务里面的“日志组”是用来做什么的?
    消息通知服务里面的“日志组”是用来做什么的?
  • [问题求助] 消息通知服务,是否有实现安卓的厂商推送?是否能兼容市面上现有的安卓手机,即使不打开应用也能收到通知提醒?
    消息通知服务,是否有实现安卓的厂商推送?是否能兼容市面上现有的安卓手机,即使不打开应用也能收到通知提醒?
  • [问题求助] 华为云的消息通知服务是否支持对接其他厂商的短信服务
    华为云的消息通知服务支持“短信”协议,我认为是华为自带的短信云服务。想问的是,能否对接其他厂商的短信云服务呢?
  • 能不能在手环手表里增加检测心脏骤停的功能
    我家楼上有个独居男士猝死(老婆早去世,女儿在外地不太联系),过了一周才被发现。现在单身人士越来越多,独居人士也越来越多,猝死好几天不被发现的也会越来越多。再看胡鑫宇案,失踪一个月都不知道是否还在人世。运动猝死,意外猝死也不在少数。我请求华为相关开发人士,能不能在手环或手表里添加一个功能:检测心脏骤停,如果检测到心脏停止,给出心脏骤停提示,并发出警示音,同时自动拨打指定电话(未拨通时,反复拨打指定次数)。这个功能可以在手表取下来后自动关闭。谢谢
  • [其他] 芒果西米露要加油哈哈哈
  • [公告] 关于鲲鹏论坛移至新平台公告
    ↵诸位鲲鹏论坛开发者大家好,目前鲲鹏论坛由华为云迁移到鲲鹏社区相关工作已准备完毕,按照计划2023年1月15日华为云鲲鹏论坛将进行锁帖,相关帖子将不再进行信息交互,只能信息查看。后续各位开发者使用鲲鹏论坛接口切换到鲲鹏社区:https://www.hikunpeng.com/forum/ 为更好的给诸位开发者提供技术支持及相关服务,请诸位开发者从公告即日至,新帖都到鲲鹏社区论坛发起,遗留的历史贴,若相关问题未及时回复的,请私信版主处理,大家共同努力,争取在2023年1月15日锁帖后,原华为云鲲鹏论坛无遗留事项。大家有什么好的建议和意见也请在新论坛反馈,我们鲲鹏论坛运营在接收到大家的意见和建议后会及时进行处理,鲲鹏论坛持续改进意见收集贴:https://www.hikunpeng.com/forum/thread-0202105011009376085-1-1.html 在此给诸位开发者带来不便,还请大家多多谅解,感谢大家支持。温馨提示:诸位外部版主这个月和下个月的任务需自己留意下
  • [技术干货] FunctionGraph+OBS+FRS+IVS实现人证核身
    FunctionGraph+OBS+FRS+IVS实现人证核身目录场景设计方案架构图方案设计云服务介绍环境准备开发流程1.客户端开发——上传图片/视频到OBS2.FunctionGraph函数代码开发3.下载OBS对象+Base64编码4.FRS活体检测5.IVS人证核身6.SMN发布结果消息7.客户端开发——SMN之HTTP(S)终端接口开发8.FunctionGraph函数整合实现效果部署测试示例工程一、场景设计客户通过页面上传人物照片、视频到OBS并触发FunctionGraph函数,函数调用FRS人脸识别服务判断是否为真人,如果是真人继续调用IVS人证核身服务校验身份真实性,最后通过SMN将结果消息发布出去。方案架构图![方案架构图]二、方案设计创建FunctionGraph函数,并为该函数配置OBS触发器,上传图片或视频到OBS后触发FunctionGraph函数,函数下载OBS对象并调用FRS进行活体检测,活体检测通过后函数再调用IVS进行人证核身,最后函数通过SMN发布人证核身结果消息。云产品提供服务作用OBS对象操作实现上传/下载 图片/视频FunctionGraph配置OBS触发器实现OBS上传时触发函数FunctionGraph创建Java函数创建Java语言的函数FRS活体检测对图片或视频进行动作/静默活体检测IVS认证核身标准版实现对上传的人脸图片进行身份验证SMN发送HTTP(S)消息实现将结果发送到HTTP(S)终端三、云服务介绍华为云OBS: 对象存储服务(Object Storage Service,OBS)是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力,使用时无需考虑容量限制,并且提供多种存储类型供选择,满足客户各类业务场景诉求。产品页面华为云FunctionGraph:函数工作流(FunctionGraph)是一项基于事件驱动的函数托管计算服务。通过函数工作流,只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免运维、高可靠的方式运行。产品页面华为云FRS:人脸识别服务(Face Recognition Service),能够在图像中快速检测人脸、分析人脸关键点信息、获取人脸属性、实现人脸的精确比对和检索。该服务可应用于身份验证、电子考勤、客流分析等场景。产品页面华为云IVS:人证核身服务(Identity Verification Solution)将用户本人与身份证信息关联起来,应用人脸识别与文字识别等技术,对接权威数据库,支持基于二要素(姓名、身份证)认证或三要素(人脸、姓名、身份证)认证,实现对身份真实性的精准核验。产品页面华为云SMN:消息通知服务(Simple Message Notification)为用户提供快速简便、稳定可靠、简化运维、高可扩展、安全可信的消息通知能力。最终用户可以通过HTTP、HTTPS、邮件、短信、触发函数执行、即时通讯工具等方式接收通知信息。华为云用户也可以在应用之间通过消息通知服务实现应用的功能集成,降低系统的复杂性。产品页面四、环境准备| 开发语言:Java| 开发环境:jdk1.8 maven3.6.3| 华为云环境:注册云账号,并完成实名认证五、开发流程| 分为客户端开发和FunctionGraph的Java函数开发。1、客户端开发--上传图片/视频到OBS华为云OBS服务控制台创建桶用来存储人脸图片或视频 如果涉及视频需要压缩上传,需要配置在线解压策略(具体桶中->数据处理>在线解压) 拿到OBS的maven依赖坐标,使用SDK开发上传OBS对象客户端,这里文件传到固定的文件夹下,并使用固定对象名命名,比如face。帮助文档上传对象方法代码参考public void uploadFile(MultipartFile multipartFile){ String endPoint = "https://终端节点"; String ak = "ak"; String sk = "sk"; //1.创建OBS客户端对象 ObsClient obsClient = new ObsClient(ak, sk, endPoint); //2.获取文件输入流 InputStream in = null; try { in = multipartFile.getInputStream(); //3.上传对象,后面根据该对象名下载对象,保持上传下载一致 PutObjectResult putObjectResult = obsClient.putObject("桶名", "对象名", in); System.out.println(putObjectResult); } catch (IOException e) { throw new RuntimeException(e); }finally { if (in!=null){ try { in.close(); } catch (IOException e) { throw new RuntimeException(e); } } } }2、FunctionGraph函数代码开发(1)FunctionGraph函数时序图(2)Java函数环境搭建创建maven项目,导入FunctionGraph提供的Runtime依赖 操作指导创建FunctionGraph Java函数,并配置OBS触发器。 3、下载OBS对象+Base64编码| 终端节点查询 | ak、sk获取从OBS下载对象并进行Base64编码,后面使用该Base64编码结果进行活体检测。导入OBS的Maven依赖。可以从SDK中心查询依赖坐标下载对象+Base64编码示例代码:public static String download() { //1.相关配置数据 String endPoint = "https://终端节点"; String ak = "ak"; String sk = "sk"; //2.创建ObsClient实例 final ObsClient obsClient = new ObsClient(ak, sk, endPoint); //对象名保持和上传对象名一致 ObsObject obsObject = obsClient.getObject("桶名", "对象名"); //3.读取对象内容 ByteArrayOutputStream bos = null; InputStream input = null; String imageStr = null; try { System.out.println("Object content:"); input = obsObject.getObjectContent(); byte[] b = new byte[1024]; bos = new ByteArrayOutputStream(); int len; while ((len = input.read(b)) != -1) { bos.write(b, 0, len); } //4.Base64编码 byte[] data = new byte[bos.size()]; data = bos.toByteArray(); imageStr = new String(Base64.encodeBase64(data)); System.out.println(imageStr); } catch (Exception e) { e.printStackTrace(); } finally { try { bos.close(); } catch (IOException e) { throw new RuntimeException(e); } try { input.close(); } catch (IOException e) { throw new RuntimeException(e); } } return imageStr; }4、FRS活体检测活体检测,判断图片或视频中的人物是否为真人活体。对Base64编码后的结果进行活体检测,图片使用静默活体检测,视频使用动作活体检测。以图片对应的静默活体检测为例,使用SDK开发。开通活体检测服务控制台 导入FRS的Maven依赖。可以从SDK中心查询依赖坐标静默活体检测示例代码://方法参数imageStr:人像图片Base64编码 public static DetectLiveFaceByBase64Response detectLive(String imageStr) { //1.配置基本信息 ICredential credential = new BasicCredentials().withAk("ak").withSk("sk"); FrsClient client = FrsClient.newBuilder() .withCredential(credential) .withRegion(FrsRegion.valueOf("区域")) // 选择服务所在区域,如华北-北京四: FrsRegion.valueOf("cn-north-4") .build(); //2.通过base64编码进行活体检测 DetectLiveFaceByBase64Request request = new DetectLiveFaceByBase64Request(); LiveDetectFaceBase64Req body = new LiveDetectFaceBase64Req(); body.withImageBase64(imageStr); request.withBody(body); DetectLiveFaceByBase64Response response = null; try { response = client.detectLiveFaceByBase64(request); System.out.println(response.toString()); } catch (Exception e) { e.printStackTrace(); } return response; }5、IVS人证核身这里用到IVS标准版(三要素)对图片中人物进行身份认证,这里用到的图片Base64是FRS活体检测返回的结果中的图片Base64编码。开通人证核身服务控制台 导入IVS的Maven依赖。可以从SDK中心查询依赖坐标人证核身标准版:使用身份证图片Base64、人像图片Base64进行认证,示例代码://方法参数imageStr:人像图片Base64编码 public static String ivsVerify(String imageStr) { //1.配置基本信息 ICredential credential = new BasicCredentials().withAk("ak").withSk("sk"); IvsClient client = IvsClient.newBuilder() .withCredential(credential) .withRegion(IvsRegion.valueOf("区域"))// 选择服务所在区域,如华北-北京四就是 FrsRegion.valueOf("cn-north-4") .build(); DetectStandardByIdCardImageRequest request = new DetectStandardByIdCardImageRequest(); IvsStandardByIdCardImageRequestBody body = new IvsStandardByIdCardImageRequestBody(); List listIvsStandardByIdCardImageRequestBodyDataReqData = new ArrayList<>(); listIvsStandardByIdCardImageRequestBodyDataReqData.add( new ReqDataByIdCardImage() .withIdcardImage1("身份证人像面图片Base64") .withFaceImage(imageStr) ); IvsStandardByIdCardImageRequestBodyData databody = new IvsStandardByIdCardImageRequestBodyData(); databody.withReqData(listIvsStandardByIdCardImageRequestBodyDataReqData); Meta metabody = new Meta(); //唯一标识此次请求的ID,用户自定义,不超过64位 metabody.withUuid(UUID.randomUUID().toString()); body.withData(databody); body.withMeta(metabody); request.withBody(body); String result = null; try { //2.调用服务 DetectStandardByIdCardImageResponse response = client.detectStandardByIdCardImage(request); System.out.println(response.toString()); //result取值:valid-成功;invalid-失败 result = response.getResult().getRespData().get(0).getVerificationResult(); } catch (Exception e) { e.printStackTrace(); } //3.返回人证核身结果 return result; }6、SMN发布结果消息这里用SMN向HTTP(S)终端发送消息,将人证核身结果发布到指定的URL地址。开通服务(创建主题+创建订阅)控制台 导入IVS的Maven依赖。可以从SDK中心查询依赖坐标SMN发布消息示例代码://方法请求参数msgContent:消息内容 public static void sendMsg(String msgContent){ String ak = "ak"; String sk = "sk"; //创建SMN客户端 ICredential credential = new BasicCredentials().withAk(ak).withSk(sk); SmnClient client = SmnClient.newBuilder() .withCredential(credential) .withRegion(区域)//如华北-北京四:SmnRegion.CN_NORTH_4 .build(); //创建请求 PublishMessageRequest publishMessageRequest = new PublishMessageRequest(); //创建请求体 PublishMessageRequestBody body = new PublishMessageRequestBody(); body.withMessage(msgContent); body.withSubject("主题"); publishMessageRequest.withTopicUrn("主题URN,可在控制台获取"); publishMessageRequest.withBody(body); //执行请求 PublishMessageResponse response = client.publishMessage(publishMessageRequest); System.out.println(response); }7、客户端开发--SMN之HTTP(S)终端接口开发HTTP(S)终端对应的URL接口需要根据type参数判断是确定订阅、消息或是取消订阅。接口示例代码:@PostMapping("/smn") //该接口完整地址就是创建时配置的终端地址 public void subscriptionConfirmation2(@RequestBody SubscriptionReq subscriptionReq,HttpServletRequest request,HttpServletResponse response){ System.out.println(subscriptionReq); try{ //1.获取参数,封装到MAP中 Map parameterMap = BeanUtils.describe(subscriptionReq); String signing_cert_url = parameterMap.get("signing_cert_url"); String signature = parameterMap.get("signature"); //2.检验消息签名 boolean flag = SmnUtil.isMessageValid(signing_cert_url, signature, parameterMap); //3.判断是订阅还是发布消息 String type = parameterMap.get("type"); if ("SubscriptionConfirmation".equals(type)){ //4.访问订阅确认页面 String map = restTemplate.getForObject(parameterMap.get("subscribe_url"), String.class); System.out.println(map); }else if ("Notification".equals(type)){ //5.消息,打印消息 System.out.println(parameterMap); }else{ //6.取消订阅 } }catch (Exception e){ e.printStackTrace(); } }接口接收请求参数实体类可参考:@Data //Lombok注解 public class SubscriptionReq { private String type; private String signature; private String subject; private String topic_urn; private String message_id; private String signature_version; private String message; private String subscribe_url; private String signing_cert_url; private String timestamp; }8、FunctionGraph函数整合在触发函数对应的方法中调用上面服务方法,实现认证核身认证流程。即在搭建的FunctionGraph Java函数项目中的TriggerTests.java中的apiTest方法中编写人证核身业务逻辑。TriggerTests代码:import java.util.HashMap; import java.util.Map; import com.huawei.services.runtime.Context; import com.huawei.services.runtime.entity.apig.APIGTriggerEvent; import com.huawei.services.runtime.entity.apig.APIGTriggerResponse; import com.huawei.utils.FrsUtils; import com.huawei.utils.IvsUtils; import com.huawei.utils.ObsUtils; import com.huawei.utils.SmnUtils; import com.huaweicloud.sdk.frs.v1.model.DetectLiveFaceByBase64Response; public class TriggerTests { //functionGraph函数触发方法 public APIGTriggerResponse apigTest(APIGTriggerEvent event, Context context) { //1.下载对象,并得到base64编码后结果 String imageBase64 = ObsUtils.download(); //2.活体检测 DetectLiveFaceByBase64Response response = FrsUtils.detectLive(imageBase64); Boolean alive = response.getResult().getAlive(); //3.人证核身 String msg = null; if (alive) { //活体检测成功 String result = IvsUtils.ivsVerify(response.getResult().getPicture()); //result取值:valid-成功;invalid-失败 msg = "valid".equals(result) ? "人证核身成功!是XXX本人。" : "人证核身失败!"; System.out.println(result+"--"+msg); //4.发送结果信息 SmnUtils.sendMsg(msg); } else { msg = "活体检测失败!"; System.out.println(msg); //发送结果消息 SmnUtils.sendMsg(msg); } Map headers = new HashMap(); headers.put("Content-Type", "application/json"); return new APIGTriggerResponse(200, headers, msg); } }六、实现效果1、部署测试将FunctionGraph Java函数对应项目打成jar包。参照帮助文档FunctionGraph创建Java函数,并配置OBS触发器(对应:开发流程->二、FunctionGraph函数代码开发->1、Java函数环境搭建)。FunctionGraph上传项目jar包到函数。通过开发的客户端上传图片或视频到OBS。在客户端刷新接收SMN消息的HTTP(S)终端接口,查看结果信息;查看FunctionGraph日志。 2、示例工程示例代码附件,待补充……
  • [问题求助] 【LiteOS】【Notify功能】是否有类似消息通知的机制
    【功能模块】LiteOS是否有类似FreeRTOS里面任务通知这类API?   我们是从FreeRTOS的系统里面做移植,如果纯用队列和事件组  感觉不是很适合对应FreeRTOS里面的xTaskNofify
  • [其他] DWS创建集群有延迟(实际等待60s左右页面才显示已经提交创建的集群)
    问题现象:政务云DWS创建集群有延迟(实际等待60s左右页面才显示已经提交创建的集群)dws在创建的时候也会调用很多其他服务,需要查看是具体在哪里耗时很多。排查方法:创建集群的页面f12查看请求的traceid,找不到或者不可复现的情况下登录EICommon节点进入dwscontroller容器 cd/logs/ossres.dws.log  根据创建时间查找创建集群的日志获取traceid 登录运维容器,根据traceid过滤dws.log日志, zgrep "traceid" ossres-dws* > tmp查看在那一步耗时比较久发现smn这里耗时一分钟查看smn服务是否正常 Smn服务页面不显示解决方法:修复smn需要找负责smn服务的同事处理 政务云和标准hcso的smn差异是政务云没有支付邮件和短信费用,故smn不会发邮件和短信,而标准HCSO都是购买的,邮件和短信能正常发送功能是可用的
  • [技术干货] 【云审计服务】创建关键操作通知不生效,你真的操作对了吗?
    诉求场景需要审计子账号的登入登出信息,即子账号登入登出时,给指定号码或者邮箱发消息通知(短信或者是邮件),以随时审计用户登录情况。问题描述在云审计服务设置关键操作通知,默认跳转的是华南广州区域,没有切换区域。但是设置完之后,一直接收不到消息。原因分析目前设置云审计的关键操作通知(包括创建、删除、登录和对原生OpenStack接口等操作)时,区域级服务的管理事件要在对应region设置,但是像账号登入登出等全局级的操作(如IAM相关)需要在北京四区域进行设置。其他区域设置的全局级关键操作通知不生效。操作指导以下是设置云审计的关键操作通知的操作指导:1、进入云审计服务,左上角区域选择“华北北京四”,点击创建关键操作通知:2、定义通知名称,服务类型选“IAM”,资源类型选“user”,操作名称选“login和logout”:3、配置用户的位置,是需要用户选择要监控的用户是哪一个,指定需要监控动作的用户:4、配置SMN主题,选择“通知”如果没有现成主题可选,需要到消息通知服务创建一个主题并添加订阅终端:(可选步骤)5、添加消息通知主题并实现订阅终端的步骤(1)进入消息通知服务(2)创建主题(3)添加订阅(4)填写订阅终端号(5)此时对应终端会收到一个邮件申请订阅,点击订阅确认,即完成订阅配置 
总条数:45 到第
上滑加载中