首页 文章

识别Dialogflow V1中的唯一用户

提问于
浏览
0

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

  • 用户开始他/她的第一次谈话 .

  • Chatbot向服务器发送一个履行请求,试图匹配其自己数据库中的用户 .

  • 找到用户,将信息(作为JWT或其他令牌)发送回Dialogflow并存储在那里以进行进一步通信 . 实际上,这部分涉及询问用户电子邮件,向该电子邮件发送验证码,然后用该代码验证用户 .

  • 然后用户开始与机器人聊天,并且所有履行请求都获得为该用户存储的唯一令牌,以便我的REST API知道响应所服务的用户 .

在文档中找不到任何关于它的东西(也许我在错误的地方看) .

将有几个集成,如Messenger,Viber,Telegram . 我不知道,也许这些API为用户添加了一些独特的信息?...感谢您的帮助!

2 回答

  • 2

    对不起,我知道已经有一段时间了,但也许这会对别人有所帮助 .

    • 这里正确的解决方案是用户ID,而不是会话ID . 用户ID由聊天平台(Facebook,Slack等)提供,并且对于同一用户的会话是一致的 .

    要获取用户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; 
     }
    
    • 要将来自不同平台的ID绑定在一起,每次在平台上遇到新ID时,您可能必须进行某种登录过程 .
  • 1

    流行,

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

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

    您可以个性化这些用户的响应,例如using their FB firstname in a message to them .

相关问题