2016-12-10 3 views
5

Je souhaite implémenter un temporisateur simple dans une communication.Répondre après un délai donné

Mon scénario est un petit entraîneur de maths où vous vous entraînez 5 minutes, après les 5 minutes d'interaction normale, je voudrais informer l'utilisateur que le temps est maintenant écoulé. Je ne veux pas attendre que l'utilisateur ait fini sa prochaine entrée/réponse (facultatif juste s'il n'y a actuellement aucune entrée).

Y a-t-il un moyen de "pousser" un temps de réponse basé?

Répondre

2

L'API de conversation ne prend pas en charge un modèle push. Lorsque vous obtenez la réponse des utilisateurs, vous pouvez vérifier la minuterie et répondre de manière appropriée.

+0

Merci pour cette réponse officielle. Une telle option de message push est-elle prévue? – rekire

+4

Je ne peux pas commenter sur les fonctionnalités futures prévues, mais nous sommes très intéressés à recevoir des commentaires de ce genre des développeurs. –

+0

Un modèle push me semble très applicable. Par exemple, si vous voulez avoir une application qui a averti l'utilisateur d'apporter un parapluie sur un jour pluvieux prévu. Plutôt que de demander à un utilisateur de dire «dois-je apporter un parapluie aujourd'hui? –

0

Malheureusement, il semble qu'ils ne sont pas intéressés à ajouter toute sorte de caractéristiques de retard: https://discuss.api.ai/t/adding-a-delay-to-responses-so-it-feels-more-real/108

Mais cela est une raison pour laquelle la construction d'une solution côté serveur entre l'intégration de votre déploiement (ex messager Facebook.) Et API .ai est si utile: il vous permet de personnaliser les commandes, y compris l'envoi des commandes déclenchées par votre propre logique personnalisée basée sur les solutions API.ai.

Ainsi, dans le cas de messager FB comme un exemple simple, vous pourriez faire quelque chose comme ci-dessous, et juste construire toute logique que vous voulez appeler sendTextMessage:

function sendTextMessage(recipientId, text) { 
 
    sendTypingOff(recipientId) 
 
    var messageData = { 
 
     recipient: { 
 
      id: recipientId 
 
     }, 
 
     message: { 
 
      text: text 
 
     } 
 
    } 
 
    callSendAPI(messageData); 
 
} 
 

 
//Calls FB messenger API. If successful returns a message ID in response 
 
function callSendAPI(messageData) { 
 
    request({ 
 
     uri: 'https://graph.facebook.com/v2.6/me/messages', 
 
     qs: { 
 
      access_token: config.FB_PAGE_TOKEN 
 
     }, 
 
     method: 'POST', 
 
     json: messageData 
 

 
    }, function (error, response, body) { 
 
     if (!error && response.statusCode == 200) { 
 
      var recipientId = body.recipient_id; 
 
      var messageId = body.message_id; 
 

 
      if (messageId) { 
 
       console.log("Successfully sent message with id %s to recipient %s", 
 
        messageId, recipientId); 
 
      } else { 
 
       console.log("Successfully called Send API for recipient %s", 
 
        recipientId); 
 
      } 
 
     } else { 
 
      console.error("Failed calling Send API", response.statusCode, response.statusMessage, body.error); 
 
     } 
 
    }); 
 
}