Create Active Alert


创建当前告警。除了必填性校验,不需要对参数的合法性进行校验。用户使用的如 contentId 不会在 EnOS 平台的系统上维护。

请求格式

POST https://{apigw-address}/event-service/v2.1/active-alerts?action=create

请求参数(URI)

名称

位置(Path/Query)

必需/可选

数据类型

描述

orgId

Query

必需

String

资产所属的组织 ID。如何获取 orgId 信息>>

请求参数(Body)

名称

必需/可选

数据类型

描述

activeAlert

必需

ActiveAlert 结构体

当前告警。见 ActiveAlert 结构体>>

ActiveAlert 结构体

备注

以下非必须字段中,必须提供 measurepointIddeviceStatus 作为告警触发条件。

名称

必需/可选

数据类型

描述

assetId

必需

String

资产 ID。如何获取 assetId 信息>>

assetPaths

可选

String 数组

告警资产在资产树上的路径列表. 格式为:[“treeId1:/assetId1/assetId2/assetIdx”, “treeId2:/assetId3/assetIdx”]

modelId

必需

String

告警适用的模型的 ID。如何获取 modelId 信息>>

modelIdPath

可选

String

模型路径

measurepointId

可选

String

资产测点。必须使用 measurepointIddeviceStatus 二者之一作为告警触发条件。如何获取测点(pointId)信息>>

deviceStatus

可选

String

设备状态,如 “offline”。必须使用 measurepointIddeviceStatus 二者之一作为告警触发条件。详见 设置由设备状态触发的告警

value

必需

Object

测点值。

occurTime

必需

Long

告警发生的时间,以 UTC 时间表示,格式见 UTC 采用的 ISO8601 标准时间格式>>

localOccurTime

可选

String

告警发生的时间,以本地时间表示,格式见 localtime 采用的日期时间格式>>

severityId

可选

String

告警级别编号。

severityDesc

可选

StringI18n

告警级别描述。结构请见 国际化名称结构体>>

typeId

可选

String

告警类型编号。

typeDesc

可选

StringI18n

告警类型描述。结构请见 国际化名称结构体>>

subTypeId

可选

String

告警子类型编号。

subTypeDesc

可选

StringI18n

告警子类型描述。结构请见 国际化名称结构体>>

contentId

可选

String

告警内容编号。

contentDesc

可选

StringI18n

告警内容描述。结构请见 国际化名称结构体>>

tags

可选

Map

标签。详见 标签的作用与表示方法>>

响应参数

名称

数据类型

描述

data

String

告警 ID。

示例

请求示例

url: https://{apigw-address}/event-service/v2.1/active-alerts?action=create&orgId=yourOrgId
method: POST
requestBody:
{
  "activeAlert": {
     "assetId": "qu5TmJRj",
     "assetPaths": ["treeId1:/assetId1/assetId2/assetIdx", "treeId2:/assetId3/assetIdx"],
     "modelId": "Inverter_Model",
     "modelIdPath": "/Inverter_Model",
     "measurepointId": "power",
     "value": "3.5559796405967736",
     "occurTime": 1559304899404,
     "localOccurTime": "2019-06-01 02:14:59",
     "severityId": "alert_001",
     "severityDesc": {
        "defaultValue": "Warn",
         "i18nValue": {
             "en_US": "警告",
             "zh_CN": "警告"
         }
     },
     "typeId": "errorType",
     "typeDesc": {
        "defaultValue": "Warn",
         "i18nValue": {
             "en_US": "login failed",
             "zh_CN": "登录失败"
         }
     },
     "contentId": "planetTemperature",
     "contentDesc": {
        "defaultValue": "the temperature is too high",
         "i18nValue": {
             "en_US": "the temperature is too high",
             "zh_CN": "温度过高"
         }
     },
     "tags": {
         "Tag666": "63253w532",
         "Tag888": "63253w532888",
         "Tag": "1111"
     }
  },
  "action": "create"
}

返回示例

{
    "code": 0,
    "msg": "OK",
    "requestId": "4873095e-621d-4cfd-bc2c-edb520f574ea",
    "data": "20191101479fb7810c81a0cfe08f3552db40e546"
}

Java SDK 调用示例

package com.enos-iot.enos.event_service;

import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.enos-iot.enos.api.common.constant.request.Pagination;
import com.enos-iot.enos.event_service.v2_1.*;
import com.enos-iot.enos.event_service.vo.*;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
import org.junit.Test;


import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

private GenerateActiveAlert buildActiveAlert() {
    GenerateActiveAlert activeAlert = new GenerateActiveAlert();
    activeAlert.setAssetId("asset");
    activeAlert.setModelId("model");
    activeAlert.setModelIdPath("/path-path-path");
    activeAlert.setMeasurepointId("point111");
    activeAlert.setValue(1);
    long now = System.currentTimeMillis();
    activeAlert.setOccurTime(now);
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String localTime = df.format(now);
    activeAlert.setLocalOccurTime(localTime);
    activeAlert.setSeverityId("severity");

    StringI18n desc = new StringI18n();
    desc.setDefaultValue("default");
    Map < String, String > map = new HashMap < > ();
    map.put("zh_CN", "中文");
    map.put("en_US", "english");
    desc.setI18nValue(map);

    activeAlert.setSeverityDesc(desc);

    activeAlert.setTypeId("type");
    StringI18n desc1 = new StringI18n();
    desc1.setDefaultValue("default1");
    Map < String, String > map1 = new HashMap < > ();
    map1.put("zh_CN", "中文");
    map1.put("en_US", "english");
    desc1.setI18nValue(map1);

    activeAlert.setTypeDesc(desc1);

    activeAlert.setContentId("content");

    StringI18n desc2 = new StringI18n();
    desc2.setDefaultValue("default2");
    Map < String, String > map2 = new HashMap < > ();
    map2.put("zh_CN", "中文");
    map2.put("en_US", "english");
    desc2.setI18nValue(map2);
    activeAlert.setContentDesc(desc2);
    return activeAlert;
}

public void testCreateActiveAlert() {
    String accessKey = "yourAppAccessKey";
    String secretKey = "yourAppSecretKey";
    String orgId = "yourOrgId";
    String url = "https://{apigw-address}";
    CreateActiveAlertRequest request = new CreateActiveAlertRequest();
    request.setOrgId(orgId);
    GenerateActiveAlert activeAlert = buildActiveAlert();
    Map < String, String > tags = new HashMap < > ();
    tags.put("yourTagKey", "yourTagValue");
    activeAlert.setTag(tags);
    request.setActiveAlert(activeAlert);
    try {
        CreateActiveAlertResponse response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey).debug())
            .url(url)
            .getResponse(request, CreateActiveAlertResponse.class);

        System.out.println(response);
    } catch (Exception e) {
        System.out.print(e);
    }
}