Определить уникального пользователя в Dialogflow V1

Итак, я тестирую Dialogflow, и один из первых вопросов, который у меня возникает: как мой бот узнает, с кем разговаривает? Мне нужно идентифицировать пользователя и хранить эту информацию как можно дольше. Основной сценарий:

  1. Пользователь начинает свой первый разговор.
  2. Чат-бот отправляет запрос на выполнение на сервер, пытаясь сопоставить пользователя в своей собственной базе данных.
  3. Пользователь найден, информация (в виде JWT или другого токена) отправляется обратно в Dialogflow и сохраняется там для дальнейшего взаимодействия. На самом деле, эта часть будет включать запрос электронной почты пользователя, отправку проверочного кода на это электронное письмо, а затем проверку пользователя с помощью кода.
  4. Затем пользователь начинает общаться с ботом, и все запросы на выполнение получают уникальный токен, хранящийся для этого самого пользователя, так что мой REST API знает, какой пользователь получает ответ.

Не удалось найти ничего об этом в документации (возможно, я ищу не в том месте).

Будет несколько интеграций, таких как Messenger, Viber, Telegram. Я не знаю, может быть, эти API добавляют какую-то уникальную информацию о пользователе? ... Спасибо за помощь!


comment
Вы нашли решение этого вопроса?   -  person skyshine    schedule 26.12.2018


Ответы (2)


Извините, я знаю, что это было давно, но, возможно, это поможет кому-то другому.

  1. Правильным решением здесь является идентификатор пользователя, а не сеанса. Идентификатор пользователя предоставляется платформой чата (Facebook, Slack и т. Д.) И согласован для одного и того же пользователя во всех сеансах.

Чтобы получить идентификатор пользователя, перейдите на вкладку Выполнение, включите редактор и используйте такую ​​функцию:

let r = request.body.originalDetectIntentRequest
//this makes sure that you're on an integration 
if (r["source"]){
     return r.payload.data.sender.id; 
 }
  1. Чтобы связать вместе идентификаторы с разных платформ, вам, вероятно, потребуется какой-то процесс входа в систему каждый раз, когда вы сталкиваетесь с новым идентификатором на платформе.
person Shruthi    schedule 23.05.2018

Поп,

Сеансы уже встроены в запросы DialogFlow к вашей службе выполнения, если вы проверите полезную нагрузку, вы найдете sessionId, он остается неизменным для того же клиента, пока не истечет срок его действия.

Однако, если вы хотите идентифицировать пользователя с любого из клиентов, которые вы можете подключиться к DialogFlow, например Messenger, то из той же полезной нагрузки запроса вы заметите, что существует объект с именем originalRequest, который доступен только когда поступают запросы от этих клиентов.

Вы можете персонализировать ответ этих пользователей, например, используя их имя в FB в сообщении для них .

person Nnamdi Jibunoh    schedule 13.04.2018