UNPKG

bottender

Version:

A framework for building conversational user interfaces.

122 lines 5.52 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.deleteWebhook = exports.setWebhook = void 0; const invariant_1 = __importDefault(require("invariant")); const enquirer_1 = require("enquirer"); const messaging_api_viber_1 = require("messaging-api-viber"); const getChannelConfig_1 = __importDefault(require("../../../shared/getChannelConfig")); const getSubArgs_1 = __importDefault(require("../sh/utils/getSubArgs")); const getWebhookFromNgrok_1 = __importDefault(require("../../../shared/getWebhookFromNgrok")); const types_1 = require("../../../types"); const log_1 = require("../../../shared/log"); const help_1 = __importDefault(require("./help")); function setWebhook(ctx) { return __awaiter(this, void 0, void 0, function* () { const argv = getSubArgs_1.default(ctx.argv, { '--webhook': String, '-w': '--webhook', '--ngrok-port': String, }); let webhook = argv['--webhook']; const ngrokPort = argv['--ngrok-port'] || '4040'; try { const config = getChannelConfig_1.default(types_1.Channel.Viber); const { accessToken, sender, path = '/webhooks/viber' } = config; invariant_1.default(accessToken, '`accessToken` is not found in the `bottender.config.js` file'); invariant_1.default(sender, '`sender` is not found in the `bottender.config.js` file'); const client = new messaging_api_viber_1.ViberClient({ accessToken, sender, }); if (!webhook) { log_1.warn('We can not find the webhook callback URL you provided.'); const prompt = new enquirer_1.Confirm({ name: 'question', message: `Are you using ngrok (get URL from ngrok server on http://127.0.0.1:${ngrokPort})?`, }); const result = yield prompt.run(); if (result) { webhook = `${yield getWebhookFromNgrok_1.default(ngrokPort)}${path}`; } } invariant_1.default(webhook, '`webhook` is required but not found. Use -w <webhook> to set up or make sure you are running ngrok server.'); yield client.setWebhook(webhook, config.Events); log_1.print('Successfully set Viber webhook callback URL'); } catch (err) { log_1.error('Failed to set Viber webhook'); if (err.response) { log_1.error(`status: ${log_1.bold(err.response.status)}`); if (err.response.data) { log_1.error(`data: ${log_1.bold(JSON.stringify(err.response.data, null, 2))}`); } } else { log_1.error(err.message); } return process.exit(1); } }); } exports.setWebhook = setWebhook; function deleteWebhook(_) { return __awaiter(this, void 0, void 0, function* () { try { const config = getChannelConfig_1.default(types_1.Channel.Viber); const { accessToken, sender } = config; invariant_1.default(accessToken, '`accessToken` is not found in the `bottender.config.js` file'); invariant_1.default(sender, '`sender` is not found in the `bottender.config.js` file'); const client = new messaging_api_viber_1.ViberClient({ accessToken, sender, }); yield client.removeWebhook(); log_1.print('Successfully delete Viber webhook'); } catch (err) { log_1.error('Failed to delete Viber webhook'); if (err.response) { log_1.error(`status: ${log_1.bold(err.response.status)}`); if (err.response.data) { log_1.error(`data: ${log_1.bold(JSON.stringify(err.response.data, null, 2))}`); } } else { log_1.error(err.message); } return process.exit(1); } }); } exports.deleteWebhook = deleteWebhook; function main(ctx) { return __awaiter(this, void 0, void 0, function* () { const subcommand = ctx.argv._[2]; switch (subcommand) { case 'set': yield setWebhook(ctx); break; case 'delete': case 'del': yield deleteWebhook(ctx); break; default: log_1.error(`Please specify a valid subcommand: set, delete`); help_1.default(); } }); } exports.default = main; //# sourceMappingURL=webhook.js.map