当与 Twitter API 结合使用时,如何将 response.context 传回 Watson Conversation API?

How do I pass response.context back in Watson Conversation API when used in conjunction with Twitter API?

我的想法是,我将使用 Twitter 的流 api 获取我帐户的最新提及,将该数据提供给 watson convo api,然后让 watson 吐出一个响应;然后我会再次在推特上回复提到我的人。为了让 watson convo api 正常工作,我必须将 response.context 传回给 watson。

除了回传 response.context 部分,我什么都记下来了。有人知道怎么做吗?

var twitter = require('../statics/twitterAPI_KEY_Dev');
var watson = require('../statics/watsonAPI_KEY_Dev');

function botReplyInit() {
var stream = twitter.stream('statuses/filter', { track: '@Felicia_Bot' });

stream.on('tweet', function(tweet) {
    var dataProcessed = false;
    var data;

    if (!dataProcessed) {
        var data = tweet.text.replace(/@(\w+)/g, '').replace(/#(\w+)/g, '');
        //cleans up the tweet so the @ and # are deleted
    }

    var username = tweet.user.screen_name;
    var statusID = tweet.id_str;
    var endConversation = false;

    var error = {};
    var res = { output: {}, intents: [] };

    processWatson(error, res); 
    //how do we move this intialization outside of the stream.on function so it only 
    //get called once in the entire lifetime of the app??

    function processWatson(err, response) {
        if (err) {
            console.log(err);
        }

        if (response.output.action === 'end_conversation') {
            endConversation = true;
        }
        if (response.intents.length > 0) {
            var result = '@' + username + ' ' + response.output.text[0];

            twitter.post('statuses/update', {
                status: result,
                in_reply_to_status_id: tweet.id_str
            }, 
            function(err, response) {
                if (err) {
                    console.log(err);
                    return;
                }
                else {
                    console.log('I posted ' + result);
                }
            });
        }

        if(!endConversation && !dataProcessed) {
            watson.message({
                input: { text: data },
                context: response.context
            }, 
            processWatson);
            dataProcessed = true;
        }
    }
})
}

botReplyInit();

参考 API 文档了解 Watson Conversation 服务的消息方法 - https://www.ibm.com/watson/developercloud/conversation/api/v1/#send_message

来自消息的响应包含上下文对象,这是您需要在后续调用消息 API 时 return 返回给服务的内容。在对话初始化时,不需要上下文对象。

您的应用程序需要跟踪上下文对象,如果您要允许多个同时对话,您需要能够将上下文对象映射到对话。