2

我是AWS新手。我使用aws lex和aws lambda c#來構建chatbot。我使用樣品AWS拉姆達C#程序如何解決此AWS lambda錯誤 - 發生錯誤:收到來自Lambda的錯誤響應:未處理?

namespace AWSLambda4 
{ 
    public class Function 
    { 

     /// <summary> 
     /// A simple function that takes a string and does a ToUpper 
     /// </summary> 
     /// <param name="input"></param> 
     /// <param name="context"></param> 
     /// <returns></returns> 
     public string FunctionHandler(string input, ILambdaContext context) 
     { 
      try 
      { 
       return input?.ToUpper(); 
      } 
      catch (Exception e) 
      { 

       return "sorry i could not process your request due to " + e.Message; 
      } 
     } 
    } 
} 

我創建在AWS時隙LEX映射第一參數輸入。但我總是得到這個錯誤發生錯誤:接收的錯誤響應從LAMBDA:未處理

在Chrome中的網絡選項卡中我可以看到錯誤 - 424無法依賴這是關係到身份驗證。

請幫助如何解決由aws lex使用的AWS lambda C#錯誤。我遇到了cloudwatch,但我不確定這一點。

謝謝!

回答

0

這裏是我工作:

萊克斯發送請求LexEvent類型,預計在LexResponse級響應type.So我改變了我的參數從stringLexEvent和返回類型從stringLexResponse

public LexResponse FunctionHandler(LexEvent lexEvent, ILambdaContext context) 
    { 
     //Your logic goes here. 
     IIntentProcessor process; 

     switch (lexEvent.CurrentIntent.Name) 
     { 
      case "BookHotel": 
       process = new BookHotelIntentProcessor(); 
       break; 
      case "BookCar": 
       process = new BookCarIntentProcessor(); 
       break;     
      case "Greetings": 
       process = new GreetingIntentProcessor(); 
       break; 
      case "Help": 
       process = new HelpIntentProcessor(); 
       break; 
      default: 
       throw new Exception($"Intent with name {lexEvent.CurrentIntent.Name} not supported"); 
     } 


     return process.Process(lexEvent, context);// This is my custom logic to return LexResponse 
    } 

但我不確定問題的根本原因。

+0

作爲@Repakula提到424錯誤響應似乎是一個Lex返回類型的問題?並且在使用和的NodeJS以下樣本結構我的情況IM等表示[此處](http://docs.aws.amazon.com/lex/latest/dg/lambda-input-response-format.html#using-lambda-響應格式) – yashhy

+0

我解決了這個問題,通過@的建議Repakula看到詳細的解答[這裏](https://stackoverflow.com/a/44182337/1778834) – yashhy

3

Lex和Lambda之間的通信不像普通函數那樣簡單。 Amazon Lex預計Lambda會以特定的JSON格式輸出,並且插槽詳細信息等數據也會以類似的JSON發送給Lambda。你可以在這裏找到他們的藍圖:Lambda Function Input Event and Response Format。確保你的C#代碼也以類似的方式返回JSON,這樣Lex可以理解並做進一步的處理。

希望它有幫助!

+1

LAMBDA雙雙處理和未處理的error.Since是未處理的錯誤的拉姆達方法本身不會被調用我guess.And法控制檯狀態'錯誤 - 424失敗Dependency'這是關係到authentication.So我認爲它更關係配置相關的錯誤,而不是編碼相關的錯誤。 – ManirajSS

+0

@ManirajSS我有一個錯誤,說'從Lambda接收到無效響應,並且在網絡選項卡中它似乎是424.你知道可能的路由原因嗎? – yashhy

+0

@yashhy我已經解決了我的問題。請看我的答案,並讓我知道你是否有任何疑問。 – ManirajSS