twilly
Version:
Node.js Twilio API abstraction layer for Express applications
86 lines (85 loc) • 3.34 kB
TypeScript
import Action, { ActionContext } from "./Action";
import { SmsCookie } from "../SmsCookie";
import { TwilioWebhookRequest } from '../twllio';
export declare const MAXIMUM_RETRIES_ALLOWED = 10;
export declare type AnswerValidator = (answer: string) => (boolean | Promise<boolean>);
export interface QuestionContext extends ActionContext {
answer: string | number;
attempts?: string[];
body: string;
questionType: string;
wasAnswered: boolean;
wasFailed: boolean;
}
declare const MutlipleChoiceQuestion: unique symbol;
declare const TextQuestion: unique symbol;
export declare const QuestionTypeMap: {
[MutlipleChoiceQuestion]: string;
[TextQuestion]: string;
};
export interface QuestionTypes {
MultipleChoice: symbol;
Text: symbol;
}
export interface QuestionOptions {
choices?: AnswerValidator[];
continueOnFailure?: boolean;
failedToAnswerResponse?: string;
invalidAnswerResponse?: string;
maxRetries?: number;
type?: symbol;
validateAnswer?: AnswerValidator;
}
declare const QuestionAnswer: unique symbol;
declare const QuestionAnswerValidator: unique symbol;
declare const QuestionBody: unique symbol;
declare const QuestionChoices: unique symbol;
declare const QuestionFailedToAnswerRes: unique symbol;
declare const QuestionInvalidAnswerRes: unique symbol;
declare const QuestionIsAnswered: unique symbol;
declare const QuestionIsFailed: unique symbol;
declare const QuestionMaxRetries: unique symbol;
declare const QuestionShouldSendInvalidRes: unique symbol;
declare const QuestionType: unique symbol;
export declare const QuestionEvaluate: unique symbol;
export declare const QuestionSetIsAnswered: unique symbol;
export declare const QuestionSetIsFailed: unique symbol;
export declare const QuestionShouldContinueOnFail: unique symbol;
export declare const QuestionSetShouldSendInvalidRes: unique symbol;
export default class Question extends Action {
static Types: QuestionTypes;
static validString(s: any): boolean;
private [QuestionAnswer];
private [QuestionAnswerValidator];
private [QuestionBody];
private [QuestionChoices];
private [QuestionFailedToAnswerRes];
private [QuestionInvalidAnswerRes];
private [QuestionIsAnswered];
private [QuestionIsFailed];
private [QuestionMaxRetries];
private [QuestionShouldSendInvalidRes];
private [QuestionType];
[QuestionShouldContinueOnFail]: boolean;
constructor(body: string, { choices, continueOnFailure, failedToAnswerResponse, invalidAnswerResponse, maxRetries, type, validateAnswer, }?: QuestionOptions);
private getQuestionContext;
private handleInvalidAnswer;
private setAnswer;
readonly answer: string | number;
readonly body: string;
readonly choices: AnswerValidator[];
readonly failedAnswerResponse: string;
readonly invalidAnswerResponse: string;
readonly isAnswered: boolean;
readonly isComplete: boolean;
readonly isFailed: boolean;
readonly maxRetries: number;
readonly type: symbol;
readonly shouldSendInvalidRes: boolean;
readonly validateAnswer: AnswerValidator;
[QuestionEvaluate](req: TwilioWebhookRequest, state: SmsCookie): Promise<void>;
[QuestionSetIsAnswered](): void;
[QuestionSetIsFailed](): void;
[QuestionSetShouldSendInvalidRes](): void;
}
export {};