Sto creando una specie di applicazione "assistente personale" che è fondamentalmente un servizio web che riceve un messaggio e poi fa qualcosa in base ad esso.
Ad esempio, invio "che ore sono?" e ricevo l'ora corrente come risposta. Altri esempi:
- "dimmi una barzelletta" - > interroga e invia alcuni scherzi da una API pubblica
- "Devo [X] - > imposta [X] nella lista cose
- "Che cosa devo fare?" - > invia la lista di cose da fare
- "Avvia il mio pc" - > Avvia PC tramite Wake On Lan
o qualsiasi altra cosa mi venga in mente.
Il mio primo prototipo utilizza solo una dichiarazione if else che assomiglia a
if message.contains("foo"):
# do foo stuff
elif message.contains("bar"):
# do bar stuff
Ovviamente questo sarà un disastro totale dopo l'aggiunta di diversi comandi, quindi sto pensando a quale sarebbe un buon concetto per strutturare una dichiarazione condizionale così grande.
(Sto usando Python con il framework web.py)
Un'idea è di usare qualche lista / mappa per creare una mappatura tra parole chiave e funzioni associate e suddividere le funzionalità in classi diverse (come un modulo di elenco delle cose da fare e così via).
Esistono applicazioni come WolframAlpha o Siri che hanno solo un singolo metodo di input ma diverse centinaia o migliaia di funzioni diverse nel brackground. Naturalmente quelli sono a un livello completamente diverso, ma in generale, come si crea una ramificazione bella e pulita da un singolo input a un gran numero di diverse funzioni?