Как я могу получить значение слота Alexa в лямбда-функции ASK-SDK? - PullRequest
0 голосов
/ 14 октября 2018

Я хочу получить доступ к значению слота '{cityName}' в моей лямбда-функции.Я использую ASK-SDK.Что такое код или синтаксис Python для этого?

My Alexa Console Picture

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Вышеуказанный метод верен, но он не сработал для меня.
Другой ответ на поставленный выше вопрос следующий:

item, is_resolved = util.get_intent_(slots=handler_input.request_envelope.request.intent.slots)

, а затем определите функцию get_intent_ следующим образом:

import random
import six
from ask_sdk_core.handler_input import HandlerInput
from ask_sdk_core.utils import is_request_type

def get_intent_(slots):
    item = []
    resolved_item = None
    for _,slot in six.iteritems(slots):
        if slot.value is not None:
            resolved_item = slot.value

    if resolved_item is not None:
        return resolved_item, True
    else:
        return resolved_item, False

Этот метод выглядит сложным, но рекомендуется определить функцию и вызвать ее.

0 голосов
/ 15 октября 2018

Если WeatherApiCallIntent запускается со значением слота CityName, запрос JSON будет выглядеть следующим образом:

"request": {
        "type": "IntentRequest",
        "requestId": "amzn1.echo-api.request.xxxxx-xxx-xxx-xx-xxxxxxx",
        "timestamp": "2018-09-12T13:35:25Z",
        "locale": "en-US",
        "intent": {
            "name": "WeatherApiCallIntent",
            "confirmationStatus": "NONE",
            "slots": {
                "CityName ": {
                    "name": "CityName",
                    "value": "Kochi",
                    ...

В обработчике WeatherApiCallIntent вы можете использовать

print("Slot: " + intent_request['intent']['slots']['CityName']['value'])
...