华为云用户手册

  • Spring Cloud微服务组件配置安全认证账号名和密码 配置文件配置方式 为微服务的“bootstrap.yml”文件增加以下配置,若已配置请忽略。 spring: cloud: servicecomb: credentials: account: name: test #结合用户实际值配置 password: mima #结合用户实际值配置 cipher: default 用户密码password默认为明文存储,无法保证安全。建议您对密码进行加密存储,请参考自定义实现password的加密存储算法。 环境变量注入方式 为微服务添加如表1所示环境变量。 添加环境变量,请参考管理应用环境变量。 表1 环境变量 环境变量 说明 spring_cloud_servicecomb_credentials_account_name 结合用户实际值配置。 spring_cloud_servicecomb_credentials_account_password 结合用户实际值配置。 说明: 用户密码password默认为明文存储,无法保证安全。建议您对密码进行加密存储,请参考自定义实现password的加密存储算法。
  • 常用环境变量说明 通过ServiceStage管理环境和部署应用,能够简化用户的配置。ServiceStage会设置一些环境变量,供应用使用,常用的环境变量包括下表所示内容: 表1 常用环境变量 环境变量名称 含义 PAAS_ CS E_SC_ENDPOINT ServiceComb引擎注册中心地址信息。 PAAS_CSE_CC_ENDPOINT ServiceComb引擎配置中心地址信息。 PAAS_PROJECT_NAME 项目名称。 CAS_APPLICATION_NAME ServiceStage的应用名称。 CAS_COMPONENT_NAME ServiceStage的组件名称。 CAS_INSTANCE_VERSION ServiceStage的部署版本号。 您可以结合不同微服务开发框架的机制,比如Spring Cloud提供的Place Holder机制、Java Chassis提供的“mapping.yaml”机制等来合理使用这些变量,减少部署需要手工输入的内容。 ServiceStage创建应用过程中,可以绑定中间件(如DCS、RDS)。应用绑定的中间件配置信息可以通过以下环境变量获取。
  • 隔离仓 隔离是一种异常检测机制,常用的检测方法是请求超时、流量过大等。一般的设置参数包括超时时间、同时并发请求个数等。 Java Chassis的隔离作用于微服务消费者,需要微服务应用集成隔离模块,启用bizkeeper-consumer处理链。 配置如下: servicecomb: handler: chain: Consumer: default: bizkeeper-consumer isolation: Consumer: timeout: enabled: true #是否启用超时检测 timeoutInMilliseconds: 30000 #超时时间阈值 Spring Cloud Huawei的隔离策略同熔断一致,配置示例请参考熔断中相关内容。 Spring Cloud应用通过挂载Sermant的flowcontrol流控插件使用隔离仓能力, 只需要通过配置开启具体的隔离仓策略。 配置项:servicecomb.bulkhead.${scene名称} 作用范围:自定义标签group:service=flowcontrol 配置内容: # 最大并发数超过5,且新的请求等待10S,还未获取资源,则触发隔离异常maxConcurrentCalls: 5maxWaitDuration: 10S 隔离仓规则的配置项由前缀servicecomb.bulkhead和自定义场景名称${scene名称}组成,流量标记规则和隔离仓规则的配置项的自定义场景名称需保持一致,才能对匹配的流量执行隔离仓策略。 父主题: 使用服务治理
  • 配置中心概述 配置中心用来管理微服务应用的配置。微服务连接配置中心,能够从配置中心获取配置信息及其变化。配置中心还是其他微服务管控功能的核心部件,比如服务治理规则的下发,也是通过配置中心实现的。 ServiceComb引擎支持的配置中心为:config-center和kie。 当ServiceComb引擎版本为1.x时,取值为config-center。 当ServiceComb引擎版本为2.x时,取值为kie或config-center,推荐使用kie作为配置中心。 本章节介绍不同微服务开发框架使用配置中心的一些开发细节,包括如何配置依赖、连接配置中心有关的配置项等,并简单的介绍微服务应用中如何读取配置和响应配置变化。 ServiceComb引擎使用kie作为配置中心。 微服务默认会读取配置中心应用配置、服务配置、自定义配置。应用配置指环境、应用和微服务相同的配置;服务配置指环境、应用、微服务名称和微服务相同的配置。微服务可以在配置文件中指定一个特定的label及label值,自定义配置指label及label值与微服务相同的配置。 简单的场景,可以使用应用级配置和服务级配置。应用级配置被该应用下的所有微服务共享,是公共配置;服务级配置只对具体微服务生效,是独享配置。 复杂的场景,可以通过使用customLabel和customLabelValue来定义配置。例如某些配置,是对所有应用共享的,那么就可以使用这个机制。在配置文件增加如下配置(以Spring Cloud为例): spring: cloud: servicecomb: config: kie: customLabel: public# 默认值是public customLabelValue: default # 默认值是空字符串 只要配置项带有public标签,并且标签值为default,这些配置项就会对该微服务生效。 把配置中心当成数据库的一个表tbl_configurations,key是主键,每个label都是属性。 客户端会根据如下3个条件查询配置: 自定义配置 select * from tbl_configurations where customLabel=customLabelValue & match=false 应用级配置 select * from tbl_configurations where app=demo_app & environment=demo_environment & match=true 服务级配置 select * from tbl_configurations where app=demo_app & environment=demo_environment & service=demo_service & match=true 其中,match为true的时候,表示有且只有条件里面指定的属性;match为false的时候,表示除了条件里面的属性,允许有其他的属性。还可以给标签app指定多个应用,或者给标签service指定多个服务,这样配置项就可以对多个服务和应用生效,非常灵活。 ServiceComb引擎的TEXT、XML等类型,SDK会简单的当成key-value对使用;YAML和Properties类型, SDK会解析内容,应用程序将内容作为实际的应用程序配置项。比如: 类型:TEXTkey: cse.examples.hellovalue: World 应用程序会发现1个配置项: cse.examples.hello = World。 类型:YAMLkey: cse.examples.hellovalue: | cse: key1: value1 key2: value2 应用程序会发现2个配置项: cse.key1 = value1和cse.key2 = value2。 ServiceComb引擎使用config-center作为配置中心。 微服务默认会读取配置中心全局配置、服务配置。全局配置指环境和微服务相同的配置;服务配置指环境、应用、微服务名称和微服务相同的配置。 ServiceComb引擎只支持key-value的配置项。如果用户需要使用yaml格式的配置文件,可以使用具体SDK提供的fileSource功能。通过在配置文件中指定fileSource的key列表,SDK会将这些key对应的value全部当成yaml解析。以Spring Cloud为例,在bootstrap.yml中增加配置项: spring: cloud: servicecomb: config: fileSource: file1.yaml,file2.yaml 并且在配置中心创建配置,“配置项”及其对应的“值”的示例如下表所示。其中,值的格式为yaml。 配置项 值 file1.yaml cse.example.key1: value1cse.example.key2: value2 file2.yaml cse.example.key3: value3cse.example.key4: value4 配置创建方法请参考配置管理中的“创建配置”操作。 应用程序中会发现4个配置项:cse.example.key1=value1,cse.example.key2=value2,cse.example.key3=value3和cse.example.key4=value4。 父主题: 使用配置中心
  • 开发流程说明 开发微服务应用 如果您已经完成了微服务应用的开发,可以跳过本流程,进入准备环境。 进行微服务应用开发,首先需要进行技术选型。技术选型是一个复杂的问题,技术决策者需要考虑使用的技术是否容易被团队成员掌握,技术能否满足项目对于功能、性能、可靠性方面的要求,还需要考虑商业服务等多方面的因素。本文档不探讨技术选型,假设技术团队已经选择了适合自己的开发框架。大部分技术团队都会选择开源框架来构建业务。 开发微服务应用的具体内容,请参考开发微服务应用。 使用Spring Cloud,通常会使用下面的技术进行本地微服务开发: 使用Java Chassis,通常会使用下面的技术进行本地微服务开发: 准备环境 创建云上环境,以支持ServiceComb引擎接入调试、云上应用部署和使用ServiceComb引擎功能。一般情况下,会创建一个测试环境和一个生产环境。通过ServiceStage,能够非常方便地管理云上环境,详细内容请参考准备环境。 对接微服务应用 用于微服务应用对接ServiceComb引擎,涉及到对已经开发好的应用的配置文件、构建脚本的修改。修改完成后,需要对应用重新编译、打包,通过ServiceStage将应用包部署到ServiceComb引擎,详细内容请参考对接微服务应用。 部署微服务应用 开发完成的微服务应用,通过ServiceStage部署到ServiceComb引擎,详细内容请参考部署微服务应用。 使用ServiceComb引擎功能 对于持续发展的应用系统,都会持续完善和迭代,每个迭代可能需要对微服务应用进行更新升级,需要使用更多的ServiceComb引擎功能。持续迭代的功能演进,会重复上面的应用开发、编译、打包和部署环节。详细内容请参考使用ServiceComb引擎功能。
  • 常用概念 应用:可以将应用理解为完成某项完整业务场景的软件系统。应用一般由多个微服务组成,应用里面的微服务能够相互发现和调用。 微服务:完成某项具体业务功能的软件系统。微服务是独立开发、部署的单元。 微服务实例:将微服务采用部署系统部署到运行环境,就产生了实例。可以将实例理解为一个进程,一个微服务可以部署若干实例。 微服务环境:服务中心建立的一个逻辑概念,比如development、production等。不同环境里面的微服务实例逻辑隔离、无法相互发现和调用。 父主题: 概述
  • 开发微服务应用 如您已经完成了微服务应用的开发,请跳过本章节。 开源社区提供了丰富的开发资料和帮助渠道帮助您使用微服务开发框架。如您需深入了解具体微服务框架下的微服务应用开发,请参考本章节给出的参考资料链接。 体验ServiceComb引擎最快捷的方式是使用“ServiceComb引擎推荐示例”里面的例子。下载示例,修改配置文件中的ServiceComb引擎地址,AK/SK信息,在本地运行例子,这些例子可以注册到ServiceComb引擎。 Spring Cloud 源码仓库:https://github.com/spring-cloud 问题咨询:参考源码仓库的各个代码仓库下的issues。 开发指南:https://spring.io/projects/spring-cloud Spring Cloud Huawei项目:https://github.com/huaweicloud/spring-cloud-huawei ServiceComb引擎推荐示例:https://github.com/huaweicloud/spring-cloud-huawei-samples/tree/master/basic Java Chassis 源码仓库:https://github.com/apache/servicecomb-java-chassis 问题咨询:https://github.com/apache/servicecomb-java-chassis/issues 开发指南:https://servicecomb.apache.org/references/java-chassis/zh_CN/ ServiceComb引擎推荐示例:https://github.com/apache/servicecomb-samples/tree/master/basic CSE使用的源码存放在maven中央仓,若您使用非maven中央仓,请联系您所使用的中央仓的管理员将maven中央仓同步到该中央仓。
  • 注意事项 短信发送成功后,平台收到状态报告,会实时推送状态报告给用户,最迟不超过72小时。 平台推送汇聚后的状态报告,状态报告存在一定时延。 短信平台批量推送状态报告,单次最多推送50条。 若“statusCallback”字段已设置,则优先使用该字段的取值作为短信状态报告的回调地址。 若“statusCallback”字段未设置,则使用应用中配置的批量接收状态报告地址。 若“statusCallback”字段未设置且未在应用端配置批量接收状态报告地址,则用户无法接收短信平台主动发送的状态报告。
  • 请求示例 POST /batchReport HTTP/1.1Host: 205.145.111.168:9330Content-Type: application/JSON;charset=UTF-8Authorization: SDK-HMAC-SHA256 Access=exampleAk,SignedHeaders=connection;content-length;content-type;host;x-sdk-date,Signature=765a365f3851fd1c96011a82b893266fb7b3e79b3002526c43199c97e61bb88bConnection: closePooltype: approxyOmpsid: 7f540777fe4b40dfb3c21d10f48781e3TerminalIP: ******TrcModule: APUserTrace: applicationTraceHandle: DMZ_818405{"statusReportList":[{"sequence":"1","total":"1","updateTime":"2023-04-18T07:26:00Z","source":"2","smsMsgId":"f6dcba15-ced9-45f7-9f5e-af82328c5253_1188602","status":"DELIVRD"},{"sequence":"1","total":"1","updateTime":"2023-04-18T07:26:00Z","source":"2","smsMsgId":"f6dcba15-ced9-45f7-9f5e-af82328c5253_123456","status":"DELIVRD"}]}
  • 接口类型 表1 接口类型说明 请求方法 POST 访问URI 用户在应用中配置的批量接收状态报告地址。 通信协议 HTTPS/HTTP 回调接口使用HTTPS协议时,服务端需支持TLS1.2,加密套件需支持 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384中的一种或多种。
  • 请求示例 申请激活短信签名,请求方式:PUT ,请求URL:/v2/{project_id}/msgsms/signatures/{id}/active,路径参数:id,project_id,请求头参数:X-Auth-Token,Content-Type。 PUT /v2/845ada5bc7444f1295cd517af0123da1/msgsms/signatures/07cfacbb-d48c-4c4d-b3da-baa8e4664852/active Host: 100.85.***.***:30300Content-Type: application/jsonX-Auth-Token:******
  • 请求示例 创建短信模板,请求方式:POST ,请求URL:/v2/{project_id}/msgsms/templates,路径参数:project_id,请求头参数:X-Auth-Token,Content-Type;请求体:app_id,region,template_content,template_type,template_name。 POST /v2/845ada5bc7444f1295cd517af0123da1/msgsms/templates Host: 100.85.***.***:30300Content-Type: application/jsonX-Auth-Token: ****Content-Length: 308 { "app_id": "******9c-1a6b-4ee5-9651-5bca450694b3", "brackets": "GB", "region": "cn", "sign_id": "******10-c3fb-427e-965c-a98ae844c5bd", "template_content": "测试", "template_name": "auto_test789", "template_type": "NOTIFY_TYPE", "universal_template": 0}
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 请求体参数类型,该字段必须设置为:application/json X-Auth-Token 是 String 用户Token。通过调用 IAM 服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 app_id 是 String 应用主键ID,参考表5 响应SmsAppQueryResp参数中的ID。 brackets 否 String 中括号类型。支持枚举值: CN:中文类型【】 GB:英文类型 [] 须知: 默认值为:CN。 输入值不在上述枚举值范围内的,也按CN处理。 只有地域为国内时,该字段有效。 region 是 String 地域。 cn:国内 intl:国际 send_country 否 Array of Integers 发送国家ID列表,只有地域为国际时,该字段有效。 sign_id 否 String 签名主键ID,对应表5 响应SmsSignatureResp参数中的ID。只有地域为国内,且universal_template参数值不为1时,该字段有效。 template_content 是 String 模板内容。 template_desc 否 String 模板描述。 template_name 是 String 模板名称。 template_type 是 String 模板类型。只有地域为国内,且universal_template参数值不为1时,该字段有效。universal_template参数值为0,则模板类型继承绑定签名的签名类型。支持枚举值: VERIFY_CODE_TYPE:验证码类。 PROMOTION_TYPE:推广类。 NOTIFY_TYPE:通知类。 universal_template 否 Integer 是否为通用模板,当传参为1时,sign_id字段无效。 0:非通用模板 1:通用模板 variable_attributes 否 Array of SmsTemplateVariableAttrReq objects 模板参数。 表4 SmsTemplateVariableAttrReq 参数 是否必选 参数类型 描述 variable_desc 否 String 变量说明,当变量类型为TEXT时,必填 variable_index 是 Integer 变量索引,对应模板内容变量索引 variable_type 是 String 变量类型,目前支持:PHONE|CHARDIGIT|DATETIME|MONEY|TEXT
  • 获取账号、用户、项目的名称和ID 从控制台获取账号名、账号ID、用户名、用户ID、项目名称、项目ID 在华为云首页右上角,单击“控制台”。 在右上角的用户名中选择“我的凭证”。 图1 进入我的凭证 在“我的凭证”界面,API凭证页签中,查看账号名、账号ID、用户名、用户ID、项目名称、项目ID。 图2 查看账号名、账号ID、用户名、用户ID、项目名称、项目ID 调用API获取用户ID、项目ID 获取用户ID请参考:管理员查询IAM用户列表。 获取项目ID请参考:查询指定条件下的项目列表。 父主题: 获取调用信息
  • 请求示例 创建短信应用,完成短信应用创建,请求方式:POST,请求URI:/v2/{project_id}/msgsms/apps,请求头入参:X-Auth-Token,Content-Type,路径参数:project_id;请求体必传参数:app_name,region。 POST /v2/845ada5bc7444f1295cd517af0123da1/msgsms/apps Host: 100.85.***.***:30300Content-Type: application/jsonX-Auth-Token:******Content-Length: 144 {"app_name":"auto_test789","create_sign_and_template": 0,"enterprise_project_id":"0","enterprise_project_name":"default","region":"cn","show_secret": true}
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值) Content-Type 是 String 请求体参数类型,该字段必须设置为:application/json 表3 请求Body参数 参数 是否必选 参数类型 描述 app_name 是 String 应用名称 create_sign_and_template 否 Boolean 是否创建测试签名和模板。只有地域为国内时,该字段有效 true:是 false:否 enterprise_project_id 否 String 企业项目ID,默认为0 enterprise_project_name 否 String 企业项目名称,默认为default region 是 String 地域 cn:国内 intl:国际 up_link_addr 否 String 上行回调地址。只有地域为国内时,该字段有效 show_secret 否 Boolean 是否在返回消息里面显示密钥app_secret字段
  • 请求示例 查询应用数量,返回应用个数,请求方式:GET,请求URI:/v2/{project_id}/msgsms/apps-count,路径参数project_id,请求头参数:X-Auth-Token,Content-Type Query参数:region。 GET /v2/845ada5bc7444f1295cd517af0123da1/msgsms/apps-count?region=cn Host: 100.85.***.***:30300Content-Type: application/jsonX-Auth-Token:******
  • 响应示例 { "file_id": "******ab-1390-4268-9463-73db98cdc2e1", "module_type": 2, "operator": "******c55c3c4526b2ed7a0213bc9871", "file_type": 1, "file_name": "test.PNG", "file_size": 327, "file_ref": 1, "update_time": "2022-08-12 07:13:24"}
  • 响应参数 状态码: 200 表4 响应Body参数 参数 是否必选 参数类型 描述 file_id 否 String 文件ID file_name 否 String 文件名称 file_ref 否 Integer 文件引用 file_size 否 Long 文件大小 file_type 否 Integer 文件类型 module_type 否 Integer 模块类型 operator 否 String 操作人 update_time 否 String 更新时间
  • URI GET /v2/{project_id}/msgsms/templates 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID,参考“获取帐号、用户、项目的名称和ID” 表2 Query参数 参数 是否必选 参数类型 描述 app_key 否 String 应用key app_name 否 String 应用名称 end_time 否 String 结束时间 flow_status 否 String 流程状态 Adopted:通过 Reviewing:审核中 Reject:拒绝 Disable:停用 Pending:待提交 Adopted_inactive:审核通过-去激活 SignReviewing:待签名审核 has_variable 否 String 是否存在变量 limit 否 Integer 数量,默认值10 offset 否 Integer 偏移量 sign_name 否 String 签名名称 sort_dir 否 String 排序方式 desc:降序 asc:升序 sort_key 否 String 排序字段,仅支持create_time start_time 否 String 开始时间 template_id 否 String 模板ID template_name 否 String 模板名称 template_type 否 String 模板类型 VERIFY_CODE_TYPE:验证码类 PROMOTION_TYPE:推广类 NOTIFY_TYPE:通知类 region 否 String 地域 cn:国内 intl:国际
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 results Array of SmsTemplateResp 查询结果 total Long 总数 表5 SmsTemplateResp参数 参数 是否必选 参数类型 描述 id 否 String 模板主键ID,用于获取、修改、删除模板以及查询模板变量的唯一标识 create_time 否 String 创建时间[yyyy-MM-dd HH:mm:ss] update_time 否 String 更新时间[yyyy-MM-dd HH:mm:ss] customer_id 否 String 租户customer id tenant 否 TentantBasic - template_name 否 String 模板名称 template_id 否 String 模板ID template_type 否 String 模板类型 app_name 否 String 应用名称 app_key 否 String 应用key sign_id 否 String 签名ID template_content 否 String 模板内容 has_variable 否 String 是否有变量 template_desc 否 String 申请描述 review_desc 否 String 审核意见 review_order 否 String 审核人账号 flow_status 否 String 流程状态 universal_template 否 Integer 是否是通用模板 status 否 String 模板状态 Test:测试 Normal:正常 region 否 String 地域 cn:国内 intl:国际 brackets 否 String 中括号类型。支持枚举值: CN:中文类型【】 GB:英文类型[] 须知: 默认值为:CN 输入值不在上述枚举值范围内的,也按CN处理 只有地域为国内时,该字段有效 site 否 String 地域,取值范围:cn及hk ,当前该参数暂时不使用 urge_status 否 String 催审状态 urge_time 否 String 催审时间 urge_desc 否 String 催审描述 send_country1 否 Integer 发送国家1 send_country2 否 Integer 发送国家2 send_country3 否 Integer 发送国家3 is_support_multiomp 否 boolean 是否支持多OMP country_name 否 String 国家名称列表,返回发送国家前三名的国家名称,国家名称间以"~"分隔
  • 响应示例 { "results": [ { "create_time": "2022-08-12 07:40:36", "customer_id": "******c55c3c4526b2ed7a0213bc9871", "id": "******27-37eb-4229-bee9-0eba4d8a897f", "template_type": "NOTIFY_TYPE", "template_name": "auto_test789", "app_key": "******3baZf4c856O4Qrbqvui3K2", "sign_id": "******b9-4141-4e2d-9838-14889c32a4bf", "template_content": "测试", "has_variable": "No", "flow_status": "Reviewing", "status": "Normal", "universal_template": 0, "urge_status": "NO", "country_name": "" } ], "total": 1}
  • 请求示例 查询短信模板,请求方式:GET ,请求URL:/v2/{project_id}/msgsms/templates,路径参数:project_id,请求头参数:X-Auth-Token,Content-Type;Query参数:limit,offset,app_key,region。 GET /v2/845ada5bc7444f1295cd517af0123da1/msgsms/templates?template_name=auto_test789 Host: 100.85.***.***:30300Content-Type: application/jsonX-Auth-Token: ****
  • 请求示例1(X-WSSE认证) POST /sms/batchSendSms/v1 HTTP/1.1x-real-ip: 10.10.10.168 x-real-port: 10443 host: ompap.innercontent-length: 184 date: Fri, 13 Apr 2018 06:31:39 GMTauthorization: WSSE realm="SDP",profile="UsernameToken",type="Appkey"x-wsse: UsernameToken Username="ZRBRz4bAXoFgEH7o4Ew308eXc1RA",PasswordDigest="NDA1MWIwNjI2ZTkyNWFlM2FhMTE5NDE1YTk5NjU1YWE4NjNlZTY1MmRhYzkxZGViNzczZjdjMjkzZWQ4ZjAwNA==",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z"accept: application/jsoncontent-type: application/x-www-form-urlencodedfrom=1069********0012&to=%2B86155****5678&templateId=abcdefghabcdefghabcdefghabcdefgh&extend=test&templateParas=%5B%22520520%22%5D&statusCallback=http%3A%2F%2F205%2E145%2E111%2E168%3A9330%2Freport
  • 响应参数 表5 响应结果参数 参数名称 是否必选 参数类型 默认值 说明 code 是 String(1-7) 无 请求返回的结果码。 description 是 String(1-512) 无 请求返回的结果码描述。 result 否 SmsID[1-1000] 无 短信ID列表,当目的号码存在多个时,每个号码都会返回一个SmsID。 当返回异常响应时不携带此字段。 表6 SmsID定义 参数名称 是否必选 参数类型 默认值 说明 smsMsgId 是 String(1-50) 无 短信的唯一标识。 from 是 String(1-21) 无 短信发送方的号码。 originTo 是 String(1-21) 无 短信接收方的号码。 status 是 String(1-7) 无 短信状态码。以下举例状态码及其说明,具体处理建议请参考API错误码。 000000:短信平台处理请求成功 E200015:待发送短信数量太大 E200028:模板变量校验失败 E200029:模板类型校验失败 E200030:模板未激活 E200031:协议校验失败 E200033:模板类型不正确 E200041:同一短信内容接收号码重复 createTime 是 String(1-20) 无 短信资源的创建时间,即短信平台接收到用户发送短信请求的时间,为UTC时间。 格式为:yyyy-MM-dd'T'HH:mm:ss'Z'。 countryId 否 String(1-3) 无 短信接收方号码的国家码。 total 否 int 无 短信拆分条数。
  • 请求示例2(AK/SK认证) POST /sms/batchSendSms/v1 HTTP/1.1Host: smsapi.cn-north-4.myhuaweicloud.com:443content-length: 184 X-Sdk-Date: 20230519T005038ZAuthorization: SDK-HMAC-SHA256 Access=uxOF5yvM0H3C0t5G0xc272g7hA2I, SignedHeaders=content-type;host;x-sdk-date, Signature=082f05bcd561e291a7469939980c022f721a581967cc30eb3725c7aea4bd634dContent-Type: application/x-www-form-urlencoded from=1069********0012&to=%2B86155****5678&templateId=abcdefghabcdefghabcdefghabcdefgh&templateParas=%5B%22520520%22%5D&statusCallback=http%3A%2F%2F205%2E145%2E111%2E168%3A9330%2Freport
  • 返回值 表7 响应结果码 响应码 结果码 返回信息 描述 处理方法 200 000000 Success. 发送请求成功。 无需处理。 400 E000000 System error. 系统异常。 请先对照代码样例检查templateParas参数设置是否正确。若排查代码后仍未解决问题,请联系管理员处理。 E000001 Authorization not contained in the HTTP header. HTTP消息头未找到Authorization字段。 请检查HTTP消息头中是否携带了Authorization字段。 E000002 realm not contained in Authorization. Authorization字段中未找到realm属性。 请检查Authorization字段中的是否携带了realm属性。 E000003 profile not contained in Authorization. Authorization字段中未找到profile属性。 请检查Authorization字段中的是否携带了profile属性。 E000004 The value of realm in Authorization must be SDP. Authorization中realm属性值应该为“SDP”。 请检查Authorization字段中的realm属性值是否为“SDP”。 E000005 The value of profile in Authorization must be UsernameToken. Authorization中profile属性值应该为“UsernameToken”。 请检查Authorization字段中的profile属性值是否为“UsernameToken”。 E000006 The value of type in Authorization must be app_key. Authorization中type属性值应该为“Appkey”。 请检查Authorization字段中的type属性值是否为“Appkey”。 E000007 type not contained in Authorization. Authorization字段中未找到type属性。 请检查Authorization字段中是否携带了type属性。 E000008 WSSE not contained in Authorization. Authorization中没有携带WSSE。 请检查Authorization字段中是否携带了WSSE。 E000020 X-WSSE not contained in the HTTP header. HTTP头未找到X-WSSE字段。 请检查HTTP消息头中是否携带了X-WSSE字段。 E000021 UserName not contained in X-WSSE. X-WSSE字段中未找到UserName属性。 请检查X-WSSE字段中的是否携带了UserName属性。 E000022 Nonce not contained in X-WSSE. X-WSSE字段中未找到Nonce属性。 请检查X-WSSE字段中的是否携带了Nonce属性。 E000023 Created not contained in X-WSSE. X-WSSE字段中未找到Created属性。 请检查X-WSSE字段中的是否携带了Created属性。 E000024 PasswordDigest not contained in X-WSSE. X-WSSE字段中未找到PasswordDigest属性。 请检查X-WSSE字段中的是否携带了PasswordDigest属性。 E000025 The format of Created is incorrect. Created属性格式错误。 请检查X-WSSE字段中的Created属性格式是否正确。 E000026 UsernameToken not contained in X-WSSE. X-WSSE字段中未找到UsernameToken属性。 请检查X-WSSE字段中的是否携带了UsernameToken属性。 E000027 Invalid request. 非法请求。 根据API接口文档的参数描述和要求,检查请求携带的参数是否都合法。 E000040 The value of ContentType must be application/x-www-form-urlencoded. ContentType值应该为application/x-www-form-urlencoded。 请检查ContentType头域的取值是否为“application/x-www-form-urlencoded”。 E000041 X-Sdk-Date header is empty. X-Sdk-Date为空 特殊AK/SK认证时,请检查HTTP消息头X-Sdk-Date的值。 E000042 The format of X-Sdk-Date header is invalid. X-Sdk-Date格式错误 特殊AK/SK认证时,请检查HTTP消息头X-Sdk-Date的格式,格式为:yyyyMMdd'T'HHmmss'Z' E000043 The format of Authorization header is incorrect. Authorization格式错误 特殊AK/SK认证时,请检查HTTP消息头Authorization格式。 E000044 X-Sdk-Date is expired. X-Sdk-Date过期 特殊AK/SK认证时,请检查HTTP消息头X-Sdk-Date的时间,不能与发送请求时的本地时间相差太大(15分钟内),否则会导致鉴权失败。 E000045 Authorization verify failed. Authorization校验失败 特殊AK/SK认证时,请检查HTTP消息头Authorization中的Signature字段。 E000503 The parameter format is incorrect. 参数格式错误。 请检查参数格式是否正确。 E000510 The SMS fails to be sent. For details, see status. 短信发送失败,描述见参数status。 查看响应参数中的status确认发送失败的原因,修改后重新发送。 401 E000101 Authentication failed. 鉴权失败。 请检查Authorization和X-WSSE参数的填写是否正确。 E000102 Invalid app_key. app_key无效。 请检查请求携带的app_key填写是否正确。 如app_key填写正确,建议检查app接入地址是否正确(从控制台“应用管理”获取)。 E000103 The status of the app_key is unavailable. app_key不可用。 请联系管理员确认该app_key状态是否正常。 E000104 Invalid app_secret. app_secret无效。 请检查请求携带的app_secret填写是否正确。 E000105 Invalid digest. PasswordDigest无效。 请检查请求携带的PasswordDigest填写是否正确。 E000106 The app_key is not allowed to invoke this API. app_key没有调用本API的权限。 请联系管理员确认该app_key是否具有“短信能力开放”能力。 E000109 The user status is deactivated. 用户状态未激活。 请联系管理员激活用户。 E000110 Time out limit. 时间超出限制。 请确认X-WSSE鉴权时,生成随机数的时间与发送请求时的本地时间不能相差太大(具体差值请与管理员确认)。 E000111 Incorrect username or password. 用户名或密码错误。 系统找不到app_key对应的用户信息,请联系管理员处理。 E000112 The subscriber status is frozen. 用户状态已冻结。 若是因账户欠费冻结,请参考华为云账户充值完成充值,到账后自动解冻。 若是因业务违规冻结,请整改业务后联系运营经理申请解冻。 403 E000620 The app client ip is not in ip white list. 对端app IP不在白名单列表中。 IP白名单配置生效约有10~15分钟的时延,未及时生效可能导致该报错。 IP白名单配置不正确。请前往控制台“应用管理”单击“修改”应用,检查并修改自行配置的IP白名单,或重新添加正确的IP白名单(IP白名单为平台管理员配置时)。 E000623 Number of SMSs sent by the SP reached the limit. SP短信发送量达到限额。 请联系运营经理协商调整SP短信发送量最大限额。 E000630 Number of SMSs sent by the SP reached the country/region limit. SP 发送量达到国家/地区级限额 设置流量阈值时,为该号码所属国家/地区设置了限额值。租户发往该国家/地区的短信数量累计 超过限额值导致短信发送失败。 请在控制台"通用设置"页面,修改/删除该号码所属国家/地区的限额值。详细操作请参见设置流量阈值。若限额值大小不满足需求,请联系运营经理协商调整SP短信发送量最大限额。
  • 响应示例 HTTP/1.1 200 OKDate: Fri, 13 Apr 2018 06:29:08 GMTServer: WebServerContent-Type: application/json;charset=UTF-8Content-Length: 247{"result":[{"originTo":"+86155****5678","createTime":"2018-05-25T16:34:34Z","from":"1069********0012","smsMsgId":"d6e3cdd0-522b-4692-8304-a07553cdf591_8539659","status":"000000","countryId":"CN","total":2}],"code":"000000","description":"Success"}
  • 响应示例 HTTP/1.1 200 OKDate: Fri, 13 Apr 2018 06:46:04 GMTServer: WebServerContent-Type: application/json;charset=UTF-8Content-Length: 622{"result":[{"originTo":"+86155****5678","createTime":"2018-05-25T16:34:34Z","from":"1069********0012","smsMsgId":"5963c5be-f189-4c0c-ab2e-7cab0c42c798_52","status":"000000","countryId":"CN","total":2},{"originTo":"+86155****5679","createTime":"2018-05-25T16:34:34Z","from":"1069********0012","smsMsgId":"5963c5be-f189-4c0c-ab2e-7cab0c42c798_53","status":"000000","countryId":"CN","total":2},{"originTo":"+86155****5680","createTime":"2018-05-25T16:34:34Z","from":"1069********0012","smsMsgId":"5963c5be-f189-4c0c-ab2e-7cab0c42c798_54","status":"000000","countryId":"CN","total":2}],"code":"000000","description":"Success"}
  • 请求示例1(X-WSSE认证) POST /sms/batchSendDiffSms/v1 HTTP/1.1x-real-ip: 10.10.10.168x-real-port: 10443host: ompap.innercontent-length: 315date: Fri, 13 Apr 2018 06:48:35 GMTauthorization: WSSE realm="SDP",profile="UsernameToken",type="Appkey"x-wsse: UsernameToken Username="ZRBRz4bAXoFgEH7o4Ew308eXc1RA",PasswordDigest="NDA1MWIwNjI2ZTkyNWFlM2FhMTE5NDE1YTk5NjU1YWE4NjNlZTY1MmRhYzkxZGViNzczZjdjMjkzZWQ4ZjAwNA==",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z"accept: application/jsoncontent-type: application/json{"from":"1069********0012","smsContent":[{"to":["+86155****5678","+86155****5679"],"templateId":"abcdefghabcdefghabcdefghabcdefgh","templateParas":["062569"]},{"to":["+86155****45680"],"templateId":"hgfedcbahgfedcbahgfedcbahgfedcba","templateParas":["605623"]}],"statusCallback":"http://205.145.111.168:9330/report"}
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全