Как заставить Alexa правильно реагировать на: Alexa, спросите (скажите) [имя вызова] (связующее слово, если есть) [высказывания намерений]?

Когда я говорю: «Алекса, открой/запусти/запусти Mighty Righty» Она отвечает так, как задумано. Когда я говорю «Алекса, СПРОСИТЕ могучий Правый, кто прав, я или ты», она не запускает приложение и просто говорит: «Извините, я не знаю этого». На самом деле из-за этого я не смог пройти проверку функции для сертификации приложений Amazon (я думаю). Вот результат функционального теста:


1 Требуется исправление
Навык не должен отвечать на запросы о намерениях пустым текстом или SSML в повторной подсказке, оставляя сеанс навыка открытым.
Навык отвечает пользователям пустой голосовой подсказкой, когда сеанс навыка открыт. Обратите внимание, что когда сеанс навыка открыт, навык не должен возвращать пустой текст или беззвучный ответ ssml для любых поддерживаемых намерений в рамках навыка.
Ниже приведен список намерений, которые ответили молчаливым повторным запросом.
Имя намерения — игрокБио, высказывание — кто прав я или она
Имя намерения — игрокБио, высказывание — алекса спроси могучего правши кто прав я или мои дети
Имя намерения — игрокБио, высказывание — кто прав я или ты

Я пытался играть с LaunchRequest IntentRequest SessionEndedRequest но я не кодер. Я просто следовал учебнику и зашел так далеко. Мне просто нужно исправить ту ошибку, которую обнаружил тест Amazon «RUN». И я смогу опубликовать приложение.

#------------------------------Part1--------------------------------
# In this part we define a list that contains the player names, and 
# a dictionary with player biographies

Player_LIST = ["me or my wife", "me or my husband", "me or you"]

Player_BIOGRAPHY = {"me or my wife": ["She is. Do as she says, and you'll be OK.", "You", "Of course, your wife", "No doubt, it's you"],

"me or my husband": ["He is", "You are right", "He is not right", "Your husband. He is always right."],

"me or you": ["me", "You are, ... I mean... you are wrong, of course", "of course me", "It's me, don't you know that, my friend?", "you yourself, what do you think? Of course it's me", "I always know who is right, me or not me, so, it's meeeeee", "what do you think? I am Mighty Righty, so I am RIGHT"]}

#------------------------------Part2--------------------------------
# Here we define our Lambda function and configure what it does when 
# an event with a Launch, Intent and Session End Requests are sent. # The Lambda function responses to an event carrying a particular 
# Request are handled by functions such as on_launch(event) and 
# intent_scheme(event).

def lambda_handler(event, context):
    if event['session']['new']:
        on_start()
    if event['request']['type'] == "LaunchRequest":
        return on_launch(event)
    elif event['request']['type'] == "IntentRequest":
        return intent_scheme(event)
    elif event['request']['type'] == "SessionEndedRequest":
        return on_end()

#------------------------------Part3--------------------------------
# Here we define the Request handler functions

def on_start():
    print("Session Started.")

def on_launch(event):
    onlunch_MSG = "Hi, start with the word. Me. For example: who is right, me or my husband?"
    reprompt_MSG = "you can say, who is right, me or my wife?"
    card_TEXT = "Who is right, me or... ?."
    card_TITLE = "Choose your question."
    return output_json_builder_with_reprompt_and_card(onlunch_MSG, card_TEXT, card_TITLE, reprompt_MSG, False)

def on_end():
    print("Session Ended.")

#-----------------------------Part3.1-------------------------------
# The intent_scheme(event) function handles the Intent Request. 
# Since we have a few different intents in our skill, we need to 
# configure what this function will do upon receiving a particular 
# intent. This can be done by introducing the functions which handle 
# each of the intents.

def intent_scheme(event):

    intent_name = event['request']['intent']['name']

    if intent_name == "playerBio":
        return player_bio(event)        
    elif intent_name in ["AMAZON.NoIntent", "AMAZON.StopIntent", "AMAZON.CancelIntent"]:
        return stop_the_skill(event)
    elif intent_name == "AMAZON.HelpIntent":
        return assistance(event)
    elif intent_name == "AMAZON.FallbackIntent":
        return fallback_call(event)

#---------------------------Part3.1.1-------------------------------
# Here we define the intent handler functions

import random # this can be at the top of the file too
def player_bio(event):
    name=event['request']['intent']['slots']['player']['value']
    player_list_lower=[w.lower() for w in Player_LIST]
    if name.lower() in player_list_lower:
        reprompt_MSG = ""
        card_TEXT = "You've picked " + name.lower()
        card_TITLE = "You've picked " + name.lower()
        return output_json_builder_with_reprompt_and_card(random.choice(Player_BIOGRAPHY[name.lower()]), card_TEXT, card_TITLE, reprompt_MSG, False)
    else:
        wrongname_MSG = "Some questions may not yet be present in my database. Try to rephrase your sentence."
        reprompt_MSG = "For example, who is right, me or my wife?"
        card_TEXT = "Use the full question."
        card_TITLE = "Wrong question."
        return output_json_builder_with_reprompt_and_card(wrongname_MSG, card_TEXT, card_TITLE, reprompt_MSG, False)

def stop_the_skill(event):
    stop_MSG = "Bye for now and feel free to ask mighty righty who is right"
    reprompt_MSG = ""
    card_TEXT = "Bye."
    card_TITLE = "Bye Bye."
    return output_json_builder_with_reprompt_and_card(stop_MSG, card_TEXT, card_TITLE, reprompt_MSG, True)

def assistance(event):
    assistance_MSG = "start with the word. Me."
    reprompt_MSG = "For example, who is right me or him"
    card_TEXT = "You've asked for help."
    card_TITLE = "Help"
    return output_json_builder_with_reprompt_and_card(assistance_MSG, card_TEXT, card_TITLE, reprompt_MSG, False)

def fallback_call(event):
    fallback_MSG = "Try to say, for example, who is right, me or him?"
    reprompt_MSG = "Certain answers may not yet be in my database. Use personal pronouns, for example: me, or her, me, or him, me, or them. They can cover pretty much everybody"
    card_TEXT = "You've asked a wrong question."
    card_TITLE = "Wrong question."
    return output_json_builder_with_reprompt_and_card(fallback_MSG, card_TEXT, card_TITLE, reprompt_MSG, False)

#------------------------------Part4--------------------------------
# The response of our Lambda function should be in a json format. 
# That is why in this part of the code we define the functions which 
# will build the response in the requested format. These functions
# are used by both the intent handlers and the request handlers to 
# build the output.

def plain_text_builder(text_body):
    text_dict = {}
    text_dict['type'] = 'PlainText'
    text_dict['text'] = text_body
    return text_dict

def reprompt_builder(repr_text):
    reprompt_dict = {}
    reprompt_dict['outputSpeech'] = plain_text_builder(repr_text)
    return reprompt_dict

def card_builder(c_text, c_title):
    card_dict = {}
    card_dict['type'] = "Simple"
    card_dict['title'] = c_title
    card_dict['content'] = c_text
    return card_dict    

def response_field_builder_with_reprompt_and_card(outputSpeach_text, card_text, card_title, reprompt_text, value):
    speech_dict = {}
    speech_dict['outputSpeech'] = plain_text_builder(outputSpeach_text)
    speech_dict['card'] = card_builder(card_text, card_title)
    speech_dict['reprompt'] = reprompt_builder(reprompt_text)
    speech_dict['shouldEndSession'] = value
    return speech_dict

def output_json_builder_with_reprompt_and_card(outputSpeach_text, card_text, card_title, reprompt_text, value):
    response_dict = {}
    response_dict['version'] = '1.0'
    response_dict['response'] = response_field_builder_with_reprompt_and_card(outputSpeach_text, card_text, card_title, reprompt_text, value)
    return response_dict

Я ожидаю, что сообщение об ошибке «1 Fixed Required» исчезнет. Я смогу отправить свое приложение на Amazon. Пожалуйста, помогите мне опубликовать мое приложение!

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
381
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема ясна и проявляется в коде. У вас есть пустые повторные подсказки, которые не разрешены. Вам нужно поставить текст переподсказки во всех местах, где у вас есть reprompt_MSG = ""

Я думаю, что это еще один вопрос, который я должен открыть, чтобы спросить, как заставить Алексу реагировать на: Алекса, спроси Могущественного Райти, кто прав, я или моя жена? Вместо длительного процесса: Alexa, откройте Mighty Righty. (добро пожаловать сюда) Кто прав, я или моя жена? Итак, мой вопрос: можете ли вы ответить на него здесь или мне нужно открыть другой вопрос на этом сайте? Спасибо за помощь!

Dilshod 31.05.2019 01:35

Привет. Тот факт, что функциональные тесты пройдены, не имеет ничего общего с некоторыми аспектами, которые будут обнаружены сертификационной командой (людьми), и они отклонят навык и отправят вам отзыв о пустом повторном запросе. Функциональные тесты запускаются автоматически. Сертификационные испытания проводятся людьми. Это может вам помочь: developer.amazon.com/blogs/alexa/post/… Пожалуйста, создайте еще один вопрос в другой теме, и я пришлю вам пример

German 31.05.2019 14:17

Спасибо Герман за совет. Я создал еще один вопрос. stackoverflow.com/questions/56403361/…

Dilshod 01.06.2019 04:17

Другие вопросы по теме