0

我正在使用 node.js 后端使用 wit.ai 编写我的第一个应用程序。我在这里找到了一些与我的问题类似的帖子,但不是真正的答案:我使用 socket.io 与我的节点脚本进行通信。我的节点的两个相关部分是:

io.sockets.on('connection', function (socket) {
    socket.on('message',
        function(data)  {
            var json = JSON.parse(data);
            var sid = json['sessionid'];
            console.log("Received on sid " + sid);
            if (_sessions[sid] == undefined)    {
                        _sessions[sid] = {};
                        _sessions[sid].context = {};
            }
            _sessions[sid].socket = socket;
            client.runActions(sid, json['text'], _sessions[sid].context, 30)
            .then((context) =>  {
                    _sessions[sid].context = context;
                }
            )
            .catch((err) =>
                {
                    console.error('Oops! Got an error from Wit: ', err.stack || err);
                }
            );
        }
    );
    }  
);

========

const actions = {
  send(request, response) {
    const {sessionId, context, entities} = request;
    const {text, quickreplies} = response;
    return new Promise(function(resolve, reject) {
        var session = _sessions[sessionId];

        console.log("-------------------------------");
        console.dir(context);
        console.log("-------------------------------");


        session.socket.emit("message", JSON.stringify(response));
      return resolve();
    });
  },
  gettaxi ({sessionid, context, text, entities}) {
      return new Promise(function(resolve, reject) {
            console.log(`Session ${sessionid} received ${text}`);
            var quand = firstEntityValue(entities, "quand");
            if (!quand && context['quand'] != undefined) quand = context['quand'];
            var depart = firstEntityValue(entities, "depart");
            var arrivee = firstEntityValue(entities, "arrivee");

            if (depart) {
                console.log("Found depart");
                context.depart = depart;
                delete context.missing_depart;
            }
            else    {
                context.missing_depart = true;
            }

            if (arrivee)    {
                console.log("Found arrivee");
                context.arrivee = arrivee;
                delete context.missing_arrivee;
            }
            else    {
                context.missing_arrivee = true;
            }

            console.dir(context);

            if (quand)  {
                console.log("Found quand");
                context.quand = quand;
                delete context.missing_quand;
            }
            else    {
                context.missing_quand = true;
            }
            return resolve(context);
        }
    );
  },

};

一切都很好,除了我的 gettaxi 收到未定义的 sessionid。接收正确 sessionid 的发送函数不是这种情况。

我究竟做错了什么 ?

4

0 回答 0