更新时间:2024-11-15 GMT+08:00
分享

短信通知接口

接口功能

隐私保护通话平台通过此接口向客户服务器推送隐私号短信通知。

通知模式为Notify模式,客户收到通知后返回HTTP状态码为200的空消息即可。

AXB模式发送隐私号短信的流程如下:

A或B发送短信给X,隐私保护通话平台将短信转发给绑定关系的另一方(发送方号码是X),并推送Notify模式的隐私号短信通知给客户服务器。

请求方向

隐私保护通话平台(客户端) → 客户服务器(服务端)

使用说明

前提条件

  • 客户添加应用时需设置短信通知接收地址,并确保提供的地址能够正常处理隐私保护通话平台发送的通知消息。
  • 若需要接收用户发送的短信内容,请参考如何设置才能收到短信内容?进行设置。
  • 短信通知重传功能为默认开启,该功能开启后,当隐私保护通话平台推送短信事件通知给客户服务器失败时,隐私保护通话平台会重传事件通知给客户服务器。最多重传6次,每次重传时间间隔可由系统管理员设置。

接口类型

表1 请求说明

请求方法

POST

访问URI

客户添加应用时填写的短信通知地址

通信协议

HTTPS

请求参数

表2 请求Headers参数说明

参数名称

是否必选

参数类型

说明

Content-Type

String

固定填写为application/json;charset=UTF-8。

Authorization

String

固定填写为AKSK realm="SDP",profile="UsernameToken",type="Appkey"。

X-AKSK

String

取值为UsernameToken Username="APP_Key的值", PasswordDigest="PasswordDigest的值", Nonce="随机数", Created="随机数生成时间"。
  • PasswordDigest:根据PasswordDigest = Base64 (HMAC-SHA256 (Password,Nonce + Created))生成。其中,Password为APP_Secret的值。Nonce、Created、Password直接进行字符串拼接即可,无需包含+号和空格。
  • Nonce:客户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。
  • Created:随机数生成时间。采用标准UTC格式,例如:2018-02-12T15:30:20Z。不同编程语言中将UTC时间戳转换为普通时间时使用的格式不同,部分语言可参考表3
表3 不同编程语言的时间格式

编程语言

时间格式

Java

yyyy-MM-dd'T'HH:mm:ss'Z'

PHP

Y-m-d\TH:i:s\Z

Python

%Y-%m-%dT%H:%M:%SZ

C#

yyyy-MM-ddTHH:mm:ssZ

Node.js

toISOString().replace(/.[0-9]+\Z/, 'Z')

注:Node.js中,使用toISOString()转换后的时间格式去除毫秒后即为本接口要求的时间格式。

表4 请求Body参数说明

参数名称

是否必选

参数类型

说明

appKey

String(1-32)

隐私保护通话应用的APP_Key。

smsEvent

SMSEventInfoType

短信状态事件。

表5 SMSEventInfoType定义

参数名称

是否必选

参数类型

说明

smsIdentifier

String(1-64)

短信唯一标识。

若用户发送的是长短信,隐私保护通话平台会将长短信的多个分片合并为一个通知上报。

notificationMode

String(1-8)

通知模式:

Notify:通知模式。

calling

String(1-32)

真实发送方号码。

号码为全局号码格式(包含国家码),比如+86138****7021。

called

String(1-32)

真实接收方号码。

仅在隐私保护通话平台转发短信成功后携带。

号码为全局号码格式(包含国家码),比如+86138****7022。

virtualNumber

String(1-32)

X号码。

号码为全局号码格式(包含国家码),比如+86138****0001。

event

String(1-16)

短信状态事件。

TextSMS:文本短信

timeStamp

String(1-32)

短信事件发生的系统时间戳,UTC时间。

格式:yyyy-MM-dd'T'HH:mm:ss.SSS'Z'

其中SSS是毫秒,“T”和“Z”为固定字符。

extInfo

ExtensionInfoType

拓展信息。

subscriptionId

String(1-64)

绑定ID。

smsContent

String(1-2000)

用户发送的短信内容。

请参考如何设置才能收到短信内容?开通该功能。

sendResult

Integer

发送结果。

  • 0:成功
  • 1:因用户账户冻结,发送失败。
  • 2:因绑定关系不存在,发送失败。
  • 3:因X号码被暂停,发送失败。
  • 4:非商用APP,发送失败。
  • 5:因系统内部错误,发送失败。
  • 8:黑名单管控,发送失败。
  • 9:部分发送成功。
  • 10:全部发送失败。
  • 11:X号码不支持短信能力。
  • 12:短信内容不包含特征关键词。
  • 13:短信内容包含禁止词汇。

areaCode

String(0-32)

隐私保护号码(X号码)的城市码。

说明:

使用该参数的场景请联系华为云客服获取。

userData

String(1-256)

用户附属信息。

说明:

使用该参数的场景请联系华为云客服获取。

表6 ExtensionInfoType定义

参数名称

是否必选

参数类型

说明

extParas

JsonArray

扩展信息(Key-Value)列表。

格式如下:

"extParas": [{"key": "splitNum","value": "value1"},{"key": "direction","value": "value2"}]

Key、Value取值分别不能超过32个字节。

“key”取值为“splitNum”时表示实际短信发送成功数量,即长短信拆分后的短信数量。value1表示“splitNum”的取值。

“key”取值为“direction”时表示短信发送方向。value2表示“direction”取值,含义如下:

  • 0:B发送短信给A。
  • 1:A发送短信给B。
  • 2:异常场景无法获取发送方向。

响应参数

客户服务器接收到隐私保护通话平台Notify模式的短信事件通知后,返回无消息体的200响应。

接口示例

接口示例仅供参考,请以实际消息为准。

  • 请求示例
    POST /notify HTTP/1.1 
    
    content-type: application/json;charset=UTF-8
    authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey"
    x-aksk: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z"
    content-length:xx
      
    {
    "appKey":"****",
    "smsEvent":{"smsIdentifier":"********",
                "notificationMode":"Notify",
                "calling":"+86138****0001",
                "virtualNumber":"+86138****0000",
                "event":"TextSMS",
                "timeStamp":"2020-12-23T09:06:16.450Z",
                "extInfo":{"extParas":[{"key":"splitNum","value":"0"},{"key":"direction","value":"2"}]},
                "sendResult":2
                }
    }
  • 响应示例

    请求为Notify模式时

    HTTP/1.1 200 OK 

相关文档