У меня есть рабочий код для диалога BotBuilder. Теперь я хочу, чтобы диалог начинался в 8:30 каждый понедельник-пятница, используя расписание узлов, как показано ниже.
var rule = new schedule.RecurrenceRule();
// Run the task Mondays-Fridays
rule.dayOfWeek = [0, new schedule.Range(1, 5)];
rule.hour = 8;
rule.minute = 30;
schedule.scheduleJob(rule, beginStatusDialog);
console.log('Schedule initialzed.');
При запуске это «Расписание инициализировано» записывается как положено. Итак, я завернул свой диалоговый код в функцию beginStatusDialog, как показано ниже.
function beginStatusDialog() {
// Begin dialog - This is a question bot that uses a waterfall technique to prompt users for input.
const bot = new builder.UniversalBot(connector, [
function (session) {
session.send("Welcome to the daily status check " + session.message.user.name + ".");
builder.Prompts.text(session, "What did you do yesterday?");
},
function (session, results) {
session.dialogData.yesterday = session_yesterday = results.response;
builder.Prompts.text(session, "What will you do today?");
},
function (session, results) {
session.dialogData.today = session_today = results.response;
builder.Prompts.text(session, "Are there any obstacles holding you up? Note: An email will be sent with your responses.");
},
function (session, results) {
session.dialogData.obstacles = session_obstacles = results.response;
session_username = session.message.user.name;
// Write responses to DB
executeStatement(session_username, session_yesterday, session_today, session_obstacles);
//Process request and display details
session.send(`Daily status details: <br/>Yesterday: ${session.dialogData.yesterday} <br/>Today: ${session.dialogData.today} <br/>Obstacles: ${session.dialogData.obstacles}`);
session.dialogData = {};
session.endDialog();
}
]).set('storage', inMemoryStorage); // Register in-memory storage
}
Когда я запускаю это в botframework-emulator, я получаю следующую ошибку:
Разве неправильно заключать диалог в функцию? Если да, то как правильно планировать вызов диалога? Кто-нибудь еще имеет опыт работы с этим конкретным сценарием?
Любая помощь / указатели будут с благодарностью. :)
Спасибо.
Edit:
Комментарий Гэри Лю заставил меня задуматься. Таким образом, я создал нижнюю часть функции, как показано ниже, и она больше не выдает ошибку, но ничего не делает в назначенное время.
var bot = new builder.UniversalBot(connector).set('storage', inMemoryStorage);
Затем я запускаю его внутри функции с помощью bot.dialog - или, по крайней мере, это мое намерение:
function beginStatusDialog() {
// Begin dialog - This is a question bot that uses a waterfall technique to prompt users for input.
//const bot = new builder.UniversalBot(connector, [
bot.dialog([
function (session) {
session.send("Welcome to the daily status check " + session.message.user.name + ".");
builder.Prompts.text(session, "What did you do yesterday?");
В любом случае, я смотрю на это дальше.
Как всегда, любая помощь / указатели будут оценены - спасибо.