ai.api.model.ResponseMessage Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of libai Show documentation
Show all versions of libai Show documentation
API.AI Java SDK allows using voice commands and integration with dialog scenarios defined for a particular agent in API.AI.
package ai.api.model;
/***********************************************************************************************************************
*
* API.AI Java SDK - client-side libraries for API.AI
* =================================================
*
* Copyright (C) 2016 by Speaktoit, Inc. (https://www.speaktoit.com) https://www.api.ai
*
***********************************************************************************************************************
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*
***********************************************************************************************************************/
import java.lang.reflect.Type;
import java.util.Arrays;
import java.util.List;
import com.google.gson.JsonObject;
import com.google.gson.annotations.Expose;
/**
* Base model class for
* response message objects.
*/
public abstract class ResponseMessage {
@Expose
private int type;
/**
* Default constructor initializing message type code
* @param type Message type. Cannot be null
.
*/
protected ResponseMessage(MessageType type) {
assert type != null;
this.type = type.code;
}
/**
* Holds the message type integer code and related {@link Type}
*/
public static enum MessageType {
/** Text response message object */
SPEECH(0, ResponseSpeech.class),
/** Card message object */
CARD(1, ResponseCard.class),
/** Quick replies message object */
QUICK_REPLY(2, ResponseQuickReply.class),
/** Image message object */
IMAGE(3, ResponseImage.class),
/** Custom payload message object */
PAYLOAD(4, ResponsePayload.class);
private final int code;
private final Type type;
private MessageType(int code, Type curClass) {
this.code = code;
this.type = curClass;
}
/**
* @return Message integer code value
*/
public int getCode() {
return this.code;
}
/**
* @return Related class {@link Type}
*/
public Type getType() {
return type;
}
}
/**
* Text response
* message object
*/
public static class ResponseSpeech extends ResponseMessage {
@Expose
public List speech;
public ResponseSpeech() {
super(MessageType.SPEECH);
}
/**
* Get agent's text replies.
*/
public List getSpeech() {
return this.speech;
}
/**
* Set agent's text replies.
*/
public void setSpeech(List speech) {
this.speech = speech;
}
/**
* Set agent's text replies.
*/
public void setSpeech(String... speech) {
setSpeech(Arrays.asList(speech));
}
}
/**
* Card message object
*/
public static class ResponseCard extends ResponseMessage {
@Expose
private String title;
@Expose
private String subtitle;
@Expose
private String imageUrl;
@Expose
private List