短信¶
短消息服务(SMS)¶
本节介绍用于发送和接收短文本的 SMS Web API 消息。
出站短信服务¶
Web API 支持使用 POST 方法发送外发 SMS。短信可以 发送到单个或多个目的地。一个或多个网关需要 在使用服务之前进行配置。如果出现以下情况,将不会发送短信 没有配置网关。它需要一组接收者和 JSON 格式的消息文本,如下所示。
/ api / sms / outbound
{
"message":"Sms Text",
"recipients": [
"004712341234",
"004712341235"
]
}
Note
Recipients list will be partitioned if the size exceeds
MAX_ALLOWED_RECIPIENTSlimit of 200.
Web API 也支持查询参数版本,但 参数化 API 只能用于发送短信到单个 目的地。
/ api / sms / outbound?message = text&recipient = 004712341234
可以使用GET资源提取出站邮件。
GET / api / sms / outbound
GET / api / sms / outbound?filter = status:eq:SENT
GET / api / sms / outbound?filter = status:eq:SENT&fields = *
可以使用DELETE资源删除出站邮件。
删除/ api / sms / outbound / {uid}
删除/ api / sms / outbound?ids = uid1,uid2
网关响应码¶
网关可以使用以下响应代码进行响应。
表:网关响应代码
| 响应码 | 回复信息 | 详细说明 |
|---|---|---|
| RESULT_CODE_0 | 成功 | 消息已发送成功 |
| RESULT_CODE_1 | 预定的 | 消息已安排成功 |
| RESULT_CODE_22 | 内部致命错误 | 内部致命错误 |
| RESULT_CODE_23 | 验证失败 | 身份验证凭据不正确 |
| RESULT_CODE_24 | 数据验证失败 | 请求中提供的参数不正确 |
| RESULT_CODE_25 | 学分不足 | 信用额度不足,无法发送消息 |
| RESULT_CODE_26 | 上游积分不可用 | 上游积分不可用 |
| RESULT_CODE_27 | 超出了您的每日配额 | 您已超出每日配额 |
| RESULT_CODE_40 | 暂时不可用 | 服务暂时中断 |
| RESULT_CODE_201 | 超出最大批量大小 | 超出最大批量大小 |
| RESULT_CODE_200 | 成功 | 请求已成功完成 |
| RESULT_CODE_202 | 公认 | 消息将被处理 |
| RESULT_CODE_207 | 多状态 | 向 API 提交了多条消息;但是,并非所有消息都具有相同的状态 |
| RESULT_CODE_400 | 错误的请求 | 验证失败(例如参数或标头丢失/无效) |
| RESULT_CODE_401 | 未经授权的 | 验证失败。这也可能是由 IP 锁定设置引起的 |
| RESULT_CODE_402 | 需要付款 | 信用额度不足,无法发送消息 |
| RESULT_CODE_404 | 未找到 | 资源不存在 |
| RESULT_CODE_405 | 方法不允许 | 该资源不支持 Http 方法 |
| RESULT_CODE_410 | 消失了 | 手机号码被屏蔽 |
| RESULT_CODE_429 | 请求太多 | 通用速率限制错误 |
| RESULT_CODE_503 | 暂停服务 | 我们的平台发生临时错误 - 请重试 |
入站短信服务¶
Web API 支持使用 POST 收集传入的 SMS 消息 方法。路由到 DHIS2 Web API 的传入消息可以是 使用此 API 接收。 API 收集入站 SMS 消息和 根据短信内容(SMS 命令)。下面给出了 JSON 格式的示例负载。文本, 发起者、接收日期和发送日期是强制性参数。这 其余是可选的,但系统将使用这些默认值 参数。
/ api / sms / inbound
{
"text": "sample text",
"originator": "004712341234",
"gatewayid": "unknown",
"receiveddate": "2016-05-01",
"sentdate":"2016-05-01",
"smsencoding": "1",
"smsstatus":"1"
}
可以使用GET resourcef获取入站消息
GET / api / sms / inbound
GET / api / sms / inbound?fields = *&filter = smsstatus = INCOMING
可以使用DELETE资源删除入站邮件
删除/ api / sms / inbound / {uid}
删除/ api / sms / inbound?ids = uid1,uid2
导入所有未解析的消息
POST /api/sms/入站/导入
表:用户查询参数
| 范围 | 类型 | 描述 |
|---|---|---|
| 信息 | 串 | 这是携带实际文本消息的强制参数。 |
| 鼻祖 | 串 | 这是强制性参数,显示该消息实际上是由谁发送的。 |
| 网关 | 串 | 这是一个可选参数,提供网关 ID。如果不存在,将存储默认文本“UNKNOWN” |
| 接收时间 | 日期 | 这是一个可选参数。它是网关接收消息的时间戳。 |
网关服务管理¶
Web API 公开资源,这些资源提供了一种配置和 更新短信网关配置。
可以使用 GET 检索配置的不同网关的列表 方法。
获取/api/33/网关
还可以使用特定网关类型检索配置 获取方法。
GET /api/33/gateways/{uid}
可以使用 POST 添加新的网关配置。 POST api 需要类型请求参数,目前它的值可以有一个 http,bulksms,clickatell,smpp。第一个添加的网关将设置为默认值。一次只能默认一个网关。默认网关只能通过其 api 更改。如果删除了默认网关,则列表中的下一个网关将自动变为默认网关。
POST / api / 33 / gateways
可以通过提供如下所述的uid和网关配置来更新配置
PUT /api/33/gateways/{uids}
可以使用 DELETE 删除特定网关类型的配置 方法。
删除/ api / 33 / gateways / {uid}
可以检索和更新默认网关。
获取 /api/33/gateways/default
可以使用PUT方法设置默认网关。
PUT /api/33/gateways/default/{uid}
网关配置¶
Web API 允许您创建和更新网关配置。对于每个 网关类型 JSON 有效负载中有不同的参数。 下面给出了每个网关的示例 JSON 有效负载。 POST 用于 create 和 PUT 以更新配置。标头参数可用于 GenericHttpGateway 将一个或多个参数作为 http 标头发送的情况。
Clickatell¶
{
"type" : "clickatell",
"name" : "clickatell",
"username": "clickatelluser",
"authToken": "XXXXXXXXXXXXXXXXXXXX",
"urlTemplate": "https://platform.clickatell.com/messages"
}
散装¶
{
"type": "bulksms",
"name": "bulkSMS",
"username": "bulkuser",
"password": "abc123"
}
SMPP网关¶
{
"type": "smpp",
"name": "smpp gateway2",
"systemId": "smppclient1",
"host": "localhost",
"systemType": "cp",
"numberPlanIndicator": "UNKNOWN",
"typeOfNumber": "UNKNOWN",
"bindType": "BIND_TX",
"port": 2775,
"password":"password",
"compressed": false
}
通用HTTP¶
{
"type": "http",
"name": "Generic",
"configurationTemplate": "username=${username}&password=${password}&to=${recipients}&countrycode=880&message=${text$}&messageid=0",
"useGet": false,
"sendUrlParameters":false,
"contentType": "APPLICATION_JSON",
"urlTemplate":"https://samplegateway.com/messages",
"parameters": [
{
"header": true,
"encode": false,
"key": "username",
"value": "user_uio",
"confidential": true
},
{
"header": true,
"encode": false,
"key": "password",
"value": "123abcxyz",
"confidential": true
},
{
"header": false,
"encode": false,
"key": "deliveryReport",
"value": "yes",
"confidential": false
}
],
"isDefault": false
}
在通用的http网关中,可以添加任意数量的参数。
表:通用 SMS 网关参数
| 范围 | 类型 | 描述 |
|---|---|---|
| 名称 | 串 | 网关名称 |
| 配置模板 | 串 | 使用参数值填充的配置模板。例如上面给出的配置模板将像这样填充 { "to": "+27001234567", "body": "Hello World!"} |
| 使用获取 | Boolean | 默认情况下将使用 Http POST 方法。为了更改它和 Http GET,用户可以将 useGet 标志设置为 true。 |
| 内容类型 | 串 | 内容类型指定正在发送的数据类型。支持的类型有 APPLICATION_JSON、APPLICATION_XML、FORM_URL_ENCODED、TEXT_PLAIN |
| url模板 | 串 | 网址模板 |
| 标头 | Boolean | 如果参数需要在Http headers中发送 |
| 编码 | Boolean | 如果参数需要编码 |
| 钥匙 | 串 | 参数键 |
| 价值 | 串 | 参数值 |
| 机密的 | Boolean | 如果参数是保密的。该参数不会通过API公开 |
| 发送Url参数 | Boolean | 如果选中此标志,则 urlTemplate 可以附加查询参数。如果网关 API 仅支持 HTTP GET,这非常有用。示例 urlTemplate 看起来像这样 "urlTemplate":"https://samplegateway.com/messages?apiKey={apiKey}&to={recipients},content={text},deliveryreport={dp}" |
如果配置保存成功则返回 HTTP.OK 否则 Error
短信命令¶
SMS 命令用于通过 SMS 收集数据。这些命令 属于特定的解析器类型。每个解析器都有不同的功能。
可以使用GET检索命令列表。
GET /api/sms命令
可以使用GET检索一个特定的命令。
GET /api/smsCommands/uid
可以使用PUT更新一个特定的命令。
PUT /api/smsCommands/uid
可以使用POST创建命令。
POST / api / smsCommands
可以使用DELETE删除一个特定命令。
删除/ api / smsCommands / uid
短信命令类型¶
| 类型 | 用法 |
|---|---|
| KEY_VALUE_PARSER | 用于汇总数据收集。 |
| ALERT_PARSER | 发送警报消息。 |
| 未注册_解析器 | 用于疾病监测病例报告。 |
| TRACKED_ENTITY_REGISTRATION_PARSER | 用于跟踪器实体注册。 |
| PROGRAM_STAGE_DATAENTRY_PARSER | 程序阶段的数据收集。 (根据phoneNumner确定TEI) |
| EVENT_REGISTRATION_PARSER | 单个事件的注册。这用于事件程序。 |
Android的SMS命令类型¶
当互联网不可用时,Android应用程序可以使用这些命令类型通过SMS提交数据。 SMS由Android应用程序组成。
| 类型 | 用法 |
|---|---|
| AGGREGATE_DATASET | 用于汇总数据收集。 |
| 注册 | 用于跟踪器实体注册。 |
| TRACKER_EVENT | 跟踪器程序的事件注册。 |
| SIMPLE_EVENT | 活动节目的活动注册。 |
| 关系 | 建立关系。 |
| 删除 | 删除事件。 |