У меня возникли некоторые трудности с проблемой AWS, которая, кажется, не так хороша в документации.
У меня есть моя лямбда-функция здесь:
public async Task<string> FunctionHandler(ConnectRequest request, ILambdaContext context)
{
AmazonLexClient lexClient = new AmazonLexClient();
var response = new PostTextResponse();
PostTextRequest postRequest = new PostTextRequest();
postRequest.BotName = "X";
postRequest.BotAlias = "X";
postRequest.UserId = Guid.NewGuid().ToString();
postRequest.InputText = "What Time Is My Appointment?";
try
{
response = await lexClient.PostTextAsync(postRequest);
context.Logger.Log(response.IntentName);
context.Logger.Log(response.DialogState);
}
catch (Exception ex)
{
context.Logger.Log($"EXCEPTION CAUGHT: {Environment.NewLine} {ex.ToJson()} {Environment.NewLine} {response.Message} {response.IntentName} {response.SlotToElicit}");
return "Error";
}
context.Logger.Log($"Success from lambda {Environment.NewLine} Message: {response.Message} {Environment.NewLine} " +
$"Dialog State:{response.DialogState}");
return "Success";
}
Я вызываю это из потока соединения следующим образом:
И в ответ я получаю:
"ErrorType": 2,
"ErrorCode": "DependencyFailedException",
"RequestId": "",
"StatusCode": 424,
"Message": "Invalid Lambda Response: Received error response from Lambda: Unhandled",
"Data": {},
"InnerException": {
"Response": {
"StatusCode": 424,
"IsSuccessStatusCode": false,
"ContentType": "application/json",
"ContentLength": 85,
"ResponseBody": {}
},
"Message": "Exception of type 'Amazon.Runtime.Internal.HttpErrorResponseException' was thrown."
То, что я прочитал в Документации Amazon PostText может означать пару вещей:
Если у Amazon Lex недостаточно прав для вызова лямбды
функция.
Если лямбда-функция выполняется более 30 секунд.
Если лямбда-функция выполнения возвращает диалоговое действие Delegate
без удаления значений слотов.
Я подтвердил, что у моей Lambda есть разрешение на использование PostText
и доступ Lex
. Я безуспешно пытался изменить тип возвращаемого значения моей функции на PostTextReponse
, поэтому я не уверен, куда идти дальше, документации для такого рода вещей не так много.
Любая помощь приветствуется, спасибо!