2016-12-10 56 views
5

我想在通信中實現一個簡單的計時器。給定延遲後回覆

我的場景是一個小型的數學培訓師,在5分鐘的正常交互之後,我會通知用戶時間已到。我不想等到用戶完成他的下一個輸入/答案(可選,只是當前沒有輸入)。

有什麼辦法可以「推」一個答案時間爲基礎?

回答

2

對話API不支持推送模式。獲得用戶響應時,您可以檢查計時器並進行適當的響應。

+0

感謝你爲這個官方回答。是否計劃推送消息選項? – rekire

+4

我無法評論未來計劃的功能,但我們非常有興趣從開發人員處獲得此類反饋。 –

+0

推送模式似乎非常適用於我。例如,如果您想要有應用程序提醒用戶在預測的下雨天帶雨傘。而不是讓用戶說:「今天我必須帶傘嗎?」 –

0

可悲的是,它看起來像他們沒有興趣加入任何形式的延時功能: https://discuss.api.ai/t/adding-a-delay-to-responses-so-it-feels-more-real/108

但是,這是一個原因,建設部署的集成(如Facebook的使者。)和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); 
 
     } 
 
    }); 
 
}