IBM Watson Assistant:如何启用用户指标

IBM Watson Assistant: How to enable user metrics

我们想知道每个用户从客户端应用程序调用 IBM Watson Assistant 服务的次数以及每个用户的账单详细信息。 我正在尝试基于此 URL(https://console.bluemix.net/docs/services/assistant/logs_oview.html#user_id) 为 watson 助手服务启用用户指标,并在我的 node.js 代码中添加了 headers 和元数据。 但是当我检查对话中的 Improve 选项卡时,它没有显示用户详细信息,它的显示计数为 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;

你需要add the user id information to the context that you send when calling the message API。对 Watson Assistant 的每个请求都可以有不同的 userid,例如,当您有一个多租户应用程序并且您的应用程序/服务器并行处理多个用户及其请求时。

查看 the context section for the message call,它包含有关在 JSON 结构中放置该数据的位置的信息。您可以将上下文更新合并到消息负载中:

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

一旦您的应用发送了不同的 user_id 值,您应该会在 Improve 仪表板中看到以下内容(我使用 2 个用户 ID 在我的 Lite 计划中进行了测试)。不同的活跃用户:

每个用户的平均对话:

此外,您可以查看日志。在该对话条目中,上下文元数据中的 user_id 字段 - 与您的应用作为消息请求的一部分发送的字段相同。