2

簡単なテスト カスタム Alexa スキルを作成しようとしていますが、何が問題なのかわかりません。たぶん、経験豊富な誰かが私が欠けているものを知っていますか?

呼び出し名

ホームシステム

インテント スキーマ

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

サンプル発話

TestIntent set state {test}
TestIntent add state

私は自分自身の自己ホスト型サーバーに自分の小さな Python サーバーを作成しました。同じシステムで既にニュース フラッシュ スキルが動作しています。私はドキュメントを見て、チュートリアルを読んで多くの時間を費やしてきました。

私が得る結果はこれです:

LaunchRequestは、Service Simulator と Echo の両方で機能します期待される JSON で HTTP POST がトリガーされ、期待される音声応答が返されます。

ただし、IntentRequestは Service Simulator からのみ機能し、Echo では機能しません。たとえば、「アレクサホームシステムの状態を8に設定」と言いますが、サーバーへのリクエストは行われず、エコーは音を出すだけで、それだけです。

これをデバッグする方法がわかりません。スキルは US スキルで、Echo は US モードです。ヨーロッパと北米の両方でエンドポイントを設定しようとしました。さまざまなトリガー ワード、さまざまなスロット、スロットなしを試してみました。もちろん、[設定] -> [履歴] でデバイスが正しく認識されていることを確認しました。

次に何を試してみますか?これをデバッグする方法は?

4

1 に答える 1

2

私は問題を見つけました。それは古典的なPEBCAK (椅子とキーボードの間に問題が存在する) の問題でした。

インテント (トリガー ワードとインテントの両方を一度に含む 1 つの文) を呼び出す方法をもっと正確にする必要があることを見逃していました。有効で実用的な例は次のとおりです。

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/support-phrases-to-begin- a-conversation (テーブルまでスクロールダウン)

最後に、フィードバックをくれたu-genに感謝します。bstは興味深いプロジェクトでした (試したことはありません)。ラムダのようなホストされたソリューションを使用する場合、非常に役立つと思います。しかし、ドキュメントのおかげで、私のコードを単純化したプロジェクトであるflask-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)
于 2017-01-05T21:09:29.663 に答える