IBM Watson Assistant: как включить метрики пользователей - PullRequest
0 голосов
/ 07 декабря 2018

Мы хотим знать, сколько раз каждый пользователь вызывает службу IBM Watson Assistant из клиентского приложения, а также информацию о выставлении счетов за каждого пользователя.Я пытаюсь включить пользовательские метрики для службы помощника Ватсона на основе этого URL (https://console.bluemix.net/docs/services/assistant/logs_oview.html#user_id) и добавил заголовки и метаданные в свой код node.js. Но когда я проверяю вкладку Улучшение в разговореон не отображает данные пользователя, он показывает количество 0.

Я использую план LITE, а ниже приведен код.

// conversation config
var conversation = new ConversationV1({
url: 'https://gateway.watsonplatform.net/conversation/api',
username: process.env.CONVERSATION_USERNAME,
password: process.env.CONVERSATION_PASSWORD,
version_date: '2018-02-16',
version: 'v1',
context : {
        metadata : {
           "user_id": "{1234}"
           }
         },
headers: {'X-Watson-Metadata':'customer_id=user777;customer_id=xyz'}
});

код app.js:

'use strict';

require('dotenv').config({ silent: true });

var express = require('express'); // app server
var bodyParser = require('body-parser'); // parser for post requests

//setup watson services
var ConversationV1 = require('watson-developer-cloud/conversation/v1'); // 
watson sdk
var DiscoveryV1 = require('watson-developer-cloud/discovery/v1');

var app = express();
// Bootstrap application settings
 app.use(express.static('./public')); // load UI from public folder
 app.use(bodyParser.json()); 
// conversation config

var conversation = new ConversationV1({
url: 'https://gateway.watsonplatform.net/conversation/api',
username: process.env.CONVERSATION_USERNAME || 'replace with the 
username',
password: process.env.CONVERSATION_PASSWORD || 'replace with the 
password',
version_date: '2018-02-16', //set currenct date, check here 
https://www.ibm.com/watson/developercloud/conversation/api/v1/#versioning
version: 'v1',
context : {
metadata : {
   "user_id": "{1234}"
  }
 },
headers: {'X-Watson-Metadata':'customer_id=user777;customer_id=xyz'}
});
// Endpoint to be call from the client side for message
app.post('/api/message', (req, res) => {
var workspace = process.env.WORKSPACE_ID || '<workspace-id>';
if (!workspace || workspace === '<workspace-id>') {
    return res.json({
        'output': {
            'text': 'Please update the WORKSPACE_ID in your .env file with 
 your credential! If you did update, try to verify if the file are just 
with the name: .env'
        }
    });
  }
  var payload = {
    workspace_id: workspace,
    context: {},
    input: {}
 };
 if (req.body) {
    if (req.body.input) {
        payload.input = req.body.input;
    }
    if (req.body.context) {
        // The client must maintain context/state
        payload.context = req.body.context;
    }
 }
  // Send the input to the conversation service
 conversation.message(payload, function(err, data) {
    if (err) {
        return res.status(err.code || 500).json(err);
    }
    updateMessage(res, payload, data);
 });
});
function updateMessage(res, input, response) {
if (!response.output) {
    response.output = {};
} else if (response.output && response.output.text) {
    return res.json(response);
}
}

 module.exports = app;

1 Ответ

0 голосов
/ 07 декабря 2018

Вам необходимо добавить информацию об идентификаторе пользователя в контекст , который вы отправляете при вызове сообщения API .Каждый запрос к Watson Assistant может иметь различный идентификатор пользователя , например, если у вас мультитенантное приложение, а ваше приложение / сервер обрабатывает несколько пользователей и их запросы параллельно.

Извлечь раздел контекста для вызова сообщения , он содержит информацию о том, где разместить эти данные в структуре JSON.Вы можете объединить обновления контекста с полезной нагрузкой сообщения:

{
  workspace_id: '{workspace_id}',
  input: {'text': 'Hello'},
  context: {
       metadata : {
         "user_id": "{1234}"
       }
  }
}

После того, как ваше приложение отправит разные значения user_id, вы должны увидеть следующее на панели инструментов Improve (я тестировал на моей Liteплан с 2 идентификаторами пользователей).Различные активные пользователи:

2 active users

Среднее количество разговоров на пользователя: average conversations per user

Кроме того, вы можетепроверьте логи.В этой записи разговора есть поле user_id в метаданных контекста - то же самое, что ваше приложение отправило как часть запроса сообщения.

...