AWS Lex не определяет ответ, если по переменной - PullRequest
1 голос
/ 08 марта 2019

Ответ ниже лямбда-кода не принимается lex, но в возвращает оператор, если я изменяю значение json slots как slot объявленная переменная, то работает, т.е. ответ о принятии lex. Это сбивает с толку, потому что переменная slot и переменная d имеют одно и то же значение, пожалуйста, найдите мой скриншот журнала наблюдения за облаками, прикрепленный к вашему сведению.

def lambda_handler(event,context):
    slot=event['currentIntent']['slots']
    d="{'Intro': None, 'Start': None, 'ReturnBooking': None, 'name': None, 'pickup': None, 'conformation': None, 'location': None, 'Count': None, 'comfort': None}"
    print("using dict:",slot,"using variable:",d)
    return {  
       "dialogAction": {
   "type": "Delegate",
   "slots": d
  }
          }

enter image description here

Пожалуйста, помогите мне, если кто-нибудь выяснил.

1 Ответ

3 голосов
/ 09 марта 2019

Если в слоте нет значения, оно должно быть null, а не None.Похоже, Cloudwatch регистрирует null как None для вас.И это должно быть разницей между вашими переменными: slot и d.

Так вот что d должно быть:

d="{'Intro': null, 'Start': null, 'ReturnBooking': null, 'name': null, 'pickup': null, 'conformation': null, 'location': null, 'Count': null, 'comfort': null}"

Но на самом деле нет причин для воссозданиястрока для слотов вашего намерения.Вы должны просто передать переменную slots=event['currentIntent']['slots'] обратно в Lex.И если вы хотите изменить слот в Lambda, обработайте его как массив и установите для одного из слотов новое значение:

slots['slotName'] = "new value";

Или вы можете удалить значение слота, установив для него значение null:

slots['slotName'] = null;

Затем верните slots обратно к Лексу.

...