private JsonNode sendMessage(JsonNode command,JsonCallback callback) throws CommandException{
JsonNode params = command.get(ScriptCommand.PARAMS);
if (params == null||!params.isObject()){
throw new CommandParsingException(command,"missing parameters");
}
JsonNode body = params.get("body");
if (body == null||!body.isObject()){
throw new CommandParsingException(command,"missing body object parameter");
}
JsonNode messageNode = body.get("message");
if (messageNode==null||!messageNode.isTextual()){
throw new CommandParsingException(command,"missing message text parameter");
}
String message = messageNode.asText();
List<String> users = new ArrayList<>();
JsonNode usersNode = params.get("to");
if (usersNode==null|| !usersNode.isArray()){
throw new CommandParsingException(command,"missing required to parameter");
}
ArrayNode usrAry = (ArrayNode)usersNode;
usrAry.forEach(j->{
if (j==null||!j.isTextual()) return;
users.add(j.asText());
});
JsonNode profilesNode = params.get("profiles");
List<Integer> profiles;
if (profilesNode == null){
profiles = Collections.singletonList(1);
} else if (profilesNode.isArray()) {
ArrayNode pAry = (ArrayNode)profilesNode;
profiles = new ArrayList<>();
pAry.forEach((j)->{
if(j==null||!j.isIntegralNumber()) return;
profiles.add(j.asInt());
});
} else {
throw new CommandParsingException(command,"wrong profiles parameter");
}
boolean[] errors = new boolean[users.size()];
PushService ps = new PushService();