Skip to content

Commit 1fbb887

Browse files
authored
auto codegen for USMS
1 parent 10c74c1 commit 1fbb887

File tree

3 files changed

+123
-9
lines changed

3 files changed

+123
-9
lines changed

ucloud/services/usms/client.py

Lines changed: 61 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def create_usms_signature(
2424
- **CertificateType** (int) - (Required) 签名的资质证明文件类型,需与签名类型保持一致,说明如下:0-三证合一/企业营业执照/组织机构代码证书/社会信用代码证书;1-应用商店后台开发者管理截图;2-备案服务商的备案成功截图(含域名,网站名称,备案号);3-公众号或小程序的管理界面截图;4-商标注册证书;5-组织机构代码证书、社会信用代码证书;
2525
- **Description** (str) - (Required) 短信签名申请原因
2626
- **File** (str) - (Required) 短信签名的资质证明文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB
27-
- **SigContent** (str) - (Required)
27+
- **SigContent** (str) - (Required) 签名内容
2828
- **SigPurpose** (int) - (Required) 签名用途,0-自用,1-他用;
2929
- **SigType** (int) - (Required) 签名类型,说明如下:0-公司或企业的全称或简称;1-App应用的全称或简称;2-工信部备案网站的全称或简称;3-公众号或小程序的全称或简称;4-商标名的全称或简称;5-政府/机关事业单位/其他单位的全称或简称;
3030
- **International** (bool) - 国内/国际短信。true:国际短信,false:国内短信,若不传值则默认该值为false
@@ -143,10 +143,10 @@ def get_usms_send_receipt(
143143
144144
**Request**
145145
146-
- **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_
147-
- **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_
146+
- **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_
147+
- **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_
148148
- **SessionNoSet** (list) - (Required) 发送短信时返回的SessionNo集合,SessionNoSet.0,SessionNoSet.1....格式
149-
- **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_
149+
- **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_
150150
151151
**Response**
152152
@@ -163,9 +163,11 @@ def get_usms_send_receipt(
163163
**ReceiptPerPhone**
164164
- **CostCount** (int) - 消耗短信条数
165165
- **Phone** (str) - 手机号码
166+
- **ReceiptCode** (str) - 状态报告编码
166167
- **ReceiptDesc** (str) - 回执结果描述
167-
- **ReceiptResult** (str) - 回执结果
168+
- **ReceiptResult** (str) - 回执结果,枚举值:\\ > 发送成功: 代表成功 \\ > Success: 代表成功 \\ > 发送失败: 代表失败 \\ > Fail: 代表失败 \\ > 状态未知: 代表未知 \\ > Unknow: 代表未知
168169
- **ReceiptTime** (int) - 回执返回时间
170+
- **UserId** (str) - 自定义的业务标识ID,字符串
169171
170172
171173
"""
@@ -256,6 +258,59 @@ def query_usms_template(
256258
resp = self.invoke("QueryUSMSTemplate", d, **kwargs)
257259
return apis.QueryUSMSTemplateResponseSchema().loads(resp)
258260

261+
def send_batch_usms_message(
262+
self, req: typing.Optional[dict] = None, **kwargs
263+
) -> dict:
264+
"""SendBatchUSMSMessage - 调用SendBatchUSMSMessage接口批量发送短信
265+
266+
**Request**
267+
268+
- **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_
269+
- **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_
270+
- **TaskContent** (str) - (Required) 批量发送内容,该参数是json数组的base64编码结果。发送内容json数组中,每个“模板+签名”组合作为一个子项,每个子项内支持多个号码,示例:发送内容json数组(base64编码前):[{"TemplateId": "UTA20212831C85C", "SigContent": "UCloud", "Target": [{"TemplateParams": ["123456"], "Phone": "18500000123", "ExtendCode": "123", "UserId": "456"} ] } ] 。json数组中各参数的定义:"TemplateId":模板ID,"SigContent"短信签名内容,"Target"具体到号码粒度的发送内容。"Target"中的具体字段有:"TemplateParams"实际发送的模板参数(若使用的是无参数模板,该参数不能传值),"Phone"手机号码, "ExtendCode"短信扩展码, "UserId"自定义业务标识ID。其中必传参数为"TemplateId", "SigContent", "Target"("Target"中必传参数为"Phone")。实际调用本接口时TaskContent传值(发送内容base64编码后)为:W3siVGVtcGxhdGVJZCI6ICJVVEEyMDIxMjgzMUM4NUMiLCAiU2lnQ29udGVudCI6ICJVQ2xvdWQiLCAiVGFyZ2V0IjogW3siVGVtcGxhdGVQYXJhbXMiOiBbIjEyMzQ1NiJdLCAiUGhvbmUiOiAiMTg1MDAwMDAxMjMiLCAiRXh0ZW5kQ29kZSI6ICIxMjMiLCAiVXNlcklkIjogIjQ1NiJ9IF0gfSBdIA==
271+
272+
**Response**
273+
274+
- **Action** (str) - 操作名称
275+
- **FailContent** (list) - 见 **BatchInfo** 模型定义
276+
- **Message** (str) - 发生错误时表示错误描述
277+
- **ReqUuid** (str) - 本次请求Uuid
278+
- **RetCode** (int) - 返回码。0表示成功,非0表示失败。
279+
- **SessionNo** (str) - 本次提交发送任务的唯一ID,可根据该值查询本次发送的短信列表。注:成功提交短信数大于0时,才返回该字段
280+
- **SuccessCount** (int) - 成功提交短信(未拆分)条数
281+
282+
**Response Model**
283+
284+
**FailPhoneDetail**
285+
- **ExtendCode** (str) - 扩展号码
286+
- **FailureDetails** (str) - 发送失败原因。注:若模板/签名校验失败,该字段为空
287+
- **Phone** (str) - 手机号
288+
- **TemplateParams** (list) - 模板参数
289+
- **UserId** (str) - 用户自定义ID
290+
291+
292+
**BatchInfo**
293+
- **FailureDetails** (str) - 未能成功发送的详情。注:模板/签名检验失败时,该字段有效
294+
- **SigContent** (str) - 签名
295+
- **Target** (list) - 见 **FailPhoneDetail** 模型定义
296+
- **TemplateId** (str) - 模板ID
297+
298+
299+
"""
300+
# build request
301+
d = {
302+
"ProjectId": self.config.project_id,
303+
"Region": self.config.region,
304+
}
305+
req and d.update(req)
306+
d = apis.SendBatchUSMSMessageRequestSchema().dumps(d)
307+
308+
# build options
309+
kwargs["max_retries"] = 0 # ignore retry when api is not idempotent
310+
311+
resp = self.invoke("SendBatchUSMSMessage", d, **kwargs)
312+
return apis.SendBatchUSMSMessageResponseSchema().loads(resp)
313+
259314
def send_usms_message(
260315
self, req: typing.Optional[dict] = None, **kwargs
261316
) -> dict:
@@ -270,7 +325,7 @@ def send_usms_message(
270325
- **TemplateId** (str) - (Required) 模板ID(也即短信模板申请时的工单ID),请到 `USMS控制台 <https://console.ucloud.cn/usms>`_ 的模板管理页面查看;使用的短信模板必须是已申请并通过审核;
271326
- **ExtendCode** (str) - 短信扩展码,格式为阿拉伯数字串,默认不开通,如需开通请联系 UCloud技术支持
272327
- **TemplateParams** (list) - 模板可变参数,以数组的方式填写,举例,TempalteParams.0,TempalteParams.1,... 若模板中无可变参数,则该项可不填写;若模板中有可变参数,则该项为必填项,参数个数需与变量个数保持一致,否则无法发送;
273-
- **UserId** (str) - 自定义的业务标识ID,字符串( 长度不能超过32 位)
328+
- **UserId** (str) - 自定义的业务标识ID,字符串( 长度不能超过32 位),不支持 单引号、表情包符号等特殊字符
274329
275330
**Response**
276331

ucloud/services/usms/schemas/apis.py

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,7 @@ class CreateUSMSSignatureRequestSchema(schema.RequestSchema):
2525
"International": fields.Bool(required=False, dump_to="International"),
2626
"ProjectId": fields.Str(required=True, dump_to="ProjectId"),
2727
"ProxyFile": fields.Str(required=False, dump_to="ProxyFile"),
28-
"SigContent": fields.Str(
29-
required=True, dump_to="SigContent"
30-
), # Deprecated, will be removed at 1.0
28+
"SigContent": fields.Str(required=True, dump_to="SigContent"),
3129
"SigPurpose": fields.Int(required=True, dump_to="SigPurpose"),
3230
"SigType": fields.Int(required=True, dump_to="SigType"),
3331
}
@@ -217,6 +215,38 @@ class QueryUSMSTemplateResponseSchema(schema.ResponseSchema):
217215
}
218216

219217

218+
"""
219+
API: SendBatchUSMSMessage
220+
221+
调用SendBatchUSMSMessage接口批量发送短信
222+
"""
223+
224+
225+
class SendBatchUSMSMessageRequestSchema(schema.RequestSchema):
226+
"""SendBatchUSMSMessage - 调用SendBatchUSMSMessage接口批量发送短信"""
227+
228+
fields = {
229+
"ProjectId": fields.Str(required=True, dump_to="ProjectId"),
230+
"TaskContent": fields.Str(required=True, dump_to="TaskContent"),
231+
}
232+
233+
234+
class SendBatchUSMSMessageResponseSchema(schema.ResponseSchema):
235+
"""SendBatchUSMSMessage - 调用SendBatchUSMSMessage接口批量发送短信"""
236+
237+
fields = {
238+
"Action": fields.Str(required=True, load_from="Action"),
239+
"FailContent": fields.List(
240+
models.BatchInfoSchema(), required=False, load_from="FailContent"
241+
),
242+
"Message": fields.Str(required=True, load_from="Message"),
243+
"ReqUuid": fields.Str(required=False, load_from="ReqUuid"),
244+
"RetCode": fields.Int(required=True, load_from="RetCode"),
245+
"SessionNo": fields.Str(required=False, load_from="SessionNo"),
246+
"SuccessCount": fields.Int(required=False, load_from="SuccessCount"),
247+
}
248+
249+
220250
"""
221251
API: SendUSMSMessage
222252

ucloud/services/usms/schemas/models.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@ class ReceiptPerPhoneSchema(schema.ResponseSchema):
99
fields = {
1010
"CostCount": fields.Int(required=True, load_from="CostCount"),
1111
"Phone": fields.Str(required=True, load_from="Phone"),
12+
"ReceiptCode": fields.Str(required=True, load_from="ReceiptCode"),
1213
"ReceiptDesc": fields.Str(required=True, load_from="ReceiptDesc"),
1314
"ReceiptResult": fields.Str(required=True, load_from="ReceiptResult"),
1415
"ReceiptTime": fields.Int(required=True, load_from="ReceiptTime"),
16+
"UserId": fields.Str(required=True, load_from="UserId"),
1517
}
1618

1719

@@ -51,3 +53,30 @@ class OutTemplateSchema(schema.ResponseSchema):
5153
required=True, load_from="UnsubscribeInfo"
5254
),
5355
}
56+
57+
58+
class FailPhoneDetailSchema(schema.ResponseSchema):
59+
"""FailPhoneDetail - 批量任务中,未能成功发送的号码及其原因"""
60+
61+
fields = {
62+
"ExtendCode": fields.Str(required=False, load_from="ExtendCode"),
63+
"FailureDetails": fields.Str(
64+
required=False, load_from="FailureDetails"
65+
),
66+
"Phone": fields.Str(required=True, load_from="Phone"),
67+
"TemplateParams": fields.List(fields.Str()),
68+
"UserId": fields.Str(required=False, load_from="UserId"),
69+
}
70+
71+
72+
class BatchInfoSchema(schema.ResponseSchema):
73+
"""BatchInfo - 批量发送任务中未能成功发送的信息详情,“模板+签名”粒度"""
74+
75+
fields = {
76+
"FailureDetails": fields.Str(
77+
required=False, load_from="FailureDetails"
78+
),
79+
"SigContent": fields.Str(required=True, load_from="SigContent"),
80+
"Target": fields.List(FailPhoneDetailSchema()),
81+
"TemplateId": fields.Str(required=True, load_from="TemplateId"),
82+
}

0 commit comments

Comments
 (0)