识别Dialogflow V1中的唯一用户

时间:2018-04-13 15:29:30

标签: telegram-bot dialogflow facebook-messenger-bot facebook-chatbot api-ai

所以我正在测试Dialogflow,我的第一个问题之一就是:我的机器人如何知道它与谁交谈?我需要识别用户并尽可能长时间地保留该信息。基本情景是:

  1. 用户开始他/她的第一次对话。
  2. Chatbot向服务器发送履行请求,尝试匹配其自己数据库中的用户。
  3. 找到用户,将信息(作为JWT或其他令牌)发送回Dialogflow并存储在那里以进行进一步通信。实际上,这部分内容涉及询问用户电子邮件,向该电子邮件发送验证码,然后使用该代码验证用户。
  4. 然后用户开始与机器人聊天,所有履行请求都会获得为该用户存储的唯一令牌,以便我的REST API知道响应所服务的用户。
  5. 在文档中找不到任何关于它的内容(也许我在找错了地方)。

    将会有一些集成,如Messenger,Viber,Telegram。我不知道,也许那些API在用户上添加了一些独特的信息?... 谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

抱歉,我知道已经有一段时间了,但也许这会帮助别人。

  1. 这里正确的解决方案是用户ID,而不是会话ID。用户ID由聊天平台(Facebook,Slack等)提供,并且对于同一用户的会话是一致的。
  2. 要获取用户ID,请转到Fulfillment选项卡,启用编辑器并使用如下函数:

    let r = request.body.originalDetectIntentRequest
    //this makes sure that you're on an integration 
    if (r["source"]){
         return r.payload.data.sender.id; 
     }
    
    1. 要将来自不同平台的ID绑定在一起,每次在平台上遇到新ID时,您可能需要进行某种登录过程。

答案 1 :(得分:1)

流行音乐,

会话内置于对您的履行服务的DialogFlow请求中,如果您检查有效负载,您将找到sessionId,对于同一客户端,它会保持不变,直到它到期为止。

但是,如果您要从可以连接到DialogFlow的任何客户端(例如Messenger)中识别用户,那么从相同的请求负载到您,您将注意到有一个名为 originalRequest 的对象,仅在来自这些客户的请求时才可用。

您可以对这些用户的回复进行个性化,例如using their FB firstname in a message to them