2017-04-14 23 views
4

スタートAPI.AI会話はコールバック

に私は行動を開始しようとすると:

OK Googleは私のアシスタントにいくつかの質問

それが認証を頼むが、私は会話のためのセッションIDを持っていないので、私は、ユーザーエンティティをロードするための方法はありません。

API.AIが何らかの質問を評価しようとすると、ユーザーエンティティが読み込まれていないためできません。

SlotFilling WebHookが唯一の選択肢だと思われますが、ユーザーエンティティを定義するオプションがある場合、これは本当に必要ありません。

API.AIへの最初のリクエストを行う前に、APIAセッションID(Googleアクションで定義されています)を取得する方法はありますか?または、API.hの前にsessionsIDを含むWebHookを呼び出す他の方法いくつかの質問を評価しようとしていますか?

答えて

0

残念ながら、セッションが開始されるまで、セッション識別子を先取りして取得する方法はありません。さらに、ディープリンクフレーズは一般的に静的であるか、またはAPI.AIが既に知っている(ユーザーエンティティではない)エンティティに依存する必要があります。

Ok Google talk to <invocation_name> about ... <deep_link_phrase> 

会話中に動的ユーザコンテンツを提供する必要がある可能性があります。

あなたが作成しようとしている経験に基づいてここで少しデザインを再考したいかもしれません。

1

私は解決策を見つけました。 「EntitiesLoaded」という名前の入力コンテキストを、すべてのディープリンクの質問に配置しました。 そして、私が発行したとき:

OK Googleのそれは、フォールバックの意図を呼び出す私のアシスタントいくつかの質問

をお願いします。 「EntitiesLoaded」コンテキストを設定

  1. ロードユーザエンティティ
  2. :フォールバック・インテントで は、私は次の操作を行います。
  3. 元のクエリ(Fallbackエクステントに渡された)を再発行します。今回はうまくいくでしょう。
+0

私のウェルカムインテントが "EntitiesLoaded"コンテキストを設定していると忘れてしまいました。 –

+0

APIを使用してクエリを再発行しています。/ queryエンドポイントのAI API? – Prisoner

+1

はい/ queryエンドポイントを使用してクエリを再発行します。 –