Аналогу «До цикла» требуется непрерывное чтение переменной состояния из вспомогательной функции - и затем (когда переменная состояния «как нам нужно») - для возобновления потока разговоров бота.
В моем боте (botbuilder v.3.15) Я сделал следующее:
- Во время одного из моих диалогов мне нужно было открыть внешний URL, чтобы собрать некоторую информацию от пользователя через этот URL.
- После этого я отправил собранные данные (с идентификатором разговора и другой информацией) с этого URL в мой файл app.js бота
- После этого мне нужно было возобновить разговор с ботом
- Для этого я создал вспомогательный файл - helper.js, в котором переменная 'marker' равна 'undefined', когда данные из URL еще не собраны, а переменная 'marker' представляет собой некоторую 'строку', когда данные собираются, и мы можем продолжитьнаша беседа с ботом
helper.js
var marker;
module.exports = {
checkAddressStatus: function() {
return marker;
},
saveAddressStatus: function(options) {
marker = options.conversation.id;
}
}
Я могу успешно обновить переменную 'marker' моими данными, вызвав функцию saveAddressStatus из app.js. Однако, когда я вернусь к написанию своего кода, который связан с потоком разговоров ботов (
К месту в коде, после которого я открыл URL - в файле address.js, и откуда я планирую
непрерывно проверить переменную 'marker', обновлена ли она уже - чтобы запуститьвведите команду «next ()» и продолжите сеанс session.endDialogWithResult ->, а затем -> для продолжения потоков разговоров бота -
Я не могу найти эквивалент цикла «while» в Node.js для возобновления сеанса в ботедиалог - возвращая функцию next () и продолжая поток ботов.
address.js
...
lib.dialog('/', [
function (session, args, next) {
...
next();
},
function (session, results, next) {
// Herocard with a link to external url
// My stupid infinite loop code, I tried various options, with promises etc., but it's all not working as I expect it
while (typeof helper.checkAddressStatus() == 'undefined') {
console.log('Undefined marker in address.js while loop')
}
var markerAddress = helper.checkAddressStatus();
console.log(markerAddress);
next(); // THE MOST IMPORTANT PART OF THE CODE - IF markerAddress is not 'undefined' - make another step in dialog flow to end dialog with result
function(session, results) {
...session.endDialogWithResult({markerAddress: markerAddress})
}
...
Любые идеи, как сделать оченьпростой аналок "до цикла" в этом контексте - работа?