Мы используем QnA Maker , подключенный к Azure Bot Service . В Базе Знаний (КБ) мы добавили Следующее приглашение к каждому вопросу, который говорит This did NOT answer my question
:
Follow Up Prompt">
То есть, если был предоставлен неверный ответ, конечный пользователь мог бы указать это, и история разговоров будет выглядеть следующим образом:
Что мы Вы пытаетесь воспроизвести эту историю разговоров, чтобы мы могли увидеть:
- Исходное приглашение пользователя
- Исходный ответ
- Последующий вопрос / ответ на вопрос
Мы включили Application Insights , поэтому мы можем видеть оба вопроса по мере их поступления из журналов со следующим запросом:
traces
| project timestamp,
itemId,
question = customDimensions.Question,
answer = customDimensions.Answer
| order by timestamp
Что будет вернуть эти две строки:
Однако мы пытаемся найти уникальный идентификатор разговора или идентификатор сеанса, который может коррелировать обе эти записи. Обратите внимание, что itemId
очень похож, но не идентичен:
53be8c1<b><i>4</i></b>-702c-11ea-8c41-11c1c266dc55
53be8c1<b><i>3</i></b>-702c-11ea-8c41-11c1c266dc55
Существует ли уникальный ключ, который можно использовать для объединения этих двух событий?
Один из способов - просто использовать первые 7 цифр itemID
и объединение на основе этого частичного совпадения, например:
traces
| where customDimensions.Question contains "This did NOT answer my question"
| project itemId,
SessionID = extract("^[a-z0-9]{7}", 0, itemId),
timestamp
| join (
traces
| extend question = tostring(customDimensions['Question'])
| extend answer = tostring(customDimensions['Answer'])
| where message contains "GenerateAnswer"
and question !contains "This did NOT answer my question"
| project itemId,
SessionID = extract("^[a-z0-9]{7}",0,itemId),
question,
answer,
timestamp
) on SessionID
| project question, answer, SessionID, timestamp //, itemId, itemId1
| order by timestamp desc, SessionID
Но мы не уверены, что значение будет надежно отличаться только на 8-е число git, поэтому предпочитаю меньше франка agile ID