Alexa вызывает намерение с определенными значениями слотов, но не с другими? - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть обработчик, который должен вызываться «да», «нет» или «повторить».На «нет» и «повторить» это работает абсолютно идеально.На «да» я получаю ошибку.Затем я проверяю Cloudwatch и он говорит, что не может найти подходящий обработчик.Однако, когда я тестирую в Lambda значение «да» в значении слота, оно отлично работает.

Что здесь может произойти?Есть ли какая-то причина, по которой «да» не должно сработать?Что-то связанное с AMAZON.YesIntent, может быть?

Вот фрагмент из моей модели взаимодействия намерений:

       {
            "name": "RoundingVerifyIntent",
            "slots": [
                {
                    "name": "RoundingVerify",
                    "type": "ROUNDING_VERIFY"
                }
            ],
            "samples": [
                "{RoundingVerify}"
            ]
        },

А вот детали типа слота:

{
                    "name": "ROUNDING_VERIFY",
                    "values": [
                        {
                            "name": {
                                "value": "no",
                                "synonyms": [
                                    "that's wrong",
                                    "wrong",
                                    "nah",
                                    "noooo",
                                    "no way",
                                    "nope",
                                    "nah"
                                ]
                            }
                        },
                        {
                            "name": {
                                "value": "yes",
                                "synonyms": [
                                    "correct",
                                    "that's correct",
                                    "yop",
                                    "yup",
                                    "yep",
                                    "yeah"
                                ]
                            }
                        },
                        {
                            "name": {
                                "value": "repeat",
                                "synonyms": [
                                    "pardon me",
                                    "say again",
                                    "repeat again"
                                ]
                            }
                        }
                    ]
                },

ОБНОВЛЕНИЕ: Я попытался добавить директиву elicit slot, чтобы подтолкнуть прямо в желаемое намерение и извлечь слот и при этом сохранить то же поведение ... любая помощь приветствуется.

UPDATE2: Хорошо, я получилэто работает после того, как я отредактировал директиву.Это заставило его работать.

.addDirective({
          "type": "Dialog.ElicitSlot",
          "slotToElicit": "RoundingVerify",
          "updatedIntent": {
            "name": "RoundingVerifyIntent",
            "confirmationStatus": "NONE",
            "slots": {
              "RoundingVerify": {
                "name": "RoundingVerify",
                "value": "yes",
                "resolutions": {},
                "confirmationStatus": "NONE"
              }
            }
          }
        })

Я предполагал, что если я добавлю туда значение, оно автоматически установит его на да, а это не то, чего я хочу ... но по какой-то причине он ждет ввода пользователя,Может кто-нибудь сказать мне, почему это так?

Большое спасибо.

Все еще убежден, что мой первый метод должен был сработать и может быть ошибка, но это, по общему признанию, лучшее решение.

...