# 参数设置API

## 存储变量API <a href="#cun-chu-bian-liang-api" id="cun-chu-bian-liang-api"></a>

此API可以为用户存储环境变量，以供[发送模板消息API](https://bothubdocs.gitbook.io/project/~/edit/drafts/-LCWfeDNA9QGt2vCxD8D/untitled-2/api-jie-shao/fa-song-mo-ban-xiao-xi-shi-yong-zi-zhu-ding-yi-de-bian-liang)使用。

#### 发送请求 <a href="#fa-song-qing-qiu" id="fa-song-qing-qiu"></a>

您可以用任意一个已经启用的API Key([怎样申请APIKey](https://bothubdocs.gitbook.io/project/~/edit/drafts/-LCWfeDNA9QGt2vCxD8D/untitled-2/api-jie-shao/kai-shi-shi-yong-api)) 向Bothub发起请求，向一个手机号或一个官网账号发送一条消息。这个请求的说明如下：

| 请求属性      | 属性名             | 说明                                                     |
| --------- | --------------- | ------------------------------------------------------ |
| 地址        |                 | [https://api.bothub.ai/api](https://api.bothub.ai/api) |
| 请求方式      | POST            |                                                        |
| Header    | APIKEY          | 您的API KEY                                              |
| Form Data | request.method  | 需要调用的api。此处设置为set\_params                              |
| Form Data | request.id      | 用来唯一标识此发送请求的id。由调用方生成                                  |
| Form Data | request.meta    | 预留字段                                                   |
| Form Data | recipient       | 要发送消息的用户信息，只能指定一个用户                                    |
| Form Data | settings.params | 要替换的参数。形式会在下方详述。                                       |

**请求样例**

```
{
    "recipient": {
        "id": "7819201"
    },
    "settings" : {
        "params": [
            {
                "key": "points",
                "value": "20000"
            },
            {
                "key": "prize",
                "value": "Gold Medal"
            }
        ],
    },
    "request": {
        "method": "set_params",
        "id" : "F4js0Za1",
        "meta": ""
    }
}
```

#### 同步方式请求返回值以及异步式调用回调内容 <a href="#tong-bu-fang-shi-qing-qiu-fan-hui-zhi-yi-ji-yi-bu-shi-tiao-yong-hui-tiao-nei-rong" id="tong-bu-fang-shi-qing-qiu-fan-hui-zhi-yi-ji-yi-bu-shi-tiao-yong-hui-tiao-nei-rong"></a>

请详见[发送消息API的同名章节](https://docs.bothub.ai/data-integration/customer-api.html)

#### 错误码列表 <a href="#cuo-wu-ma-lie-biao" id="cuo-wu-ma-lie-biao"></a>

| 返回值   | 内容               |
| ----- | ---------------- |
| 10000 | 内部错误             |
| 10001 | 未指定API KEY       |
| 10002 | 无效的API KEY       |
| 10003 | 未指定Request id    |
| 10004 | 未指定调用API的种类      |
| 10005 | 无效的API种类         |
| 10005 | 无效的API种类         |
| 10006 | Bot不存在或者已经被删除    |
| 10007 | 未指定recipient字段   |
| 10008 | recipient结构不正确   |
| 10009 | 无效的用户指定方式        |
| 10010 | 用户不存在            |
| 10011 | Request id与之前的重复 |
| 10100 | 参数无效             |
| 18000 | 内部错误             |
| 19000 | 回调超时             |
| 21001 | 未定义Params字段      |
| 21002 | Params结构错误       |

#### 用户指定 <a href="#yong-hu-zhi-ding" id="yong-hu-zhi-ding"></a>

请参见 [用户指定](https://bothubdocs.gitbook.io/project/~/edit/drafts/-LCWfeDNA9QGt2vCxD8D/untitled-2/api-jie-shao/untitled-1)

* 用不同的方式（比如id和email）指定的是同一个用户，参数都是设置在同一个用户上的。
* 当根据手机号发送用户，返回用户id之后，此手机号和用户被视为同一个用户，想更新此用户的参数，此API可以指定手机号或者id，效果相同。

#### 参数格式 <a href="#can-shu-ge-shi" id="can-shu-ge-shi"></a>

params用于指定需要更新的用户变量，可以指定多个。 样例格式如下:

```
"params": [
    {
        "key": "points",
        "value": "20000"
    },
    {
        "key": "prize",
        "value": "Gold Medal"
    }
]
```

* 可以指定多个参数。
* 如果要设置的参数已存在，会覆盖之前的设置。
* 若value为空串，相当于设置此值为空串（使用发送模板消息时，这个参数会被替换为空串，而不是被认为是未设置）。
