2017-10-31 3 views
0

npmパッケージactions-on-googleのApiAiクラスを使用して、Google Assistantエージェントのコンテキスト(DialogFlow)を管理しようとしています。DialogFlowのコンテキストのライフタイムをリセットまたは上書きする

問題は次のとおりです。 npmパッケージを使用して寿命をリセットしたり、コンテキストを削除するにはどうすればよいですか?

私は簡単に新しい文脈の寿命を設定することができ、それは動作します。しかし

  1. どのように私は、コンテキストを削除しますか?
  2. コンテキストを別の番号に設定しても動作しないようです。すなわち、app.setContext('myContext',10)を設定してから、2つのインテント後に寿命が8になると、私はapp.setContext('myContext',10)を再度呼び出します。次のインテントでは、寿命はまだ7です。私が答えて(1)、コンテキストを削除できたら、それを削除してもう一度設定します。
+0

コンテキストの新しい有効期間値を設定したり変更したりするために使用しているコードを表示できますか? – Prisoner

+0

@Prisoner WebHook内のすべてのインテントハンドラでapp.setContext( 'myContext'、10)を呼び出すだけです。それは何も変わりません。 'app.setContext( 'newIntentThatIsNotSet'、10)'を呼び出すとうまく動作します。 – eran

+0

コンテキストが設定されると、カウントダウンされますが、リセットすることはできません。 – eran

答えて

1

コンテキストの期間を削除または上書きする方法はありません。代わりに、特定の時点で特定のコンテキストがアクティブであってはならないことが分かっている場合は、1回または2回続くコンテキストを設定し、各回の後にこれを実行します。これにより、会話をより詳細に制御できるため、突然もう必要のない10ターンの文脈を持たなくなります。あなたはちょうどあなたがクライアントを使用していない場合は、あなたが書くことができるapp.askまたはapp.tell

または

を呼び出す前に、これを行うことを確認してください
app.setContext('your_context',0)ようZEROまたは0に設定するコンテキストの寿命を削除するには

+0

はい、それも私の気持ちでした。 – eran

+0

もう1つの解決策は、dialogFlowコンソールで(コードでは実行できない)寿命が0の出力コンテキストとしてリセットするコンテキストを設定することです。インテントがアクティブなコンテンツと一致した場合、コンテキストを期限切れにする効果があります。 これは最適ではありません。コードからはできないので、新しいライフスパンを設定することはできません。コンテキストを削除するだけです。 (あなたはコンソールで0に設定して削除し、コード内でsetContext()を呼び出すことでカウンタを変更することができます - 非常に扱いにくいですが、それは私がatmで行うことです)。 – eran

0

単純に設定する関数 this.contexts_[your_context] = {}

最初のオプションは間違いなく私のために働いています。私は第二の選択肢を試していない。 Dialogflowで設定していないかどうか試してみてください。また、Webhookのコンテキスト設定を削除して、Dialogflowでlifespanを0に設定することもできます。それはあなたの文脈の上に(廃止されたメソッドのような)行を置きます。

+0

これは機能しません。メソッド呼び出しは自動的に失敗します。それが私が最初に試したことです。 ライフサイクルがまだ残っている既存のコンテキストを削除する唯一の方法は、lifespan = 0のインテントの出力コンテキストにそれを配置することです。 コードからこれを行うだけでは機能しません(私にとって)。あなたの事例がある場合、私はそれを見たいと思っていて、なぜ私がうまくいかないのか理解しています。 – eran

+0

更新された回答を確認する –

関連する問題