UNPKG

twilly

Version:

Node.js Twilio API abstraction layer for Express applications

86 lines (85 loc) 3.34 kB
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 {};