Create Message¶
创建Application Portal上的普通提示消息与告警消息。
约束条件¶
关联的应用已被组织购买
若此条消息是关于资产的告警消息,则该资产或资产的父节点需带有
auth_unit:true
的标签
请求格式¶
POST https://{apigw-address}/app-portal-service/v2.2/message/produce
请求参数(Body)¶
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
messages |
必需 |
MessageProduceDTO结构体 |
产生的消息。 |
MessageProduceDTO结构体¶
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
messageId |
必需 |
String |
告警消息ID。 |
type |
必需 |
Integer |
消息类型,0:普通消息,1:告警消息。 |
orgId |
必需 |
String |
组织ID。 |
accessKey |
必需 |
String |
应用的服务账号,应用以 |
body |
可选 |
I18nString |
多语言显示的消息信息。必须至少指定 |
color |
可选 |
Integer |
消息严重级别颜色标识。 |
ring |
可选 |
Integer |
消息的声音类型。 |
tags |
可选 |
Map |
多语言显示的消息的标签。只展示前三个。必须至少指定 |
produceTime |
必需 |
String |
message produce time, format: “yyyy-MM-dd HH:mm:ss” 告警消息生成时间,以UTC时间表示。 |
zoneOffset |
必需 |
String |
时区,如”+08:00”。 |
linkedAppId |
可选 |
String |
与告警消息关联的应用的ID。(linkedAppId、linkedMenuCode、linkedStates三者构成跳转链接URL,如https://{app-service-address}/portal/60d110ff-f388-48f4-916b-9e637d4886af/alarmProcessing?state=site%253DeVKqg4zr,其中,{app-service-address}为能够展示全部告警的服务地址,“60d110ff-f388-48f4-916b-9e637d4886af”为 |
linkedMenuCode |
可选 |
String |
与消息关联的应用内的菜单标识符。 |
linkedStates |
可选 |
String |
message linked states,与消息关联的URL state。 |
feature |
可选 |
I18nString |
多语言显示的用户自定义描述。必须至少指定 |
assetId |
可选 |
String |
与告警消息相关的资产的ID。若告警消息与资产无关,则可不提供。 |
authUnitId |
必需 |
String |
在EnOS平台的资产树中打了“auth_unit:true”标签的资产,可以是assetId,也可能是assetId的父节点,是同步到Application Portal中的资产ID,用于校验应用对此资产的权限。如一个光伏电站下有若干个光伏面板,每个光伏面板有各自的资产ID:assetId1、assetId2等。此光伏电站在EnOS平台的资产树被打了“auth_unit:true”的标签。当此光伏电站被成功同步到Application Portal后(authUnitId有效),如果某个组织拥有appId表示的应用,那么在Application Portal中对光伏面板这一资产可见的用户可以收到相应的告警消息。在此例中,assetId为某个光伏面板的ID,authUnitId为光伏电站ID。 |
callbackUrl |
可选 |
String |
为用户在消息弹窗中点击 |
actionName |
可选 |
I18nString |
消息弹框中自定义按钮上的文字。建议中文两字符,英文三个字符,如“确认”和“ACK”。如不提供则不展示。必须至少指定 |
actionPermissionCode |
可选 |
String |
此参数为权限点唯一标识符,如果对此消息可见的用户具有此权限点,那么用户将在消息弹框中可以看到自定义按钮,如“确认”和“ACK”,否则将不显示。如果此参数不提供,那么默认所有对此消息可见的用户可以看到自定义按钮。 |
示例¶
请求示例¶
url: https://{apigw-address}/app-portal-service/v2.2/message/produce
method: POST
requestBody:
{
"messages": [
{
"zoneOffset": "+08:00",
"linkedMenuCode": "menucode",
"linkedAppId": "accessKey",
"color": 1,
"ring": 1,
"messageId": "yunfan01",
"produceTime": "24/7/2019 11:22:01",
"body": {
"default": "This is a test3335",
"en_US": "This is a test3335",
"zh_CN": "这是个测试233335"
},
"type": 1,
"tags": [
{
"default": "Severe",
"en_US": "Severe",
"zh_CN": "严重"
},
{
"default": "Performance Alarm",
"en_US": "Performance Alarm",
"zh_CN": "性能告警"
},
{
"default": "Inverter",
"en_US": "Inverter",
"zh_CN": "逆变器"
}
],
"orgId": "yourOrgId",
"authUnitId": "7Uq6uP77",
"feature": {
"default": "This is a feature test3343",
"en_US": "This is a feature test3343",
"zh_CN": "这是个特征测试1"
},
"assetId": "7Uq6uP77",
"accessKey": "yourAccessKey",
"state": 0,
"linkedStates": "states",
"callbackUrl":"https://{app-service-address}/app-portal/test/v1/callback?appId=accessKey&messageId=messagett0q22w1299",
"actionName":
{
"en_US":"ACK",
"zh_CN":"确认"
}
}
]
}
返回示例¶
{
"code": 0,
"message": "OK",
"data": null
}
Java SDK 调用示例¶
public class AppPortalSdkTest{
@Test
public void createMessageTest() {
MessageProduceRequest messageProduceRequest = new MessageProduceRequest();
List<MessageProduceDTO> messages = new ArrayList<MessageProduceDTO>();
MessageProduceDTO messageProduceDTO = new MessageProduceDTO();
messageProduceDTO.setMessageId("message_id");
messageProduceDTO.setAccessKey("your_access_key");
messageProduceDTO.setOrgId("your_org_id");
messageProduceDTO.setBody(new I18nString());
messageProduceDTO.setProduceTime(DateTimeUtil.getDateTime());
messageProduceDTO.setZoneOffset("+08:00");
messageProduceDTO.setLinkedAppId("your_access_key");
messageProduceDTO.setLinkedMenuCode("menu");
messageProduceDTO.setLinkedStates("");
messageProduceDTO.setAssetId("your_asset_id");
messageProduceDTO.setAuthUnitId("your_asset_id");
messageProduceDTO.setColor(1);
messageProduceDTO.setRing(0);
messageProduceDTO.setType(MessageType.ALARM.getValue());
messageProduceDTO.setCallbackUrl("/");
I18nString actionName=new I18nString();
actionName.put("zh_CN","确认");
actionName.put("en_US","ACK");
messageProduceDTO.setActionName(actionName);
messages.add(messageProduceDTO);
messageProduceRequest.setMessages(messages);
MessageProduceResponse messageProduceResponse = Poseidon.config(PConfig.init().appKey("your_access_key").appSecret("your_secret_key").debug())
.url("https://{apigw-address}").getResponse(messageProduceRequest, MessageProduceResponse.class);
System.out.println("request: " + JSONObject.toJSONString(messageProduceRequest));
System.out.println("response: " + JSONObject.toJSONString(messageProduceResponse));
}
}