UNPKG

node-red-contrib-chatbot

Version:

REDBot a Chat bot for a full featured chat bot for Telegram, Facebook Messenger and Slack. Almost no coding skills required

77 lines (75 loc) 2.22 kB
var _ = require('underscore'); module.exports = function parseButtons(buttons) { return _(buttons).chain() .map(function(button) { var temp = null; if (button.type == null && _.isArray(button.items) && !_.isEmpty(button.items)) { return { title: button.label, type: 'nested', call_to_actions: parseButtons(button.items) } } else { switch (button.type) { case 'url': temp = { type: 'web_url', title: button.label, url: button.url }; if (button.webViewHeightRatio != null) { temp.webview_height_ratio = button.webViewHeightRatio; } if (button.extensions != null) { temp.messenger_extensions = button.extensions; } return temp; case 'call': return { type: 'phone_number', title: button.label, payload: button.number }; case 'postback': return { type: 'postback', title: button.label, payload: button.value }; case 'share': return { type: 'element_share' }; case 'login': return { type: 'account_link', url: button.url }; case 'logout': return { type: 'account_unlink' }; case 'quick-reply': temp = { content_type: 'text', title: button.label, payload: !_.isEmpty(button.value) ? button.value : button.label }; if (!_.isEmpty(button.url)) { temp.image_url = button.url; } return temp; case 'location': return { content_type: 'location' }; default: // eslint-disable-next-line no-console console.log('Facebook Messenger was not able to use button of type "' + button.type + '"'); return null; } } }) .compact() .value(); };