UNPKG

umbot

Version:

Universal bot(vk, telegram, viber) or skills for Yandex.Alisa, Маруся and sber

83 lines (82 loc) 3.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Viber = void 0; const TemplateTypeModel_1 = require("./TemplateTypeModel"); const mmApp_1 = require("../mmApp"); const ViberRequest_1 = require("../api/ViberRequest"); const button_1 = require("../components/button"); class Viber extends TemplateTypeModel_1.TemplateTypeModel { async init(query, controller) { if (query) { let content; if (typeof query === 'string') { content = JSON.parse(query); } else { content = { ...query }; } if (!this.controller) { this.controller = controller; } this.controller.requestObject = content; if (content.message) { switch (content.event) { case 'conversation_started': if (content.user) { this.controller.userId = content.user.id; this.controller.userCommand = ''; this.controller.messageId = 0; mmApp_1.mmApp.params.viber_api_version = content.user.api_version || 2; this.setNlu(content.sender.name || ''); } return true; case 'message': this.controller.userId = content.sender.id; mmApp_1.mmApp.params.user_id = this.controller.userId; this.controller.userCommand = content.message.text.toLowerCase().trim(); this.controller.originalUserCommand = content.message.text; this.controller.messageId = content.message_token; mmApp_1.mmApp.params.viber_api_version = content.sender.api_version || 2; this.setNlu(content.sender.name || ''); return true; } } } else { this.error = 'Viber:init(): Отправлен пустой запрос!'; } return false; } setNlu(userName) { const name = userName.split(' '); const thisUser = { username: name[0] || null, first_name: name[1] || null, last_name: name[2] || null, }; this.controller.nlu.setNlu({ thisUser }); } async getContext() { if (this.controller.isSend) { const viberApi = new ViberRequest_1.ViberRequest(); const params = {}; const keyboard = this.controller.buttons.getButtons(button_1.Buttons.T_VIBER_BUTTONS); if (keyboard) { params.keyboard = keyboard; params.keyboard.Type = 'keyboard'; } await viberApi.sendMessage(this.controller.userId, mmApp_1.mmApp.params.viber_sender, this.controller.text, params); if (this.controller.card.images.length) { const res = await this.controller.card.getCards(); if (res.length) { await viberApi.richMedia(this.controller.userId, res); } } if (this.controller.sound.sounds.length) { await this.controller.sound.getSounds(this.controller.tts); } } return 'ok'; } } exports.Viber = Viber;