2

私が実装しようとしているユースケースは次のとおりです。

  1. ユーザーは、Web ページの一部を読み上げるように要求します。たとえば、「説明を読む」、「背景を読む」、「メモを再生する」などです (Watson STT)。
  2. STT リクエストが (アプリ サーバー経由で) Conversation に渡され、解釈されます。応答はセクションの種類を示します (セクションの種類が正しくない場合は、今のところプロンプトを省略します)
  3. アプリ サーバーは、要求されたセクションの音声 (Watson TTS) を再生して、ユーザーに応答します。
  4. ユーザーは、選択したセクションの一時停止、停止、続行、または再生を要求します (STT)

問題があるのはステップ 4 です。リクエストが一時停止、停止、または続行の場合、それらはおそらく別の #intent によって処理される可能性があり、アプリ サーバーは<audio>それに応じてコマンドをコントロールに渡すだけです。ただし、リクエストがリプレイの場合は、最初にリクエストされたセクション タイプを知る必要があります。アプリサーバーがこれを機能させるにはコンテキストを設定する必要があると感じていますが、ドキュメントを読んでもその方法がわかりません。例やドキュメントは大歓迎です。

4

2 に答える 2

1

アプリ サーバーのコーディングを始めるときに Simon の提案を試してみますが、今のところ、API ツールを使用して自分のやりたいことを実行する方法を見つけました。関連するダイアログ フローのイメージを次に示します。

ここに画像の説明を入力

ユーザーは、#play_element + @recipeElement 条件をトリガーする「材料を読む」と言います。次に、「一時停止」と言うと、Watson はそれが @recipeElement 条件を参照していることを認識します。「Continue」または「Replay」と言う場合も、同じ要素を指します。ただし、「停止」はループを終了します。ここで、停止と言った後に一時停止、続行、または再生をどのように処理するかを理解する必要があります。現在、その他の条件が機能していないように見えるため、#play_element 条件に戻ります。

于 2016-09-25T13:58:22.467 に答える
1

すべての JSON 応答は、会話のロード マップです。したがって、応答から関連する System + Context オブジェクトを取得すると、それをフィードバックして、以前の応答を取得できます。

それはそれにアプローチする1つの方法です。

コンテキスト変数内のインテント/エンティティをキャプチャするには、出力ノードで次の操作を実行できます (詳細)。

{
  "output": {},
  "context": {
    "lastIntent": "<? intents[0].intent ?>",
    "lastConfidence": "<? intents[0].confidence ?>",
    "lastEntity": "<? entities[0].value ?>"
  }
}

現時点では、テキスト値として保存する場合にのみ機能します。したがって、次のことはできません。

"confidence": <? intents[0].confidence ?>,

条件ノードでは、次のようなことができます。

intents[0].intent == context.lastIntent
于 2016-09-25T05:30:46.173 に答える