2016-01-28 16 views
6

ho iniziato a scrivere la logica bot per telegramma utilizzando questo moduleNodo Telegramma bot api, fare conversazione catena tra utente

posso creare domanda semplice e logica risposta in questo modo:

bot.onText(/\/start/, function(msg, match){ 
    bot.sendMessage(msg.chat.id, "Hello this is great bot"); 
}); 

Quando l'utente tipi /start riceverà questo messaggio.

Voglio creare qualcosa come una conversazione concatenata tra bot e utente. Come quando il tipo di utente /buy bot mostrerà le opzioni da acquistare, dopo che l'utente digita ciò che vuole comprare, bot mostrerà i tipi di prodotti selezionati e così via.

Come è possibile creare una conversazione concatenata tra utente e bot? Come fare in modo che bot ricordi i precedenti comandi selezionati e li ripristini quando è il momento? Devo tenere il mio database per farlo?

risposta

8

Puoi farlo in diversi modi.

  1. È possibile memorizzare lo "stato", l'utente è in te stesso
  2. È possibile utilizzare più comandi che lavoreranno per conto proprio, ma basta dare all'utente la sensazione di essere guidati
  3. È possibile utilizzare la ForceReply delle API Bot

Va bene. Quindi per 1. direi che hai dei benefici. Puoi effettivamente guidare l'utente e limitare l'accesso ad alcuni comandi, quando non è nello stato appropriato. Quindi diciamo che vuole comprare Popcorn ma è nel negozio di scarpe che non consentirebbe il comando controllando lo stato dell'utente salvato.

Per 2. si consente sempre all'utente di utilizzare /buy e /buy_popcorn e /buy_shoe. Ma a seconda delle tue risposte gli dai semplicemente una quantità specifica di possibili selezioni.

User: /buy 

What do you want to buy? /shoes or /food :Bot 

User: /food 

How about some Popcorn? Use /buy_popcorn :Bot 

User: /buy_shoe 

Alright. Shoes added to cart :Bot 

Questo sarebbe consentito, ma l'utente dovrà scrivere manualmente /buy_shoe

Il 3. possibile modo è utilizzando il ForceReply. L'utente riceverà automaticamente un messaggio answer to. Quindi quando usa /buy_shoe risponderà all'ultimo messaggio inviato dal bot. Riceverai anche il messaggio a cui l'utente ha risposto nel messaggio dell'API. È possibile verificare se il messaggio a cui l'utente ha risposto è il precondizione/messaggio corretto per il comando e quindi limitare o consentire il comando.

User: /buy 

What do you want to buy? /shoes or /food :Bot 

User: [Answer to: What do you...] /food 

How about some Popcorn? Use /buy_popcorn :Bot 

User: [Answer to: How about some...] /buy_shoe 

Sorry, but you're currently in the Food Store :Bot 

Si tratta di preferenze personali, immagino. Ma tutto ha pro e contro e devi decidere se vuoi consentire comandi specifici senza una condizione preliminare.

Questo elenco potrebbe non essere completo. Potrebbe essere che ci siano altri modi, non ci ho pensato. Ma questi 3 sono modi che conosco.

+0

Grazie per le vostre risposte. –

Problemi correlati