0

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

Я хочу создать одну функцию или другую форму, чтобы иметь возможность захватывать все данные, которые в данный момент находятся на данных.

В случае имеет Intents, контекст, сущность и т.д.

conversation.message(payload, function(err, data) { 
    if (err) { 
     return res.status(err.code || 500).json(err); 
    } 
    return res.json(updateMessage(payload, data)); 
    }); 
}); 

Данные в параметре updateMessage есть все, что нужно, но если я создаю другую функцию и попытаться получить эти значения, не работает.

В случае, когда я использую значения и получаю с app.js для открытия некоторого веб-сервиса REST. я попробовать:

function login (req, res) {  
     numberOrigin = null; 
     sessionid = null; 

     var dataLogin = { 
     data: { "userName":"xxxxx","password":"xxxxx","platform":"MyPlatform" }, 
     headers: { "Content-Type": "application/json" } 
     }; 

     client.registerMethod("postMethod", "xxxxxxxxxxxxxxx/services/login", "POST");   
     client.methods.postMethod(dataLogin, function (data, response) { 

     if(Buffer.isBuffer(data)){ 
      data = data.toString('utf8'); 
      console.log(data); 
      var re = /(sessionID:)([^,}]*)/g; 
      var match = re.exec(data); 
      var sessionid = match[2] 
      console.log(sessionid);    
     } 
     }); 
    } 

    function openRequest(data, sessionid, numberOrigin){ 
     //console.log(data); dont show the values.. show the data response of login 
     var dataRequest = { 
     data: {"sessionID": sessionid, 
       "synchronize":false, 
     "sourceRequest":{ 
      "numberOrigin":numberOrigin, 
      "description": JSON.stringify(data.context.email) } }, 
     headers: { "Content-Type": "application/json" } 
     }; 

     numberOrigin +=1; 
     client.post("xxxxxxxxxxxxxxxxxx/services/request/create", dataRequest, function (data, response) {   
      if(Buffer.isBuffer(data)){ 
      data = data.toString('utf8');  
      console.log(data);   
      } 
     }); 
     } 

    function updateMessage(res, input, data, numberOrigin) { 
     var email = data.context.email; // this recognize but this function is responsible for other thing   
     if (email === '[email protected]') { 
     console.log(data); 
     login(data); 
     openRequest(data, sessionid, numberOrigin) 
     } 
    } 

В случае, я просто хочу get значения с моей app.js для использования внутри REST. Я получил его с ajax, но все на стороне клиента (index.html), и это заставило меня показать мои учетные данные, поэтому я решил сделать это в REST для обеспечения безопасности своего кода. Если у вас есть какая-то форма для решения этой проблемы, пожалуйста, я знаю. Если у меня есть другая форма, я буду рада узнать.

Спасибо заранее.

ответ

3

Возможно, проблема связана с ответом на объект ответа res .. В функции updateMessage передается ответ. Чтобы данные могли быть отправлены обратно в браузер, вам нужно написать ответ. У меня есть демонстрационное приложение, которое вызывает погодный канал, чтобы получить погоду на основе намерения, аналогично тому, что вы пытаетесь сделать с помощью своей функции входа в систему. Посмотрите на этот код https://github.com/doconnor78/conversation-simple-weather/blob/master/app.js#L130

Вам необходимо передать исходный объект res (response) в соответствующую функцию, а затем записать данные в ответ (res), как только вы получите его от стороннего сервиса.

+0

большое спасибо. –