Skip to content

Instantly share code, notes, and snippets.

@adamjuhasz
Created April 4, 2017 16:50
Show Gist options
  • Save adamjuhasz/183864dbd8be872f334008a06425dc8d to your computer and use it in GitHub Desktop.
Save adamjuhasz/183864dbd8be872f334008a06425dc8d to your computer and use it in GitHub Desktop.
bp.hear(), (event, next) => {
bp.db.kvs.get(event.user.id)
.then(user => {
if (!user || user.step === 0) {
bp.messenger.sendText(event.user.id, 'Hello, what would you like me to call you?');
return bp.db.kvs.set(event.user.id, defaultUser);
}
if (user.step > 2) {
// already registered user do somethign else here
}
switch (user.step) {
case 1:
user.nickname = event.text;
bp.messenger.sendText(event.user.id, `Ok ${user.nickname}, how old are you?`);
break;
case 2:
user.age = parseInt(event.text, 10);
bp.messenger.sendTemplate(event.user.id, {
template_type: 'button',
text: `Ok ${user.nickname}, pick an interest`,
buttons: [
{ type: 'postback', title: 'Business', payload: 'BUSINESS'},
{ type: 'postback', title: 'Politics', payload: 'POLITICS'},
{ type: 'postback', title: 'Sports', payload: 'SPORTS'},
]
});
break;
}
user.step++;
return bp.db.kvs.set(event.user.id, user);
})
})
bp.hear({
type: 'postback',
text: 'BUSINESS'
}, (event, next) => {
bp.messenger.sendText(event.user.id, 'Subscribing you to business news.');
return bp.db.kvs.set(event.user.id, 'BUSINESS', 'interest');
}):
bp.hear({
type: 'postback',
text: 'POLITICS'
}, (event, next) => {
bp.messenger.sendText(event.user.id, 'Subscribing you to political news.');
return bp.db.kvs.set(event.user.id, 'POLITICS', 'interest');
}):
bp.hear({
type: 'postback',
text: 'SPORTS'
}, (event, next) => {
bp.messenger.sendText(event.user.id, 'Subscribing you to sports news.');
return bp.db.kvs.set(event.user.id, 'SPORTS', 'interest');
}):
const defaultUser = {
step: 1,
nickname: null,
age: 0,
interest: null,
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment