lexica-dialog-model
Version:
MongoDB model for Lexica virtual dialog agent.
84 lines (83 loc) • 2.2 kB
TypeScript
import { ItemType, ResponseType } from './Intent';
declare enum MessageType {
REQUEST = "REQUEST",
RESPONSE = "RESPONSE"
}
declare enum RequestType {
AUDIO = "AUDIO",
TEXT = "TEXT",
IMAGE = "IMAGE",
VIDEO = "VIDEO",
FILE = "FILE"
}
interface TextRequest {
type: RequestType.TEXT;
message: string;
}
interface FileRequest {
type: RequestType.FILE | RequestType.IMAGE | RequestType.VIDEO | RequestType.AUDIO;
path: string;
contentType: string;
}
interface BaseResponse {
message: string;
}
interface TextResponse extends BaseResponse {
type: ResponseType.TEXT;
}
interface OptionsResponse extends BaseResponse {
type: ResponseType.OPTIONS;
options: Array<{
command: string;
features: {
[index: string]: string;
};
message: string;
textOnlyIndicator: string;
}>;
}
interface ItemsResponse extends BaseResponse {
type: ResponseType.ITEMS;
items: Array<{
type: ItemType;
url: string;
message: string;
}>;
}
declare type Request = TextRequest | FileRequest;
declare type Response = TextResponse | OptionsResponse | ItemsResponse;
interface Comment {
text?: string;
rating?: number;
newType?: boolean;
}
interface BaseMessage {
uni: string;
messenger: string;
date: Date;
senderId: string;
sessionId?: string;
type: MessageType;
issueId?: string;
request?: Request;
rawRequest?: any;
commands?: string[];
categories?: string[];
subCategories?: string[];
response?: Response;
rawResponse?: any;
comment?: Comment;
}
interface RequestMessage extends BaseMessage {
type: MessageType.REQUEST;
request: Request;
rawRequest: any;
commands: string[];
}
interface ResponseMessage extends BaseMessage {
type: MessageType.RESPONSE;
response: Response;
rawResponse: any;
}
declare type Message = RequestMessage | ResponseMessage;
export { MessageType, RequestType, ResponseType, ItemType, TextRequest, FileRequest, BaseResponse, TextResponse, OptionsResponse, ItemsResponse, Request, Response, Comment, BaseMessage, RequestMessage, ResponseMessage, Message, };