Wit.ai - Когда запускаются действия?

Мне трудно понять, когда действия запускаются пакетом Node.js SDK. Сначала я думал, что действие запускается только тогда, когда мы явно вызываем его с помощью веб-страницы истории.

Я только что понял, что это не так.

Например, когда контекст пользователя не очищен должным образом, некоторые действия могут выполняться вместо других (или иногда могут выполняться два действия для одного сообщения). Даже если некоторые действия не являются частью текущей истории.

Каковы именно условия для запуска действия в Node.js SDK?


person Nitsuja    schedule 24.10.2016    source источник


Ответы (2)


Бот перепробует все истории, пока не найдет подходящую, если нет, то ответит на последнюю найденную.

Итак, я сделал историю, которую я назвал no_match, которая вызывает действие на моем клиенте. wit story Вы также должны убедиться, что на вкладке Понимание правильно установлены Стратегия поиска и Значения. .

person eXa    schedule 04.11.2016
comment
Спасибо. Да, я тоже использовал тот же метод. Однако я говорил о действиях в SDK node.js, а не об историях. - person Nitsuja; 04.11.2016
comment
Вы определяете в своем коде node.js действия, а затем в историях можете их использовать. Если вы создаете действие myAction в своей истории и копируете эти действия github.com/wit -ai/node-wit#response он выполнит действие с именем myAction Это всегда ответ остроумия, который выполняет действия, и если он выполняет неожиданное действие, это потому, что он думал, что это правильное действие. - person eXa; 10.11.2016
comment
Да, ты прав. Проблема не в SDK, как я сначала подумал, а в самом Wit.ai, так как он не всегда предсказывает правильные действия. Спасибо за помощь. - person Nitsuja; 10.11.2016
comment
Рад, что смог помочь, не могли бы вы принять ответ. - person eXa; 17.11.2016

Вот кое-что, что я настроил для бота FB, поэтому вам нужно будет изменить механизм получателя Id в соответствии с вашими потребностями.

// CALL THIS TO SEND MESSAGES TO WIT 
function sendToWit(sessionId, messageText) {
    // This will run all actions until nothing left to do
    wit.runActions(sessionId, // Current session
        messageText, sessions[sessionId].context // Current session state
    ).then(function (context) {
        // Waiting for further messages to proceed.
        if (context['done']) {
            delete sessions[sessionId];
        }
        // Updating current session state
        sessions[sessionId].context = context;
    }).catch(function (err) {
        console.error('WIT ERROR MSG: ', err.stack || err);
    });
}
//Wit Actions
var actions = {
    // Basic text message response 
    send: function send(request, response) {
        var sessionId = request.sessionId,
              context = request.context,
              entities = request.entities,
              recipientId = sessions[sessionId].fbid,
              text = response.text;
              return new Promise(function (resolve, reject) {
                callMySendAPI(recipientId, text);
                return resolve();
            });
    }
    , // All of your custom actions will go here ie;
    myCustomAction: function (request) {
        console.log('myCustomAction Called');
        var sessionId = request.sessionId;
        var recipientId = sessions[sessionId].fbid;
        return new Promise(function (resolve, reject) {
            //Call some API and do lookup by recipientId, you could lookup by anything ie; context.city for weather lookup etc..
            callSomeAPI(recipientId).then(function (result) {
                context.something = result.something; //Parsed JSON
                return Promise.resolve(context);
            }).catch(error => {
                // something went wrong
            });
            return resolve(context);
        });
    }
}
person Ed Barahona    schedule 18.11.2016