2017-09-27 2 views
0

私はNode.jsでAPI.ai用に設計されたwebhookを持っています。これは、複数のAPIと情報を収集し、ユーザーに応答するためのものです。API.ai Node.jsのキャッシングレスポンスwebhook

私は複数のAPIとやり取りしているので、API.ai要求がタイムアウトする原因となっている応答時間は5秒を超えています。

これを解決するために、一定の時間までAPIからの応答を保存するnode.js webhookにキャッシュを実装しようとしています。これにより、max-ageヘッダー時間に達するまでのタイムアウトが削除されます。

編集:サブ順序リクエストのAPIレスポンスをキャッシュするために使用できる最適なノードモジュールは何ですか。

注:私はhttpリクエストに対してrequest node moduleを使用していますが、レスポンスをキャッシュする方法はありません。

+0

StackOverflowから何を求めているのかは不明です。 –

+0

質問を編集しました:-)。今はっきりしたいと思っています。 –

+1

サーバにmongodbがある場合は、このモジュールを使用できます。https://www.npmjs.com/package/wp-node TTLを.cacheメソッドに渡すことも、グローバルに定義することもできます。 –

答えて

0

は、最後に以下のモジュールを使用することにしました:

https://www.npmjs.com/package/memory-cache

これは、より良い私のシナリオを務めました。すぐにRedisを使ってみてください。

1

すべての回答は、リクエスト側でキャッシュの問題に対処するために合理的です。しかし、API.AIとアクションを指定してから、会話の進行中に情報を保存することができます。これはAPI.AIコンテキストを使用して行うことができます。

ユーザーからの各応答に対してリモート呼び出しを1回だけに制限しても、時間枠内でそれを適合させることができます。

ユーザー:あなたは映画の上映時間、チケットの順序について会話をしていた場合

例えば、会話のような何かを行くことが「私は映画を見てみたいです。」

[最も近い劇場を検索するためにAPIを使用し、劇場の場所をコンテキストに保存して返信する]「あなたの最寄りの劇場はモールメガプレックスです。興味がありますか?」

ユーザー:「確かに」

スターを含む遊ん7つの異なる映画はありますが、」[あなたはそれが別のAPIコールで遊んで、コンテキストに保管されているものを照会ので、あなたは今すでに、劇場を持っています]戦争や顎のようなものです。

ユーザー:[。あなたが別の呼び出しを必要としないので、あなたはすでに、コンテキスト内のデータを持っている]「いいえ」

こので「どうロッキー程度か...」

(一般的に)同じ数の通話をしていますが、ユーザーのすべての情報を収集するか、すべての可能な結果を​​収集してから、セッションにユーザーの結果を格納してから狭めます。