2016-12-10 3 views
5

Я хотел бы реализовать простой таймер в сообщении.Ответ после заданной задержки

Мой сценарий - это небольшой математический тренер, в котором вы тренируетесь 5 минут, после 5 минут обычного взаимодействия я хотел бы сообщить пользователю, что сейчас время. Я не хочу ждать, пока пользователь завершит свой следующий вход/ответ (необязательно, если в настоящее время нет ввода).

Есть ли способ «надавить» время ответа?

ответ

2

API разговора не поддерживает модель push. Когда вы получаете ответ от пользователей, вы можете проверить таймер и ответить соответствующим образом.

+0

Спасибо за это официальный ответ. Является ли такая опция push-сообщения планируемой? – rekire

+4

Я не могу комментировать будущие функции, но мы очень заинтересованы в получении от разработчиков подобных комментариев. –

+0

Модель push кажется очень применимой ко мне. Например, если вы хотите иметь приложение, которое предупреждало пользователя о включении зонтика в ожидаемый дождливый день. Вместо того, чтобы сказать пользователю: «Мне нужно сегодня принести зонтик?» –

0

К сожалению, похоже, они не заинтересованы в добавлении каких-либо признаков задержки: https://discuss.api.ai/t/adding-a-delay-to-responses-so-it-feels-more-real/108

Но это одна из причин, почему построение на стороне сервера решение в между интеграцией развертывания (например, Facebook Messenger.) И API .ai настолько полезен - он позволяет вам настраивать выполнение, включая отправку выполнения, вызванную вашей собственной логикой, построенной поверх решений API.ai.

Таким образом, в случае FB мессенджера как простой пример, вы могли бы сделать что-то, как показано ниже, и просто построить любую логику вы хотите позвонить 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); 
 
     } 
 
    }); 
 
}

Смежные вопросы