2017-01-05 5 views
2

Я связываюсь, чтобы сделать простой тестовый тест Alexa Skill, но я застрял, и я не уверен, в чем проблема. Может быть, кто-то более опытный знает, что мне не хватает?Alexa Echo Dot - проблемы с навыками ASK

Призвание Имя

домашняя система

Намерение схемы

{ 
    "intents": [ 
    { 
     "intent": "AMAZON.HelpIntent", 
     "slots": [] 
    }, 
    { 
     "intent": "TestIntent", 
     "slots": [ 
     {"name": "test", "type": "AMAZON.NUMBER"} 
     ] 
    } 
    ] 
} 

Примеры Высказывания

TestIntent set state {test} 
TestIntent add state 

Я написал свой собственный маленький сервер python на моем собственном самообслуживаемом сервере, у меня уже есть работающий навык новостей в той же системе. Я потратил много времени на документацию, чтение учебников, и я выгляжу так, как будто сделал то, что должен делать.

В результате я получаю это:

A LaunchRequest работает, как в Service Simulator и на Echo. Он запускает HTTP POST с ожидаемым JSON, и я получаю ожидаемый речевой ответ.

Но IntentRequest работает только с сервис-симулятора, он никогда не работает на Echo. Я говорю, например, «alexa home system set state eight», никаких запросов на мой сервер не поступает, эхо просто создает звук, и все.

Я понятия не имею, как отлаживать это, умение - это умение США, а мое эхо в режиме США. Я попытался установить конечную точку как в Европе, так и в Северной Америке. Пробовал разные триггерные слова, разные слоты, нет слотов ... и я, конечно же, проверил в разделе «Настройки -> История», чтобы убедиться, что устройство правильно меня поняло.

Любая идея, что попробовать дальше? Как отладить это?

+0

Работает ли он на echosim.io? , также почему бы не использовать лямбда-сервер? –

+0

@ u.gen echosim.io отлично имитирует мое эхо, та же проблема. Это звучало намного проще и быстрее, чтобы просто принять его. Но это то, что нужно попробовать. Меня больше смущает то, что LaunchRequest работает, но IntentRequest даже не вызывает ответ или запрос на мой сервер. – nsg

+0

Попробуйте настроить локальную среду для разработчиков с помощью этого инструмента https://github.com/bespoken/bst и использовать lambdas, что должно дать вам довольно хорошую идею, почему ваш запрос не выполняется. http://docs.bespoken.tools/en/latest/tutorials/tutorials/en/latest/tutorials/tutorial_lambda_nodejs/ –

ответ

2

Я нашел проблему, это была классическая проблема PEBCAK (проблема существует между стулом и клавиатурой).

Я пропустил, что должен был быть более точным, как вызвать намерение (одно предложение, содержащее как триггерное слово, так и намерение за один раз). Пример из действительных и рабочих примеров, является:

Alexa, ask home system to set state nine 
Alexa, set state twelve using home system 
Alexa, tell home system set state one 

Я понял это, когда я использовал альтернативный 2-ступенчатый производит вызов, и понял, что он работал. Это должно было быть так, как я вызвавшей мастерство, а не бэкенд:

Alexa, open home system 
(Alexa responds, and listens for the command) 
Set state to eight 
(Intent triggered, Alexa responds) 
  • Первый запрос выше является LaunchRequest
  • В LaunchRequest реагирует с shouldEndSession: false, если не сеанс закончится , Это карты до question(...) в моем коде.

Есть много больше способов вызвать навыки, полный список см этой страницы: https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/supported-phrases-to-begin-a-conversation (прокрутите вниз к таблицам)

Наконец спасибо u-gen за обратную связь, bst был интересным проектом (никогда не пробовал), думаю, это может быть очень полезно, если вы используете размещенное решение, такое как лямбда. Но благодаря документам я нашел flash-ask, проект, который упростил мой код.

Наконец, часть python моего тестового проекта, если кому-то еще нравится попробовать его.

#!/usr/bin/env python 

from flask import Flask, render_template 
from flask_ask import Ask 
from flask_ask import statement, question, convert_errors 

app = Flask(__name__) 
ask = Ask(app, '/ask/') 

@app.route('/') 
def hello_world(): 
    return 'Hello, World!' 

@ask.launch 
def launched(): 
    return question('Welcome to Foo') 

@ask.intent('TestIntent') 
def hello(): 
    return statement('Hello, world') 

@ask.session_ended 
def session_ended(): 
    return "", 200 

if __name__ == '__main__': 
    app.run(debug=True, host="0.0.0.0", threaded=True) 
+0

Было немного запутанно, что «Alexa, домашняя система установила состояние девять» работала в симулятор, но я должен был сказать, по крайней мере, «Алекса, спросите, что установлено в домашней системе девяти». Хорошо знать! – nsg

Смежные вопросы