2017-09-20 9 views

答えて

3

ワトソンの会話には、ダイアログフローで必要なものを保存するコンテキスト変数があります。

ダイアログはステートレスです。つまり、ユーザーとの1つのインターチェンジから次の情報への情報は保持されません。あなたのアプリケーションは、必要な継続的な情報を維持する責任がある です。 しかし、アプリケーションはダイアログに情報を渡すことができ、 ダイアログでこの情報を更新し、 アプリケーションに戻すことができます。これはcontext variablesを使用して行います。

context variableは、ノードで定義する変数で、 はオプションでデフォルト値を指定します。他のノードまたはアプリケーション ロジックは、後でcontext variableの値を設定または変更できます(context.variableName = "Jon"など)。

あなたは条件ダイアログノード状態から コンテキスト変数を参照することによりcontextvariable値に対してノードを実行 するか否かを決定することができます。また、外部サービスまたはユーザーが提供する の値に応じて、異なる応答を表示するダイアログの ダイアログの応答条件からcontext variableを参照することができます。

だから、あなたは簡単なように、1つのコンテキスト変数に名前を保存することができます

{ 
    "context": { 
    "nameHere": "<? @sys-person ?>" 
    }, 
    "output": { 
    "text": { 
     "values": [ 
     "Your name is $nameHere." 
     ], 
     "selection_policy": "sequential" 
    } 
    } 
} 

そして、あなたは$nameHereを使用して、このコンテキスト変数にアクセスすることができます。 JSONの例[Advanced JSON]では、チェックするフォームを1つ表示します。

  • コンテキスト変数hereの公式ドキュメントを参照してください。
+0

そのSayuriに感謝します。私は、ユーザが既に別のノードの会話で彼/彼女の名前をすでに入力しているかどうかをチェックする必要があります。コンテキスト変数-sys-nameが空であるかどうかを確認する条件を設定する必要があります。内容が "hi" Jon '...の場合は "name"を設定します。どのようにこのような条件を設定しますか? – jonnyf

+0

** [Stackoverflow Guide](https://stackoverflow.com/help/accepted-answer)に従ってください。あなたの質問に答えるには、 'botが$ nameを認識するなら、あなたの名前は$ nameHere? 'という条件で作成し、'!'否定的な条件のために'、ボットが認識したら!$ nameHere response:あなたの名前を入力してください '...もっと情報が必要な場合は、新しい質問をしてください。 –

1

さゆりによって示唆されるように、ユーザー名のコンテキスト変数を作成し、ダイアログで、このコンテキスト変数をチェックし、あなたが使用できるダイアログで

if $nameHere: then: your response

これは必須の場合変数を使用すると、スロットを使用することもできます。これは、単一ノードでユーザ名を確認して尋ねることができます

関連する問題