[@types/aws-lambda] Add Amazon Lex events (#32502)

* [aws-lambda] Add types for Amazon Lex events

* fix: Fixed Typo in `AWSLambda.LexDialogActionClose.fulfillmentState`

* fix: removed a blank line
This commit is contained in:
Declan
2019-01-28 20:48:38 +00:00
committed by Pranav Senthilnathan
parent 6a792386c1
commit 480b0531a3
2 changed files with 207 additions and 0 deletions

View File

@@ -1056,3 +1056,113 @@ const firehoseEventHandler: AWSLambda.FirehoseTransformationHandler = (
]
});
};
declare let lexEvent: AWSLambda.LexEvent;
lexEvent = {
currentIntent: {
name: 'intent-name',
slots: {
slot1: null,
slot2: 'value2',
},
slotDetails: {
slot1: {
resolutions: [
{ value: 'value1' },
],
originalValue: 'originalValue',
}
},
confirmationStatus: 'None',
},
bot: {
name: 'bot name',
alias: 'bot alias',
version: 'bot version',
},
userId: 'User ID specified in the POST request to Amazon Lex.',
inputTranscript: 'Text used to process the request',
invocationSource: 'FulfillmentCodeHook',
outputDialogMode: 'Text',
messageVersion: '1.0',
sessionAttributes: {
key1: 'value1',
key2: 'value2',
},
requestAttributes: {
key1: 'value1',
key2: 'value2',
}
};
declare let lexResult: AWSLambda.LexResult;
declare let lexDialogAction: AWSLambda.LexDialogAction;
declare let lexDialogActionBase: AWSLambda.LexDialogActionBase;
declare let lexDialogActionClose: AWSLambda.LexDialogActionClose;
declare let lexDialogActionConfirmIntent: AWSLambda.LexDialogActionConfirmIntent;
declare let lexDialogActionDelegate: AWSLambda.LexDialogActionDelegate;
declare let lexDialogActionElicitIntent: AWSLambda.LexDialogActionElicitIntent;
declare let lexDialogActionElicitSlot: AWSLambda.LexDialogActionElicitSlot;
declare let lexGenericAttachment: AWSLambda.LexGenericAttachment;
lexResult = {
sessionAttributes: {
attrib1: 'Value One',
},
dialogAction: {
type: 'Close',
fulfillmentState: 'Failed',
},
};
str = lexGenericAttachment.title;
str = lexGenericAttachment.subTitle;
str = lexGenericAttachment.imageUrl;
str = lexGenericAttachment.attachmentLinkUrl;
str = lexGenericAttachment.buttons[0].text;
str = lexGenericAttachment.buttons[0].value;
lexDialogAction.type === 'Close';
lexDialogAction.type === 'ConfirmIntent';
lexDialogAction.type === 'Delegate';
lexDialogAction.type === 'ElicitIntent';
lexDialogAction.type === 'ElicitSlot';
lexDialogActionBase.message!.contentType === 'CustomPayload';
lexDialogActionBase.message!.contentType === 'PlainText';
lexDialogActionBase.message!.contentType === 'SSML';
str = lexDialogActionBase.message!.content;
num = lexDialogActionBase.responseCard!.version;
lexDialogActionBase.responseCard!.contentType === 'application/vnd.amazonaws.card.generic';
// $ExpectType LexGenericAttachment
lexDialogActionBase.responseCard!.genericAttachments[0];
lexDialogActionClose.type === 'Close';
lexDialogActionClose.fulfillmentState === 'Failed';
lexDialogActionClose.fulfillmentState === 'Fulfilled';
lexDialogActionConfirmIntent.type === 'ConfirmIntent';
str = lexDialogActionConfirmIntent.intentName;
strOrNull = lexDialogActionConfirmIntent.slots['example'];
lexDialogActionDelegate.type === 'Delegate';
strOrNull = lexDialogActionDelegate.slots['example'];
lexDialogActionElicitIntent.type === 'ElicitIntent';
lexDialogActionElicitSlot.type === 'ElicitSlot';
strOrNull = lexDialogActionElicitSlot.slots['example'];
str = lexDialogActionElicitSlot.slotToElicit;
str = lexDialogActionElicitSlot.intentName;
const lexEventHandler: AWSLambda.LexHandler = async (
event: AWSLambda.LexEvent,
context: AWSLambda.Context,
) => {
// $ExpectType LexEvent
event;
// $ExpectType Context
context;
str = context.functionName;
return lexResult;
};

View File

@@ -876,6 +876,100 @@ export interface SQSMessageAttributes {
[name: string]: SQSMessageAttribute;
}
// Lex
// https://docs.aws.amazon.com/lambda/latest/dg/invoking-lambda-function.html#supported-event-source-lex
export interface LexEvent {
currentIntent: {
name: string;
slots: { [name: string]: string | null };
slotDetails: LexSlotDetails;
confirmationStatus: 'None' | 'Confirmed' | 'Denied';
};
bot: {
name: string;
alias: string;
version: string;
};
userId: string;
inputTranscript: string;
invocationSource: 'DialogCodeHook' | 'FulfillmentCodeHook';
outputDialogMode: 'Text' | 'Voice';
messageVersion: '1.0';
sessionAttributes: { [key: string]: string };
requestAttributes: { [key: string]: string } | null;
}
export interface LexSlotResolution {
value: string;
}
export interface LexSlotDetails {
[name: string]: {
// The following line only works in TypeScript Version: 3.0, The array should have at least 1 and no more than 5 items
// resolutions: [LexSlotResolution, LexSlotResolution?, LexSlotResolution?, LexSlotResolution?, LexSlotResolution?];
resolutions: LexSlotResolution[]
originalValue: string;
};
}
export interface LexGenericAttachment {
title: string;
subTitle: string;
imageUrl: string;
attachmentLinkUrl: string;
buttons: Array<{
text: string;
value: string;
}>;
}
export interface LexDialogActionBase {
type: 'Close' | 'ElicitIntent' | 'ElicitSlot' | 'ConfirmIntent';
message?: {
contentType: 'PlainText' | 'SSML' | 'CustomPayload';
content: string;
};
responseCard?: {
version: number;
contentType: 'application/vnd.amazonaws.card.generic';
genericAttachments: LexGenericAttachment[];
};
}
export interface LexDialogActionClose extends LexDialogActionBase {
type: 'Close';
fulfillmentState: 'Fulfilled' | 'Failed';
}
export interface LexDialogActionElicitIntent extends LexDialogActionBase {
type: 'ElicitIntent';
}
export interface LexDialogActionElicitSlot extends LexDialogActionBase {
type: 'ElicitSlot';
intentName: string;
slots: { [name: string]: string | null };
slotToElicit: string;
}
export interface LexDialogActionConfirmIntent extends LexDialogActionBase {
type: 'ConfirmIntent';
intentName: string;
slots: { [name: string]: string | null };
}
export interface LexDialogActionDelegate {
type: 'Delegate';
slots: { [name: string]: string | null };
}
export type LexDialogAction = LexDialogActionClose | LexDialogActionElicitIntent | LexDialogActionElicitSlot | LexDialogActionConfirmIntent | LexDialogActionDelegate;
export interface LexResult {
sessionAttributes?: { [key: string]: string };
dialogAction: LexDialogAction;
}
/**
* AWS Lambda handler function.
* http://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html
@@ -938,6 +1032,9 @@ export type ScheduledHandler = Handler<ScheduledEvent, void>;
// TODO: Alexa
export type LexHandler = Handler<LexEvent, LexResult>;
export type LexCallback = Callback<LexResult>;
export type APIGatewayProxyHandler = Handler<APIGatewayProxyEvent, APIGatewayProxyResult>;
export type APIGatewayProxyCallback = Callback<APIGatewayProxyResult>;
export type ProxyHandler = APIGatewayProxyHandler; // Old name