@botonic/react
Version:
Build Chatbots using React
69 lines • 2.32 kB
JavaScript
import { Providers } from '@botonic/core';
/**
*
* Whatsapp does not support Markdown
* (its markup syntax is different)
*/
export const MULTICHANNEL_WHATSAPP_PROPS = { markdown: false };
export const WHATSAPP_MAX_BUTTONS = 3;
export const WHATSAPP_LIST_MAX_BUTTONS = 10;
export const WHATSAPP_MAX_BUTTON_CHARS = 20;
export const DEFAULT_WHATSAPP_MAX_BUTTON_SEPARATOR = 'More options:';
export const MENU_BUTTON_WHATSAPP_BUTTON_LIST = 'Show options';
export function isMultichannelButton(node) {
return isNodeKind(node, 'MultichannelButton');
}
export function isMultichannelReply(node) {
return isNodeKind(node, 'MultichannelReply');
}
export function isButton(node) {
return isNodeKind(node, 'Button');
}
export function isNodeKind(node, kind) {
return node.type && node.type.name == kind;
}
export function elementHasUrl(element) {
return element.props && element.props.url;
}
export function elementHasPostback(element) {
return ((element.props && element.props.payload) ||
(element.props && element.props.path));
}
export function elementHasWebview(element) {
return element.props && element.props.webview;
}
export const buttonTypes = {
POSTBACK: 'postback',
URL: 'url',
WEBVIEW: 'webview',
};
export function getButtonType(multichannelButton) {
if (elementHasUrl(multichannelButton))
return buttonTypes.URL;
if (elementHasPostback(multichannelButton))
return buttonTypes.POSTBACK;
if (elementHasWebview(multichannelButton))
return buttonTypes.WEBVIEW;
return undefined;
}
export function getFilteredElements(node, filter) {
const elements = [];
for (const n of node) {
if (filter(n))
elements.push(n);
}
return elements;
}
export function getMultichannelButtons(node) {
return getFilteredElements(node, isMultichannelButton);
}
export function getMultichannelReplies(node) {
return getFilteredElements(node, isMultichannelReply);
}
export const isWhatsapp = context => context.session &&
context.session.user &&
context.session.user.provider == Providers.Messaging.WHATSAPP;
export const isFacebook = context => context.session &&
context.session.user &&
context.session.user.provider == Providers.Messaging.FACEBOOK;
//# sourceMappingURL=multichannel-utils.js.map