Creazione di una scheda miniatura con pulsanti in Bot Framework per Node.js senza l’object sessione

Il mio bot ha un lavoro timer che controlla qualcosa ogni N minuti e invia un promemoria all’utente.

Poiché si tratta di un processo timer, significa che è fuori da qualsiasi finestra di dialogo e non ho accesso all’object di session .

Il codice funziona correttamente se creo il messaggio di promemoria in questo modo:

 new builder.Message().text("This is a reminder!"); 

Tuttavia, questo codice non funziona perché CardAction richiede un object session come parametro:

 var card = new builder.ThumbnailCard() .title("Reminder") .text("Hey it's a reminder.") .images([exclamation_mark_image_url]) .buttons([builder.CardAction.imBack(null, "check", "Check Overdue")]); //should use `session` instead of null here 

L’errore è una risposta Errore interno server 500 dal server botframework.com nel connettore di chat.

Ecco come invio il messaggio generate quando l’object session non è disponibile:

 //`msg` is the message with a card generated in the code above bot.beginDialog(address, dialog_name, msg, function (err) { //nothing }); 

Come posso creare una miniatura con un pulsante senza object di session ?

Quello che puoi fare è memorizzare l’indirizzo dell’utente, e quindi usare bot.loadSession(storedAddress, function (err, session) {}); Questo genererà l’object della sessione in base all’indirizzo passato. Nella sua callback è ansible utilizzare l’object sessione per inviare messaggi. Ho usato il metodo su un webhook per avvisare gli utenti quando si verificano determinati eventi.

A seconda di come si sta memorizzando il timer / allarme, è anche ansible memorizzare l’ultimo utente session.message.address con tali dati. Non ho lavorato sull’implementazione di un tale bot, ma nella parte successiva aggiungerei un job / metodo che controlla un elenco di allarmi continuamente / periodicamente e poi invia il messaggio all’utente quando viene triggersto il loro allarme.