umbot
Version:
Universal bot(vk, telegram, viber) or skills for Yandex.Alisa, Маруся and sber
83 lines (82 loc) • 3.45 kB
JavaScript
"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;