Alexa только вызывает LauchRequest, а не намерения - PullRequest
0 голосов
/ 27 июня 2018

Привет. Я следую учебнику по фактам, используя Python для Alexa по этой ссылке: https://github.com/alexa/skill-sample-python-fact

Моя проблема в том, что Alexa запускает только «LaunchRequest»

def lambda_handler(event, context):
    # App entry point 

    #print(event)

    if event['session']['new']:
        on_session_started()

    if event['request']['type'] == "LaunchRequest":
        return on_launch(event['request'])
    elif event['request']['type'] == "IntentRequest":
        return on_intent(event['request'], event['session'])
    elif event['request']['type'] == "SessionEndedRequest":
        return on_session_ended()

Но он не выполняет "IntentRequest" для "GetNewFactIntent"

def on_intent(request, session):
    """ called on receipt of an Intent  """

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

    # process the intents
    if intent_name == "GetNewFactIntent":
    return get_fact_response()
    elif intent_name == "AMAZON.HelpIntent":
        return get_help_response()
    elif intent_name == "AMAZON.StopIntent":
        return get_stop_response()
    elif intent_name == "AMAZON.CancelIntent":
        return get_stop_response()
    elif intent_name == "AMAZON.FallbackIntent":
        return get_fallback_response()
    else:
        print("invalid Intent reply with help")
        return get_help_response()

Из-за этого допустимо только имя вызова при вызове функции, а примерное высказывание из "GetNewFactIntent" не вызывает функцию. Я предполагаю, что у него есть проблемы с JSON, который передается в AWS Lambda. Он не получает запрос IntentRequest или не может найти

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

Схема JSON:

{
    "interactionModel": {
        "languageModel": {
            "invocationName": "space facts",
            "intents": [
                {
                    "name": "AMAZON.CancelIntent",
                    "samples": []
                },
                {
                    "name": "AMAZON.HelpIntent",
                    "samples": []
                },
                {
                    "name": "AMAZON.StopIntent",
                    "samples": []
                },
                {
                    "name": "AMAZON.FallbackIntent",
                    "samples": []
                },
                {
                    "name": "GetNewFactIntent",
                    "slots": [],
                    "samples": [
                        "a fact",
                        "a space fact",
                        "tell me a fact",
                        "tell me a space fact",
                        "give me a fact",
                        "give me a space fact",
                        "tell me trivia",
                        "tell me a space trivia",
                        "give me trivia",
                        "give me a space trivia",
                        "give me some information",
                        "give me some space information",
                        "tell me something",
                        "give me something"
                    ]
                }
            ],
            "types": []
        }
    }
}

1 Ответ

0 голосов
/ 02 июля 2018

Моя проблема была в том, что я не говорю имя своего вызова. Итак, урок был: перед намерением вызов сначала.

...