Как я могу идентифицировать пользователя, вошедшего в DiallogFlow через запрос webhook? - PullRequest
0 голосов
/ 24 октября 2019

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

В приложении есть раздел кода для чтенияданные уже получены. Я пытался использовать документацию Google ('' https://developers.google.com/assistant/identity/google-sign-in#java "), но безуспешно.

WebhookRequest request;

using (var reader = new StreamReader(Request.Body))
{
    request = jsonParser.Parse<WebhookRequest>(reader);
}

var pas = request.QueryResult.Parameters;
var queryText = request.QueryResult.QueryText;
var response = new WebhookResponse();

StringBuilder sb = new StringBuilder();

//interactionDAO.SaveInteration(new Interaction(Guid.NewGuid(), "google", queryText));

var intent = request.QueryResult.Intent.DisplayName;
var listaObjetos = await _service.DetectIntentAsync(new[] { queryText }, intent);

foreach (var item in listaObjetos)
{

    var convertItem = JsonConvert.DeserializeObject<Fulfillment>(item.ToString());
    if (!String.IsNullOrWhiteSpace(convertItem.FulfillmentText))
    {
        sb.Append(convertItem.FulfillmentText);
    }

    if (convertItem.Parameters != null && convertItem.Parameters.ContainsKey("date-time"))
    {
        sb.Append(convertItem.Parameters["date-time"]);
    }

    //sb.Append(item);
}

response.FulfillmentText = sb.ToString();

return Json(response);

1 Ответ

0 голосов
/ 28 октября 2019

Ищите «сеанс» в JSON, который вы получаете в своем веб-крюке от DialogFlow, это уникальный идентификатор для разговора.

Обычно он имеет такой формат:

"сеанс":" projects / $ {PROJECTID} / agent / сеансы / $ {SESSIONID} "

Просто извлеките SESSIONID из последней части.

Подробнее о формате DialogFlow Webhook JSON можно узнать здесь. :

https://developers.google.com/assistant/actions/build/json/dialogflow-webhook-json

...