2017-07-21 1 views
1

J'essaie de trouver dans le document de ApiAiApp et ActionsSdkApp, ils n'ont pas la propriété ou la fonction pour obtenir conversationId. Je peux voir cela à partir de la requête JSON. Dois-je analyser moi-même la demande pour obtenir l'ID de conversation? ConversationId devrait être couramment utilisé.Comment puis-je obtenir le fichier conversationId d'ApiAiApp ou de ActionsSdkApp?

+0

Si vous pouvez mettre à jour la question pour expliquer pourquoi vous pensez avoir besoin de l'ID de conversation, Je peux éventuellement mettre à jour la réponse mieux. – Prisoner

+0

pour expliquer pourquoi j'ai besoin de ConversationID au lieu de sauvegarder l'état dans Context. La raison en est qu'une autre application (fonction de nuage) regarde le changement de base de feu et fait une autre logique aussi longtemps qu'une nouvelle conversation en cours. Cette fonction est hors de cette ApiAiApp, et fonctionne totalement différente logique. J'essaie de ne pas mettre ces fonctions non liées dans une application ApiAi. J'espère que mon explication a du sens. Ou, s'il y a une meilleure idée pour résoudre mon problème? – user3423762

+0

Pour rendre le cas d'utilisation plus clair, afin que vous puissiez comprendre pourquoi j'en ai besoin. Je voudrais faire l'application pour avoir de vrais humains impliqués dans la conversation. Une autre application web (pas ApiAi App) se connecte à la même firebase. Un vrai peuple peut regarder la conversation en cours. S'ils trouvent que la conversation ne va pas ou que la machine ne peut pas répondre correctement, il peut reprendre la conversation immédiatement avant que l'utilisateur ne parte. J'ai des réponses de Prisonnier, ça aide beaucoup. Merci – user3423762

Répondre

2

Bien qu'il ne soit pas documenté, il y a une getConversationId() qui fait partie de l'objet ActionsSdkApp, mais pas partie de l'objet ApiAiApp. Si vous utilisez Node.js (ce qui serait le cas si vous utilisiez la bibliothèque), il devrait être facile de gérer également l'objet JSON. Pour API.AI vous devriez le trouver dans originalRequest.data.conversation.conversationId. Gardez à l'esprit, toutefois, qu'il n'y a pas d'événement "fin" pour la conversation. Ainsi, alors que vous saurez quand il y a une nouvelle conversation, et quand elle est mise à jour, vous ne saurez pas quand l'utilisateur arrête cette conversation particulière.

En fonction de vos besoins, vous pouvez utiliser l'ID utilisateur au lieu de l'ID de conversation. Il ne fournit pas d'informations sur le moment où la conversation se termine, mais il peut suivre le même utilisateur entre différentes sessions et périphériques.

Pour la plupart des utilisateurs (probablement pas dans votre cas), l'ID de conversation n'est probablement pas aussi utilisé que vous pourriez le penser. Bien qu'il puisse être judicieux d'utiliser cela comme une clé pour sauvegarder l'état dans une base de données ou quelque chose du genre, il est plus facile de laisser Google sauvegarder l'état lui-même.

Vous pouvez enregistrer l'état dans un contexte dans API.AI à l'aide de app.setContext(name, lifespan, parametersObject)method. La prochaine fois, vous pouvez obtenir les données du app.getContext()method.

Dans l'objet ActionsSdkApp, vous pouvez faire quelque chose d'équivalent à l'aide d'un objet dialogState qui est le dernier paramètre pour la plupart des méthodes poser comme (comme le app.ask()method). Ce sera alors disponible sur votre prochain appel à travers le app.getDialogState()method. (Cette page parle également d'un champ app.data qui peut être utilisé pour la même chose, mais je ne trouve plus de documentation à ce sujet.)

+0

Merci, votre réponse est nuage et clair. – user3423762

+0

Pour répondre à votre question, pourquoi ai-je besoin de ConversationID? Je vais devoir enregistrer l'état sur Firebase au lieu de Context. La raison en est qu'une autre application regarde le changement de base de feu et fait une autre logique aussi longtemps qu'une nouvelle conversation en cours. – user3423762

+0

Semble comme une excellente (et intelligente) approche dans votre cas alors. {: J'ai mis à jour la réponse avec un peu plus d'informations et d'autres choses à considérer, mais je pense que vous êtes sur la bonne voie avec votre solution. Si cette réponse est satisfaisante, veuillez l'accepter et/ou l'augmenter. – Prisoner