"use strict";
import {LogLevelAreas, NodeSDK as RainbowSDK} from "../index";
/*
* @name index.ts
*
* @description :
* The index.ts file is not a "best practice", but it is a file used by developper to test/validate the SDK, so you can find in it some help.
*
*/
import * as Utils from "../lib/common/Utils";
import {
addParamToUrl,
addPropertyToObj,
Deferred,
findAllPropInJSONByPropertyName,
findAllPropInJSONByPropertyNameByXmlNS,
flattenObject,
functionName,
genererCode,
getJsonFromXML,
getRandomInt,
getStoreStanzaValue,
getTextFromJSONProperty,
isDefined,
isInstanceOfClass,
isJsonObject,
isPlainObject,
isString,
makeId,
msToTime,
pause,
readArrayFromFile,
setTimeoutPromised,
until,
updatePropertyToObj,
writeArrayToFile
} from "../lib/common/Utils";
import {XMPPUTils} from "../lib/common/XMPPUtils";
import {TimeOutManager} from "../lib/common/TimeOutManager";
import {OFFERTYPES} from "../lib/services/AdminService";
import {Conversation, MessagesQueue} from "../lib/common/models/Conversation";
import {appendFileSync, createWriteStream, writeFileSync} from "fs";
import {SDKSTATUSENUM} from "../lib/common/StateManager";
import {AlertFilter} from "../lib/common/models/AlertFilter";
import {List} from "ts-generic-collections-linq";
import {AlertTemplate} from "../lib/common/models/AlertTemplate";
import {Alert} from "../lib/common/models/Alert";
import {AlertDevice, AlertDevicesData} from "../lib/common/models/AlertDevice";
import {Contact} from "../lib/common/models/Contact";
import {ConferenceSession} from "../lib/common/models/ConferenceSession";
import {DataStoreType, UrgencyType} from "../lib/config/config";
import {FileUpdated} from "../lib/services/FileStorageService";
import {Server as MockServer, WebSocket as WS} from 'mock-socket';
import {v4 as uuidv4} from 'uuid';
//const moment = global.get('moment');
import serialize from 'safe-stable-stringify';
//const serialize = global.get('safestablestringify');
import * as ACData from "adaptivecards-templating";
//const ACData = global.get('adaptivecardstemplating');
import * as path from "path";
import mime from 'mime';
// import * as nock from 'nock'
import * as ini from 'ini';
//const ini = require('ini')
//const MockServer = require("mock-socket").Server;
//const WS = require("mock-socket").WebSocket;
// global.it = () => {return true};
// Load the SDK
// For using the fiddler proxy which logs requests to server
// process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = "0";
import Bubble_1 from "../lib/common/models/Bubble";
//import fileapi from "file-api";
//let fileapi = require('file-api');
import * as util from "util";
import {inspect} from "util";
//const inquirer = require("inquirer");
import inquirer from "inquirer";
import inquirerPrompt from 'inquirer-autocomplete-prompt';
import {search} from '@inquirer/prompts';
import figures from '@inquirer/figures'
import chalk from 'chalk'
import {NameSpacesLabels} from "../lib/connection/XMPPService.js";
import {jwtDecode} from "jwt-decode";
import {LevelLogs, LEVELSNAMES} from "../lib/common/LevelLogs.js";
import {TaskInput} from "../lib/services/TasksService.js";
import * as v8 from "v8";
import {tmpdir} from "node:os";
import {PresenceLevel} from "../lib/common/models/PresenceRainbow.js";
import fs = require("fs");
const xml = require("@xmpp/xml");
const parse = require("@xmpp/xml/lib/parse");
const xmppUtils = XMPPUTils.getXMPPUtils();
const prettydata = require("../lib/connection/pretty-data").pd;
const Element = require('ltx').Element;
const express = require( "express" );
// @ts-ignore
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());
});
};
Object.defineProperty(exports, "__esModule", {value: true});
/*const readline = require('readline').createInterface({
input: process.stdin,
output: process.stdout
}); // */
//let rainbowMode = "s2s" ;
let rainbowMode = "xmpp";
let ngrok = require('ngrok');
//import ngrok from 'ngrok';
const Fs = require('@supercharge/fs') ;
const sp = require('synchronized-promise');
//const {tmpdir} = require("node:os");
async function tempDirEncapse() {
return new Promise(async function internal_tempDirEncapse (resolve, reject) {
return await Fs.mkdtemp(path.join(tmpdir(), "Ale-Rainbow-Node-SDK-" + makeId(10)) + "-", async function cb (err, folder) {
//if (err) return await Fs.tempDir();
console.log("creating temp dir : " + folder);
// Prints: /tmp/foo-itXde2
if (err) {
console.log("Error while creating temp dir : " + folder, ", error : ", err);
return resolve(await Fs.tempDir());
}
resolve(""+folder);
/*
setTimeout(function () {
console.log("settimeout : " + folder);
resolve(""+folder);
}, 2000); // */
});
});
}
/* tempDirEncapse().then(()=> {
console.log("done");
}).catch (()=>{
console.log("failed");
}
)
// */
const createTempDirSync = sp(tempDirEncapse, {
// Function call timeouts
timeouts: 2 * 1000 * 60,
// deasync tick, default to 100
tick: 100
}); // performs the 'synchronized version'
// /var/folders/71/lxgy9vm54fb7tjcwr55mwccr0000gn/T/1b114e534d3ff95ea5951bb3db5c1cb3
const tempDirToSaveLogs = createTempDirSync();
// */
let urlS2S;
let portS2S = 4000 ;
let expressEngine = undefined;
(async function () {
if (rainbowMode==="s2s") {
console.log("MAIN - S2S Mode, with ngrock.");
portS2S = 4001 + Math.round(Math.random() * 1000);
urlS2S = await ngrok.connect(portS2S).catch((error) => {
console.log("MAIN - ngrock, error : ", error);
process.exit(0);
});
console.log("MAIN - ngrock, urlS2S : ", urlS2S, ", portS2S : ", portS2S);
expressEngine = express();
expressEngine.use(express.json());
expressEngine.listen(portS2S, function () {
console.log("MAIN - Server is running on " + portS2S + " port");
});
} else {
console.log("MAIN - XMPP Mode.");
}
// const tempDirToSaveLogs = "c:\\temp";
let logLevelAreas = new LogLevelAreas();
/*
logLevelAreas.showAllLogs();
logLevelAreas.showServicesApiLogs();
logLevelAreas.showRESTLogs();
logLevelAreas.showEventsLogs();
logLevelAreas.showServicesLogs();
logLevelAreas.showBubblesLogs();
// */
logLevelAreas.admin.api = true;
logLevelAreas.admin.level = LEVELSNAMES.ERROR;
logLevelAreas.alerts.api = true;
logLevelAreas.alerts.level = LEVELSNAMES.ERROR;
logLevelAreas.bubbles.api = true;
logLevelAreas.bubbles.level = LEVELSNAMES.ERROR;
logLevelAreas.calllog.api = true;
logLevelAreas.calllog.level = LEVELSNAMES.ERROR;
logLevelAreas.channels.api = true;
logLevelAreas.channels.level = LEVELSNAMES.ERROR;
logLevelAreas.connectedUser.api = true;
logLevelAreas.connectedUser.level = LEVELSNAMES.ERROR;
logLevelAreas.contacts.api = true;
logLevelAreas.contacts.level = LEVELSNAMES.ERROR;
logLevelAreas.conversations.api = true;
logLevelAreas.conversations.level = LEVELSNAMES.ERROR;
logLevelAreas.events.api = true;
logLevelAreas.events.level = LEVELSNAMES.ERROR;
logLevelAreas.favorites.api = true;
logLevelAreas.favorites.level = LEVELSNAMES.ERROR;
logLevelAreas.fileServer.api = true;
logLevelAreas.fileServer.level = LEVELSNAMES.ERROR;
logLevelAreas.fileStorage.api = true;
logLevelAreas.fileStorage.level = LEVELSNAMES.ERROR;
logLevelAreas.groups.api = true;
logLevelAreas.groups.level = LEVELSNAMES.ERROR;
logLevelAreas.httpoverxmpp.api = true;
logLevelAreas.httpoverxmpp.level = LEVELSNAMES.ERROR;
logLevelAreas.ims.api = true;
logLevelAreas.ims.level = LEVELSNAMES.ERROR;
logLevelAreas.invitations.api = true;
logLevelAreas.invitations.level = LEVELSNAMES.ERROR;
logLevelAreas.presence.api = true;
logLevelAreas.presence.level = LEVELSNAMES.ERROR;
logLevelAreas.profiles.api = true;
logLevelAreas.profiles.level = LEVELSNAMES.ERROR;
logLevelAreas.rbvoice.api = true;
logLevelAreas.rbvoice.level = LEVELSNAMES.ERROR;
logLevelAreas.rpcoverxmpp.api = true;
logLevelAreas.rpcoverxmpp.level = LEVELSNAMES.ERROR;
logLevelAreas.s2s.api = true;
logLevelAreas.s2s.level = LEVELSNAMES.ERROR;
logLevelAreas.settings.api = true;
logLevelAreas.settings.level = LEVELSNAMES.ERROR;
logLevelAreas.tasks.api = true;
logLevelAreas.tasks.level = LEVELSNAMES.ERROR;
logLevelAreas.telephony.api = true;
logLevelAreas.telephony.level = LEVELSNAMES.ERROR;
logLevelAreas.version.api = true;
logLevelAreas.version.level = LEVELSNAMES.ERROR;
logLevelAreas.webinars.api = true;
logLevelAreas.webinars.level = LEVELSNAMES.ERROR;
logLevelAreas.core.level = LEVELSNAMES.ERROR;
logLevelAreas.bubblesmanager.level = LEVELSNAMES.ERROR;
logLevelAreas.httpmanager.level = LEVELSNAMES.ERROR;
logLevelAreas.httpservice.level = LEVELSNAMES.ERROR;
logLevelAreas.rest.level = LEVELSNAMES.ERROR;
logLevelAreas.resttelephony.level = LEVELSNAMES.ERROR;
logLevelAreas.restconferencev2.level = LEVELSNAMES.ERROR;
logLevelAreas.restwebinar.level = LEVELSNAMES.ERROR;
logLevelAreas.xmpp.level = LEVELSNAMES.ERROR;
logLevelAreas.xmpp.xmppin
logLevelAreas.xmpp.xmppout
logLevelAreas.s2sevent.level = LEVELSNAMES.ERROR;
logLevelAreas.rbvoiceevent.level = LEVELSNAMES.ERROR;
logLevelAreas.alertevent.level = LEVELSNAMES.ERROR;
logLevelAreas.calllogevent.level = LEVELSNAMES.ERROR;
logLevelAreas.channelevent.level = LEVELSNAMES.ERROR;
logLevelAreas.conversationevent.level = LEVELSNAMES.ERROR;
logLevelAreas.conversationhistory.level = LEVELSNAMES.ERROR;
logLevelAreas.favoriteevent.level = LEVELSNAMES.ERROR;
logLevelAreas.httpoverxmppevent.level = LEVELSNAMES.ERROR;
logLevelAreas.invitationevent.level = LEVELSNAMES.ERROR;
logLevelAreas.iqevent.level = LEVELSNAMES.ERROR;
logLevelAreas.presenceevent.level = LEVELSNAMES.ERROR;
logLevelAreas.rpcoverxmppevent.level = LEVELSNAMES.ERROR;
logLevelAreas.tasksevent.level = LEVELSNAMES.ERROR;
logLevelAreas.telephonyevent.level = LEVELSNAMES.ERROR;
logLevelAreas.webinarevent.level = LEVELSNAMES.ERROR;
logLevelAreas.showRESTLogs(LEVELSNAMES.INTERNAL);
logLevelAreas.showEventsLogs();
// logLevelAreas.showServicesLogs();
logLevelAreas.hideServicesApiLogs();
/*
logLevelAreas.tasks.api = true;
logLevelAreas.tasks.level = LEVELSNAMES.INTERNAL;
logLevelAreas.tasksevent.level = LEVELSNAMES.INTERNAL;
*/
logLevelAreas.conversations.api = true;
logLevelAreas.conversations.level = LEVELSNAMES.INTERNAL;
logLevelAreas.conversationevent.level = LEVELSNAMES.INTERNAL;
logLevelAreas.conversationhistory.level = LEVELSNAMES.INTERNAL;
// */
logLevelAreas.contacts.api = true;
logLevelAreas.contacts.level = LEVELSNAMES.ERROR;
//logLevelAreas.bubblesmanager.level = LEVELSNAMES.INTERNAL;
logLevelAreas.fileServer.api = true;
logLevelAreas.fileServer.level = LEVELSNAMES.INTERNAL;
logLevelAreas.fileStorage.api = true;
logLevelAreas.fileStorage.level = LEVELSNAMES.INTERNAL;
logLevelAreas.xmpp.level = LEVELSNAMES.INTERNAL;
logLevelAreas.xmpp.xmppin
logLevelAreas.xmpp.xmppout
if (rainbowMode === "s2s") {
logLevelAreas.s2s.api = true;
logLevelAreas.s2s.level = LEVELSNAMES.INTERNAL;
logLevelAreas.s2sevent.level = LEVELSNAMES.INTERNAL;
logLevelAreas.presence.api = true;
logLevelAreas.presence.level = LEVELSNAMES.INTERNAL;
}
logLevelAreas.bubblesmanager.level = LEVELSNAMES.INTERNAL;
logLevelAreas.bubbles.api = true;
logLevelAreas.bubbles.level = LEVELSNAMES.INTERNAL;
logLevelAreas.telephony.api = true;
logLevelAreas.telephony.level = LEVELSNAMES.INTERNAL;
logLevelAreas.profiles.api = true;
logLevelAreas.profiles.level = LEVELSNAMES.INTERNAL;
logLevelAreas.presenceevent.level = LEVELSNAMES.INTERNAL;
// */
// Define your configuration
let options: any = {
"rainbow": {
"host": "sandbox", // Can be "sandbox" (developer platform), "official" or any other hostname when using dedicated AIO
// "host": "openrainbow.net",
// "mode": "s2s"
"mode": rainbowMode,
//"mode": "xmpp"
// "concurrentRequests" : 20
},
"xmpp": {
"host": "",
"port": "443",
"protocol": "wss",
"timeBetweenXmppRequests": "0",
"raiseLowLevelXmppInEvent": false,
"raiseLowLevelXmppOutReq": false,
"maxIdleTimer": 16000,
"maxPingAnswerTimer": 11000,
// "xmppRessourceName": "vnagw",
"maxPendingAsyncLockXmppQueue": 10000
},
"s2s": {
"hostCallback": urlS2S,
//"hostCallback": "http://70a0ee9d.ngrok.io",
"locallistenningport": portS2S,
"expressEngine": expressEngine
},
"rest": {
"useRestAtStartup": true,
"useGotLibForHttp": true,
"gotOptions": {
agentOptions: {
/**
* Keep sockets around in a pool to be used by other requests in the future. Default = false
*/
keepAlive: true, // ?: boolean | undefined;
/**
* When using HTTP KeepAlive, how often to send TCP KeepAlive packets over sockets being kept alive. Default = 1000.
* Only relevant if keepAlive is set to true.
*/
keepAliveMsecs: 4302, // ?: number | undefined;
/**
* Maximum number of sockets to allow per host. Default for Node 0.10 is 5, default for Node 0.12 is Infinity
*/
maxSockets: Infinity, // ?: number | undefined;
/**
* Maximum number of sockets allowed for all hosts in total. Each request will use a new socket until the maximum is reached. Default: Infinity.
*/
maxTotalSockets: Infinity, // ?: number | undefined;
/**
* Maximum number of sockets to leave open in a free state. Only relevant if keepAlive is set to true. Default = 256.
*/
maxFreeSockets: 1002, // ?: number | undefined;
/**
* Socket timeout in milliseconds. This will set the timeout after the socket is connected.
*/
timeout: 120002, // ?: number | undefined;
/**
* If not false, the server certificate is verified against the list of supplied CAs. Default: true.
*/
rejectUnauthorized: false
},
gotRequestOptions: {
timeout: { // This object describes the maximum allowed time for particular events.
lookup: 5252, // lookup: 100, Starts when a socket is assigned. Ends when the hostname has been resolved.
connect: 10252, // connect: 50, Starts when lookup completes. Ends when the socket is fully connected.
secureConnect: 10252, // secureConnect: 50, Starts when connect completes. Ends when the handshake process completes.
socket: 120002, // socket: 1000, Starts when the socket is connected. Resets when new data is transferred.
send: 120002, // send: 10000, // Starts when the socket is connected. Ends when all data have been written to the socket.
response: 120002 // response: 1000 // Starts when request has been flushed. Ends when the headers are received.
}
} // */
}
}, // */
"credentials": {
"login": "", // The Rainbow email account to use
"password": "",
"apikey":""
},
// Application identifier
"application": {
"appID": "",
"appSecret": ""
},
// */
// Proxy configuration
/*proxy: {
host: undefined,
port: 8080,
protocol: undefined,
user: undefined,
password: undefined,
secureProtocol: undefined //"SSLv3_method"
}, // */
// Proxy Cyril.
/* proxy: {
host: "10.10.13.17",
port: 8888,
protocol: "http",
user: "proxyuser",
password: "XXXXX",
secureProtocol: undefined //"SSLv3_method"
}, // */
// Proxy 2 Cyril.
/*
proxy: {
host: "10.10.13.17",
port: 3128,
protocol: "http",
user: "cyril",
password: "test",
secureProtocol: undefined //"SSLv3_method"
}, // */
/* proxy: {
host: "127.0.0.1",
port: 8888,
protocol: "http",
user: "vincent",
password: "pwd1234",
secureProtocol: undefined //"SSLv3_method"
}, // */
// Proxy configuration
/* proxy: {
host: "10.67.253.14",
port: 8081,
protocol: "http",
//user: "",
//password: "",
//secureProtocol: "SSLv3_method"
}, // */
// Logs options
"logs": {
"enableConsoleLogs": true,
"enableFileLogs": true,
"enableEventsLogs": false,
"enableEncryptedLogs": false,
"color": true,
//"level": "error",
//"level": "info",
//"level": "internal",
"level": "internal",
//"level": "debug",
"customLabel": "RainbowSample",
"system-dev": {
"internals": true,
"http": true,
},
"filter": "",
//"areas": logLevelAreas,
/*,
"areas" : {
"admin": {
"category": "services",
"api": true,
"level": "debug"
},
"alerts": {
"category": "services",
"api": true,
"level": "error"
},
"bubbles": {
"category": "services",
"api": false,
"level": "debug"
},
"calllog": {
"category": "services",
"api": true,
"level": "error"
},
"channels": {
"category": "services",
"api": true,
"level": "error"
},
"connectedUser": {
"category": "services",
"api": true,
"level": "error"
},
"contacts": {
"category": "services",
"api": false,
"level": "error"
},
"conversations": {
"category": "services",
"api": true,
"level": "error"
},
"events": {
"category": "services",
"api": true,
"level": "error"
},
"favorites": {
"category": "services",
"api": true,
"level": "error"
},
"fileServer": {
"category": "services",
"api": true,
"level": "error"
},
"fileStorage": {
"category": "services",
"api": true,
"level": "error"
},
"groups": {
"category": "services",
"api": true,
"level": "error"
},
"httpoverxmpp": {
"category": "services",
"api": true,
"level": "error"
},
"im": {
"category": "services",
"api": true,
"level": "error"
},
"invitations": {
"category": "services",
"api": true,
"level": "error"
},
"presence": {
"category": "services",
"api": true,
"level": "debug"
},
"profiles": {
"category": "services",
"api": true,
"level": "error"
},
"rbvoice": {
"category": "services",
"api": true,
"level": "error"
},
"rpcoverxmpp": {
"category": "services",
"api": true,
"level": "error"
},
"s2s": {
"category": "services",
"api": true,
"level": "error"
},
"settings": {
"category": "services",
"api": true,
"level": "error"
},
"tasks": {
"category": "services",
"api": true,
"level": "debug"
},
"telephony": {
"category": "services",
"api": true,
"level": "error"
},
"version": {
"category": "services",
"api": true,
"level": "error"
},
"webinars": {
"category": "services",
"api": true,
"level": "error"
},
'core': {
"category": "lawlayer",
"level": "debug"
},
'bubblesmanager': {
"category": "lawlayer",
"level": "error"
},
'httpmanager': {
"category": "lawlayer",
"level": "error"
},
'httpservice': {
"category": "lawlayer",
"level": "http"
},
'rest': {
"category": "lawlayer",
"level": "debug"
},
'resttelephony': {
"category": "lawlayer",
"level": "error"
},
'restconferencev2': {
"category": "lawlayer",
"level": "error"
},
'restwebinar': {
"category": "lawlayer",
"level": "error"
},
'xmpp': {
"category": "lawlayer",
"level": "error",
"xmppin": true,
"xmppout": true
},
's2sevent': {
"category": "eventHandlers",
"level": "error"
},
'rbvoiceevent': {
"category": "eventHandlers",
"level": "error"
},
'alertevent': {
"category": "eventHandlers",
"level": "error"
},
'calllogevent': {
"category": "eventHandlers",
"level": "error"
},
'channelevent': {
"category": "eventHandlers",
"level": "error"
},
'conversationevent': {
"category": "eventHandlers",
"level": "debug"
},
'conversationhistory': {
"category": "eventHandlers",
"level": "debug"
},
'favoriteevent': {
"category": "eventHandlers",
"level": "error"
},
'httpoverxmppevent': {
"category": "eventHandlers",
"level": "error"
},
'invitationevent': {
"category": "eventHandlers",
"level": "error"
},
'iqevent': {
"category": "eventHandlers",
"level": "debug"
},
'presenceevent': {
"category": "eventHandlers",
"level": "error"
},
'rpcoverxmppevent': {
"category": "eventHandlers",
"level": "error"
},
'telephonyevent': {
"category": "eventHandlers",
"level": "error"
},
'webinarevent': {
"level": "error"
},
},// */
"file": {
"path": tempDirToSaveLogs,
"customFileName": "R-SDK-Node-Sample-" + Math.floor(Math.random() * 1000),
//"level": 'info', // Default log level used
"zippedArchive": false,
"maxSize": '500m',
"maxFiles": 5 // */
}
},
"testOutdatedVersion": true,
"testDNSentry": true,
"httpoverxmppserver": true,
"intervalBetweenCleanMemoryCache": 1000 * 60 * 60 * 6, // Every 6 hours.
"requestsRate": {
"useRequestRateLimiter": false,
"maxReqByIntervalForRequestRate": 1250, // nb requests during the interval.
"intervalForRequestRate": 60, // nb of seconds used for the calcul of the rate limit.
"timeoutRequestForRequestRate": 600 // nb seconds Request stay in queue before being rejected if queue is full.
},
"autoReconnectIgnoreErrors": false,
// IM options
"im": {
"sendReadReceipt": true,
// "messageMaxLength": 16384,
// "messageMaxLength": 1024,
"sendMessageToConnectedUser": false,
"conversationsRetrievedFormat": "full",
"storeMessages": false,
"copyMessage": true,
"nbMaxConversations": 15,
"rateLimitPerHour": 100000,
// "messagesDataStore": DataStoreType.NoStore,
"messagesDataStore": DataStoreType.StoreTwinSide,
// "messagesDataStore": DataStoreType.NoPermanentStore,
"autoInitialGetBubbles": true,
"autoInitialBubblePresence": true,
"maxBubbleJoinInProgress": 10,
"autoInitialBubbleFormat": "full",
"autoInitialBubbleUnsubscribed": true,
//"autoLoadConversations": true,
// "autoInitialBubblePresence": false,
"autoLoadConversations": true,
"autoLoadConversationHistory": false,
"autoLoadContacts": true,
"autoInitialLoadContactsInfoBulk": "true",
"autoLoadCallLog": false,
"enableCarbon": true,
"enablesendurgentpushmessages": true,
//"useMessageEditionAndDeletionV2": false
"storeMessagesInConversation": true,
"maxMessagesStoredInConversation" : 830
},
// Services to start. This allows to start the SDK with restricted number of services, so there are less call to API.
// Take care, severals services are linked, so disabling a service can disturb an other one.
// By default all the services are started. Events received from server are not yet filtered.
// So this feature is realy risky, and should be used with much more cautions.
"servicesToStart": {
"bubbles": {
"start_up": true,
},
"telephony": {
"start_up": false,
},
"channels": {
"start_up": true,
},
"admin": {
"start_up": true,
},
"fileServer": {
"start_up": true,
},
"fileStorage": {
"start_up": true,
},
"calllog": {
"start_up": true,
},
"favorites": {
"start_up": true,
},
"alerts": {
"start_up": true,
},
"httpoverxmpp": {
"start_up":true,
},
"rpcoverxmpp": {
"start_up":true,
},
// need services :
"webrtc": {
"start_up": true,
"optional": true
} // */
} // */
};
process.argv.forEach((val, index) => {
//console.log(`${index}: ${val}`);
if (`${val}`.startsWith("login=")) {
options.credentials.login = `${val}`.substring(6);
}
if (`${val}`.startsWith("password=")) {
options.credentials.password = `${val}`.substring(9);
}
if (`${val}`.startsWith("apikey=")) {
options.credentials.apikey = `${val}`.substring(7);
}
if (`${val}`.startsWith("host=")) {
options.rainbow.host = `${val}`.substring(5);
}
if (`${val}`.startsWith("appID=")) {
options.application.appID = `${val}`.substring(6);
}
if (`${val}`.startsWith("appSecret=")) {
options.application.appSecret = `${val}`.substring(10);
}
});
console.log("UUID:" + String(uuidv4()).toUpperCase());
options.logs.customLabel = options.credentials.login;
options.logs.customLabel = options.credentials.login;
// Instantiate the SDK
let rainbowSDK = new RainbowSDK(options);
/*
let options2 = Object.assign({}, options);
options2.logs.customLabel += "_2";
let rainbowSDK2 = new RainbowSDK(options2);
let options3 = Object.assign({}, options);
options3.logs.customLabel += "_3";
let rainbowSDK3 = new RainbowSDK(options3);
let options4 = Object.assign({}, options);
options4.logs.customLabel += "_4";
let rainbowSDK4 = new RainbowSDK(options4);
let options5 = Object.assign({}, options);
options5.logs.customLabel += "_5";
let rainbowSDK5 = new RainbowSDK(options5);
let options6 = Object.assign({}, options);
options6.logs.customLabel += "_6";
let rainbowSDK6 = new RainbowSDK(options6);
// */
let _logger = rainbowSDK._core._logger;
let calls = [];
let mycalllogs = {
"callLogs": null,
"simplifiedCallLogs": null
};
_logger.log("debug", "MAIN - rainbow SDK created with options : ", rainbowSDK.option);
function saveCall(call) {
if (!calls[call.id]) {
calls[call.id] = call;
}
}
// Start the SDK
//rainbowSDK.start();
rainbowSDK.events.onLog("debug", (log) => {
console.log(_logger.colors.green("MAIN - Log : ") + log);
});
let fileLogXmpp;
if (options.xmpp.raiseLowLevelXmppInEvent || options.xmpp.raiseLowLevelXmppOutReq) {
let now = new Date().getTime();
let utc = new Date().toJSON().replace(/-/g, "_").replace(/:/g, "_");
let fileNameXmppLogs = "c:\\temp\\xmpp_" + utc + ".log";
fileLogXmpp = fs.openSync(fileNameXmppLogs, "w");
}
rainbowSDK.events.on("rainbow_onxmmpeventreceived", (...argv) => {
// do something when the SDK is ready to be used
_logger.log("debug", "MAIN - (rainbow_onxmmpeventreceived) - rainbow xmpp event received : ", _logger.colors.cyan(...argv));
if (fileLogXmpp) fs.writeSync(fileLogXmpp, "in: " + _logger.colors.red(argv[0]) + "\n");
});
rainbowSDK.events.on("rainbow_onxmmprequestsent", (...argv) => {
// do something when the SDK is ready to be used
_logger.log("debug", "MAIN - (rainbow_onxmmprequestsent) - rainbow xmpp request sent : ", _logger.colors.yellow(...argv));
if (fileLogXmpp) fs.writeSync(fileLogXmpp, "out: " + _logger.colors.green(argv[0]) + "\n");
});
let GROUP_NAME = "Services";
const displayGroup = async () => {
//let groups = rainbowSDK.groups.getAll();
//let group = groups.find(group => group.name === GROUP_NAME);
let group = await rainbowSDK.groups.getGroupByName(GROUP_NAME, true)
_logger.log("debug", "MAIN - group.length : ", group.length, ", group : ", group);
let users = group.users.map(user => user.id)
_logger.log("debug", "MAIN - users.length : ", users.length, ", users : ", users);
}
rainbowSDK.events.on("rainbow_onready", () => {
// do something when the SDK is ready to be used
_logger.log("debug", "MAIN - (rainbow_onready) - rainbow onready");
/*let contacts = rainbowSDK.contacts.getAll().filter(contact => contact.roster);
console.log("Contacts : ",contacts.length);
contacts.forEach(contact => {
console.log(contact.displayName, " - ",contact.presence, " - ",contact.id);
}) // */
let list = rainbowSDK.contacts.getAll().filter(contact => contact.roster);
if (list) {
list.forEach((contact) => {
_logger.log("debug", "MAIN - (rainbow_onready) contact.displayName : ", contact.displayName, " - ", contact.presence, " - ", contact.id, " - ", contact.loginEmail);
});
} else {
_logger.log("debug", "MAIN - (rainbow_onready) [start " + countStop + "] :: contacts list empty");
}
// */
//rainbowSDK.stop();
_logger.log("debug", "MAIN - Rainbow ready ", rainbowSDK.version);
let contacts = rainbowSDK.contacts.getAll();
_logger.log("debug", "MAIN - Contacts : ", contacts.length);
contacts.forEach(contact => {
console.log(contact.displayName, " - ", contact.presence, " - ", contact.id, " - ", contact.jid);
console.log("Emails ", contact.emails);
console.log("Email pro", contact.emailPro);
})
// setInterval(() => {displayGroup();} , 10000);
_logger.log("debug", "MAIN - ----------------------------------------------------");
});
rainbowSDK.events.on("rainbow_onconnectionerror", () => {
// do something when the SDK has been started
_logger.log("debug", "MAIN - (rainbow_onconnectionerror) - rainbow failed to start.");
});
rainbowSDK.events.on("rainbow_onstarted", () => {
// do something when the SDK has been started
_logger.log("debug", "MAIN - (rainbow_onstarted) - rainbow onstarted");
});
rainbowSDK.events.on("rainbow_oncallupdated", (data) => {
try {
if (data.contact) {
_logger.log("debug", "MAIN - (rainbow_oncallupdated) - rainbow call updated. deviceType : " + data.deviceType + ", State : " + data.status.value + ", displayName : " + data.contact.displayName, data);
} else {
_logger.log("debug", "MAIN - (rainbow_oncallupdated) - rainbow call updated. deviceType : " + data.deviceType + ", State : " + data.status.value + ", ", data);
}
} catch (err) {
}
saveCall(data);
});
rainbowSDK.events.on("rainbow_onvoicemessageupdated", (data) => {
_logger.log("debug", "MAIN - (rainbow_onvoicemessageupdated) - rainbow voice message updated.", data);
});
rainbowSDK.events.on("rainbow_onserviceinitialized", (data) => {
_logger.log("debug", "MAIN - (rainbow_onserviceinitialized) - rainbow service initialized : ", data);
});
rainbowSDK.events.on("rainbow_on429BackoffError", (data) => {
_logger.log("debug", "MAIN - (rainbow_on429BackoffError) - rainbow http code 429 raised, backoff.", data);
});
rainbowSDK.events.on("rainbow_onbubblepresencechanged", (data) => {
_logger.log("debug", "MAIN - (rainbow_onbubblepresencechanged) - rainbow bubble presence, nameForLogs : ", data.nameForLogs, ", status :", data.status,", id :", data.id, ", name : ", data.name);
});
rainbowSDK.events.on("rainbow_onchatstate", (data) => {
_logger.log("debug", "MAIN - (rainbow_onchatstate) - data : ", data);
});
let bubbleInvitationReceived = null;
rainbowSDK.events.on("rainbow_onbubbleinvitationreceived", async (bubble) => {
_logger.log("debug", "MAIN - (rainbow_onbubbleinvitationreceived) - rainbow event received.", bubble);
bubbleInvitationReceived = bubble;
let utc = new Date().toJSON().replace(/-/g, "/");
_logger.log("debug", "MAIN - [rainbow_onbubbleinvitationreceived ] :: bubble : ", bubble);
let message = "message de test : " + utc;
await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", undefined, "subject", undefined, UrgencyType.MIDDLE);
/* await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", {
"type": "text/markdown",
"message": message
}, "subject", undefined, UrgencyType.MIDDLE); // */
});
rainbowSDK.events.on("rainbow_onbubbleconferenceupdated", (conference: ConferenceSession) => {
_logger.log("debug", "MAIN - (rainbow_onbubbleconferenceupdated) - rainbow event received.", conference);
});
rainbowSDK.events.on("rainbow_onbubbleprivilegechanged", (data) => {
_logger.log("debug", "MAIN - (rainbow_onbubbleprivilegechanged) - rainbow bubble privilege, getBubbleLogInfos : ", data.bubble.getBubbleLogInfos(),", members : ", data.bubble.members, ", privilege :", data.privilege);
});
function acceptReceivedInvitation() {
if (bubbleInvitationReceived) {
rainbowSDK.bubbles.acceptInvitationToJoinBubble(bubbleInvitationReceived).then((updatedBubble) => {
_logger.log("debug", "MAIN - acceptInvitationToJoinBubble - sent : ", bubbleInvitationReceived, " : ", updatedBubble);
// Do something once the invitation has been accepted
}).catch((err) => {
// Do something in case of error
_logger.log("error", "MAIN - acceptInvitationToJoinBubble - error : ", err);
});
}
}
rainbowSDK.events.on("rainbow_onownbubbledeleted", (bubble) => {
_logger.log("debug", "MAIN - (rainbow_onownbubbledeleted) - rainbow event received.", bubble);
let bubbles = rainbowSDK.bubbles.getAll();
_logger.log("debug", "MAIN - (rainbow_onownbubbledeleted) - bubbles.", bubbles);
});
rainbowSDK.events.on("rainbow_onmessagereceiptreceived", (data) => {
_logger.log("debug", "MAIN - (rainbow_onmessagereceiptreceived) - rainbow event received.", data);
});
rainbowSDK.events.on("rainbow_onchannelmessagereceived", (data) => {
_logger.log("debug", "MAIN - (rainbow_onchannelmessagereceived) - rainbow event received.", data);
});
rainbowSDK.events.on("rainbow_onbubbleownaffiliationchanged", (data) => {
_logger.log("debug", "MAIN - (rainbow_onbubbleownaffiliationchanged) - rainbow event received.", data);
});
rainbowSDK.events.on("rainbow_onbubblecontactchanged", (data) => {
_logger.log("debug", "MAIN - (rainbow_onbubblecontactchanged) - rainbow event received.", data);
});
rainbowSDK.events.on("rainbow_onchannelcreated", (data) => {
_logger.log("debug", "MAIN - (rainbow_onchannelcreated) - rainbow event received.", data);
/*rainbowSDK.channels.deleteChannel(data).then((result2) => {
_logger.log("debug", "MAIN - testcreateChannel deleteChannel result : ", JSON.stringify(result2)); //logger.colors.green(JSON.stringify(result)));
}); */
rainbowSDK.contacts.getContactByLoginEmail("vincent01@vbe.test.openrainbow.net").then((vincent01) => {
let tab = [vincent01];
_logger.log("debug", "MAIN - (rainbow_onchannelcreated) rainbowSDK.channels.getAllChannels() result : ", rainbowSDK.channels.getAllChannels());
rainbowSDK.channels.addMembersToChannel(data, tab).then((chnl) => {
_logger.log("debug", "MAIN - rainbow_onchannelcreated - addMembersToChannel rainbowSDK.channels.getAllChannels() result : ", rainbowSDK.channels.getAllChannels());
_logger.log("debug", "MAIN - rainbow_onchannelcreated addMembersToChannel result : ", chnl);
});
});
});
rainbowSDK.events.on("rainbow_onchanneldeleted", (data) => {
_logger.log("debug", "MAIN - (rainbow_onchanneldeleted) - rainbow event received.", data);
});
rainbowSDK.events.on("rainbow_onEWSgetevents", (data) => {
_logger.log("debug", "MAIN - (rainbow_onEWSgetevents) - rainbow event received.", data);
let calendarManager = new RainbowSDK.CalendarManager(data.id, data.from, data.email);
/*calendarManager.addEvent(
{
"id": "evt-001",
"subject": "Réunion projet",
"type": "singleInstance",
"showAs": "busy",
startDate: {
"value": "2025-08-14T09:00:00Z",
"timezone": "Europe/Paris"
},
"endDate": {
"value": "2025-08-14T10:30:00Z",
timezone: "Europe/Paris"
}
});
calendarManager.addEvent(
{
"id": "evt-002",
"subject": "Pause café",
"type": "occurrence",
"showAs": "free",
"startDate": {
"value": "2025-08-14T10:30:00Z"
},
"endDate": {
"value": "2025-08-14T10:45:00Z"
}
});
// */
rainbowSDK.presence.sendResultCalendarEvents(calendarManager);
});
rainbowSDK.events.on("rainbow_onEWSgetautoreply", (data) => {
_logger.log("debug", "MAIN - (rainbow_onEWSgetautoreply) - rainbow event received.", data);
let autoReplyManager = new RainbowSDK.AutoReplyManager({
id: data.id,
to: data.from,
state: "scheduled",
email: data.email,
startDate: { value: "2025-08-20T09:00:00Z", timezone: "Europe/Paris" },
endDate: { value: "2025-08-25T18:00:00Z", timezone: "Europe/Paris" },
internalReplyMessage: "Je suis absent du bureau, merci de contacter mon collègue.",
externalReplyMessage: {
value: "Je suis actuellement en congés.",
audience: "known"
}
});
rainbowSDK.presence.sendAutoReplyEvents(autoReplyManager);
});
rainbowSDK.events.on("rainbow_onuseraddedingroup", (group, contact) => {
_logger.log("debug", "MAIN - (rainbow_onuseraddedingroup) - rainbow event received. group", group);
_logger.log("debug", "MAIN - (rainbow_onuseraddedingroup) - rainbow event received. contact", contact);
});
rainbowSDK.events.on("rainbow_oncalllogupdated", (calllogs) => {
_logger.log("debug", "MAIN - (rainbow_oncalllogupdated) - rainbow event received. ");
mycalllogs = calllogs;
if (calllogs) {
if (calllogs.callLogs) {
_logger.log("debug", "MAIN - (rainbow_oncalllogupdated) - calllogs.callLogs.length : ", calllogs.callLogs.length);
calllogs.orderByDateCallLogs.forEach((callL) => {
_logger.log("debug", "MAIN - (rainbow_oncalllogupdated) - one call logged in calllogs.orderByDateCallLogs : ", ", id : ", callL.id, ", date : ", callL.date);
});
// */
}
} else {
_logger.log("error", "MAIN - (rainbow_oncalllogupdated) - rainbow event received. empty calllogs", calllogs);
}
});
rainbowSDK.events.on("rainbow_oncalllogackupdated", (calllogs) => {
_logger.log("debug", "MAIN - (rainbow_oncalllogackupdated) - rainbow event received. ");
if (calllogs) {
if (calllogs.callLogs) {
_logger.log("debug", "MAIN - (rainbow_oncalllogackupdated) - rainbow event received. calllogs.callLogs.length", calllogs.callLogs.length);
}
}
mycalllogs = calllogs;
});
// Later in the code
rainbowSDK.events.on("rainbow_onmessagereceived", (message) => {
_logger.log("debug", "MAIN - (rainbow_onmessagereceived) - rainbow event received. message", message);
// send manually a 'read' receipt to the sender
//rainbowSDK.im.markMessageAsRead(message);
let that = this;
if (message?.content.includes("#test_charge ") ){
let utc = new Date().toJSON().replace(/-/g, "/");
let content = "_replyTo_" + message.content + " _at_ " + utc;
rainbowSDK.im.sendMessageToJid(content, message.fromJid, 'EN', null, utc, UrgencyType.STANDARD, undefined).then((result) => {
_logger.log("debug", "MAIN - rainbow_onmessagereceived reply to #test_charge received. sendMessageToJid - Acknowledged sent result : ", result);
});
} else {
let contactEmailToSearch = "alice01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
//let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
/*
if (message.fromBubbleJid ) {
rainbowSDK.im.sendMessageToBubbleJidAnswer("hello from node sendMessageToJidAnswer", message.fromJid, 'FR', null, 'Le sujet de node sendMessageToBubbleJidAnswer', message).then((result) => {
_logger.log("debug", "MAIN - rainbow_onmessagereceived sendMessageToBubbleJidAnswer - result : ", result);
});
} else {
rainbowSDK.im.sendMessageToJidAnswer("hello from node sendMessageToJidAnswer", message.fromJid, 'FR', null, 'Le sujet de node sendMessageToJidAnswer', message).then((result) => {
_logger.log("debug", "MAIN - rainbow_onmessagereceived sendMessageToJidAnswer - result : ", result);
});
} // */
/*
web_f0d90f96-ec85-41dc-969d-371a30a59aa80
Acknowledged
*/
let ackUngency = false;
if (ackUngency && message && message.urgency==="high") {
if (message.fromBubbleJid) {
rainbowSDK.im.sendMessageToBubbleJidAnswer("Acknowledged", message.fromJid, 'EN', null, 'Acknowledged', message, undefined, UrgencyType.STANDARD).then((result) => {
_logger.log("debug", "MAIN - rainbow_onmessagereceived sendMessageToBubbleJidAnswer - Acknowledged sent result : ", result);
}).catch((err) => {
//_logger.log("error", "MAIN - rainbow_onmessagereceived Error when sendMessageToBubbleJidAnswer.");
_logger.log("error", "MAIN - rainbow_onmessagereceived sendMessageToBubbleJidAnswer Error : ", err);
});
} else {
rainbowSDK.im.sendMessageToJidAnswer("Acknowledged", message.fromJid, 'EN', null, "Acknowledged", message, UrgencyType.STANDARD).then((result) => {
_logger.log("debug", "MAIN - rainbow_onmessagereceived sendMessageToJidAnswer - Acknowledged sent result : ", result);
}).catch((err) => {
//_logger.log("error", "MAIN - rainbow_onmessagereceived Error when sendMessageToJidAnswer.");
_logger.log("error", "MAIN - rainbow_onmessagereceived sendMessageToJidAnswer Error : ", err);
});
} // */
}
let ignoreAckUngency = true;
if (ignoreAckUngency && message && message.urgency==="high") {
if (message.fromBubbleJid) {
rainbowSDK.im.sendMessageToBubbleJidAnswer("ign", message.fromJid, 'EN', null, 'Ignored', message, undefined, UrgencyType.STANDARD).then((result) => {
_logger.log("debug", "MAIN - rainbow_onmessagereceived sendMessageToBubbleJidAnswer - Acknowledged sent result : ", result);
}).catch((err) => {
//_logger.log("error", "MAIN - rainbow_onmessagereceived Error when sendMessageToBubbleJidAnswer.");
_logger.log("error", "MAIN - rainbow_onmessagereceived sendMessageToBubbleJidAnswer Error : ", err);
});
} else {
rainbowSDK.im.sendMessageToJidAnswer("Ignoré", message.fromJid, 'FR', null, "Ignored", message, UrgencyType.STANDARD).then((result) => {
_logger.log("debug", "MAIN - rainbow_onmessagereceived sendMessageToJidAnswer - Acknowledged sent result : ", result);
}).catch((err) => {
//_logger.log("error", "MAIN - rainbow_onmessagereceived Error when sendMessageToJidAnswer.");
_logger.log("error", "MAIN - rainbow_onmessagereceived sendMessageToJidAnswer Error : ", err);
});
} // */
}
}
});
rainbowSDK.events.on("rainbow_onmessageserverreceiptreceived", (data) => {
_logger.log("debug", "MAIN - (rainbow_onmessageserverreceiptreceived) - rainbow event received. data", data);
/*rainbowSDK.conversations.getConversations().then(() => {
sdfsdf
}); // */
// send manually a 'read' receipt to the sender
// rainbowSDK.im.markMessageAsRead(data);
});
rainbowSDK.events.on("rainbow_onuserinvitereceived", async (data) => {
_logger.log("debug", "MAIN - (rainbow_onuserinvitereceived) - rainbow event received. : ", data);
let acceptInvitationResult = await rainbowSDK.contacts.acceptInvitation(data);
_logger.log("debug", "Main - rainbow_onuserinvitereceived, acceptInvitation - result : ", acceptInvitationResult);
});
rainbowSDK.events.on("rainbow_onfileupdated", (data) => {
_logger.log("debug", "MAIN - (rainbow_onfileupdated) - rainbow event received.");
let fileDescriptorsReceived = rainbowSDK.fileStorage.getFileDescriptorFromId(data.fileid);
_logger.log("debug", "Main - (rainbow_onfileupdated), retrieveFileDescriptorsListPerOwner - result : - fileDescriptorsReceived.id : ", fileDescriptorsReceived.id, ", fileDescriptorsReceived.fileName : ", fileDescriptorsReceived.fileName, ", fileDescriptorsReceived.url : ", fileDescriptorsReceived.url, ", fileDescriptorsReceived.ownerId : ", fileDescriptorsReceived.ownerId);
/*rainbowSDK.fileStorage.retrieveFileDescriptorsListPerOwner().then((fileDescriptorsReceivedOwned: any) => {
_logger.log("debug", "Main - (rainbow_onfileupdated), retrieveFileDescriptorsListPerOwner - result : ", fileDescriptorsReceivedOwned.length);
for (let fileReceived of fileDescriptorsReceivedOwned) {
_logger.log("debug", "Main - (rainbow_onfileupdated), retrieveFileDescriptorsListPerOwner - result : - fileReceived.id : ", fileReceived.id, ", fileReceived.fileName : ", fileReceived.fileName, ", fileReceived.url : ", fileReceived.url, ", fileReceived.ownerId : ", fileReceived.ownerId);
}
}); // */
});
rainbowSDK.events.on("rainbow_onfilecreated", (data) => {
_logger.log("debug", "MAIN - (rainbow_onfilecreated) - rainbow event received.");
let fileDescriptorsReceived = rainbowSDK.fileStorage.getFileDescriptorFromId(data.fileid);
_logger.log("debug", "Main - (rainbow_onfilecreated), getFileDescriptorFromId - result : - fileDescriptorsReceived.id : ", fileDescriptorsReceived.id, ", fileDescriptorsReceived.fileName : ", fileDescriptorsReceived.fileName, ", fileDescriptorsReceived.url : ", fileDescriptorsReceived.url, ", fileDescriptorsReceived.ownerId : ", fileDescriptorsReceived.ownerId);
});
let countStop = 0;
rainbowSDK.events.on("rainbow_onerror", (data) => {
_logger.log("debug", "MAIN - (rainbow_onerror) - rainbow event received. data", data, " destroy and recreate the SDK.");
until(() => {
return stopped==true;
}, "Waiting for the stop event after the rainbow_onerror event.", 10000).then(() => {
rainbowSDK = undefined;
stopped = false;
rainbowSDK = new RainbowSDK(options);
stopped = true;
/* _logger = rainbowSDK._core._logger;
rainbowSDK.start().then(async(result) => {
try {
// Do something when the SDK is started
_logger.log("debug", "MAIN - rainbow SDK started result after rainbow_onerror : ",_logger.colors.green(result)); //logger.colors.green(JSON.stringify(result)));
//let startDuration = Math.round(new Date() - startDate);
let startDuration = result.startDuration;
// that.stats.push({ service: "telephonyService", startDuration: startDuration });
_logger.log("info", "MAIN === STARTED (" + startDuration + " ms) ===");
console.log("MAIN === STARTED (" + startDuration + " ms) ===");
commandLineInteraction();
}
catch (err) {
console.log("MAIN - Error during starting : " + util.inspect(err));
}
}).catch((err) => {
console.log("MAIN - Error during starting : " + util.inspect(err));
});
// */
}).catch((err) => {
console.log("MAIN - Error during starting : " + util.inspect(err));
});
});
let stopped = false;
rainbowSDK.events.on("rainbow_onstopped", (data) => {
countStop++;
stopped = true;
_logger.log("debug", "MAIN - (rainbow_onstopped) " + countStop + " - rainbow event received. data", data);
//setTimeout(() => {
_logger.log("debug", "MAIN - (rainbow_onstopped) rainbow SDK will re start " + countStop + " result : ", data); //logger.colors.green(JSON.stringify(result)));
//rainbowSDK.start();
// rainbowSDK.start().then(()=>{
/*logger.log("debug", "MAIN - rainbow_onstopped rainbow SDK started " + countStop + " result : ", data); //logger.colors.green(JSON.stringify(result)));
let list = rainbowSDK.contacts.getAll();
if (list) {
list.forEach(function (contact) {
_logger.log("debug", "MAIN - rainbow_onstopped [start " + countStop + "] :: contact : ", contact);
});
} else {
_logger.log("debug", "MAIN - rainbow_onstopped [start " + countStop + "] :: contacts list empty");
}
// */
// });
//}, 1);
// */
});
//This is the event handler to detect change of a contact's presence and output in console contact name and new status
rainbowSDK.events.on("rainbow_oncontactpresencechanged", (contact) => {
//Presence event handler. Code in between curly brackets will be executed in case of presence change for a contact
_logger.log("debug", "MAIN - (rainbow_oncontactpresencechanged) Presence status of contact in a roster : " + contact.displayName + ", changed to " + contact.presence);
if (contact.presence!="Unknown") {
return false;
}
/* _logger.log("debug", "MAIN - (rainbow_oncontactpresencechanged) ----> ", contact.displayName, "(", contact.jid, ")", " - ", contact.presence);
_logger.log("debug", "MAIN - (rainbow_oncontactpresencechanged) ------------------Presence changed --------------------------");
_logger.log("debug", "MAIN - (rainbow_oncontactpresencechanged) --> ", contact.displayName);
_logger.log("debug", "MAIN - (rainbow_oncontactpresencechanged) Presence ", contact.presence);
_logger.log("debug", "MAIN - (rainbow_oncontactpresencechanged) Status", contact.status);
_logger.log("debug", "MAIN - (rainbow_oncontactpresencechanged) Resources ", contact.resources);
_logger.log("debug", "MAIN - (rainbow_oncontactpresencechanged) -------------------------------------------------------------");
// */
//getLastMessageOfConversation(contact);
});
rainbowSDK.events.on("rainbow_onpresencechanged", (data) => {
//Presence event handler. Code in between curly brackets will be executed in case of presence change for a contact
_logger.log("debug", "MAIN - (rainbow_onpresencechanged) Presence status of contact loggued in : " + data.displayName + ", changed to " + data.presence, ", status : ", data.status);
//getLastMessageOfConversation(contact);
});
rainbowSDK.events.on("rainbow_onuserinviteaccepted", function (invit) {
_logger.log("debug", "MAIN - (rainbow_onuserinviteaccepted) invit : ", invit);
});
rainbowSDK.events.on("rainbow_oncontactremovedfromnetwork", async function (contact) {
_logger.log("debug", "MAIN - (rainbow_oncontactremovedfromnetwork) contact : ", contact);
});
rainbowSDK.events.on("rainbow_onrbvoicerawevent", async function (data) {
_logger.log("debug", "MAIN - (rainbow_onrbvoicerawevent) data : ", data);
});
rainbowSDK.events.on("rainbow_ontaskcreated", async function (data: any) {
_logger.log("debug", "MAIN - (rainbow_ontaskcreated) data : ", data);
});
rainbowSDK.events.on("rainbow_ontaskupdated", async function (data: any) {
_logger.log("debug", "MAIN - (rainbow_ontaskupdated) data : ", data);
});
rainbowSDK.events.on("rainbow_ontaskdeleted", async function (data: any) {
_logger.log("debug", "MAIN - (rainbow_ontaskdeleted) data : ", data);
});
rainbowSDK.events.on("rainbow_onrainbowcpaasreceived", async function (data: any) {
_logger.log("debug", "MAIN - (rainbow_onrainbowcpaasreceived) data : ", data);
});
rainbowSDK.events.on("rainbow_onpinmanagement", async function (data: any) {
_logger.log("debug", "MAIN - (rainbow_onpinmanagement) data : ", data);
});
class Tests {
testEventsRainbow_tokenexpired() {
rainbowSDK._core._rest.p_decodedtokenRest = undefined;
rainbowSDK.events.emit("evt_internal_tokenexpired", {});
}
async test_renewAuthToken() {
for (let i = 0; i < 6; i++) {
_logger.log("debug", "MAIN - [test_renewAuthToken ] :: i : ", i);
rainbowSDK._core._rest._renewAuthToken();
await pause(1000);
}
await rainbowSDK.stop().then(() => {
}).catch(() => {
});
_logger.log("debug", "MAIN - [test_renewAuthToken ] :: last.",);
rainbowSDK._core._rest._renewAuthToken();
}
async test_renewAuthToken_2() {
await rainbowSDK.stop().then(() => {
}).catch(() => {
});
_logger.log("debug", "MAIN - [test_renewAuthToken ] :: last.",);
//rainbowSDK._core._rest._renewAuthToken("failedurl");
}
testCloseXMPP() {
let stanza = xml("close", {
"xmlns": NameSpacesLabels.XmppFraming
});
rainbowSDK._core._xmpp.sendStanza(stanza);
}
/*async testmockStanza(stanza : string = ""){
rainbowSDK._core._xmpp.mockStanza(stanza);
} // */
// region File JSON
testloadDocJSON() {
let pathJson = path.join(__dirname, '../build/JSONDOCS/BubblesService.json');
// let pathJson = path.join(__dirname,'../node_modules/rainbow-node-sdk/build/JSONDOCS/BubblesService.json');
console.log("Rainbow pathJson : ", pathJson);
//const path = require("path");
//let bubblesServiceDocJSONTab = require(pathJson);
let fileStats = fs.statSync(pathJson);
let fd = fs.openSync(pathJson, "r+");
let sizeToRead = fileStats.size;
let buf = Buffer.alloc(sizeToRead);
fs.readSync(fd, buf, 0, sizeToRead, null);
console.log("(testloadDocJSON) Buffer : ", buf);
let bubblesServiceDocJSONTab = JSON.parse(buf.toString());
console.log("(testloadDocJSON) JSON(Buffer) - bubblesServiceDocJSONTab : ", bubblesServiceDocJSONTab);
/* ESM Code
let bubblesServiceDocJSONTab = JSON.parse(
await readFile(
new URL(pathJson, import.meta.url)
)
);
// */
//console.log("Rainbow BubblesService JSON : ", util.inspect(bubblesServiceDocJSONTab));
for (let i = 0; i < bubblesServiceDocJSONTab.length; i++) {
let bubblesServiceDocJSON = bubblesServiceDocJSONTab[i];
if (bubblesServiceDocJSON.tags) {
let bubblesServiceDocJSONNodeRed = bubblesServiceDocJSON.tags.find((item) => {
//console.log("Rainbow BubblesService item : ", item);
return (item.title==="nodered" && (item.value==="true" || item.value===true));
});
if (bubblesServiceDocJSONNodeRed) {
//console.log("Rainbow BubblesService bubblesServiceDocJSONNodeRed JSON : ", bubblesServiceDocJSONNodeRed);
if ((bubblesServiceDocJSONNodeRed.value==="true" || bubblesServiceDocJSONNodeRed.value===true) && (bubblesServiceDocJSON["kind"]==="function" || bubblesServiceDocJSON["kind"]==="method")) {
console.log("Rainbow BubblesService bubblesServiceDocJSON JSON : ", bubblesServiceDocJSON);
}
}
}
}
}
testloadDocJSONServices() {
let sdkPublic = [];
console.log("Rainbow : rainbowsdkNodeSDKapi will get Services names and types from NodeSDK.");
let pathJson = path.join(__dirname, '../build/JSONDOCS/NodeSDK.json');
console.log("Rainbow pathJson : ", pathJson);
//const path = require("path");
//let NodeSDKServiceDocJSONTab = require(pathJson);
let fileStats = fs.statSync(pathJson);
let fd = fs.openSync(pathJson, "r+");
let sizeToRead = fileStats.size;
let buf = Buffer.alloc(sizeToRead);
fs.readSync(fd, buf, 0, sizeToRead, null);
console.log("(testloadDocJSONServices) Buffer : ", buf);
let NodeSDKServiceDocJSONTab = JSON.parse(buf.toString());
console.log("(testloadDocJSONServices) JSON(Buffer) - NodeSDKServiceDocJSONTab : ", NodeSDKServiceDocJSONTab);
// console.log("Rainbow BubblesService JSON : ", util.inspect(NodeSDKServiceDocJSONTab));
// console.log("Rainbow BubblesService JSON : ", util.inspect(NodeSDKServiceDocJSONTab));
for (let i = 0; i < NodeSDKServiceDocJSONTab.length; i++) {
let NodeSDKServiceDocJSON = NodeSDKServiceDocJSONTab[i];
if (NodeSDKServiceDocJSON.tags) {
let NodeSDKServiceDocJSONNodeRed = NodeSDKServiceDocJSON.tags.find((item) => {
//console.log("Rainbow BubblesService item : ", item);
return (item.title==="nodered" && (item.value==="true" || item.value===true));
});
let NodeSDKServiceDocJSONService = NodeSDKServiceDocJSON.tags.find((item) => {
//console.log("Rainbow BubblesService item : ", item);
return (item.title==="service" && (item.value==="true" || item.value===true));
});
if (NodeSDKServiceDocJSONNodeRed && NodeSDKServiceDocJSONService) {
//console.log("Rainbow BubblesService NodeSDKServiceDocJSONNodeRed JSON : ", NodeSDKServiceDocJSONNodeRed);
if ((NodeSDKServiceDocJSONNodeRed.value==="true" || NodeSDKServiceDocJSONNodeRed.value===true) && (NodeSDKServiceDocJSONService.value==="true" || NodeSDKServiceDocJSONService.value===true) && (NodeSDKServiceDocJSON["kind"]==="member")) {
console.log("Rainbow NodeSDKServiceDocJSON JSON : ", NodeSDKServiceDocJSON);
console.log("Rainbow NodeSDKServiceDocJSON properties : ", NodeSDKServiceDocJSON.properties);
let serviceObj: any = {};
if (Array.isArray(NodeSDKServiceDocJSON.properties) && NodeSDKServiceDocJSON.properties[0]!=undefined) {
serviceObj.name = NodeSDKServiceDocJSON.properties[0].name;
serviceObj.typeService = NodeSDKServiceDocJSON.properties[0].type ? NodeSDKServiceDocJSON.properties[0].type.names[0]:"";
}
sdkPublic.push(serviceObj);
}
}
}
}
console.log("SDK Services : ", sdkPublic);
}
//endregion File JSON
//region tasks
testflattenObject() {
let jsonObj: TaskInput = {
"category": "high",
"position": 0,
"content": {
"done": false,
"personalNote": true,
"text": "My task Text",
"title": "My Task Title",
"creationDate": 1709572666128
},
"id": "65e6023ae750d9fc381bbeeb",
"categoryId": "65e5f30dc2d848f8d45ad356"
};
_logger.log("debug", "MAIN - jsonObj : ", jsonObj, ", flattenObject : ", flattenObject(jsonObj, 'XXX', false));
}
async testXml2jsParse() {
let xmlNodeStr = " " +
" " +
" " +
"{\"done\":false,\"personalNote\":true,\"text\":\"My task Text\",\"title\":\"My Task Title\",\"creationDate\":1710350292187}" +
" " +
" " +
"";
let reqObj = await getJsonFromXML(xmlNodeStr);
_logger.log("debug", "MAIN - (testXml2jsParse) reqObj : ", reqObj);
}
testaddTask() {
let task: TaskInput = {
category: "middle",
position: 1, // Todo's position in this category.
content: { // Todo's content.
done: false,// Todo's status.
personalNote: true,// true when todo is a personal note, false when to do is related to a message in a conversation.
title: "My Task Title", // personal note title, field mandatory when personalNote is true.
text: "My task Text", // To do's text
creationDate: new Date().getTime() //Creation date in ms since Unix epoch*
}
};
rainbowSDK.tasks.addTask(task).then(result => {
_logger.log("debug", "MAIN - [addTask ] :: result : ", result);
}).catch((err) => {
_logger.log("error", "MAIN - [addTask ] :: catch reject contact : ", err);
});
}
testTask() {
let task: TaskInput = {
category: "middle",
position: 0, // Todo's position in this category.
content: { // Todo's content.
done: false,// Todo's status.
personalNote: true,// true when todo is a personal note, false when to do is related to a message in a conversation.
title: "My Task Title", // personal note title, field mandatory when personalNote is true.
text: "My task Text", // To do's text
creationDate: new Date().getTime() //Creation date in ms since Unix epoch*
}
};
rainbowSDK.tasks.addTask(task).then(resultTask => {
_logger.log("debug", "MAIN - [addTask ] :: result : ", resultTask);
rainbowSDK.tasks.getTasks().then(result => {
_logger.log("debug", "MAIN - [getTasks ] :: result : ", result);
for (let i = 0; i < result.length; i++) {
_logger.log("debug", "MAIN - [getTasks ] :: result[", i, "] : ", result[i]);
}
let taskToUpdate: TaskInput = {
category: "low", position: 0, content: {
done: true,// Todo's status.
personalNote: true,// true when todo is a personal note, false when to do is related to a message in a conversation.
title: "My Task Title Updated", // personal note title, field mandatory when personalNote is true.
text: "My task Text Updated", // To do's text
}
};
rainbowSDK.tasks.updateTask(resultTask.id, taskToUpdate).then((updatedTask: any) => {
_logger.log("debug", "MAIN - [getTasks ] :: updatedTask : ", updatedTask);
rainbowSDK.tasks.getTasks().then(result2 => {
_logger.log("debug", "MAIN - [getTasks ] :: result2 : ", result2);
for (let i = 0; i < result2.length; i++) {
_logger.log("debug", "MAIN - [getTasks ] :: result2[", i, "] : ", result2[i]);
}
});
/*rainbowSDK.tasks.deleteTask(updatedTask.id).then((deleteresult) => {
_logger.log("debug", "MAIN - [deleteTask ] :: deleteresult : ", deleteresult);
}).catch((err) => {
_logger.log("error", "MAIN - [deleteTask ] :: catch error : ", err);
});
// */
}).catch((err) => {
_logger.log("error", "MAIN - [updateTask ] :: catch error : ", err);
});
}).catch((err) => {
_logger.log("error", "MAIN - [getTasks ] :: catch error : ", err);
});
}).catch((err) => {
_logger.log("error", "MAIN - [addTask ] :: catch reject contact : ", err);
});
}
testgetTasks() {
let contactInfo = {};
rainbowSDK.tasks.getTasks(undefined, true).then((result: any) => {
_logger.log("debug", "MAIN - [testgetTasks ] :: result.length : ", result.length);
for (let i = 0; i < result.length; i++) {
_logger.log("debug", "MAIN - [testgetTasks ] :: result[", i, "] : ", result[i]);
}
}).catch((err) => {
_logger.log("error", "MAIN - [testgetTasks ] :: catch reject contact : ", err);
});
}
testgetAllCategories() {
let contactInfo = {};
rainbowSDK.tasks.getAllCategories().then((result: any) => {
_logger.log("debug", "MAIN - [testgetAllCategories ] :: result.length : ", result.length);
for (let i = 0; i < result.length; i++) {
_logger.log("debug", "MAIN - [testgetAllCategories ] :: result[", i, "] : ", result[i]);
}
}).catch((err) => {
_logger.log("error", "MAIN - [testgetAllCategories ] :: catch reject contact : ", err);
});
}
testgetTasksByCategories() {
let contactInfo = {};
rainbowSDK.tasks.getAllCategories().then((result: any) => {
_logger.log("debug", "MAIN - [testgetTasksByCategories ] :: result.length : ", result.length);
rainbowSDK.tasks.getTasksByCategoryId(result[0].categoryId, true).then((tasks: any) => {
_logger.log("debug", "MAIN - [testgetTasksByCategories ] :: tasks : ", tasks);
rainbowSDK.tasks.getTasks(undefined, false).then((result: any) => {
_logger.log("debug", "MAIN - [testgetTasksByCategories ] :: result.length : ", result.length);
for (let i = 0; i < result.length; i++) {
_logger.log("debug", "MAIN - [testgetTasksByCategories ] :: result[", i, "] : ", result[i]);
}
}).catch((err) => {
_logger.log("error", "MAIN - [testgetTasksByCategories ] :: catch reject contact : ", err);
});
});
}).catch((err) => {
_logger.log("error", "MAIN - [testgetAllCategories ] :: catch reject contact : ", err);
});
}
testgetTasksAndDeleteAll() {
let contactInfo = {};
rainbowSDK.tasks.getTasks().then(result => {
_logger.log("debug", "MAIN - [getTasks ] :: result : ", result);
for (let i = 0; i < result.length; i++) {
rainbowSDK.tasks.deleteTask(result[i].id).then((res) => {
_logger.log("debug", "MAIN - [deleteTask ] :: res : ", res);
})
}
}).catch((err) => {
_logger.log("error", "MAIN - [getTasks ] :: catch reject contact : ", err);
});
}
//endregion tasks
//region Config
testAreasLevels() {
let logLevelAreas = new LogLevelAreas();
_logger.log("info", "MAIN - construct logLevelAreas : ", logLevelAreas);
_logger.log("info", "MAIN - logLevelAreas to json : ", logLevelAreas.toJSON());
_logger.log("info", "MAIN - construct logLevelAreas : ", logLevelAreas.toString());
}
testgetAreasLogs() {
let areaslogs = rainbowSDK.getAreasLogs()
_logger.log("info", "MAIN - construct logLevelAreas : ", logLevelAreas);
_logger.log("info", "MAIN - logLevelAreas to json : ", logLevelAreas.toJSON());
_logger.log("info", "MAIN - construct logLevelAreas : ", logLevelAreas.toString());
}
//endregion Config
// region Contacts
testupdateMyInformations() {
let contactInfo = {};
rainbowSDK.contacts.updateMyInformations(contactInfo).then(result => {
_logger.log("debug", "MAIN - [testupdateMyInformations ] :: result : ", result);
}).catch((err) => {
_logger.log("error", "MAIN - [testupdateMyInformations ] :: catch reject contact : ", err);
});
}
testgetUserPresenceInformation() {
rainbowSDK.admin.getUserPresenceInformation().then(result => {
_logger.log("debug", "MAIN - [getUserPresenceInformation ] :: result : ", result);
}).catch((err) => {
_logger.log("error", "MAIN - [getUserPresenceInformation ] :: catch reject contact : ", err);
});
}
testgetContactByLoginEmail_natawi29() {
let usersToSearch = "natawi29@gmail.com";
rainbowSDK.contacts.getContactByLoginEmail(usersToSearch).then(contact => {
_logger.log("debug", "MAIN - [testgetContactByLoginEmail_natawi29 ] :: contact : ", contact);
}).catch((err) => {
_logger.log("error", "MAIN - [testgetContactByLoginEmail_natawi29 ] :: catch reject contact : ", err);
});
}
testgetContactByLoginEmail_UnknownUser() {
let usershouldbeUnkown = "unknowcontact@openrainbow.org";
rainbowSDK.contacts.getContactByLoginEmail(usershouldbeUnkown).then(contact => {
_logger.log("debug", "MAIN - [getContactByLoginEmail ] :: contact : ", contact);
}).catch((err) => {
_logger.log("error", "MAIN - [getContactByLoginEmail ] :: catch reject contact : ", err);
});
}
testgetContactByLoginEmail_NotInRoster() {
let usershouldbeUnkown = "vincent06@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(usershouldbeUnkown).then(contact => {
_logger.log("debug", "MAIN - [getContactByLoginEmail ] :: contact : ", contact);
}).catch((err) => {
_logger.log("error", "MAIN - [getContactByLoginEmail ] :: catch reject contact : ", err);
});
}
async testgetContactByLoginEmailAndSubscribePresence(emailUser: string = "vincent05@vbe.test.openrainbow.net") {
rainbowSDK.contacts.getContactByLoginEmail(emailUser).then(async contact => {
_logger.log("debug", "MAIN - [getContactByLoginEmail ] :: contact : ", contact);
let result = await rainbowSDK.presence.subscribePresence(contact.jid);
_logger.log("debug", "MAIN - [getContactByLoginEmail ] :: subscribePresence result : ", result);
}).catch((err) => {
_logger.log("error", "MAIN - [getContactByLoginEmail ] :: catch reject contact : ", err);
});
}
async testgetContactByLoginEmail_vincent00() {
let that = this;
let contactLogin = "vincent00@vbe.test.openrainbow.net";
// Token expired on vberder AIO for user vincent01
let token = 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb3VudFJlbmV3ZWQiOjAsIm1heFRva2VuUmVuZXciOjEsInVzZXIiOnsiaWQiOiI1YmJkYzM4MTJjZjQ5NmMwN2RkODkxMjgiLCJsb2dpbkVtYWlsIjoidmluY2VudDAxQHZiZS50ZXN0Lm9wZW5yYWluYm93Lm5ldCJ9LCJlbnZpcm9ubWVudCI6eyJlbnZpcm9ubWVudE5hbWUiOiJkZXZlbG9wbWVudCIsImVudmlyb25tZW50QXBpVXJsIjoiaHR0cHM6Ly92YmVyZGVyLm9wZW5yYWluYm93Lm9yZyJ9LCJhcHAiOnsiaWQiOiIyNzAzM2IxMDAxYmQxMWU4ODQzZDZmMDAxMzRlNTE4OSIsIm5hbWUiOiJSYWluYm93IG9mZmljaWFsIFdlYiBhcHBsaWNhdGlvbiJ9LCJpYXQiOjE3MzAxMjY5MzAsImV4cCI6MTczMDEyNzE3MH0.mUkmBXjdhyNVvsMILuC9n7Njqj0-BoGNmewtzZVRf48m0cc36KGmJJmJbc9qocOVhl1_meTIROSRkCbd6j1b0aC7dkNv-bSCrVuy8jfrQo4Ih44wQLLdtWBox5xL4RFkuT18hL6SG_eiVDH8f7cawnEdwMcMkQqfpYsoCNvOaBFFPcphm9DkcFEGOcS3OqVCYfn5rfi8Zj9lc9vLSpPfM8bh1Ji_HQMtUolEFyaadBWXZHFsLpgYonujkvAG6LvBEUtNLHbfqI9XAIHcbAm7C7Qr-e86f1piw3AmMhEIF7FDJTFOvrcXT6VcHARuDRi5vcRkaLhX0qfEMvSGNYI20g';
let sortOrder: number = 1, limit: number = 100, offset: number = 0;
let LOG_ID = "SAMPLES/tests";
let url = "/api/rainbow/enduser/v1.0/users/loginEmails";
let urlParamsTab: string[] = [];
urlParamsTab.push(url);
addParamToUrl(urlParamsTab, "sortOrder", sortOrder);
addParamToUrl(urlParamsTab, "limit", limit);
addParamToUrl(urlParamsTab, "offset", offset);
url = urlParamsTab[0];
let filter: any = {};
addPropertyToObj(filter, "loginEmail", contactLogin, false);
//that._logger.log(that.INTERNAL, LOG_ID + "(testgetContactByLoginEmail_vincent00) with params : ", { "loginEmail": email });
let headers = rainbowSDK._core._rest.getRequestHeader();
headers["authorization"] = 'Bearer ' + token;
await rainbowSDK._core._rest.http.post(url, headers, filter, undefined).then(function (json) {
_logger.log("debug", LOG_ID + "(testgetContactByLoginEmail_vincent00) successfull");
_logger.log("debug", LOG_ID + "(testgetContactByLoginEmail_vincent00) REST result : ", json);
//resolve(json?.data);
}).catch(function (err) {
_logger.log("error", LOG_ID, "(testgetContactByLoginEmail_vincent00) error");
_logger.log("error", LOG_ID, "(testgetContactByLoginEmail_vincent00) error : ", err);
//return reject(err);
});
}
testgetContactByLoginEmail_david() {
let usershouldbeUnkown = "pbx191b-32a3-d759-4d7e-90a3-215b-f2ff-f499-vna@david-all-in-one-rd-dev-1.opentouch.cloud";
rainbowSDK.contacts.getContactByLoginEmail(usershouldbeUnkown).then(contact => {
_logger.log("debug", "MAIN - [getContactByLoginEmail ] :: contact : ", contact);
}).catch((err) => {
_logger.log("error", "MAIN - [getContactByLoginEmail ] :: catch reject contact : ", err);
});
rainbowSDK.admin.getAllUsersByFilter(undefined, undefined, usershouldbeUnkown, undefined, "vna_location", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined
, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined
, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined
, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined).then(contact => {
_logger.log("debug", "MAIN - [getAllUsersByFilter ] :: contact : ", contact);
}).catch((err) => {
_logger.log("error", "MAIN - [getAllUsersByFilter ] :: catch reject contact : ", err);
});
}
multiple_testgetContactByLoginEmail_NotInRoster() {
let usershouldbeUnkown = "vincent02@vbe.test.openrainbow.net"; // "WRONG6ac069e5eb4741e2af64a8beac59406f@openrainbow.net"
rainbowSDK.contacts.getContactByLoginEmail(usershouldbeUnkown).then((contact: Contact) => {
for (let i = 0; i < 20; i++) {
let prom = rainbowSDK._core._rest.getContactInformationByJID(contact.jid).then((_contactFromServer: any) => {
_logger.log("debug", "MAIN - [getContactInformationByJID ] :: _contactFromServer : ", _contactFromServer);
}).catch((err) => {
_logger.log("error", "MAIN - [getContactInformationByJID ] :: catch reject contact : ", err);
});
}
});
}
/**
* Test for ImsService.sendMessageNotification
* Retrieves contact by email 'vincent02@vbe.test.openrainbow.net' and sends a simple IM notification via REST.
* Usage from CLI: tests.testSendMessageNotificationToVincent02()
*/
async testSendMessageNotificationToVincent02() {
const email = "vincent02@vbe.test.openrainbow.net";
try {
const contact: any = await rainbowSDK.contacts.getContactByLoginEmail(email);
_logger.log("info", "MAIN - [testSendMessageNotificationToVincent02] contact:", contact && contact.jid ? contact.jid : contact);
const payload: any = {
type: "user",
recipientId: contact.id,
imSubject: `Sample IM notification subject`,
imBody: `Sample IM notification body from Samples/index.ts at ${new Date().toISOString()}`
};
const res = await rainbowSDK.im.sendMessageNotification(payload);
_logger.log("info", "MAIN - [testSendMessageNotificationToVincent02] result:", res);
} catch (err) {
_logger.log("error", "MAIN - [testSendMessageNotificationToVincent02] error:", err);
}
}
/**
* Test for ImsService.sendMessageNotification
* Retrieves contact by email 'vincent02@vbe.test.openrainbow.net' and sends a simple IM notification via REST.
* Usage from CLI: tests.testSendMessageNotificationToVincent02()
*/
async testSendMessageNotificationToBubble() {
const email = "vincent02@vbe.test.openrainbow.net";
try {
//const contact: any = await rainbowSDK.contacts.getContactByLoginEmail(email);
//_logger.log("info", "MAIN - [testSendMessageNotificationToVincent02] contact:", contact && contact.jid ? contact.jid : contact);
// vincent00 on .net use bubble : testBotDescription_2024/02/07T15:18:39.669Z
let bubbles = rainbowSDK.bubbles.getAllActiveBubbles();
_logger.log("debug", "MAIN - testupdateAvatarForBubble - getAllActiveBubbles bubble.length : ", bubbles ? bubbles.length:0);
let bubble = bubbles.find(element => element.name==="testBotName_2024/02/07T15:18:39.669ZGuestUser");
_logger.log("debug", "MAIN - testupdateAvatarForBubble - bubble \"testBotName_2024/02/07T15:18:39.669ZGuestUser\" : ", bubble);
//let conversation = await rainbowSDK.conversations.openConversationForBubble(bubble);
const payload: any = {
type: "room",
recipientId: bubble.id,
imSubject: `Sample IM notification subject to bubble.`,
imBody: `Sample IM notification body from Samples/index.ts at ${new Date().toISOString()} to bubble.`
};
const res = await rainbowSDK.im.sendMessageNotification(payload);
_logger.log("info", "MAIN - [testSendMessageNotificationToVincent02] result:", res);
} catch (err) {
_logger.log("error", "MAIN - [testSendMessageNotificationToVincent02] error:", err);
}
}
async testEvents() {
let listenerData = await rainbowSDK.events.listenerData();
_logger.log("debug", "MAIN - [testEvents ] :: listenerData : ", prettydata.json(listenerData));
}
async testgetContactByLoginEmailCaseSensitiveTest() {
let contactEmailToSearchVincent00 = "vincent00@vbe.test.openrainbow.net";
//let contactEmailToSearchVincent01 = "vincent01@vbe.test.openrainbow.net";
//let utc = new Date().toJSON().replace(/-/g, "_");
let contactVincent00 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent00);
_logger.log("debug", "MAIN - [testgetContactByLoginEmailCaseSensitiveTest] after getContactByLoginEmail : ", contactVincent00);
let contactVincent00upperCase = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent00.toUpperCase());
_logger.log("debug", "MAIN - [testgetContactByLoginEmailCaseSensitiveTest] after getContactByLoginEmail UpperCase : ", contactVincent00upperCase);
}
async testgetContactByLoginEmailVincentBerder() {
let contactEmailToSearchVincent00 = "vincent.berder@al-enterprise.com";
//let contactEmailToSearchVincent01 = "vincent01@vbe.test.openrainbow.net";
//let utc = new Date().toJSON().replace(/-/g, "_");
let contactVincent00 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent00, true);
_logger.log("debug", "MAIN - [testgetContactByLoginEmailCaseSensitiveTest] after getContactByLoginEmail : ", contactVincent00);
}
async testgetContactIdByLoginEmailVincentBerder() {
let contactEmailToSearchVincent00 = "vincent00@vbe.test.openrainbow.net";
//let contactEmailToSearchVincent01 = "vincent01@vbe.test.openrainbow.net";
//let utc = new Date().toJSON().replace(/-/g, "_");
let contactId = await rainbowSDK.contacts.getContactIdByLoginEmail(contactEmailToSearchVincent00, true);
_logger.log("debug", "MAIN - [testgetContactIdByLoginEmailVincentBerder] after getContactIdByLoginEmail contactId : ", contactId);
}
displayRoster() {
let contacts = rainbowSDK.contacts.getAll();
let roster = contacts.filter(contact => contact.roster).map(contact => contact.displayName)
_logger.log("debug", "MAIN - [displayRoster] roster.length : ", roster.length, ", roster : ", roster);
}
/* testgetContactByLoginEmail() {
let loginEmail = "vincent++@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(contact => {
if (contact) {
_logger.log("debug", "MAIN - [testgetContactByLoginEmail ] :: getContactByLoginEmail contact : ", contact);
}
});
} // */
testgetContactByLoginEmail(loginEmail: string = "vincent++@vbe.test.openrainbow.net", forceServerSearch: boolean = false) {
//let loginEmail = "vincent++@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail, forceServerSearch).then(contact => {
if (contact) {
_logger.log("debug", "MAIN - [testgetContactByLoginEmail ] :: getContactByLoginEmail contact : ", contact);
}
});
}
/**
* need to be administrator of the company. Here vincent02 is ok.
*/
testgetContactInfos() {
let loginEmail = "vincent++@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(contact => {
if (contact) {
_logger.log("debug", "MAIN - [testgetContactInfos ] :: getContactByLoginEmail contact : ", contact);
rainbowSDK.admin.getContactInfos(contact.id).then(contactInfos => {
if (contactInfos) {
_logger.log("debug", "MAIN - [testgetContactInfos ] :: getContactInfos contactInfos : ", contactInfos);
} else {
_logger.log("debug", "MAIN - [testgetContactInfos ] :: getContactInfos no infos found");
}
});
}
});
}
testgetContactInfos2() {
let loginEmail = "representaive2@al-mydemo.com";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(contact => {
if (contact) {
_logger.log("debug", "MAIN - [testgetContactInfos ] :: getContactByLoginEmail contact : ", contact);
rainbowSDK.admin.getContactInfos(contact.id).then(contactInfos => {
if (contactInfos) {
_logger.log("debug", "MAIN - [testgetContactInfos ] :: getContactInfos contactInfos : ", contactInfos);
} else {
_logger.log("debug", "MAIN - [testgetContactInfos ] :: getContactInfos no infos found");
}
});
}
});
}
/**
* need to be administrator of the company. Here vincent02 is ok.
*/
testupdateContactInfos() {
let loginEmail = "vincent++@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(contact => {
if (contact) {
_logger.log("debug", "MAIN - [testupdateContactInfos ] :: getContactByLoginEmail contact : ", contact);
let utc = new Date().toJSON().replace(/-/g, "_");
let infos = {
"userInfo1": "My Value UserInfo 1_" + utc,
"userInfo2": "My Value UserInfo 2_" + utc,
"jobTitle": "my job",
customData: {
"key1": "TestTextOfKey1" + utc,
"key2": "TestTextOfKey2" + utc
}
};
rainbowSDK.admin.updateContactInfos(contact.id, infos).then(result => {
if (result) {
_logger.log("debug", "MAIN - [testupdateContactInfos ] :: updateContactInfos result : ", result);
} else {
_logger.log("debug", "MAIN - [testupdateContactInfos ] :: updateContactInfos no infos found");
}
rainbowSDK.admin.getContactInfos(contact.id).then(contactInfos => {
if (contactInfos) {
_logger.log("debug", "MAIN - [testupdateContactInfos ] :: getContactInfos contactInfos : ", contactInfos);
} else {
_logger.log("debug", "MAIN - [testupdateContactInfos ] :: getContactInfos no infos found");
}
});
});
}
});
}
/**
* need to be administrator of the company. Here vincent02 is ok.
*/
testupdateContactInfos_loginEmail() {
let loginEmail = "vincent++@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(contact => {
if (contact) {
_logger.log("debug", "MAIN - [testupdateContactInfos_loginEmail ] :: getContactByLoginEmail contact : ", contact);
let utc = new Date().toJSON().replace(/-/g, "_");
let infos = {
"loginEmail": "vincent++updated@vbe.test.openrainbow.net"
};
rainbowSDK.admin.updateContactInfos(contact.id, infos).then(result => {
if (result) {
_logger.log("debug", "MAIN - [testupdateContactInfos_loginEmail ] :: updateInformationForUser result : ", result);
} else {
_logger.log("debug", "MAIN - [testupdateContactInfos_loginEmail ] :: updateInformationForUser no infos found");
}
rainbowSDK.admin.getContactInfos(contact.id).then(contactInfos => {
if (contactInfos) {
_logger.log("debug", "MAIN - [testupdateContactInfos_loginEmail ] :: getContactInfos contactInfos : ", contactInfos);
} else {
_logger.log("debug", "MAIN - [testupdateContactInfos_loginEmail ] :: getContactInfos no infos found");
}
rainbowSDK.admin.updateContactInfos(contact.id, {loginEmail}).then(result => {
if (result) {
_logger.log("debug", "MAIN - [testupdateContactInfos_loginEmail ] :: updateInformationForUser result : ", result);
} else {
_logger.log("debug", "MAIN - [testupdateContactInfos_loginEmail ] :: updateInformationForUser no infos found");
}
});
});
});
}
});
}
async testjoinContacts_AddContactToRoster() {
let contactEmailToSearchVincent00 = "vincent00@vbe.test.openrainbow.net";
let contactEmailToSearchVincent01 = "vincent01@vbe.test.openrainbow.net";
let utc = new Date().toJSON().replace(/-/g, "_");
let contactVincent00 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent00);
let contactVincent01 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent01);
//let jid = contactVincent01.jid_im;
// let me = rainbowSDK.contacts.getConnectedUser();
let tab = [];
tab.push(contactVincent01.id);
rainbowSDK.contacts.joinContacts(contactVincent00, tab);
}
async testmockuserPasswordChanged() {
let stanza = "" +
"" +
"" +
"";
await rainbowSDK._core._xmpp.mockStanza(stanza);
}
async testsendSubscription() {
let contactEmailToSearchVincent00 = "vincent00@vbe.test.openrainbow.net";
let contactEmailToSearchVincent01 = "vincent01@vbe.test.openrainbow.net";
let utc = new Date().toJSON().replace(/-/g, "_");
let contactVincent00 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent00);
let contactVincent01 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent01);
//let jid = contactVincent01.jid_im;
// let me = rainbowSDK.contacts.getConnectedUser();
let tab = [];
tab.push(contactVincent01.id);
//rainbowSDK.contacts.addContact(contactVincent00, tab);
}
async testaddToContactsList() {
let contactEmailToSearchVincent00 = "vincent02@vbe.test.openrainbow.net";
//let contactEmailToSearchVincent01 = "vincent01@vbe.test.openrainbow.net";
let utc = new Date().toJSON().replace(/-/g, "_");
let contactVincent00 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent00);
//let contactVincent01 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent01);
//let jid = contactVincent01.jid_im;
// let me = rainbowSDK.contacts.getConnectedUser();
//let tab = [];
//tab.push(contactVincent01.id);
await rainbowSDK.contacts.addToNetwork(contactVincent00);
}
async testremoveFromNetwork() {
let contactEmailToSearchVincent00 = "vincent02@vbe.test.openrainbow.net";
let contactVincent00 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent00);
_logger.log("debug", "MAIN - [testremoveFromNetwork] contactEmailToSearchVincent00 : " + contactEmailToSearchVincent00 + " : ", contactVincent00);
await rainbowSDK.contacts.removeFromNetwork(contactVincent00);
}
async testgetAllUsers() {
// let utc = new Date().toJSON().replace(/-/g, '_');
let users = await rainbowSDK.admin.getAllUsers("small", 2, 5, "firstName");
_logger.log("debug", "MAIN - [testgetAllUsers] after getAllUsers : ", users);
//let contactVincent01 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent01);
//let jid = contactVincent01.jid_im;
// let me = rainbowSDK.contacts.getConnectedUser();
//let tab = [];
//tab.push(contactVincent01.id);
//await rainbowSDK.contacts.addToNetwork(contactVincent00);
}
async testgetAllUsersByFilter() {
// let utc = new Date().toJSON().replace(/-/g, '_');
let users = await rainbowSDK.admin.getAllUsersByFilter(undefined, undefined, "vincent02@vbe.test.openrainbow.net", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined
, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined
, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined
, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined);
_logger.log("debug", "MAIN - [testgetAllUsersByFilter] after getAllUsersByFilter : ", users);
}
async testgetAllUsersByCompanyId() {
let contactEmailToSearchVincent00 = "vincent00@vbe.test.openrainbow.net";
//let contactEmailToSearchVincent01 = "vincent01@vbe.test.openrainbow.net";
//let utc = new Date().toJSON().replace(/-/g, "_");
let contactVincent00 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent00);
let users = await rainbowSDK.admin.getAllUsersByCompanyId("small", 2, 5, "firstName", contactVincent00.companyId);
_logger.log("debug", "MAIN - [testgetAllUsersByCompanyId] after getAllUsersByCompanyId : ", users);
}
async testgetAllUsersBySearchEmailByCompanyId() {
let contactEmailToSearchVincent00 = "vincent00@vbe.test.openrainbow.net";
//let contactEmailToSearchVincent01 = "vincent01@vbe.test.openrainbow.net";
//let utc = new Date().toJSON().replace(/-/g, "_");
let contactVincent00 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent00);
let searchEmail = "cord";
let users = await rainbowSDK.admin.getAllUsersBySearchEmailByCompanyId("small", 2, 5, "firstName", contactVincent00.companyId, searchEmail);
_logger.log("debug", "MAIN - [testgetAllUsersBySearchEmailByCompanyId] after getAllUsersBySearchEmailByCompanyId : ", users);
}
async testgetContactsInformationByJIDs() {
// to be used with .Net platform (vincent00)
let contactsJids = [];
/* let contactEmailToSearchVincent01 = "vincent01@vbe.test.openrainbow.net";
let contactEmailToSearchVincent02 = "vincent02@vbe.test.openrainbow.net";
let contactEmailToSearchVincent03 = "vincent03@vbe.test.openrainbow.net";
let contactEmailToSearchVincent11 = "vincent11@vbe.test.openrainbow.net";
//let utc = new Date().toJSON().replace(/-/g, "_");
let contactVincent01 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent01);
contactsJids.push(contactVincent01?.jid);
_logger.log("debug", "MAIN - [testgetContactsInformationByJIDs] contactVincent01?.jid : ", contactVincent01?.jid);
let contactVincent02 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent02);
contactsJids.push(contactVincent02?.jid);
_logger.log("debug", "MAIN - [testgetContactsInformationByJIDs] contactVincent02?.jid : ", contactVincent02?.jid);
let contactVincent03 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent03);
contactsJids.push(contactVincent03?.jid);
_logger.log("debug", "MAIN - [testgetContactsInformationByJIDs] contactVincent03?.jid : ", contactVincent03?.jid);
let contactVincent11 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent11);
contactsJids.push(contactVincent03?.jid);
_logger.log("debug", "MAIN - [testgetContactsInformationByJIDs] contactVincent11?.jid : ", contactVincent11?.jid);
// */
let contactVincent01Jid = "98091bcde14d4eadac763d9cc0851719@openrainbow.net";
contactsJids.push(contactVincent01Jid);
let contactVincent02Jid = "6ac069e5eb4741e2af64a8beac59406f@openrainbow.net"
contactsJids.push(contactVincent02Jid);
let contactVincent03Jid = "37dc2adbdf3c456e99ccc639742f177c@openrainbow.net"
contactsJids.push(contactVincent03Jid);
let contactVincent11Jid = "29b4874d1a4b48c9be13c559da4efe3e@openrainbow.net"
contactsJids.push(contactVincent11Jid);
let listOfContacts = await rainbowSDK.contacts.getContactsInformationByJIDs(contactsJids, 1);
// _logger.log("debug", "MAIN - [testgetContactsInformationByJIDs] after getContactsInformationByJIDs listOfContacts : ", listOfContacts);
for (const aContact of listOfContacts) {
_logger.log("debug", "MAIN - [getContactsInformationByJIDs] contact : ", aContact);
}
}
async testgetContactIdByCriteria() {
let that = this;
/*
id: '61a4dca03f613c33358b4b0c',
_displayName: 'Vincent03 Berder03',
name: { value: 'Vincent03 Berder03' },
displayNameMD5: '15457533c9c313f67208561bcb75ba81',
companyName: 'vbe.test.openrainbow.net',
company: null,
loginEmail: 'vincent03@vbe.test.openrainbow.net',
nickName: '',
title: '',
jobTitle: '',
country: 'FRA',
timezone: 'Europe/Paris',
organisationId: undefined,
siteId: undefined,
companyId: '5ebaa8866412a73aaa066484',
jid_im: '37dc2adbdf3c456e99ccc639742f177c@openrainbow.net',
*/
let id = "";
let infoContact = {id:"61a4dca03f613c33358b4b0c"};
let infoEmail = "vincent03@vbe.test.openrainbow.net";
let infoJid = "37dc2adbdf3c456e99ccc639742f177c@openrainbow.net";
id = await rainbowSDK.contacts.getContactIdByCriteria(infoContact);
_logger.log("debug", "MAIN - (testgetContactIdByCriteria) infoContact : ",infoContact, ", id : ", id);
id = await rainbowSDK.contacts.getContactIdByCriteria(infoEmail);
_logger.log("debug", "MAIN - (testgetContactIdByCriteria) infoEmail : ",infoEmail, ", id : ", id);
id = await rainbowSDK.contacts.getContactIdByCriteria(infoJid, "jid");
_logger.log("debug", "MAIN - (testgetContactIdByCriteria) infoJid : ",infoJid, ", id : ", id);
}
//region Favorites
async testgetServerFavorites() {
let utc = new Date().toJSON().replace(/-/g, "_");
let favorites = await rainbowSDK.favorites.fetchAllFavorites();
_logger.log("debug", "MAIN - (testgetServerFavorites) favorites : ", favorites);
//let contactVincent01 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent01);
//let jid = contactVincent01.jid_im;
// let me = rainbowSDK.contacts.getConnectedUser();
//let tab = [];
//tab.push(contactVincent01.id);
//await rainbowSDK.contacts.addToNetwork(contactVincent00);
}
async testcreateFavorite() {
// To be USED with vincent01 on .Net
let utc = new Date().toJSON().replace(/-/g, "_");
let contactEmailToSearch = "vincent00@vbe.test.openrainbow.net";
let contactVincent00 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let contactEmailToSearch2 = "vincent02@vbe.test.openrainbow.net";
let contactVincent01 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch2);
try {
let favoriteCreated: any = await rainbowSDK.favorites.createFavorite(contactVincent00.id, "user");
_logger.log("debug", "MAIN - (testgetServerFavorites) createFavorite favoriteCreated : ", favoriteCreated);
let favoriteCreated01: any = await rainbowSDK.favorites.createFavorite(contactVincent01.id, "user");
_logger.log("debug", "MAIN - (testgetServerFavorites) createFavorite favoriteCreated01 : ", favoriteCreated01);
let favoriteMoved: any = await rainbowSDK.favorites.moveFavoriteToPosition(favoriteCreated01.id, 0);
_logger.log("debug", "MAIN - (testgetServerFavorites) moveFavoriteToPosition favoriteMoved : ", favoriteMoved);
let favorites = await rainbowSDK.favorites.fetchAllFavorites();
_logger.log("debug", "MAIN - (testgetServerFavorites) fetchAllFavorites favorites : ", favorites);
let favoriteFoundInList = await rainbowSDK.favorites.getAllUserFavoriteList(contactVincent00.id);
_logger.log("debug", "MAIN - (testgetServerFavorites) getAllUserFavoriteList favoriteFoundInList : ", favoriteFoundInList);
let isPeerSettedAsFavorite = await rainbowSDK.favorites.checkIsPeerSettedAsFavorite(contactVincent00.id);
_logger.log("debug", "MAIN - (testgetServerFavorites) checkIsPeerSettedAsFavorite isPeerSettedAsFavorite : ", isPeerSettedAsFavorite);
let favoriteById = await rainbowSDK.favorites.getFavoriteById(favoriteCreated.id);
_logger.log("debug", "MAIN - (testgetServerFavorites) getFavoriteById favoriteById : ", favoriteById);
let favoriteDeleted = await rainbowSDK.favorites.deleteFavorite(favoriteCreated.id);
_logger.log("debug", "MAIN - (testgetServerFavorites) deleteFavorite favoriteDeleted : ", favoriteDeleted);
let favoriteDeleted01 = await rainbowSDK.favorites.deleteFavorite(favoriteCreated01.id);
_logger.log("debug", "MAIN - (testgetServerFavorites) deleteFavorite favoriteDeleted01 : ", favoriteDeleted01);
} catch (e) {
_logger.log("error", "MAIN - (testgetServerFavorites) FAILED : ", e);
}
}
//endregion Favorites
async testcreateGuestUserError() {
let firstname = "firstname_";
let lastname = "lastname_" + new Date().getTime() + "_";
for (let iter = 0; iter < 1; iter++) {
let firstnameTemp = firstname + iter;
let lastnameTemp = lastname + iter;
await rainbowSDK.admin.createGuestUser(firstnameTemp, lastnameTemp, "fr", 10).catch((err) => {
_logger.log("debug", "MAIN - (testcreateGuestUserError) error while creating guest user : ", err);
});
}
}
testsearchUsers() {
let usershouldbeUnkown = "unknowcontact@openrainbow.org";
rainbowSDK.contacts.searchUsers(20, undefined, "vincent").then(contact => {
_logger.log("debug", "MAIN - [testsearchUsers ] :: contact : ", contact);
}).catch((err) => {
_logger.log("error", "MAIN - [testsearchUsers ] :: catch reject contact : ", err);
});
}
testsearchUserByPhonenumberALE() {
// To be used vith vincent.berder on openrainbow.com
let contactphone = "21885240"; // 21885240 is Thierry Peyrebesse
//let contactphone = encodeURIComponent("+33298483031") ; // 23031 is vincent01 +33298483031
rainbowSDK.contacts.searchUserByPhonenumber(contactphone).then(contact => {
_logger.log("debug", "MAIN - [testsearchUserByPhonenumberALE ] :: contact : ", contact);
}).catch((err) => {
_logger.log("error", "MAIN - [testsearchUserByPhonenumberALE ] :: catch reject contact : ", err);
});
}
testsearchUserByPhonenumber() {
// To be used vith vincent05 on vberder.openrainbow.org
let contactphone = "23031"; // 23031 is vincent01 +33298483031
//let contactphone = encodeURIComponent("+33298483031") ; // 23031 is vincent01 +33298483031
rainbowSDK.contacts.searchUserByPhonenumber(contactphone).then(contact => {
_logger.log("debug", "MAIN - [testsearchUserByPhonenumber ] :: contact : ", contact);
}).catch((err) => {
_logger.log("error", "MAIN - [testsearchUserByPhonenumber ] :: catch reject contact : ", err);
});
}
testsearchUserByPhonenumberByDDI() {
// To be used vith vincent05 on vberder.openrainbow.org
let contactphone = "+33298483031"; // 23031 is vincent01 +33298483031
//let contactphone = encodeURIComponent("+33298483031") ; // 23031 is vincent01 +33298483031
rainbowSDK.contacts.searchUserByPhonenumber(contactphone).then(contact => {
_logger.log("debug", "MAIN - [testsearchUserByPhonenumber ] :: contact : ", contact);
}).catch((err) => {
_logger.log("error", "MAIN - [testsearchUserByPhonenumber ] :: catch reject contact : ", err);
});
}
// need Admin right :
async testgetAllSystemPhoneNumbers() {
// use on vberder.openrainbow.org with pbx.
// To be used vith vincentAdmin@vbe.test.openrainbow.net on vberder.openrainbow.org
let pbxId = 'PBXfa73-491b-e274-4e96-a0df-c6f4-e939-4bb2';
let shortNumber = "23031"; // 23031 is vincent01 +33298483031
//let contactphone = encodeURIComponent("+33298483031") ; // 23031 is vincent01 +33298483031
let systemInfos: any = await rainbowSDK.admin.getSystemDataByPbxId(pbxId);
rainbowSDK.admin.getAllSystemPhoneNumbers(systemInfos.id, shortNumber, undefined, undefined, undefined, undefined, undefined, undefined, undefined, "full").then(async infos => {
_logger.log("debug", "MAIN - [testgetAllSystemPhoneNumbers ] :: infos : ", infos);
let contact = await rainbowSDK.contacts.getContactById(infos[0].userId);
_logger.log("debug", "MAIN - [testgetAllSystemPhoneNumbers ] :: contact : ", contact);
}).catch((err) => {
_logger.log("error", "MAIN - [testgetAllSystemPhoneNumbers ] :: catch reject contact : ", err);
});
}
//region Contacts Sources
async testSource() {
//async testcreateSource () {
let userId: string, sourceId: string, os: string;
userId = connectedUser.id;
sourceId = "mySrc_" + new Date().getTime();
os = "Node_" + process.version;
let srcInfos: any /* {
sourceId: string,
os: string,
id: string
} */ = await rainbowSDK.contacts.createSource(userId, sourceId, os).then(async infos => {
_logger.log("debug", "MAIN - [testcreateSource ] :: infos : ", infos);
return infos;
}).catch((err) => {
_logger.log("error", "MAIN - [testcreateSource ] :: catch reject contact : ", err);
});
//}
//testupdateSourceData () {
await rainbowSDK.contacts.updateSourceData(userId, srcInfos.id, os + "_UPDATED").then(async infos => {
_logger.log("debug", "MAIN - [testupdateSourceData ] :: infos : ", infos);
}).catch((err) => {
_logger.log("error", "MAIN - [testupdateSourceData ] :: catch reject contact : ", err);
});
//}
// testgetSourceData () {
await rainbowSDK.contacts.getSourceData(userId, srcInfos.id).then(async infos => {
_logger.log("debug", "MAIN - [testgetSourceData ] :: infos : ", infos);
}).catch((err) => {
_logger.log("error", "MAIN - [testgetSourceData ] :: catch reject contact : ", err);
});
//}
await rainbowSDK.contacts.getAllSourcesByUserId().then(async infos => {
_logger.log("debug", "MAIN - [testgetAllSourcesByUserId ] :: infos : ", infos);
}).catch((err) => {
_logger.log("error", "MAIN - [testgetAllSourcesByUserId ] :: catch reject contact : ", err);
});
//testdeleteSource () {
await rainbowSDK.contacts.deleteSource(userId, srcInfos.id).then(async infos => {
_logger.log("debug", "MAIN - [testdeleteSource ] :: infos : ", infos);
}).catch((err) => {
_logger.log("error", "MAIN - [testdeleteSource ] :: catch reject contact : ", err);
});
}
async testdeleteSource_All() {
let userId = connectedUser.id;
await rainbowSDK.contacts.getAllSourcesByUserId().then(async (infos: any) => {
_logger.log("debug", "MAIN - [testgetAllSourcesByUserId ] :: infos : ", infos);
for (let i = 0; i < infos.data.length; i++) {
await rainbowSDK.contacts.deleteSource(userId, infos.data[i].id).then(async result => {
_logger.log("debug", "MAIN - [testdeleteSource ] :: result : ", result);
}).catch((err) => {
_logger.log("error", "MAIN - [testdeleteSource ] :: catch reject contact : ", err);
});
}
}).catch((err) => {
_logger.log("error", "MAIN - [testgetAllSourcesByUserId ] :: catch reject contact : ", err);
});
}
testgetAllSourcesByUserId() {
rainbowSDK.contacts.getAllSourcesByUserId().then(async infos => {
_logger.log("debug", "MAIN - [testgetAllSourcesByUserId ] :: infos : ", infos);
}).catch((err) => {
_logger.log("error", "MAIN - [testgetAllSourcesByUserId ] :: catch reject contact : ", err);
});
}
//endregion Contacts Sources
//region Contacts API - Enduser portal
async testcreateContact() {
//async testcreateSource () {
let userId: string, sourceIdName: string, os: string;
userId = connectedUser.id;
sourceIdName = "mySrc_" + new Date().getTime();
os = "Node_" + process.version;
let srcInfos: any /* {
sourceId: string,
os: string,
id: string
} */ = await rainbowSDK.contacts.createSource(userId, sourceIdName, os).then(async infos => {
_logger.log("debug", "MAIN - [testcreateContact ] :: testcreateSource infos : ", infos);
return infos;
}).catch((err) => {
_logger.log("error", "MAIN - [testcreateContact ] :: testcreateSource catch reject contact : ", err);
});
//}
let sourceId: string = srcInfos.id;
let idgenerated = new Date().getTime();
let contactId: string, firstName: string, lastName: string, displayName: string, company: string,
jobTitle: string, phoneNumbers: Array, emails: Array, addresses: Array,
groups: Array, otherData: Array;
contactId = "id_" + idgenerated;
firstName = "firstname_" + idgenerated;
lastName = "lastname_" + idgenerated;
displayName = "displayname_" + idgenerated;
company = "company_" + idgenerated;
jobTitle = "jobtitle_" + idgenerated;
phoneNumbers = [];
emails = [];
addresses = [];
groups = [];
otherData = [];
let result = await rainbowSDK.contacts.createContact(userId, sourceId, contactId, firstName, lastName, displayName, company, jobTitle, phoneNumbers, emails, addresses, groups, otherData).then(async infos => {
_logger.log("debug", "MAIN - [testcreateContact ] :: createContact infos : ", infos);
return infos;
}).catch((err) => {
_logger.log("error", "MAIN - [testcreateContact ] :: createContact catch reject contact : ", err);
});
//}
let result2 = await rainbowSDK.contacts.getContactsList(userId, sourceId, "full").then(async (infos: any) => {
_logger.log("debug", "MAIN - [testcreateContact ] :: getContactsList infos : ", infos);
for (let i = 0; i < infos.data.length; i++) {
_logger.log("debug", "MAIN - [testcreateContact ] :: getContactsList infos.data[" + i + "] : ", infos.data[i]);
let result4 = await rainbowSDK.contacts.updateContactData(userId, sourceId, infos.data[i].id, undefined, "firstnameUpdated", "lastnameUpdated").then(async (infos3: any) => {
_logger.log("debug", "MAIN - [testcreateContact ] :: updateContactData infos3 : ", infos3);
});
let result3 = await rainbowSDK.contacts.getContactData(userId, sourceId, infos.data[i].id).then(async (infos2: any) => {
_logger.log("debug", "MAIN - [testcreateContact ] :: getContactData after update infos2 : ", infos2);
});
let result5 = await rainbowSDK.contacts.deleteContact(userId, sourceId, infos.data[i].id).then(async (infos4: any) => {
_logger.log("debug", "MAIN - [testcreateContact ] :: deleteContact infos4 : ", infos4);
});
let result6 = await rainbowSDK.contacts.getContactsList(userId, sourceId, "full").then(async (infos5: any) => {
_logger.log("debug", "MAIN - [testcreateContact ] :: getContactsList after delete infos5 : ", infos5);
});
}
return infos;
}).catch((err) => {
_logger.log("error", "MAIN - [testcreateContact ] :: getContactsList catch reject contact : ", err);
});
//}
//testdeleteSource () {
await rainbowSDK.contacts.deleteSource(userId, srcInfos.id).then(async infos => {
_logger.log("debug", "MAIN - [testcreateContact ] :: deleteSource infos : ", infos);
}).catch((err) => {
_logger.log("error", "MAIN - [testcreateContact ] :: deleteSource catch reject contact : ", err);
});
}
/*
testupdateContactData () {}
testgetAContactData () {}
testgetContactsList () {
} */
//endregion Contacts API - Enduser portal
//region Contact Test
updateProperty(propertyTab : Array, value : any) {
if (isDefined(value)) {
propertyTab[0] = value
}
}
testupdateProperty() {
let that = this;
let contact : any= new Contact();
contact.firstName = "firstNameOrig";
_logger.log("debug", "MAIN - [testupdateProperty ] :: contact.firstName before updateProperty : ", contact.firstName);
updatePropertyToObj(contact, "firstName","firstName_newValue");
_logger.log("debug", "MAIN - [testupdateProperty ] :: contact.firstName after updateProperty with new value : ", contact.firstName);
updatePropertyToObj(contact, "firstName", undefined, false);
_logger.log("debug", "MAIN - [testupdateProperty ] :: contact.firstName after updateProperty with undefined value and addEmptyProperty to false : ", contact.firstName);
updatePropertyToObj(contact, "firstName", undefined, true);
_logger.log("debug", "MAIN - [testupdateProperty ] :: contact.firstName after updateProperty with undefined value and addEmptyProperty to true : ", contact.firstName);
updatePropertyToObj(contact, "firstName_01","firstName_01__newValue");
_logger.log("debug", "MAIN - [testupdateProperty ] :: contact.firstName_01 after updateProperty with new value : ", contact.firstName_01);
updatePropertyToObj(contact, "firstName_02", undefined, false);
_logger.log("debug", "MAIN - [testupdateProperty ] :: contact.firstName_02 after updateProperty with undefined value and addEmptyProperty to false : ", contact.firstName_02);
updatePropertyToObj(contact, "firstName_03", undefined, true);
_logger.log("debug", "MAIN - [testupdateProperty ] :: contact.firstName_03 after updateProperty with undefined value and addEmptyProperty to true : ", contact.firstName_03);
}
//endregion Contact Test
//endregion Contacts
//region Messages
async testsendConversationByEmail() {
// To use with vincent01 on .NET
//let that = this;
let contactEmailToSearch = "vincent03@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let destArray = ["vincent02@vbe.test.openrainbow.net", "blablabla@vbe.test.openrainbow.net"];
let sentConv = await rainbowSDK.conversations.sendConversationByEmail(conversation.dbId, destArray, "fr");
_logger.log("debug", "MAIN - testsendConversationByEmail - result sendConversationByEmail : ", sentConv);
let sentConv2 = await rainbowSDK.conversations.sendConversationByEmail(conversation.dbId, undefined, "fr");
_logger.log("debug", "MAIN - testsendConversationByEmail - result sendConversationByEmail : ", sentConv2);
}
async testgetContactsMessagesFromConversationId() {
//let that = this;
//let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
//let now = new Date().getTime();
let usebulk = false;
// get messages which are not events
let msgNotEvents = await rainbowSDK.conversations.getContactsMessagesFromConversationId(conversation.id, usebulk);
_logger.log("debug", "MAIN - testgetContactsMessagesFromConversationId - result getContactsMessagesFromConversationId : ", msgNotEvents);
}
async testupdateConversationBookmark() {
// To use with vincent00 on .Net
//let that = this;
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
//let now = new Date().getTime();
// get messages which are not events
let msgNotEvents: any = await rainbowSDK.conversations.getContactsMessagesFromConversationId(conversation.id);
_logger.log("debug", "MAIN - testupdateConversationBookmark - result getContactsMessagesFromConversationId : ", msgNotEvents, ", msgNotEvents.length : ", msgNotEvents.length);
if (msgNotEvents.length > 6) {
let messageToSetUnread = msgNotEvents[msgNotEvents.length - 5];
let result = await rainbowSDK.conversations.updateConversationBookmark(undefined, conversation.dbId, messageToSetUnread.id);
_logger.log("debug", "MAIN - testupdateConversationBookmark - result updateConversationBookmark : ", result);
}
}
async testdeleteConversationBookmark() {
// To use with vincent00 on .Net
//let that = this;
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
//let now = new Date().getTime();
// get messages which are not events
let msgNotEvents: any = await rainbowSDK.conversations.getContactsMessagesFromConversationId(conversation.id);
_logger.log("debug", "MAIN - testdeleteConversationBookmark - result getContactsMessagesFromConversationId : ", msgNotEvents, ", msgNotEvents.length : ", msgNotEvents.length);
if (msgNotEvents.length > 6) {
let messageToSetUnread = msgNotEvents[msgNotEvents.length - 5];
let result = await rainbowSDK.conversations.updateConversationBookmark(undefined, conversation.dbId, messageToSetUnread.id);
_logger.log("debug", "MAIN - testdeleteConversationBookmark - result updateConversationBookmark : ", result);
await pause(2000);
let result2 = await rainbowSDK.conversations.deleteConversationBookmark(undefined, conversation.dbId);
_logger.log("debug", "MAIN - testdeleteConversationBookmark - result deleteConversationBookmark : ", result2);
}
}
async testgetContactsMessagesFromConversationId_2() {
// To use with vincent00 on .Net
//let that = this;
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
//let now = new Date().getTime();
// get messages which are not events
let msgNotEvents: any = await rainbowSDK.conversations.getContactsMessagesFromConversationId(conversation.id);
_logger.log("debug", "MAIN - testgetContactsMessagesFromConversationId - result getContactsMessagesFromConversationId : ", msgNotEvents, ", msgNotEvents.length : ", msgNotEvents.length);
}
async testgetContactsMessagesFromConversationIdForGuest() {
//let that = this;
//let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
rainbowSDK.admin.createAnonymousGuestUser(60 * 60).then((guest: any) => {
_logger.log("debug", "MAIN - testgetContactsMessagesFromConversationIdForGuest - result createAnonymousGuestUser : ", guest);
rainbowSDK.contacts.getContactByJid(guest.jid_im, true).then(contact => {
_logger.log("debug", "MAIN - testgetContactsMessagesFromConversationIdForGuest - result getContactByJid : ", contact);
rainbowSDK.conversations.openConversationForContact(contact).then(async conversation => {
_logger.log("debug", "MAIN - testgetContactsMessagesFromConversationIdForGuest - result openConversationForContact : ", conversation);
let msgNotEvents = await rainbowSDK.conversations.getContactsMessagesFromConversationId(conversation.id);
_logger.log("debug", "MAIN - testgetContactsMessagesFromConversationIdForGuest - result getContactsMessagesFromConversationId : ", msgNotEvents);
});
});
});
/*
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
//let now = new Date().getTime();
// get messages which are not events
let msgNotEvents = await rainbowSDK.conversations.getContactsMessagesFromConversationId(conversation.id);
_logger.log("debug", "MAIN - testgetContactsMessagesFromConversationId - result getContactsMessagesFromConversationId : ", msgNotEvents);
// */
}
async testremoveAllMessages(contactEmailToSearch: string = "vincent01@vbe.test.openrainbow.net") {
//let that = this;
//let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
//let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let nbMsgToSend = 2;
let msgsSent = [];
for (let i = 1; i <= nbMsgToSend; i++) {
let now = new Date().getTime();
// Send message
let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "hello num " + i + " from node : " + now, "FR", null, "Le sujet de node : " + now);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - result sendMessageToConversation : ", msgSent);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
msgsSent.push(msgSent);
_logger.log("debug", "MAIN - testremoveAllMessages - wait for message to be in conversation : ", msgSent);
await Utils.until(() => {
return conversation.getMessageById(msgSent.id)!==undefined;
}, "Wait for message to be added in conversation num : " + i);
}
let conversationWithMessagesRemoved = await rainbowSDK.conversations.removeAllMessages(conversation);
_logger.log("debug", "MAIN - testremoveAllMessages - conversation with messages removed : ", conversationWithMessagesRemoved);
}
async testsendMessageToConversationForContact(nbMsgToSend = 2) {
//let that = this;
//let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
let contactEmailToSearch = "vincent02@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
//let nbMsgToSend = 2;
let msgsSent = [];
for (let i = 1; i <= nbMsgToSend; i++) {
let now = new Date().getTime();
// Send message
//let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "hello num " + i + " from node : " + now, "FR", null, "Le sujet de node : " + now, UrgencyType.MIDDLE);
let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "hello num " + i + " from node : " + now, "FR", null, "Le sujet de node : " + now);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - result sendMessageToConversation : ", msgSent);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
msgsSent.push(msgSent);
_logger.log("debug", "MAIN - testsendMessageToConversationForContact - wait for message to be in conversation : ", msgSent);
await Utils.until(() => {
return conversation.getMessageById(msgSent.id)!==undefined;
}, "Wait for message to be added in conversation num : " + i);
let msgDeleted = await rainbowSDK.conversations.deleteMessage(conversation, msgSent.id);
_logger.log("debug", "MAIN - testsendMessageToConversationForContact - deleted in conversation the message : ", msgDeleted);
}
// let conversationWithMessagesRemoved = await rainbowSDK.conversations.removeAllMessages(conversation);
//_logger.log("debug", "MAIN - testsendMessageToConversationForContact - conversation with messages removed : ", conversationWithMessagesRemoved);
}
async testsendApplicationMessageContactJid() {
//let that = this;
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let now = new Date().getTime();
let xmlElements = new Element('instance', {'xmlns': 'tests:rainbownodesdk', 'id': now});
xmlElements.cnode(new Element('displayName').t("My displayName"));
xmlElements.cnode(new Element('description').t("My description"));
// Send message
let msgSent = await rainbowSDK.im.sendApplicationMessageContactJid(contact.jid, xmlElements);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - result sendMessageToConversation : ", msgSent);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
//a rainbow_onrainbowcpaasreceived event should be received on other side.
}
async testsendApplicationMessageBubbleJid() {
//let that = this;
_logger.log("debug", "MAIN - testsendApplicationMessageBubbleJid - getAll bubbles : ", rainbowSDK.bubbles.getAll());
//let bubbles = rainbowSDK.bubbles.getAllOwnedBubbles();
let bubbles = rainbowSDK.bubbles.getAllActiveBubbles();
_logger.log("debug", "MAIN - testsendApplicationMessageBubbleJid - getAllOwnedBubbles bubble : ", bubbles);
let bubble = bubbles.find(element => element.name==="bulle1")
_logger.log("debug", "MAIN - testsendApplicationMessageBubbleJid - bubble \"bulle1\" : ", bubble);
if (bubble) {
let bubbleJid = bubble.jid;
let now = new Date().getTime();
let xmlElements = new Element('instance', {'xmlns': 'tests:rainbownodesdk', 'id': now});
xmlElements.cnode(new Element('displayName').t("My displayName"));
xmlElements.cnode(new Element('description').t("My description"));
// Send message
let msgSent = await rainbowSDK.im.sendApplicationMessageBubbleJid(bubbleJid, xmlElements);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - result sendMessageToConversation : ", msgSent);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
//a rainbow_onrainbowcpaasreceived event should be received on other side.
}
}
/*
testeventrainbow_onconversationchanged() {
_logger.log("info", "MAIN - (testeventrainbow_onconversationchanged) started.");
rainbowSDK.events.on("rainbow_onconversationchanged", async function (conversation) {
try {
_logger.log("debug", "MAIN - (testeventrainbow_onconversationchanged) rainbow_onconversationchanged conversation.name : ", conversation.name, ", conversation.id : ", conversation.id, ", conversation.messages.length : ", conversation?.messages?.length);
} catch (err) {
_logger.log("error", "MAIN - (testeventrainbow_onconversationchanged) rainbow_onconversationchanged CATCH Error !!!");
}
});
}
async testsendMessageToConversationForContactSeveralTimes(contactEmailToSearch = "vincent03@vbe.test.openrainbow.net", nbMsgToSend = 2, removeAllMessagesBeforeSend = false) {
//let that = this;
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
if (removeAllMessagesBeforeSend && conversation?.id) {
await rainbowSDK.conversations.deleteAllMessageInOneToOneConversation(conversation);
}
let msgsSent = [];
for (let i = 1; i <= nbMsgToSend; i++) {
let now = new Date().getTime();
// Send message
//let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "hello num " + i + " from node : " + now, "FR", null, "Le sujet de node : " + now, UrgencyType.MIDDLE);
let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "hello num " + i + " from node : " + now, "FR", null, "Le sujet de node : " + now);
// _logger.log("debug", "MAIN - testsendCorrectedChatMessage - result sendMessageToConversation : ", msgSent);
// _logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
msgsSent.push(msgSent);
_logger.log("debug", "MAIN - testsendMessageToConversationForContact - wait for message to be in conversation : ", msgSent);
await pause(300);
// */
/* await Utils.until(() => {
return conversation.getMessageById(msgSent.id)!==undefined;
}, "Wait for message to be added in conversation num : " + i);
let msgDeleted = await rainbowSDK.conversations.deleteMessage(conversation, msgSent.id);
_logger.log("debug", "MAIN - testsendMessageToConversationForContact - deleted in conversation the message : ", msgDeleted);
// */
/* }
}
// */
testeventrainbow_onconversationchanged() {
_logger.log("info", "MAIN - (testeventrainbow_onconversationchanged) ", _logger.colors.cyan("rainbow_onconversationchanged"), " started.");
rainbowSDK.events.on("rainbow_onconversationchanged", async function (conversation) {
try {
_logger.log("debug", "MAIN - (testeventrainbow_onconversationchanged) ", _logger.colors.cyan("rainbow_onconversationchanged"), " conversation.name : ", conversation.name, ", conversation.id : ", conversation.id, ", conversation.messages.length : ", conversation?.messages?.length);
} catch (err) {
_logger.log("error", "MAIN - (testeventrainbow_onconversationchanged) rainbow_onconversationchanged CATCH Error !!!");
}
});
}
testLogs() {
/*
"error" = 0,
"warn" = 1,
"info" = 2,
"trace" = 3,
"http" = 4,
"xmpp" = 5,
"debug" = 6,
"internalerror" = 7,
"internal" = 8,
*/
_logger.log("error", "MAIN - testLogs error.");
_logger.log("warn", "MAIN - testLogs warn.");
_logger.log("info", "MAIN - testLogs info.");
_logger.log("trace", "MAIN - testLogs trace.");
_logger.log("http", "MAIN - testLogs http.");
_logger.log("xmpp", "MAIN - testLogs xmpp.");
_logger.log("debug", "MAIN - testLogs debug.");
_logger.log("internalerror", "MAIN - testLogs internalerror.");
_logger.log("internal", "MAIN - testLogs internal.");
}
testMessagesQueue() {
try {
let msg1 = {id: "MSG1", content: "message1"};
let msg2 = {id: "MSG2", content: "message2"};
let msg3 = {id: "MSG3", content: "message3"};
let msgQueue = new MessagesQueue(_logger, 10);
msgQueue.updateMessageIfExistsElseEnqueueIt(msg1, true);
msgQueue.updateMessageIfExistsElseEnqueueIt(msg2, true);
msgQueue.updateMessageIfExistsElseEnqueueIt(msg3, true);
_logger.log("debug", "MAIN - testMessagesQueue after store 3 messages msgQueue : ", msgQueue);
_logger.log("debug", "MAIN - testMessagesQueue msgQueue[0] : ", msgQueue[0]);
// _logger.log("debug","MAIN - testMessagesQueue msgQueue.queue[0] : ", msgQueue.queue[0]);
// update an already existing message
let msg2ToUpdate = {id: "MSG2", content: "message2Update"};
msgQueue.updateMessageIfExistsElseEnqueueIt(msg2ToUpdate, true);
_logger.log("debug", "MAIN - testMessagesQueue after update message (id=MSG2) msgQueue.toSmallString() : ", msgQueue.toSmallString());
// remove a message
msgQueue.removeMessage(msg2);
_logger.log("debug", "MAIN - testMessagesQueue after removeMessage (id=MSG2) msgQueue : ", msgQueue);
let msgIter = {id: "MSGiter", content: "messageIter"};
for (let i = 0; i < 9; i++) {
msgIter = {id: "MSGiter" + i, content: "messageIter" + i};
msgQueue.updateMessageIfExistsElseEnqueueIt(msgIter, true);
}
_logger.log("debug", "MAIN - testMessagesQueue after adding 8 message to overflow the queue size msgQueue : ", msgQueue);
msgQueue.clear();
_logger.log("debug", "MAIN - testMessagesQueue after clear message : ", msgQueue);
} catch (err) {
_logger.log("error", "MAIN - testMessagesQueue CATCH Error !!! error : ", err);
}
}
async testsendMessageToConversationForContactSeveralTimes(contactEmailToSearch = "vincent03@vbe.test.openrainbow.net", nbMsgToSend = 2, removeAllMessagesBeforeSend = false) {
//let that = this;
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
if (removeAllMessagesBeforeSend && conversation?.id) {
await rainbowSDK.conversations.deleteAllMessageInOneToOneConversation(conversation);
}
let msgsSent = [];
for (let i = 1; i <= nbMsgToSend; i++) {
let now = new Date().getTime();
// Send message
//let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "hello num " + i + " from node : " + now, "FR", null, "Le sujet de node : " + now, UrgencyType.MIDDLE);
let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "hello num " + i + " from node : " + now, "FR", null, "Le sujet de node : " + now);
// _logger.log("debug", "MAIN - testsendCorrectedChatMessage - result sendMessageToConversation : ", msgSent);
// _logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
msgsSent.push(msgSent);
_logger.log("debug", "MAIN - testsendMessageToConversationForContact - wait for message to be in conversation : ", msgSent);
await pause(300);
/* await Utils.until(() => {
return conversation.getMessageById(msgSent.id)!==undefined;
}, "Wait for message to be added in conversation num : " + i);
let msgDeleted = await rainbowSDK.conversations.deleteMessage(conversation, msgSent.id);
_logger.log("debug", "MAIN - testsendMessageToConversationForContact - deleted in conversation the message : ", msgDeleted);
// */
}
}
async testsendMessageToConversationForContactIrles() {
//let that = this;
//let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
let contactEmailToSearch = "christophe.irles@al-enterprise.com";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let nbMsgToSend = 2;
let msgsSent = [];
let txt = "# TYPESCRIPT in SDK for Node.JS\n" +
"\n" +
"Here is the howto TypeScript in **Rainbow-Node-SDK**\n";
let content = {
message: txt,
type: "text/markdown"
};
let now = new Date().getTime();
// Send message
//let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "hello num " + i + " from node : " + now, "FR", null, "Le sujet de node : " + now, UrgencyType.MIDDLE);
let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "hello from node at " + now, "FR", content, "Le sujet de node : " + now);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - result sendMessageToConversation : ", msgSent);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
}
async testsendMessageToJid() {
//let that = this;
//let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
let contactEmailToSearch = "vincent02@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let nbMsgToSend = 1;
let msgsSent = [];
for (let i = 1; i <= nbMsgToSend; i++) {
let now = new Date().getTime();
// Send message
let msgSent = await rainbowSDK.im.sendMessageToJid("hello num " + i + " from node : " + now, contact.jid, "FR", null, "Le sujet de node : " + now);
msgsSent.push(msgSent);
_logger.log("debug", "MAIN - testsendMessageToJid - wait for message to be in conversation : ", msgSent);
}
}
async testsendMessageToVincent02ByJid() {
//let that = this;
//let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
let contactEmailToSearch = "vincent02@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let now = new Date().getTime();
// Send message
let msgSent = await rainbowSDK.im.sendMessageToJid("hello from node : " + now, contact.jid, "FR", null, "Le sujet de node : " + now, UrgencyType.STANDARD, DataStoreType.NoStore);
_logger.log("debug", "MAIN - testsendMessageToVincent02 - wait for message to be in conversation : ", msgSent);
}
testsendMessageToConversation() {
let that = this;
// let conversation = null;
let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
// Retrieve a contact by its id
rainbowSDK.contacts.getContactById(contactIdToSearch)
.then(function (contact) {
// Retrieve the associated conversation
return rainbowSDK.conversations.openConversationForContact(contact);
}).then(function (conversation) {
// Share the file
rainbowSDK.im.sendMessageToConversation(conversation, "hello from node", "FR", null, "Le sujet de node").then((result) => {
_logger.log("debug", "MAIN - testHDS sendMessageToConversation - result : ", result);
_logger.log("debug", "MAIN - testHDS sendMessageToConversation - conversation : ", conversation);
});
});
}
async testsendMessageToConversation_html() {
let that = this;
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let txt = "# TYPESCRIPT in SDK for Node.JS\n" +
"\n" +
"Here is the howto TypeScript in **Rainbow-Node-SDK**\n";
let content = {
message: txt,
type: "text/markdown"
};
/*let content = {
message : "mon lmien",
type : "text/html"
}; // */
rainbowSDK.im.sendMessageToConversation(conversation, txt, "FR", content, "Le sujet de node").then((result) => {
_logger.log("debug", "MAIN - testsendMessageToConversation_html sendMessageToConversation - result : ", result);
_logger.log("debug", "MAIN - testsendMessageToConversation_html sendMessageToConversation - conversation : ", conversation);
});
}
async testSendMessageToJid() {
let that = this;
let contactEmailToSearch = "alice01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
rainbowSDK.im.sendMessageToJid("hello from node testSendMessageToJid", contact.jid, "FR", null, "Le sujet de node testSendMessageToJid").then((result) => {
_logger.log("debug", "MAIN - testSendMessageToJid sendMessageToJid - result : ", result);
});
}
async testSendMessageToUser(contactEmailToSearch : string = "vincent02@vbe.test.openrainbow.net") {
let that = this;
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
//rainbowSDK.im.sendMessageToJid("hello from node testSendMessageToJid", contact.jid, "FR", null, "Le sujet de node testSendMessageToJid", "high", DataStoreType.NoStore ).then((result) => {
rainbowSDK.im.sendMessageToJid("hello from node testSendMessageToJid", contact.jid, "FR", null, "Le sujet de node testSendMessageToJid", UrgencyType.HIGH, DataStoreType.StoreTwinSide ).then((result) => {
_logger.log("debug", "MAIN - testSendMessageToJid sendMessageToJid - result : ", result);
});
}
async testsendCorrectedChatMessage() {
//let that = this;
//let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let nbMsgToSend = 2;
let msgsSent = [];
for (let i = 1; i <= nbMsgToSend; i++) {
let now = new Date().getTime();
// Send message
let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "hello num " + i + " from node : " + now, "FR", null, "Le sujet de node : " + now);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - result sendMessageToConversation : ", msgSent);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
msgsSent.push(msgSent);
_logger.log("debug", "MAIN - testsendCorrectedChatMessage - wait for message to be in conversation : ", msgSent);
await until(() => {
return conversation.getMessageById(msgSent.id)!==undefined;
}, "Wait for message to be added in conversation num : " + i);
}
let msgSentOrig = msgsSent.slice(-1)[0];
let msgStrModified = "modified : " + msgSentOrig.content;
_logger.log("debug", "MAIN - testsendCorrectedChatMessage - msgStrModified : ", msgStrModified);
setTimeout(async () => {
const maintenant = new Date();
let msgCorrectedSent = await rainbowSDK.conversations.sendCorrectedChatMessage(conversation, msgStrModified, msgSentOrig.id).catch((err) => {
_logger.log("error", "MAIN- testsendCorrectedChatMessage - error sendCorrectedChatMessage : ", err);
});
_logger.log("debug", "MAIN- testsendCorrectedChatMessage - msgCorrectedSent : ", msgCorrectedSent);
//const maintenant = new Date();
const timestamp = String(maintenant.getTime());
let msg = await rainbowSDK.conversations.getOneMessageFromConversationId(conversation.id, msgSentOrig.id, timestamp.toString());
_logger.log("debug", "MAIN - testsendCorrectedChatMessage - msg orig after modify : ", msg);
}, 10000);
}
async testsendCorrectedChatMessageWithContent() {
//let that = this;
//let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let nbMsgToSend = 2;
let msgsSent = [];
for (let i = 1; i <= nbMsgToSend; i++) {
let now = new Date().getTime();
let txt = "# Test " + now + " \n" +
"\n" +
"Here is the test in **Rainbow-Node-SDK**\n";
let content = {
message: txt,
type: "text/markdown"
};
// Send message
let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "hello num " + i + " from node : " + now, "FR", content, "Le sujet de node : " + now);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - result sendMessageToConversation : ", msgSent);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
msgsSent.push(msgSent);
_logger.log("debug", "MAIN - testsendCorrectedChatMessageWithContent - wait for message to be in conversation : ", msgSent);
await until(() => {
return conversation.getMessageById(msgSent.id)!==undefined;
}, "Wait for message to be added in conversation num : " + i);
}
let msgSentOrig = msgsSent.slice(-1)[0];
let msgStrModified = "modified : " + msgSentOrig.content;
_logger.log("debug", "MAIN - testsendCorrectedChatMessageWithContent - msgStrModified : ", msgStrModified);
setTimeout(async () => {
let now = new Date().getTime();
let txt = "# Test modified " + now + " \n" +
"\n" +
"Here is the test in **Rainbow-Node-SDK**\n";
let content = {
message: txt,
type: "text/markdown"
};
// let msgCorrectedSent = await rainbowSDK.conversations.sendCorrectedChatMessage(conversation, msgStrModified, msgSentOrig.id, content).catch((err) => {
let msgCorrectedSent = await rainbowSDK.conversations.sendCorrectedChatMessage(conversation, undefined, msgSentOrig.id, content).catch((err) => {
_logger.log("error", "MAIN- testsendCorrectedChatMessageWithContent - error sendCorrectedChatMessage : ", err);
});
_logger.log("debug", "MAIN- testsendCorrectedChatMessageWithContent - msgCorrectedSent : ", msgCorrectedSent);
}, 10000);
}
formatCard(msg, utc) {
return JSON.stringify({
"version": "1.1",
"type": "AdaptiveCard",
"body": [
{
"type": "Container",
"items": [{"type": "TextBlock", "text": msg + " Hey! How are you? " + utc, "wrap": "True"}]
},
{
"type": "ActionSet", "actions": [
{
"title": "great",
"type": "Action.Submit",
"data": {
"rainbow": {
"type": "messageBack",
"value": {"response": "mood_great"},
"text": "great"
}
}
},
{
"title": "super sad",
"type": "Action.Submit",
"data": {
"rainbow": {
"type": "messageBack",
"value": {"response": "mood_unhappy"},
"text": "super sad"
}
}
}
]
}
],
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json"
})
}
formatCard2(msg, utc) {
//return "";
return "{\"$schema\":\"http://adaptivecards.io/schemas/adaptive-card.json\",\"type\":\"AdaptiveCard\",\"version\":\"1.5\",\"body\":[{\"type\":\"TextBlock\",\"size\":\"large\",\"weight\":\"bolder\",\"text\":\" Welcome to the MCQ Test" + msg + ":" + utc + "\",\"horizontalAlignment\":\"center\",\"wrap\":true,\"style\":\"heading\"},{\"type\":\"TextBlock\",\"size\":\"medium\",\"weight\":\"bolder\",\"text\":\" Are you ready ?\",\"horizontalAlignment\":\"left\",\"wrap\":true,\"style\":\"heading\"},{\"type\":\"Input.ChoiceSet\",\"id\":\"MCQSelection\",\"label\":\"\",\"value\":\"\",\"size\":\"medium\",\"weight\":\"bolder\",\"style\":\"expanded\",\"isRequired\":false,\"errorMessage\":\"Selection is required\",\"choices\":[]},{\"type\":\"TextBlock\",\"id\":\"Information\",\"size\":\"Medium\",\"weight\":\"Bolder\",\"text\":\"MCQ Test started\",\"horizontalAlignment\":\"Center\",\"wrap\":true,\"style\":\"heading\",\"color\":\"Good\",\"isVisible\":false}],\"actions\":[{\"type\":\"Action.Submit\",\"title\":\"Go !\",\"data\":{\"rainbow\":{\"type\":\"messageBack\",\"value\":{},\"text\":\"\"},\"questionId\":\"00\"}}]}";
}
formatCard3(msg, utc) {
//return "";
return "{\"$schema\":\"http://adaptivecards.io/schemas/adaptive-card.json\",\"type\":\"AdaptiveCard\",\"version\":\"1.5\",\"body\":[{\"type\":\"TextBlock\",\"size\":\"large\",\"weight\":\"bolder\",\"text\":\" Question 1/5\",\"horizontalAlignment\":\"center\",\"wrap\":true,\"style\":\"heading\"},{\"type\":\"TextBlock\",\"size\":\"medium\",\"weight\":\"bolder\",\"text\":\" What was the first emoticon ever used? " + msg + " : " + utc + " : \",\"horizontalAlignment\":\"left\",\"wrap\":true,\"style\":\"heading\"},{\"type\":\"Input.ChoiceSet\",\"id\":\"MCQSelection\",\"label\":\"\",\"value\":\"\",\"size\":\"medium\",\"weight\":\"bolder\",\"style\":\"expanded\",\"isRequired\":true,\"errorMessage\":\"Selection is required\",\"choices\":[{\"title\":\"😀\",\"value\":\"A\"},{\"title\":\"🙂\",\"value\":\"B\"},{\"title\":\"ðŸ™\",\"value\":\"C\"},{\"title\":\"😛\",\"value\":\"D\"}]},{\"type\":\"TextBlock\",\"id\":\"Information\",\"size\":\"Medium\",\"weight\":\"Bolder\",\"text\":\"Answered\",\"horizontalAlignment\":\"Center\",\"wrap\":true,\"style\":\"heading\",\"color\":\"Good\",\"isVisible\":false}],\"actions\":[{\"type\":\"Action.Submit\",\"title\":\"Submit\",\"data\":{\"rainbow\":{\"type\":\"messageBack\",\"value\":{},\"text\":\"\"},\"questionId\":\"01\"}}]}";
}
formatCard4() {
return "{\"$schema\":\"http://adaptivecards.io/schemas/adaptive-card.json\",\"type\":\"AdaptiveCard\",\"version\":\"1.6\",\"body\":[{\"type\":\"TextBlock\",\"text\":\"📋 Liste des employésABC\",\"weight\":\"Bolder\",\"size\":\"Large\",\"wrap\":true},{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Medium\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Matricule\",\"weight\":\"Bolder\"}]},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Nom\",\"weight\":\"Bolder\"}]},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Prénom\",\"weight\":\"Bolder\"}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":25665,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Lefebvre\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Luc\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":25975,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Nault\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"François\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":26783,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Frenette\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Martin\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":33052,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Boivin\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Stéphane\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":33395,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Sauvé\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Éric\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":35452,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Fournier\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Mathieu\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":36252,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Leblanc\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Dominic\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":36959,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Sebbah\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Farid\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":37496,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Crevier\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Richard\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":38740,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Azadaly\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Reza\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":39122,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Beauvais\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Sylvain\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":41909,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Bendjilali\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Yacine\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":42052,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Trépanier\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Jonathan\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":43233,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Rasoahaingo\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Zo\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":44110,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"De Celles\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Stephane\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":44556,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Vaillant\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Olivier\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":44586,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Champagne\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Daniel\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":47510,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Parent Legault\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Kevin\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":47841,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"De la hoz\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Luis Carlos\",\"wrap\":true}],\"separator\":true}]}]},{\"type\":\"Container\",\"items\":[{\"type\":\"ColumnSet\",\"separator\":true,\"spacing\":\"Small\",\"columns\":[{\"type\":\"Column\",\"width\":\"auto\",\"items\":[{\"type\":\"TextBlock\",\"text\":48957,\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Markanda Mudali\",\"wrap\":true}],\"separator\":true},{\"type\":\"Column\",\"width\":\"stretch\",\"items\":[{\"type\":\"TextBlock\",\"text\":\"Arulen\",\"wrap\":true}],\"separator\":true}]}]}]}";
}
displayCard(message) {
let formattedMessage = this.formatCard("", "");
/*rainbowSDK.im.sendMessageToJid(formattedMessage, message.fromJid, "en", {
"type": "form/json",
"message": formattedMessage
}).catch(error => {
_logger.error("Error sending card: ", error);
}); //*/
}
async testsendMessageToConversationWithContentAdaptiveCardWithHiddenAckResponse() {
let that = this;
//let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let nbMsgToSend = 1;
let msgsSent = [];
let now = new Date().getTime();
let formattedMessage = that.formatCard2("original msg : ", now);
let content = {
"type": "form/json",
"message": formattedMessage
}
// Send message
let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "Welcome to the MCQ Test", "en", content, undefined);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - result sendMessageToConversation : ", msgSent);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
msgsSent.push(msgSent);
_logger.log("debug", "MAIN - testsendMessageToConversationWithContentAdaptiveCardWithHiddenAckResponse - wait for message to be in conversation : ", msgSent);
await until(() => {
return conversation.getMessageById(msgSent.id)!==undefined;
}, "Wait for message to be added in conversation.");
let msgSentOrig = msgsSent.slice(-1)[0];
let msgStrModified = "modified : " + msgSentOrig.content;
_logger.log("debug", "MAIN - testsendMessageToConversationWithContentAdaptiveCardWithHiddenAckResponse - msgStrModified : ", msgStrModified);
}
async testsendCorrectedChatMessageWithContentAdaptiveCard() {
let that = this;
//let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let nbMsgToSend = 1;
let msgsSent = [];
let now = new Date().getTime();
let formattedMessage = that.formatCard2("original msg : ", now);
let content = {
"type": "form/json",
"message": formattedMessage
}
// Send message
let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "Welcome to the MCQ Test", "en", content, undefined);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - result sendMessageToConversation : ", msgSent);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
msgsSent.push(msgSent);
_logger.log("debug", "MAIN - testsendCorrectedChatMessageWithContentAdaptiveCard - wait for message to be in conversation : ", msgSent);
await until(() => {
return conversation.getMessageById(msgSent.id)!==undefined;
}, "Wait for message to be added in conversation.");
let msgSentOrig = msgsSent.slice(-1)[0]; // get last message from tab.
let msgStrModified = "modified : " + msgSentOrig.content;
_logger.log("debug", "MAIN - testsendCorrectedChatMessageWithContentAdaptiveCard - msgStrModified : ", msgStrModified);
setTimeout(async () => {
formattedMessage = that.formatCard3("modified msg : ", now);
content = {
"type": "form/json",
"message": formattedMessage
}
// content = "{ \"type\": \"form/json\", \"message\": \"{\\"\$schema\\":\\"http://adaptivecards.io/schemas/adaptive-card.json\\",\\"type\\":\\"AdaptiveCard\\",\\"version\\":\\"1.5\\",\\"body\\":[{\\"type\\":\\"TextBlock\\",\\"size\\":\\"large\\",\\"weight\\":\\"bolder\\",\\"text\\":\\" Question 1/5\\",\\"horizontalAlignment\\":\\"center\\",\\"wrap\\":true,\\"style\\":\\"heading\\"},{\\"type\\":\\"TextBlock\\",\\"size\\":\\"medium\\",\\"weight\\":\\"bolder\\",\\"text\\":\\" What was the first emoticon ever used? \" + msg + \" : \" + utc + \" : \\",\\"horizontalAlignment\\":\\"left\\",\\"wrap\\":true,\\"style\\":\\"heading\\"},{\\"type\\":\\"Input.ChoiceSet\\",\\"id\\":\\"MCQSelection\\",\\"label\\":\\"\\",\\"value\\":\\"\\",\\"size\\":\\"medium\\",\\"weight\\":\\"bolder\\",\\"style\\":\\"expanded\\",\\"isRequired\\":true,\\"errorMessage\\":\\"Selection is required\\",\\"choices\\":[{\\"title\\":\\"😀\\",\\"value\\":\\"A\\"},{\\"title\\":\\"🙂\\",\\"value\\":\\"B\\"},{\\"title\\":\\"ðŸ™\\",\\"value\\":\\"C\\"},{\\"title\\":\\"😛\\",\\"value\\":\\"D\\"}]},{\\"type\\":\\"TextBlock\\",\\"id\\":\\"Information\\",\\"size\\":\\"Medium\\",\\"weight\\":\\"Bolder\\",\\"text\\":\\"Answered\\",\\"horizontalAlignment\\":\\"Center\\",\\"wrap\\":true,\\"style\\":\\"heading\\",\\"color\\":\\"Good\\",\\"isVisible\\":false}],\\"actions\\":[{\\"type\\":\\"Action.Submit\\",\\"title\\":\\"Submit\\",\\"data\\":{\\"rainbow\\":{\\"type\\":\\"messageBack\\",\\"value\\":{},\\"text\\":\\"\\"},\\"questionId\\":\\"01\\"}}]}\" }" ;
// let msgCorrectedSent = await rainbowSDK.conversations.sendCorrectedChatMessage(conversation, msgStrModified, msgSentOrig.id, content).catch((err) => {
let msgCorrectedSent = await rainbowSDK.conversations.sendCorrectedChatMessage(conversation, "Question 1/5", msgSentOrig.id, content).catch((err) => {
_logger.log("error", "MAIN- testsendCorrectedChatMessageWithContentAdaptiveCard - error sendCorrectedChatMessage : ", err);
});
_logger.log("debug", "MAIN- testsendCorrectedChatMessageWithContentAdaptiveCard - msgCorrectedSent : ", msgCorrectedSent);
}, 20000);
}
async testsendForwardedChatMessageWithContentAdaptiveCard() {
let that = this;
//let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let nbMsgToSend = 1;
let msgsSent = [];
let now = new Date().getTime();
let formattedMessage = that.formatCard2("original msg : ", now);
let content = {
"type": "form/json",
"message": formattedMessage
}
// Send message
let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "Welcome to the MCQ Test", "en", content, undefined);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - result sendMessageToConversation : ", msgSent);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
msgsSent.push(msgSent);
_logger.log("debug", "MAIN - testsendForwardedChatMessageWithContentAdaptiveCard - wait for message to be in conversation : ", msgSent);
await until(() => {
return conversation.getMessageById(msgSent.id)!==undefined;
}, "Wait for message to be added in conversation.");
let msgSentOrig = msgsSent.slice(-1)[0]; // get last message from tab.
let msgStrModified = "modified : " + msgSentOrig.content;
_logger.log("debug", "MAIN - testsendForwardedChatMessageWithContentAdaptiveCard - msgStrModified : ", msgStrModified);
setTimeout(async () => {
formattedMessage = that.formatCard3("modified msg : ", now);
content = {
"type": "form/json",
"message": formattedMessage
}
// content = "{ \"type\": \"form/json\", \"message\": \"{\\"\$schema\\":\\"http://adaptivecards.io/schemas/adaptive-card.json\\",\\"type\\":\\"AdaptiveCard\\",\\"version\\":\\"1.5\\",\\"body\\":[{\\"type\\":\\"TextBlock\\",\\"size\\":\\"large\\",\\"weight\\":\\"bolder\\",\\"text\\":\\" Question 1/5\\",\\"horizontalAlignment\\":\\"center\\",\\"wrap\\":true,\\"style\\":\\"heading\\"},{\\"type\\":\\"TextBlock\\",\\"size\\":\\"medium\\",\\"weight\\":\\"bolder\\",\\"text\\":\\" What was the first emoticon ever used? \" + msg + \" : \" + utc + \" : \\",\\"horizontalAlignment\\":\\"left\\",\\"wrap\\":true,\\"style\\":\\"heading\\"},{\\"type\\":\\"Input.ChoiceSet\\",\\"id\\":\\"MCQSelection\\",\\"label\\":\\"\\",\\"value\\":\\"\\",\\"size\\":\\"medium\\",\\"weight\\":\\"bolder\\",\\"style\\":\\"expanded\\",\\"isRequired\\":true,\\"errorMessage\\":\\"Selection is required\\",\\"choices\\":[{\\"title\\":\\"😀\\",\\"value\\":\\"A\\"},{\\"title\\":\\"🙂\\",\\"value\\":\\"B\\"},{\\"title\\":\\"ðŸ™\\",\\"value\\":\\"C\\"},{\\"title\\":\\"😛\\",\\"value\\":\\"D\\"}]},{\\"type\\":\\"TextBlock\\",\\"id\\":\\"Information\\",\\"size\\":\\"Medium\\",\\"weight\\":\\"Bolder\\",\\"text\\":\\"Answered\\",\\"horizontalAlignment\\":\\"Center\\",\\"wrap\\":true,\\"style\\":\\"heading\\",\\"color\\":\\"Good\\",\\"isVisible\\":false}],\\"actions\\":[{\\"type\\":\\"Action.Submit\\",\\"title\\":\\"Submit\\",\\"data\\":{\\"rainbow\\":{\\"type\\":\\"messageBack\\",\\"value\\":{},\\"text\\":\\"\\"},\\"questionId\\":\\"01\\"}}]}\" }" ;
// let msgCorrectedSent = await rainbowSDK.conversations.sendCorrectedChatMessage(conversation, msgStrModified, msgSentOrig.id, content).catch((err) => {
let msgCorrectedSent = await rainbowSDK.conversations.sendCorrectedChatMessage(conversation, "Question 1/5", msgSentOrig.id, content).catch((err) => {
_logger.log("error", "MAIN- testsendForwardedChatMessageWithContentAdaptiveCard - error sendCorrectedChatMessage : ", err);
});
_logger.log("debug", "MAIN- testsendForwardedChatMessageWithContentAdaptiveCard - msgCorrectedSent : ", msgCorrectedSent);
}, 20000);
}
formatCardUrgent(msg, utc) {
return JSON.stringify({
"version": "1.1",
"type": "AdaptiveCard",
"body": [
{
"type": "Container",
"items": [{"type": "TextBlock", "text": msg + " Hey! How are you? " + utc, "wrap": "True"}]
},
{
"type": "ActionSet", "actions": [
{
"title": "great",
"type": "Action.Submit",
"data": {
"rainbow": {
"type": "messageBack",
"value": {"response": "mood_great"},
"text": "great"
}
}
},
{
"title": "reply urgent",
"type": "Action.Submit",
"data": {
"rainbow": {
"type": "messageBack",
"value": {"response": "mood_unhappy"},
"text": "reply urgent sad",
"urgency": "high"
}, "urgency": "high", "mentions": "@vincent01", "urlMetadata": "metadata"
}
}
]
}
],
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json"
})
}
async testsendChatMessageWithContentAdaptiveCardUrgent() {
let that = this;
//let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let nbMsgToSend = 1;
let msgsSent = [];
let now = new Date().getTime();
let formattedMessage = that.formatCardUrgent("original msg : ", now);
let content = {
"type": "form/json",
"message": formattedMessage
}
// Send message
let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "Welcome to the MCQ Test", "en", content, undefined);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - result sendMessageToConversation : ", msgSent);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
}
formatCardLang(msg, utc) {
const adaptiveCard = JSON.stringify({
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.3",
"body": [
{
"type": "TextBlock",
"text": "Configuration de la langue cible " + msg + " at " + utc,
"weight": "Bolder",
"size": "Medium"
},
{
"type": "Input.ChoiceSet",
"id": "targetLanguage",
"style": "compact", // affiché sous forme de dropdown
"isMultiSelect": false,
"choices": [
{"title": "Albanian", "value": "sq"},
{"title": "Arabic", "value": "ar"},
{"title": "Armenian", "value": "hy"},
{"title": "Azerbaijani", "value": "az"},
{"title": "Basque", "value": "eu"},
{"title": "Bosnian", "value": "bs"},
{"title": "Bulgarian", "value": "bg"},
{"title": "Burmese", "value": "my"},
{"title": "Catalan", "value": "ca"},
{"title": "Chinese (Simplified)", "value": "zh"},
{"title": "Chinese (Traditional)", "value": "zh-Hant"},
{"title": "Chinese (Traditional Hong Kong)", "value": "zh-HK"},
{"title": "Chinese (Traditional Taiwan)", "value": "zh-TW"},
{"title": "Croatian", "value": "hr"},
{"title": "Czech", "value": "cs"},
{"title": "Danish", "value": "da"},
{"title": "Dutch", "value": "nl"},
{"title": "English (United Kingdom)", "value": "en-GB"},
{"title": "English (United States)", "value": "en"},
{"title": "Estonian", "value": "et"},
{"title": "Finnish", "value": "fi"},
{"title": "French (Canada)", "value": "fr-CA"},
{"title": "French (France)", "value": "fr"},
{"title": "Georgian", "value": "ka"},
{"title": "German (Germany)", "value": "de"},
{"title": "German (Switzerland)", "value": "de-CH"},
{"title": "Greek", "value": "el"},
{"title": "Hausa", "value": "ha"},
{"title": "Hebrew", "value": "he"},
{"title": "Hindi", "value": "hi"},
{"title": "Hungarian", "value": "hu"},
{"title": "Icelandic", "value": "is"},
{"title": "Indonesian", "value": "id"},
{"title": "Italian", "value": "it"},
{"title": "Japanese", "value": "ja"},
{"title": "Javanese", "value": "jv"},
{"title": "Kazakh", "value": "kk"},
{"title": "Korean", "value": "ko"},
{"title": "Kurdish", "value": "ku"},
{"title": "Kyrgyz", "value": "ky"},
{"title": "Latvian", "value": "lv"},
{"title": "Lithuanian", "value": "lt"},
{"title": "Macedonian", "value": "mk"},
{"title": "Malay", "value": "ms"},
{"title": "Mongolian", "value": "mn"},
{"title": "Norwegian", "value": "no"},
{"title": "Pashto", "value": "ps"},
{"title": "Persian (Farsi)", "value": "fa"},
{"title": "Polish", "value": "pl"},
{"title": "Portuguese (Brazil)", "value": "pt-BR"},
{"title": "Portuguese (Portugal)", "value": "pt"},
{"title": "Punjabi", "value": "pa"},
{"title": "Romanian", "value": "ro"},
{"title": "Russian", "value": "ru"},
{"title": "Serbian", "value": "sr"},
{"title": "Slovak", "value": "sk"},
{"title": "Slovenian", "value": "sl"},
{"title": "Somali", "value": "so"},
{"title": "Spanish", "value": "es"},
{"title": "Swahili", "value": "sw"},
{"title": "Swedish", "value": "sv"},
{"title": "Tagalog", "value": "tl"},
{"title": "Tajik", "value": "tg"},
{"title": "Tamil", "value": "ta"},
{"title": "Thai", "value": "th"},
{"title": "Turkish", "value": "tr"},
{"title": "Turkmen", "value": "tk"},
{"title": "Ukrainian", "value": "uk"},
{"title": "Urdu", "value": "ur"},
{"title": "Vietnamese", "value": "vi"}
]
}
],
"actions": [
{
"type": "Action.Submit",
"title": "Submit",
"data": {
"action": "submitform",
"rainbow": {
"type": "messageBack",
"value": {"response": "mood_unhappy"},
"text": ""
}
}
}
]
});
return adaptiveCard;
}
async testsendChatMessageWithContentAdaptiveCardLang() {
let that = this;
//let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let nbMsgToSend = 1;
let msgsSent = [];
let now = new Date().getTime();
let formattedMessage = that.formatCardLang(" test msg ", now);
let content = {
"type": "form/json",
"message": formattedMessage
}
// Send message
let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "Adaptive Card Lang Test", "en", content, undefined);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - result sendMessageToConversation : ", msgSent);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
}
async testsendChatMessageWithContentAdaptiveCardBigSize(ndCarAdded : number = 100, formatCardId:number =1) {
let that = this;
//let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
//let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let nbMsgToSend = 1;
let msgsSent = [];
let now = new Date().getTime();
let adaptiveCardTxtContent = "original msg : ";
//let ndCarAdded = 100;
for (let i = 0; i < ndCarAdded; i++) {
adaptiveCardTxtContent += "\"";
}
let formattedMessage = "";
switch (formatCardId) {
case 1:
formattedMessage = that.formatCard2(adaptiveCardTxtContent, now);
break;
case 2:
formattedMessage = that.formatCard4();
break;
default:
formattedMessage = that.formatCard2(adaptiveCardTxtContent, now);
break;
}
// */
/*
let formattedMessage :string = that.formatCard4();
// */
let content = {
"type": "form/json",
"message": formattedMessage
};
// const card = { /* votre Adaptive Card minifiée */ };
const check = xmppUtils.willExceedStanzaLimit(formattedMessage, 1500, 16384);
_logger.log("debug", "MAIN - check byte size : ", check);
if (check.exceeds) {
// Plan B: héberger le JSON, envoyer un lien, ou simplifier la card
throw new Error(`Card trop volumineuse (~${check.estimated} octets).`);
}
let contentMessageSize = content?.message?.length;
// vincent00 on .net use bubble : testBotDescription_2024/02/07T15:18:39.669Z
let bubbles = rainbowSDK.bubbles.getAllActiveBubbles();
_logger.log("debug", "MAIN - testupdateAvatarForBubble - getAllActiveBubbles bubble.length : ", bubbles ? bubbles.length:0);
let bubble = bubbles.find(element => element.name==="testBotName_2024/02/07T15:18:39.669ZGuestUser");
_logger.log("debug", "MAIN - testupdateAvatarForBubble - bubble \"testBotName_2024/02/07T15:18:39.669ZGuestUser\" : ", bubble);
let conversation = await rainbowSDK.conversations.openConversationForBubble(bubble);
// Send message
//let msgSent : any = await rainbowSDK.im.sendMessageToConversation(conversation, "Test adptaptive card big size : " + contentMessageSize + "", "en", content, undefined).catch((err)=>{
let msgSent : any = await rainbowSDK.im.sendMessageToConversation(conversation, "Test adptaptive card big size : " + contentMessageSize, "en", content, undefined).then((msgSent) => {
_logger.log("debug", "MAIN - testsendChatMessageWithContentAdaptiveCardBigSize - result sendMessageToConversation : ", msgSent?.content?.message?.length);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
}).catch((err)=>{
try {
const errObj: any = err;
const errStr = (() => { try { return typeof errObj === 'string' ? errObj : JSON.stringify(errObj); } catch { return String(errObj); } })();
const text = (errObj && (errObj.message || errObj.reason || errObj.text)) || '';
const combined = (text + ' ' + errStr).toLowerCase();
const looksLikeServer = combined.includes('message size exceeded') || combined.includes('resource-constraint') || combined.includes('mon lmien",
type : "text/html"
}; // */
rainbowSDK.im.sendMessageToConversation(conversation, txt, "FR", content, "Le sujet de node").then(async (msgSent) => {
_logger.log("debug", "MAIN - testdeleteMessageFromConversation sendMessageToConversation - result : ", msgSent);
_logger.log("debug", "MAIN - testdeleteMessageFromConversation sendMessageToConversation - conversation : ", conversation);
await Utils.until(() => {
return conversation.getMessageById(msgSent.id)!==undefined;
}, "Wait for message to be added in conversation id : " + conversation.id);
let conversationWithMessagesRemoved = await rainbowSDK.conversations.deleteMessage(conversation, msgSent.id);
_logger.log("debug", "MAIN - testdeleteMessageFromConversation - conversation with message removed : ", conversationWithMessagesRemoved);
});
}
async testmodifyMessageFromConversation() {
let that = this;
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let txt = "# TYPESCRIPT in SDK for Node.JS\n" +
"\n" +
"Here is the howto TypeScript in **Rainbow-Node-SDK**\n";
let content = {
message: txt,
type: "text/markdown"
};
/*let content = {
message : "mon lmien",
type : "text/html"
}; // */
rainbowSDK.im.sendMessageToConversation(conversation, txt, "FR", content, "Le sujet de node").then(async (msgSent) => {
_logger.log("debug", "MAIN - testmodifyMessageFromConversation sendMessageToConversation - result : ", msgSent);
_logger.log("debug", "MAIN - testmodifyMessageFromConversation sendMessageToConversation - conversation : ", conversation);
await Utils.until(() => {
return conversation.getMessageById(msgSent.id)!==undefined;
}, "Wait for message to be added in conversation id : " + conversation.id);
let conversationWithMessagesRemoved = await rainbowSDK.conversations.deleteMessage(conversation, msgSent.id);
_logger.log("debug", "MAIN - testmodifyMessageFromConversation - conversation with message removed : ", conversationWithMessagesRemoved);
});
}
async testgetlastEditableMsg() {
let that = this;
let contactEmailToSearch = "vincent00@vbe.test.openrainbow.net";
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
_logger.log("debug", "MAIN - testgetlastEditableMsg - result : ", conversation.getlastEditableMsg());
}
async testsendCorrectedChatMessageForBubble() {
//let that = this;
//let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
//let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
let bubbleJib = "room_f829530bba37411896022878f81603ca@muc.vberder-all-in-one-dev-1.opentouch.cloud";
// Retrieve a contact by its id
//let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
//let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let conversation = rainbowSDK.conversations.getConversationByBubbleJid(bubbleJib);
let nbMsgToSend = 2;
let msgsSent = [];
for (let i = 1; i <= nbMsgToSend; i++) {
let now = new Date(); // .getTime()
// Send message
let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "hello num " + i + " from node : " + now, "FR", null, "Le sujet de node : " + now);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - result sendMessageToConversation : ", msgSent);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
msgsSent.push(msgSent);
_logger.log("debug", "MAIN - testsendCorrectedChatMessage - wait for message to be in conversation : ", msgSent);
await Utils.until(() => {
return conversation.getMessageById(msgSent.id)!==undefined;
}, "Wait for message to be added in conversation num : " + i);
}
let msgSentOrig = msgsSent.slice(-1)[0];
let msgStrModified = "modified : " + msgSentOrig.message;
_logger.log("debug", "MAIN - testsendCorrectedChatMessage - msgStrModified : ", msgStrModified);
setTimeout(async () => {
let msgCorrectedSent = await rainbowSDK.conversations.sendCorrectedChatMessage(conversation, msgStrModified, msgSentOrig.id).catch((err) => {
_logger.log("error", "MAIN- testsendCorrectedChatMessage - error sendCorrectedChatMessage : ", err);
});
_logger.log("debug", "MAIN- testsendCorrectedChatMessage - msgCorrectedSent : ", msgCorrectedSent);
}, 5000);
}
async testsendCorrectedChatMessageForBubbleInExistingConversation() {
//let that = this;
let bubbleJib = "room_f829530bba37411896022878f81603ca@muc.vberder-all-in-one-dev-1.opentouch.cloud";
let conversation = rainbowSDK.conversations.getConversationByBubbleJid(bubbleJib);
await rainbowSDK.im.getMessagesFromConversation(conversation, 10);
let msgSentOrig = conversation.getlastEditableMsg();
let msgStrModified = "modified : " + msgSentOrig.content;
setTimeout(async () => {
_logger.log("debug", "MAIN - testsendCorrectedChatMessage - msgStrModified : ", msgStrModified);
let msgCorrectedSent = await rainbowSDK.conversations.sendCorrectedChatMessage(conversation, msgStrModified, msgSentOrig.id).catch((err) => {
_logger.log("error", "MAIN- testsendCorrectedChatMessage - error sendCorrectedChatMessage : ", err);
});
_logger.log("debug", "MAIN- testsendCorrectedChatMessage - msgCorrectedSent : ", msgCorrectedSent);
}, 5000);
}
async testdeleteAllMessageInOneToOneConversation() {
let that = this;
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
let utc = new Date().toJSON().replace(/-/g, "_");
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
if (conversation && conversation.id) {
let result = await rainbowSDK.conversations.deleteAllMessageInOneToOneConversation(conversation);
_logger.log("debug", "MAIN - testdeleteAllMessageInOneToOneConversation deleteAllMessageInOneToOneConversation - result : ", result);
_logger.log("debug", "MAIN - testdeleteAllMessageInOneToOneConversation deleteAllMessageInOneToOneConversation - conversation : ", conversation);
} else {
_logger.log("debug", "MAIN - testdeleteAllMessageInOneToOneConversation conversation empty or no id defined - conversation : ", conversation);
}
}
async testSendMessageToJidOfMySelf() {
let that = this;
let contactEmailToSearch = options.credentials.login;
_logger.log("debug", "MAIN - testSendMessageToJidOfMySelf contactEmailToSearch : ", contactEmailToSearch);
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
await rainbowSDK.im.sendMessageToJid("hello from node testSendMessageToJidOfMySelf", contact.jid, "FR", null, "Le sujet de node testSendMessageToJidOfMySelf").then((result) => {
_logger.log("debug", "MAIN - testSendMessageToJidOfMySelf sendMessageToJid - result : ", result);
}).catch((err) => {
_logger.log("debug", "MAIN - testSendMessageToJidOfMySelf Error : ", err);
});
}
async testSendMultipleMessages() {
//let that = this;
//let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let nbMsgToSend = 100;
let msgsSent = [];
for (let i = 1; i <= nbMsgToSend; i++) {
let now = new Date().getTime();
let msgstr = "hello num " + i + " from node : " + now;
// Send message
_logger.log("debug", "MAIN - testSendMultipleMessages - message to be sent in conversation : ", msgstr);
let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, msgstr, "FR", null, "Le sujet de node : " + now).catch((err) => {
_logger.log("internalerror", "MAIN - testSendMultipleMessages - error while sendMessageToConversation : ", err);
});
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - result sendMessageToConversation : ", msgSent);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
msgsSent.push(msgSent);
_logger.log("debug", "MAIN - testSendMultipleMessages - wait for message to be in conversation : ", msgSent);
await Utils.until(() => {
return conversation.getMessageById(msgSent.id)!==undefined;
}, "Wait for message to be added in conversation Msg : " + msgstr);
}
//let conversationWithMessagesRemoved = await rainbowSDK.conversations.removeAllMessages(conversation);
//logger.log("debug", "MAIN - testremoveAllMessages - conversation with messages removed : ", conversationWithMessagesRemoved);
}
async testsendMessageToContactUrgencyMiddle() {
let contactEmailToSearchVincent00 = "vincent00@vbe.test.openrainbow.net";
//let contactEmailToSearchVincent01 = "vincent01@vbe.test.openrainbow.net";
//let utc = new Date().toJSON().replace(/-/g, "_");
let contactVincent00 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent00);
_logger.log("debug", "MAIN - [testsendMessageToContactUrgencyMiddle] after getContactByLoginEmail : ", contactVincent00);
rainbowSDK.im.sendMessageToContact("Middle important message test", contactVincent00, null, null, null, UrgencyType.MIDDLE).then((result) => {
_logger.log("debug", "MAIN - [testsendMessageToContactUrgencyMiddle] after sendMessageToContact result : ", result);
});
}
async testsendMessageToContactUrgencyHigh() {
let contactEmailToSearchVincent00 = "vincent00@vbe.test.openrainbow.net";
//let contactEmailToSearchVincent01 = "vincent01@vbe.test.openrainbow.net";
//let utc = new Date().toJSON().replace(/-/g, "_");
let contactVincent00 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearchVincent00);
_logger.log("debug", "MAIN - [testsendMessageToContactUrgencyMiddle] after getContactByLoginEmail : ", contactVincent00);
rainbowSDK.im.sendMessageToContact("High important message test", contactVincent00, null, null, null, UrgencyType.HIGH).then((result) => {
_logger.log("debug", "MAIN - [testsendMessageToContactUrgencyMiddle] after sendMessageToContact result : ", result);
});
}
async testgetMessagesFromConversation() {
//let that = this;
//let bubbleJib = "room_f829530bba37411896022878f81603ca@muc.vberder-all-in-one-dev-1.opentouch.cloud";
//let conversation = rainbowSDK.conversations.getConversationByBubbleJid(bubbleJib);
//await rainbowSDK.im.getMessagesFromConversation(conversation, 10);
let bubbles = rainbowSDK.bubbles.getAllActiveBubbles();
for (const bubble of bubbles) {
//if (bubble.name.indexOf("testBubbleEvents")!= -1) {
if (bubble.name.indexOf("testBotName_2024/02/09T10:35:36.732ZGuestUser")!= -1) {
_logger.log("debug", "MAIN - testgetMessagesFromConversation Found bubble.name : ", bubble.name, ", bubble.isActive : ", bubble.isActive);
rainbowSDK.conversations.getConversationByBubbleId(bubble.id).then((result) => {
//rainbowSDK.conversations.getConversationByBubbleId("65c5fff8f3c002518b2e2a29").then((result) => {
_logger.log("debug", "MAIN - testgetMessagesFromConversation getConversationByBubbleId result : ", result);
rainbowSDK.im.getMessagesFromConversation(result).then((res2) => {
_logger.log("debug", "MAIN - testgetMessagesFromConversation res2 : ", res2);
})
})
} else {
_logger.log("debug", "MAIN - testgetMessagesFromConversation NOT Found bubble.name : ", bubble.name, ", buibble.isActive : ", bubble.isActive);
}
}
}
testmsgInObj() {
try {
let msg1 = {id: "MSG1", content: "message1"};
let msg2 = {id: "MSG2", content: "message2"};
let msg3 = {id: "MSG3", content: "message3"};
class ConversationService {
public conversations: any;
constructor() {
this.conversations = {};
}
getConversationById(conversationId: string) {
let that = this;
_logger.log("debug", "(getConversationById) conversationId : ", conversationId);
//that._logger.log(that.DEBUG, LOG_ID + " (getConversationById) conversationId : ", conversationId);
if (!this.conversations) {
return null;
}
let conv = this.conversations[conversationId];
_logger.log("debug", "(getConversationById) conversation by id, id of conversation found : ", conv ? conv.id:"");
/* if (!conv) {
conv = that.getConversationByDbId(conversationId);
_logger.log("debug", "(getConversationById) conversation not found by id, so searched by dbId result : ", conv);
} // */
return conv;
}
}
let conversationService = new ConversationService();
let conversationInitial = {
"id": "123",
"msgQueue": new MessagesQueue(_logger, 10)
};
conversationInitial.msgQueue.updateMessageIfExistsElseEnqueueIt(msg1, true);
conversationInitial.msgQueue.updateMessageIfExistsElseEnqueueIt(msg2, true);
conversationInitial.msgQueue.updateMessageIfExistsElseEnqueueIt(msg3, true);
_logger.log("debug", "MAIN - testMessagesQueue after store 3 messages msgQueue : ", conversationInitial.msgQueue.toSmallString());
conversationService.conversations[conversationInitial.id] = conversationInitial;
let conversation = conversationService.getConversationById(conversationInitial.id);
//conversation.msgQueue.updateMessageIfExistsElseEnqueueIt({id: "MSG4", content: "message4"}, true);
conversation.msgQueue.unshift({id: "MSG4", content: "message4"});
_logger.log("debug", "MAIN - testMessagesQueue should have 4 messages conversationInitial msgQueue : ", conversationInitial.msgQueue.toSmallString());
_logger.log("debug", "MAIN - testMessagesQueue should have 4 messages conversation msgQueue : ", conversation.msgQueue.toSmallString());
} catch (err) {
_logger.log("error", "MAIN - testMessagesQueue CATCH Error !!! error : ", err);
}
}
async testgetMessagesFromConversationHistory(sendMsg: boolean = true, msgType: string = "adaptive") {
//let that = this;
let loginEmail = "vincent02@vbe.test.openrainbow.net";
let contact = await rainbowSDK.contacts.getContactByLoginEmail(loginEmail);
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let conversationId = conversation.id;
if (sendMsg && msgType=="adaptive") {
const card = JSON.stringify({
$schema: 'http://adaptivecards.io/schemas/adaptive-card.json',
version: '1.5',
body: [{type: "TextBlock", text: "Vive le SDK Node"}]
});
//const content = { type: 'form/json', message: card }
const content = {
type: 'form/json',
message: this.formatCard3("modified msg : ", new Date().toLocaleTimeString())
}
let utc = new Date().toJSON().replace(/-/g, "_");
const sentMessage = await rainbowSDK.im.sendMessageToJid('du texte at ' + utc, conversationId, 'en', content, null);
_logger.log("debug", "MAIN - " + `SENT MESS ID: ${sentMessage.id}, content : ${sentMessage.content}, alternativeContent: `, sentMessage.alternativeContent);
}
if (sendMsg && msgType=="markdown") {
const card = JSON.stringify({
$schema: 'http://adaptivecards.io/schemas/adaptive-card.json',
version: '1.5',
body: [{type: "TextBlock", text: "Vive le SDK Node"}]
});
//const content = { type: 'form/json', message: card }
const content = {
type: 'text/markdown',
message: "message de **test** " + new Date().toLocaleTimeString()
}
let utc = new Date().toJSON().replace(/-/g, "_");
const sentMessage = await rainbowSDK.im.sendMessageToJid('du texte at ' + utc, conversationId, 'en', content, null);
_logger.log("debug", "MAIN - " + `SENT MESS ID: ${sentMessage.id}, content : ${sentMessage.content}, alternativeContent: `, sentMessage.alternativeContent);
}
await pause(10000);
await rainbowSDK.im.getMessagesFromConversation(conversation, 1);
if (conversation.messages) {
_logger.log("debug", "MAIN - " + `NB HISTORY MESSAGES : ${conversation.messages.length}`);
conversation.messages.forEach(message => {
_logger.log("debug", "MAIN - " + `message id: ${message.id}, content : ${message.content}, alternativeContent: `, message.alternativeContent);
});
}
}
async testDecodeXml2js() {
// Exemple d'utilisation
let resultExpected = [
{
message: '{"$schema":"http://adaptivecards.io/schemas/adaptive-card.json","version":"1.5","body":[{"type":"TextBlock","text":"Vive le SDK Node"}]}',
type: 'form/json'
}
];
let xmlStr = "{\"$schema\":\"http://adaptivecards.io/schemas/adaptive-card.json\",\"version\":\"1.5\",\"body\":[{\"type\":\"TextBlock\",\"text\":\"Vive le SDK Node\"}]}";
// */
let jsonedObject = await getJsonFromXML(xmlStr);
let parsedObject = jsonedObject.content;
_logger.log("debug", "MAIN - testDecodeXml2js jsonedObject : ", jsonedObject);
_logger.log("debug", "MAIN - testDecodeXml2js parsedObject : ", parsedObject);
/*const parsedObject = {
root: {
$: {xmlns: 'urn:xmpp:content', type: 'form/json'},
_: {
schema: ['http://adaptivecards.io/schemas/adaptive-card.json'],
version: ['1.5'],
body: [
{
item: [
{type: ['TextBlock'], text: ['Vive le SDK Node']}
]
}
]
}
}
}; // */
/*const decoded = getJsonFromXml2jsObject(parsedObject);
_logger.log("debug", "MAIN - testDecodeXml2js decoded : ", decoded);
// */
//console.log(JSON.stringify(decoded, null, 2));
}
async testrainbow_onmessageserverreceiptreceived() {
/*
*/
let stanzaStr = "";
let stanza = prettydata.xmlmin(stanzaStr);
_logger.log("debug", "MAIN - testrainbow_onmessageserverreceiptreceived stanza : ", stanza);
await rainbowSDK._core._xmpp.mockStanza(stanza);
}
async testrainbow_onmessagereceiptreadreceived() {
/*
*/
let stanzaStr = "";
let stanza = prettydata.xmlmin(stanzaStr);
_logger.log("debug", "MAIN - testrainbow_onmessagereceiptreadreceived stanza : ", stanza);
await rainbowSDK._core._xmpp.mockStanza(stanza);
}
async testrainbow_onmessagereceiptunreadreceived() {
/*
*/
let stanzaStr = "";
let stanza = prettydata.xmlmin(stanzaStr);
_logger.log("debug", "MAIN - testrainbow_onmessagereceiptunreadreceived stanza : ", stanza);
await rainbowSDK._core._xmpp.mockStanza(stanza);
}
//endregion Messages
//region group
async testgetGroups(forceSearchOnServer) {
let groups = await rainbowSDK.groups.getGroups();
if (groups) {
_logger.log("debug", "MAIN - testgetGroups - result groups : ", groups);
} else {
_logger.log("debug", "MAIN - testgetGroups - result groups not found.");
}
}
async testdeleteAllGroups() {
let that = this;
_logger.log("debug", "MAIN - testdeleteAllGroups before delete");
await rainbowSDK.groups.deleteAllGroups();
_logger.log("debug", "MAIN - testdeleteAllGroups after delete");
}
async testsetGroupAsFavorite() {
let that = this;
//logger.log("debug", "testsetGroupAsFavorite before delete");
let groupCreated = await rainbowSDK.groups.createGroup("myGroup", "commentGroup", false);
_logger.log("debug", "MAIN - testsetGroupAsFavorite groupCreated : ", groupCreated);
let groupUpdatedSet = await rainbowSDK.groups.setGroupAsFavorite(groupCreated);
_logger.log("debug", "MAIN - testsetGroupAsFavorite groupUpdatedSet : ", groupUpdatedSet);
await setTimeoutPromised(1500);
let groupUpdatedUnset = await rainbowSDK.groups.unsetGroupAsFavorite(groupUpdatedSet);
_logger.log("debug", "MAIN - testsetGroupAsFavorite groupUpdatedUnset : ", groupUpdatedUnset);
await setTimeoutPromised(1500);
let groupDeleted = await rainbowSDK.groups.deleteGroup(groupCreated);
_logger.log("debug", "MAIN - testsetGroupAsFavorite groupDeleted : ", groupDeleted);
}
async testgetGroupByName(forceSearchOnServer) {
//let groups = rainbowSDK.groups.getAll();
//let group = groups.find(group => group.name === GROUP_NAME);
let GROUP_NAME = "Services";
//let forceSearchOnServer = false;
let group = await rainbowSDK.groups.getGroupByName(GROUP_NAME, forceSearchOnServer!=null ? forceSearchOnServer:false);
if (group) {
let users = group.users.map(user => user.id)
_logger.log("debug", "MAIN - testgetGroupByName - result users.length : ", users.length, ", users : ", users);
} else {
_logger.log("debug", "MAIN - testgetGroupByName - result group not found.");
}
}
async testgetGroupsAndUpdateName(forceSearchOnServer) {
let groups = await rainbowSDK.groups.getGroups();
if (groups) {
//let users = group.users.map(user => user.id)
_logger.log("debug", "MAIN - testgetGroupsAndUpdateName - result groups : ", groups);
await rainbowSDK.groups.updateGroupName(groups[0], "updatedGroupName_" + new Date().getTime());
let groupsUpdated = await rainbowSDK.groups.getGroups();
if (groupsUpdated) {
//let users = group.users.map(user => user.id)
_logger.log("debug", "MAIN - testgetGroupsAndUpdateName - result groupsUpdated : ", groupsUpdated);
} else {
_logger.log("debug", "MAIN - testgetGroupsAndUpdateName - result groupsUpdated not found.");
}
} else {
_logger.log("debug", "MAIN - testgetGroupsAndUpdateName - result group not found.");
}
}
async testsetGroupAsFavoriteAndUpdateIsFavorite() {
let that = this;
//logger.log("debug", "testsetGroupAsFavoriteAndUpdateIsFavorite before delete");
let groupCreated = await rainbowSDK.groups.createGroup("myGroup", "commentGroup", false);
_logger.log("debug", "MAIN - testsetGroupAsFavoriteAndUpdateIsFavorite groupCreated : ", groupCreated);
let groupUpdatedSet = await rainbowSDK.groups.setGroupAsFavorite(groupCreated);
_logger.log("debug", "MAIN - testsetGroupAsFavoriteAndUpdateIsFavorite groupUpdatedSet : ", groupUpdatedSet);
let groups = await rainbowSDK.groups.getGroups();
_logger.log("debug", "MAIN - testsetGroupAsFavoriteAndUpdateIsFavorite groups : ", groups);
await setTimeoutPromised(1500);
let groups2 = await rainbowSDK.groups.getGroups();
_logger.log("debug", "MAIN - testsetGroupAsFavoriteAndUpdateIsFavorite groups2 : ", groups2);
let groupUpdatedUnset = await rainbowSDK.groups.unsetGroupAsFavorite(groupUpdatedSet);
_logger.log("debug", "MAIN - testsetGroupAsFavoriteAndUpdateIsFavorite groupUpdatedUnset : ", groupUpdatedUnset);
await setTimeoutPromised(1500);
let groupDeleted = await rainbowSDK.groups.deleteGroup(groupCreated);
_logger.log("debug", "MAIN - testsetGroupAsFavoriteAndUpdateIsFavorite groupDeleted : ", groupDeleted);
}
//endregion group
// region Channels
testgetAllOwnedChannels() {
let mychannels = rainbowSDK.channels.getAllOwnedChannels();
//let mychannel = mychannels ? mychannels[0]:null;
//let utc = new Date().toJSON().replace(/-/g, "_");
_logger.log("debug", "MAIN - testgetAllOwnedChannels - mychannels : ", mychannels);
}
async testfindChannelsByName(channelName : string = "RNodeSdkChangeLog") {
let mychannels = await rainbowSDK.channels.findChannelsByName(channelName);
_logger.log("debug", "MAIN - testfindChannelsByName - mychannels : ", mychannels);
}
testChannelImage() {
let mychannels = rainbowSDK.channels.getAllOwnedChannels();
let mychannel = mychannels ? mychannels[0]:null;
rainbowSDK.fileStorage.retrieveFileDescriptorsListPerOwner().then((result) => {
_logger.log("debug", "MAIN - retrieveFileDescriptorsListPerOwner - result : ", result);
if (result) {
let now = new Date().getTime();
let msg = " Rainbow Node SDK - Sample
[1.66.1] - 2020-01-29
\n" +
"\n" +
"- Fix when the SDK is already stopped when stop method is called, then return a succeed. (CRRAINB-10270: CPaaS Node SDK - Chief bot demo wasn't unable to restart after connection issue)
- Add BubblesService::getUsersFromBubble to get the actives users of a bubble.
- Fix the parameter type sent by events
rainbow_onbubbledeleted and rainbow_onbubbleownaffiliationchanged. It is now Bubble insteadOf Promise<Bubble>.
\n" +
"\n" +
"[1.66.0] - 2020-01-28
\n" +
"\n" +
"- " + now + "
- Add correlatorData et GlobaleCallId
- Fix method ChannelsService::createItem when parameter "type" is setted.
- Split Xmmpp error event treatment in 3 possibilities:
- Errors which need a reconnection
- Errors which need to only raise an event to inform up layer. => Add an event
rainbow_onxmpperror to inform about issue. - Errors which are fatal errors and then need to stop the SDK. => Already existing events
rainbow_onerror + rainbow_onstop.
- Work done on private method BubblesServices::joinConference (Not finish, so not available).
- Update Bubble::users property ordered by additionDate.
- Fix ordered calllogs (
orderByNameCallLogsBruts, orderByDateCallLogsBruts).
\n";
let tabImages = [{"id": result[0].id}];
rainbowSDK.channels.createItem(mychannel, msg, "title", null, tabImages, null).then((res) => {
_logger.log("debug", "MAIN - createItem - res : ", res);
});
}
});
}
async testPublishMessageToChannel() {
// use with vincent03@vbe.test.openrainbow.net sur .Net
let mychannels = rainbowSDK.channels.getAllOwnedChannels();
let mychannel = mychannels ? mychannels[0]:null;
if (mychannel) {
let now = new Date().getTime();
await rainbowSDK.channels.publishMessageToChannel(mychannel, "-- message : " + now, "title_", null, null, null, {tag: ["tag1", "tag2"]}).then((res) => {
_logger.log("debug", "MAIN - publishMessageToChannel - res : ", res);
});
pause(300);
} else {
_logger.log("debug", "MAIN - publishMessageToChannel - getAllOwnedChannel mychannel is empty, so can not publish.");
}
}
async testPublishChannel() {
// use with vincent03@vbe.test.openrainbow.net sur .Net
let mychannels = rainbowSDK.channels.getAllOwnedChannels();
let mychannel = mychannels ? mychannels[0]:null;
if (mychannel) {
for (let i = 0; i < 100; i++) {
let now = new Date().getTime();
await rainbowSDK.channels.publishMessageToChannel(mychannel, "-- message : " + i + " : " + now, "title_" + i, null, null, null).then((res) => {
_logger.log("debug", "MAIN - createItem - res : ", res);
});
pause(300);
}
} else {
_logger.log("debug", "MAIN - createItem - getAllOwnedChannel mychannel is empty, so can not publish.");
}
}
async testgetDetailedAppreciationsChannel() {
//let mychannel = await rainbowSDK.channels.getChannel("5dea7c6294e80144c1776fe1");
let mychannels = rainbowSDK.channels.getAllOwnedChannels();
let mychannel = mychannels ? mychannels[0]:null;
_logger.log("debug", "MAIN - testgetDetailedAppreciationsChannel - getAllOwnedChannel mychannel : ", mychannel);
if (mychannel) {
for (let i = 0; i < 1; i++) {
let now = new Date().getTime();
let itemId = "";
let item = await rainbowSDK.channels.fetchChannelItems(mychannel);
itemId = item[0].id;
rainbowSDK.channels.getDetailedAppreciations(mychannel, itemId).then((res) => {
_logger.log("debug", "MAIN - testgetDetailedAppreciationsChannel - res : ", res);
});
}
} else {
_logger.log("debug", "MAIN - testgetDetailedAppreciationsChannel - getAllOwnedChannel mychannel is empty, so can not publish.");
}
}
async testfetchChannelItems() {
//let mychannel = await rainbowSDK.channels.getChannel("5dea7c6294e80144c1776fe1");
let mychannels = rainbowSDK.channels.getAllOwnedChannels();
let mychannel = mychannels ? mychannels[0]:null;
_logger.log("debug", "MAIN - testgetDetailedAppreciationsChannel - getAllOwnedChannel mychannel : ", mychannel);
if (mychannel) {
for (let i = 0; i < 1; i++) {
let now = new Date().getTime();
let itemId = "";
let items = await rainbowSDK.channels.fetchChannelItems(mychannel);
_logger.log("debug", "MAIN - testgetDetailedAtestfetchChannelItemsppreciationsChannel - items.length : ", items.length);
_logger.log("debug", "MAIN - testgetDetailedAppreciationsChannel - First item itemId : ", items[0]);
_logger.log("debug", "MAIN - testgetDetailedAppreciationsChannel - Last item itemId : ", items[items.length - 1]);
/*itemId = items[0].id;
rainbowSDK.channels.getDetailedAppreciations(mychannel, itemId).then((res) => {
_logger.log("debug", "MAIN - testgetDetailedAppreciationsChannel - First item itemId : ", itemId, ", res : ", res);
});
itemId = items[items.length - 1].id;
rainbowSDK.channels.getDetailedAppreciations(mychannel, itemId).then((res) => {
_logger.log("debug", "MAIN - testgetDetailedAppreciationsChannel - Last item itemId : ", itemId, ", res : ", res);
}); // */
}
} else {
_logger.log("debug", "MAIN - testgetDetailedAppreciationsChannel - getAllOwnedChannel mychannel is empty, so can not publish.");
}
}
async testfetchChannelItemsFromSubscribed() {
//let mychannel = await rainbowSDK.channels.getChannel("5dea7c6294e80144c1776fe1");
let mychannels = rainbowSDK.channels.getAllSubscribedChannels();
let mychannel = mychannels ? mychannels[0]:null;
_logger.log("debug", "MAIN - testgetDetailedAppreciationsChannel - getAllOwnedChannel mychannel : ", mychannel);
if (mychannel) {
for (let i = 0; i < 1; i++) {
let now = new Date().getTime();
let itemId = "";
let items = await rainbowSDK.channels.fetchChannelItems(mychannel);
_logger.log("debug", "MAIN - testgetDetailedAtestfetchChannelItemsppreciationsChannel - items.length : ", items.length);
_logger.log("debug", "MAIN - testgetDetailedAppreciationsChannel - First item itemId : ", items[0]);
_logger.log("debug", "MAIN - testgetDetailedAppreciationsChannel - Last item itemId : ", items[items.length - 1]);
/*itemId = items[0].id;
rainbowSDK.channels.getDetailedAppreciations(mychannel, itemId).then((res) => {
_logger.log("debug", "MAIN - testgetDetailedAppreciationsChannel - First item itemId : ", itemId, ", res : ", res);
});
itemId = items[items.length - 1].id;
rainbowSDK.channels.getDetailedAppreciations(mychannel, itemId).then((res) => {
_logger.log("debug", "MAIN - testgetDetailedAppreciationsChannel - Last item itemId : ", itemId, ", res : ", res);
}); // */
}
} else {
_logger.log("debug", "MAIN - testgetDetailedAppreciationsChannel - getAllOwnedChannel mychannel is empty, so can not publish.");
}
}
async testfetchChannelItemsFromRNodeSdkChangeLog() {
let mychannel = await rainbowSDK.channels.getChannel("5dea7c6294e80144c1776fe1");
//let mychannels = rainbowSDK.channels.getAllSubscribedChannels();
//let mychannel = mychannels ? mychannels[0]:null;
_logger.log("debug", "MAIN - testfetchChannelItemsFromRNodeSdkChangeLog - getChannel mychannel : ", mychannel);
if (mychannel) {
for (let i = 0; i < 1; i++) {
let now = new Date().getTime();
let itemId = "";
let items = await rainbowSDK.channels.fetchChannelItems(mychannel);
_logger.log("debug", "MAIN - testfetchChannelItemsFromRNodeSdkChangeLog fetchChannelItems - items.length : ", items.length);
_logger.log("debug", "MAIN - testfetchChannelItemsFromRNodeSdkChangeLog fetchChannelItems - First item itemId : ", items[0]);
_logger.log("debug", "MAIN - testfetchChannelItemsFromRNodeSdkChangeLog fetchChannelItems - Last item itemId : ", items[items.length - 1]);
/*itemId = items[0].id;
rainbowSDK.channels.getDetailedAppreciations(mychannel, itemId).then((res) => {
_logger.log("debug", "MAIN - testgetDetailedAppreciationsChannel - First item itemId : ", itemId, ", res : ", res);
});
itemId = items[items.length - 1].id;
rainbowSDK.channels.getDetailedAppreciations(mychannel, itemId).then((res) => {
_logger.log("debug", "MAIN - testgetDetailedAppreciationsChannel - Last item itemId : ", itemId, ", res : ", res);
}); // */
}
} else {
_logger.log("debug", "MAIN - testfetchChannelItemsFromRNodeSdkChangeLog - mychannel is empty, so can not publish.");
}
}
async testcreateChannel() {
let mychannels = rainbowSDK.channels.getAllOwnedChannels();
let mychannel = mychannels ? mychannels[0]:null;
let utc = new Date().toJSON().replace(/-/g, "/");
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let channelCreated = await rainbowSDK.channels.createPublicChannel("testchannel" + utc, "test", "");
_logger.log("debug", "MAIN - testcreateChannel createPublicChannel result : ", channelCreated); //logger.colors.green(JSON.stringify(result)));
let tab: any = [{"id": contact.id}];
let channelMembersAdded = await rainbowSDK.channels.addMembersToChannel(channelCreated, tab);
_logger.log("debug", "MAIN - testcreateChannel - channelMembersAdded : ", channelMembersAdded);
let channelinfo = await rainbowSDK.channels.fetchChannel(channelCreated.id);
_logger.log("debug", "MAIN - testcreateChannel - channelinfo : ", channelinfo);
/*rainbowSDK.channels.createItem(mychannel, "message : " + now, "title", null, tabImages).then((res) => {
_logger.log("debug", "createItem - res : ", res);
}); // */
}
testChannelDeleteMessage() {
let mychannels = rainbowSDK.channels.getAllOwnedChannels();
let mychannel = mychannels ? mychannels[0]:null;
rainbowSDK.channels.fetchChannelItems(mychannel).then((result) => {
_logger.log("debug", "MAIN - getMessagesFromChannel - result : ", result);
if (result && result.length > 0) {
let now = new Date().getTime();
let idToDelete = result.length - 1;
_logger.log("debug", "MAIN - getMessagesFromChannel - idToDelete : ", idToDelete);
rainbowSDK.channels.deleteItemFromChannel(mychannel.id, result[idToDelete].id).then((result) => {
_logger.log("debug", "MAIN - deleteMessageFromChannel - result : ", result);
});
/*rainbowSDK.channels.createItem(mychannel, "message : " + now, "title", null, null).then((res) => {
_logger.log("debug", "createItem - res : ", res);
}); */
}
});
}
testChannelupdateChannelDescription() {
let mychannels = rainbowSDK.channels.getAllOwnedChannels();
let mychannel = mychannels ? mychannels[0]:null;
let utc = new Date().toJSON().replace(/-/g, "_");
rainbowSDK.channels.updateChannelDescription(mychannel, "desc_" + utc).then((result) => {
_logger.log("debug", "MAIN - updateChannelDescription - result : ", result);
}).catch(reason => {
_logger.log("error", "MAIN - updateChannelDescription catch reject - reason : ", reason);
});
}
testupdateChannelAvatar() {
return __awaiter(this, void 0, void 0, function* () {
});
}
async testCreateGuestCreateChannelPublishItem() {
// To be used with vincent01 on .NET
let firstname = "firstname_";
let lastname = "lastname_" + new Date().getTime() + "_";
let firstnameTemp = firstname;
let lastnameTemp = lastname;
let contact = await rainbowSDK.admin.createGuestUser(firstnameTemp, lastnameTemp, "fr", 10).catch((err) => {
_logger.log("debug", "MAIN - (testcreateGuestUserError) error while creating guest user : ", err);
});
let mychannels = rainbowSDK.channels.getAllOwnedChannels();
let mychannel = mychannels ? mychannels[0]:null;
let utc = new Date().toJSON().replace(/-/g, "/");
//let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
//let contact = await rainbowSDK.contacts.getContactByLoginEmail(guestUser.loginEmail);
let channelCreated = await rainbowSDK.channels.createPublicChannel("testchannel" + utc, "test", "");
_logger.log("debug", "MAIN - testcreateChannel createPublicChannel result : ", channelCreated); //logger.colors.green(JSON.stringify(result)));
let tab: any = [{"id": contact.id}];
let channelMembersAdded = await rainbowSDK.channels.addMembersToChannel(channelCreated, tab);
_logger.log("debug", "MAIN - testcreateChannel - channelMembersAdded : ", channelMembersAdded);
let channelinfo = await rainbowSDK.channels.fetchChannel(channelCreated.id);
_logger.log("debug", "MAIN - testcreateChannel - channelinfo : ", channelinfo);
/*rainbowSDK.channels.createItem(mychannel, "message : " + now, "title", null, tabImages).then((res) => {
_logger.log("debug", "createItem - res : ", res);
}); // */
if (contact) {
_logger.log("debug", "MAIN - [testCleanAGuest ] :: contact : ", contact);
rainbowSDK.admin.deleteUser(contact.id).then(async (result) => {
_logger.log("debug", "MAIN - [testCleanAGuest ] :: deleteUser result : ", result);
});
}
}
//endregion Channels
//region Files
downloadFile() {
_logger.log("debug", "Main - downloadFile - file - ");
rainbowSDK.fileStorage.retrieveFileDescriptorsListPerOwner().then((fileDescriptorsReceived: any) => {
_logger.log("debug", "Main - downloadFile, retrieveFileDescriptorsListPerOwner - result : ", fileDescriptorsReceived);
for (let fileReceived of fileDescriptorsReceived) {
_logger.log("debug", "Main - downloadFile - file - ", fileReceived);
rainbowSDK.fileStorage.downloadFile(fileReceived).then((blob: any) => {
_logger.log("debug", "Main - downloadFile - blob : ", blob.mime);
fs.writeFile("c:\\temp\\" + fileReceived.fileName, blob.buffer, "binary", function (err) {
if (err) {
console.log(err);
} else {
console.log("The file was saved! : " + "c:\\temp\\" + fileReceived.fileName);
}
});
});
//that.rainbowSDK.bubbles.setBubbleCustomData(bubble, {});
//let now = new Date().getTime();
}
});
}
async testgetAllFilesSentV1() {
let that = this;
for (let fd of rainbowSDK.fileStorage.getAllFilesSent()) {
let fdjson = JSON.stringify(fd);
_logger.log("debug", "Main - testgetAllFilesSentV1 Checking file fd.fileName : ", fd.fileName, ", JSON string : ", fdjson);
let fileDescriptorFull = await rainbowSDK.fileStorage.retrieveOneFileDescriptor(fd.id);
_logger.log("debug", `Main - testgetAllFilesSentV1 fileDescriptorFull : `, fileDescriptorFull);
}
}
async testgetAllFilesReceived() {
let that = this;
for (let fd of rainbowSDK.fileStorage.getAllFilesReceived()) {
_logger.log("debug", `Main - Checking file ${fd.fileName} ...`, fd);
let fileDescriptorFull = await rainbowSDK.fileStorage.retrieveOneFileDescriptor(fd.id);
_logger.log("debug", `Main - fileDescriptorFull : `, fileDescriptorFull);
}
}
async testgetAllFilesSent() {
let that = this;
let filesSent = rainbowSDK.fileStorage.getAllFilesSent();
let filesSentJSON = util.inspect(filesSent, false, 4, false);
_logger.log("debug", "Main - testgetAllFilesSent Checking files stringified : ", filesSentJSON);
/*for (let fd of filesSent) {
_logger.log("debug", `Main - testgetAllFilesSent Checking file ${fd.fileName} ...`, fd);
let fileDescriptorFull = await rainbowSDK.fileStorage.retrieveOneFileDescriptor(fd.id);
_logger.log("debug", `Main - testgetAllFilesSent fileDescriptorFull : `, fileDescriptorFull);
} // */
}
async testaddFileViewer() {
let that = this;
let user: Contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent00@vbe.test.openrainbow.net");
let filesDescriptors: [any] = await rainbowSDK.fileStorage.retrieveFileDescriptorsListPerOwner();
for (let fileDescriptor of filesDescriptors) {
let fileName = fileDescriptor.fileName;
_logger.log("debug", "Main - testaddFileViewer Checking file : ", fileName);
let fileDescriptorFull = await rainbowSDK.fileStorage.retrieveOneFileDescriptor(fileDescriptor.id);
_logger.log("debug", "Main - testaddFileViewer fileDescriptorFull : ", fileDescriptorFull);
let fileShared = await rainbowSDK.fileStorage.addFileViewer(fileDescriptorFull.id, user.id, "user");
_logger.log("debug", "Main - testaddFileViewer file shared : ", fileName);
}
}
async testdownloadFile() {
let that = this;
for (let fd of rainbowSDK.fileStorage.getAllFilesReceived()) {
_logger.log("debug", `Main - Checking file ${fd.fileName} ...`);
if (!fs.existsSync("c:\\temp\\" + fd.fileName) || true) {
_logger.log("debug", `Main - TEST Downloading file ${fd.fileName} ...`);
if (fd.fileName!="app-ovgtw1_0_34.tar" && fd.fileName!="Delta_Player_on.png") {
//logger.log("debug", `Main - Will NOT Download file ${fd.fileName} done`);
} else {
_logger.log("debug", `Main - Will Download file ${fd.fileName} : `, fd);
// continue;
let file: any;
file = await rainbowSDK.fileStorage.downloadFile(fd);
_logger.log("debug", `Main - Downloading file ${fd.fileName} done`);
if (file) {
try {
let blobArray = file.buffer;
let writeStream = createWriteStream("c:\\temp\\" + fd.fileName);
writeStream.on('error', () => {
_logger.log("debug", "Main - [RecordsService] WriteStream error event");
});
writeStream.on('drain', () => {
_logger.log("debug", "Main - [RecordsService] WriteStream drain event");
});
for (let index = 0; index < blobArray.length; index++) {
if (blobArray[index]) {
_logger.log("debug", "[FileServerService] >writeAvailableChunksInDisk : Blob " + index + " available");
//fd.chunkWrittenInDisk = index;
writeStream.write(new Buffer(blobArray[index]));
blobArray[index] = null;
} else {
_logger.log("debug", "[FileServerService] >writeAvailableChunksInDisk : Blob " + index + " NOT available");
break;
}
}
_logger.log("debug", `Main - The file ${fd.fileName} was saved!`);
} catch (e) {
_logger.log("debug", `Main - Error saving file ${fd.fileName} from Rainbow`, e);
}
} else {
_logger.log("error", `Main - Error downloading file ${fd.fileName}`);
}
}
} else {
_logger.log("debug", `File ${fd.fileName} already downloaded`)
}
}
}
async testdownloadFileInPath() {
let that = this;
for (let fd of rainbowSDK.fileStorage.getAllFilesReceived()) {
_logger.log("debug", `Main - Checking file ${fd.fileName} ...`);
if (!fs.existsSync("c:\\temp\\" + fd.fileName) || true) {
_logger.log("debug", `MAIN - TEST Downloading file ${fd.fileName} ...`);
if (fd.fileName!="app-ovgtw1_0_34.tar") {
//if ( fd.fileName != "Delta_Player_on.png" ) {
//logger.log("debug", `Main - Will NOT Download file ${fd.fileName} done`);
} else {
_logger.log("debug", `Main - Will Download file ${fd.fileName} : `, fd);
// continue;
let file$: any;
file$ = await rainbowSDK.fileStorage.downloadFileInPath(fd, "c:\\temp\\");
let currentValue: any = 0;
file$.subscribe({
next(value) {
currentValue = value;
if (value < 101) {
_logger.log("internal", "MAIN - (downloadFile) % : ", value);
} else {
_logger.log("internal", "MAIN - value !< 101 : File downloaded in Next : ", currentValue ? currentValue.fileName:"");
_logger.log("debug", "MAIN - File downloaded");
}
},
complete() {
if (currentValue < 101) {
_logger.log("internal", "MAIN - (downloadFile) % : ", currentValue);
} else {
_logger.log("internal", "MAIN - value !< 101 : File downloaded in Complete : ", currentValue ? currentValue.fileName:"");
_logger.log("debug", "MAIN - File downloaded");
}
}
});
_logger.log("debug", `MAIN - Downloading file ${fd.fileName} done`);
}
} else {
_logger.log("debug", `File ${fd.fileName} already downloaded`)
}
}
}
async testgetFilesTemporaryURL() {
let that = this;
let filesDescriptors: [any] = await rainbowSDK.fileStorage.retrieveFileDescriptorsListPerOwner();
//for (let fileDescriptor of filesDescriptors) {
if (Array.isArray(filesDescriptors) && filesDescriptors.length > 0) {
let fileDescriptor = filesDescriptors[0];
let fileName = fileDescriptor.fileName;
_logger.log("debug", "Main - testgetFilesTemporaryURL Checking file : ", fileName);
let fileDescriptorFull = await rainbowSDK.fileStorage.retrieveOneFileDescriptor(fileDescriptor.id);
_logger.log("debug", "Main - testgetFilesTemporaryURL fileDescriptorFull : ", fileDescriptorFull);
let fileUrlInfo = await rainbowSDK.fileStorage.getFilesTemporaryURL(fileDescriptorFull.id);
_logger.log("debug", "Main - testgetFilesTemporaryURL file : ", fileName, " shared by url : ", fileUrlInfo);
}
}
testUploadFileToConversation() {
let that = this;
// let conversation = null;
let file = null;
//let strMessage = {message: "message for the file"};
let strMessage = "message for the file";
//that.readFile("c:\\temp\\15777240.jpg", "binary").then((data)=> {
//file = new fileapi.File("c:\\temp\\15777240.jpg");
/*
file = new fileapi.File({
// path: "c:\\temp\\15777240.jpg", // path of file to read
path: "c:\\temp\\IMG_20131005_173918.jpg", // path of file to read
//path: "c:\\temp\\Rainbow_log_test.log", // path of file to read
// buffer: Node.Buffer, // use this Buffer instead of reading file
// stream: Node.ReadStream, // use this ReadStream instead of reading file
// name: "SomeAwesomeFile.txt", // optional when using `path`
// must be supplied when using `Node.Buffer` or `Node.ReadStream`
// type: "text/plain", // generated based on the extension of `name` or `path`
jsdom: true, // be DoM-like and immediately get `size` and `lastModifiedDate`
// [default: false]
async: false, // use `fs.stat` instead of `fs.statSync` for getting
// the `jsdom` info
// [default: false]
// lastModifiedDate: fileStat.mtime.toISOString()
// size: fileStat.size || Buffer.length
}
); // */
file = {
"path": "c:\\temp\\IMG_20131005_173918.jpg",
"name": "IMG_20131005_173918.jpg",
"type": "image/JPEG",
"size": 2960156
};
_logger.log("debug", "MAIN - uploadFileToConversation - file.name : ", file.name, ", file.type : ", file.type, ", file.path : ", file.path, ", file.size : ", file.size);
rainbowSDK.contacts.getContactByLoginEmail("vincent02@vbe.test.openrainbow.net").then(function (contact) {
// Retrieve the associated conversation
return rainbowSDK.conversations.openConversationForContact(contact);
}).then(function (conversation) {
// Share the file
return rainbowSDK.fileStorage.uploadFileToConversation(conversation, file, strMessage).then((result) => {
_logger.log("debug", "MAIN - uploadFileToConversation - result : ", result);
});
});
//});
}
testUploadFileToConversationEmpty() {
let that = this;
// let conversation = null;
let file = null;
//let strMessage = {message: "message for the file"};
let strMessage = "message for the file";
file = {
"path": "c:\\temp\\NotExistingFile.jpg",
"name": "NotExistingFile.jpg",
"type": "image/JPEG",
"size": 2960156
};
_logger.log("debug", "MAIN - uploadFileToConversation - file.name : ", file.name, ", file.type : ", file.type, ", file.path : ", file.path, ", file.size : ", file.size);
rainbowSDK.contacts.getContactByLoginEmail("vincent02@vbe.test.openrainbow.net").then(function (contact) {
// Retrieve the associated conversation
return rainbowSDK.conversations.openConversationForContact(contact);
}).then(function (conversation) {
// Share the file
return rainbowSDK.fileStorage.uploadFileToConversation(conversation, file, strMessage).then((result) => {
_logger.log("debug", "MAIN - uploadFileToConversation - result : ", result);
}).catch((err) => {
_logger.log("error", "MAIN - uploadFileToConversation - error : ", err);
});
});
//});
}
testUploadFileToConversationByPath() {
let that = this;
// let conversation = null;
let file = null;
//let strMessage = {message: "message for the file"};
let strMessage = "message for the file";
file = "c:\\temp\\IMG_20131005_173918XXXXXXXXXXX.jpg";
_logger.log("debug", "MAIN - uploadFileToConversation - file : ", file);
rainbowSDK.contacts.getContactByLoginEmail("vincent02@vbe.test.openrainbow.net").then(function (contact) {
// Retrieve the associated conversation
return rainbowSDK.conversations.openConversationForContact(contact);
}).then(function (conversation) {
// Share the file
return rainbowSDK.fileStorage.uploadFileToConversation(conversation, file, strMessage).then((result) => {
_logger.log("debug", "MAIN - uploadFileToConversation - result : ", result);
}).catch((errr) => {
_logger.log("error", "MAIN - uploadFileToConversation - error : ", errr);
});
});
//});
}
testgetRainbowNodeSdkPackagePublishedInfos() {
rainbowSDK._core._rest.getRainbowNodeSdkPackagePublishedInfos().then((infos: any) => {
_logger.log("debug", "MAIN - testgetRainbowNodeSdkPackagePublishedInfos - infos : ", infos);
});
}
testuploadFileToStorage() {
let that = this;
// let conversation = null;
let file = null;
//let strMessage = {message: "message for the file"};
let strMessage = "message for the file";
file = "c:\\temp\\IMG_20131005_173918.jpg";
_logger.log("debug", "MAIN - uploadFileToStorage - file : ", file);
// Share the file
return rainbowSDK.fileStorage.uploadFileToStorage(file).then((result) => {
_logger.log("debug", "MAIN - uploadFileToStorage - result : ", result);
}).catch((errr) => {
_logger.log("error", "MAIN - uploadFileToStorage - error : ", errr);
});
}
testuploadFileToStorageBig() {
let that = this;
// let conversation = null;
let file = null;
//let strMessage = {message: "message for the file"};
let strMessage = "message for the file";
file = "c:\\temp\\fichiertestupload.txt";
_logger.log("debug", "MAIN - testuploadFileToStorageBig - file : ", file);
// Share the file
return rainbowSDK.fileStorage.uploadFileToStorage(file).then((result) => {
_logger.log("debug", "MAIN - testuploadFileToStorageBig - uploadFileToStorage result : ", result);
}).catch((errr) => {
_logger.log("error", "MAIN - testuploadFileToStorageBig - uploadFileToStorage error : ", errr);
});
}
async testfileOwnershipChange() {
let that = this;
let contactEmail = "vincent03@vbe.test.openrainbow.net";
//let contactEmail = "vincent.berder@al-enterprise.com";
rainbowSDK.contacts.getContactByLoginEmail(contactEmail).then(async (contact: any) => {
if (contact) {
_logger.log("debug", "MAIN - [testfileOwnershipChange ] :: getContactByLoginEmail contact : ", contact);
try {
// let conversation = null;
let file = null;
//let strMessage = {message: "message for the file"};
let strMessage = "message for the file";
file = "c:\\temp\\IMG_20131005_173918.jpg";
_logger.log("debug", "MAIN - testfileOwnershipChange - file : ", file);
// Share the file
let fileStored: any = await rainbowSDK.fileStorage.uploadFileToStorage(file);
_logger.log("debug", "MAIN - testfileOwnershipChange - fileStored.id : ", fileStored.id, ", fileStored.fileName : ", fileStored.fileName, ", fileStored.url : ", fileStored.url, ", fileStored.ownerId : ", fileStored.ownerId);
let fileOwnerChanged = await rainbowSDK.fileStorage.fileOwnershipChange(fileStored.id, contact.id);
_logger.log("debug", "MAIN - testfileOwnershipChange - fileOwnerChanged.id : ", fileOwnerChanged.id, ", fileOwnerChanged.fileName : ", fileOwnerChanged.fileName, ", fileOwnerChanged.url : ", fileOwnerChanged.url, ", fileOwnerChanged.ownerId : ", fileOwnerChanged.ownerId);
} catch (err) {
_logger.log("error", "MAIN - testfileOwnershipChange - error : ", err);
}
}
});
}
testRetrieveOneFileDescriptor() {
_logger.log("debug", "Main - testRetrieveOneFileDescriptor - file - ");
let fileDescriptorsReceived = rainbowSDK.fileStorage.getFileDescriptorFromId("5cab49e3827d70023481c17a");
_logger.log("debug", "Main - testRetrieveOneFileDescriptor, getFileDescriptorFromId - result : ", fileDescriptorsReceived);
rainbowSDK.fileStorage.retrieveOneFileDescriptor("5cab49e3827d70023481c17a").then((fileDescriptorsReceived) => {
_logger.log("debug", "Main - testRetrieveOneFileDescriptor, retrieveOneFileDescriptor - result : ", fileDescriptorsReceived);
});
}
testretrieveSentFiles() {
_logger.log("debug", "Main - testretrieveSentFiles - file - ");
let loginEmail = "vincent02@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then((contact: any) => {
if (contact) {
_logger.log("debug", "MAIN - [testretrieveSentFiles ] :: getContactByLoginEmail result : ", contact);
rainbowSDK.fileStorage.retrieveSentFiles(contact.id).then((fileDescriptorsReceived) => {
_logger.log("debug", "Main - testretrieveSentFiles, retrieveSentFiles - result : ", fileDescriptorsReceived);
});
}
});
}
testretrieveSentFiles_adminbot2() {
_logger.log("debug", "Main - testretrieveSentFiles - file - ");
let loginEmail = "mailto:representaive2@al-mydemo.com";
//rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then((contact: any) => {
// if (contact) {
// _logger.log("debug", "MAIN - [testretrieveSentFiles ] :: getContactByLoginEmail result : ", contact);
rainbowSDK.fileStorage.retrieveSentFiles("5bc462d10ea5fc3e2d1384c7").then((fileDescriptorsReceived) => {
_logger.log("debug", "Main - testretrieveSentFiles, retrieveSentFiles - result : ", fileDescriptorsReceived);
});
// }
// });
}
async testgetFileDescriptorsByCompanyId() {
// to be used with vincentbp@vbe.test.openrainbow.net on vberder AIO.
_logger.log("debug", "MAIN - testgetFileDescriptorsByCompanyId. ");
/*let format : string = "small";
let sortField : string = "name" ;
let bpId : string = undefined ;
let catalogId : string = undefined ;
let offerId : string = undefined ;
let offerCanBeSold : boolean = undefined ;
let externalReference : string = undefined;
let externalReference2 : string = undefined;
let salesforceAccountId : string = undefined;
let selectedAppCustomisationTemplate : string = undefined
let selectedThemeObj: boolean = undefined;
let offerGroupName : string = undefined;
let limit : number = 100;
let offset : number = 0;
let sortOrder : number = 1;
let name : string = "westworld guest_";
let status : string = undefined;
let visibility : string = undefined;
let organisationId : string = undefined
let isBP : boolean = undefined;
let hasBP : boolean = undefined;
let bpType : string = undefined;
let allCompanies: any = await rainbowSDK.admin.getAllCompanies(format, sortField, bpId, catalogId, offerId, offerCanBeSold, externalReference, externalReference2, salesforceAccountId, selectedAppCustomisationTemplate, selectedThemeObj, offerGroupName, limit, offset, sortOrder, name, status, visibility, organisationId, isBP, hasBP, bpType);
_logger.log("debug", "MAIN - testgetFileDescriptorsByCompanyId - allCompanies : ", allCompanies.length);
// */
let filesDescriptors = await rainbowSDK.fileStorage.getFileDescriptorsByCompanyId(undefined, true);
_logger.log("debug", "MAIN - testgetFileDescriptorsByCompanyId - filesDescriptors : ", filesDescriptors);
/*let companyId = connectedUser.companyId;
for (let company of allCompanies.data) {
//that._logger.log("debug", "(getSubscriptionsOfCompanyByOfferId) subscription : ", subscription);
if (company.name==="vbeCompanie") {
_logger.log("debug", "MAIN - testretrieveRainbowUserList vbeCompanie found : ", company);
companyId = company.id;
}
}
_logger.log("debug", "MAIN - testretrieveRainbowUserList - companyId : ", companyId);
let result = await rainbowSDK.admin.retrieveRainbowUserList(companyId, "csv", true);
_logger.log("debug", "MAIN - testretrieveRainbowUserList - result : ", result);
// */
}
async testretrieveFileDescriptorsListPerOwner() {
let filesDescriptors = await rainbowSDK.fileStorage.retrieveFileDescriptorsListPerOwner();
_logger.log("debug", "MAIN - testretrieveFileDescriptorsListPerOwner - filesDescriptors : ", filesDescriptors);
}
//endregion Files
//region Bubbles
testgetContactById_65269b10bd1d36463da3c89d() {
// userid not existing in .Net platform
rainbowSDK.contacts.getContactById("65269b10bd1d36463da3c89d").then((contact: any) => {
_logger.log("debug", "MAIN - [testgetContactById_65269b10bd1d36463da3c89d ] :: getContactById contact : ", contact);
});
}
testgetContactById_aluno() {
rainbowSDK.contacts.getContactById("63fe5655db963ffcf51516cf").then((contact: any) => {
_logger.log("debug", "MAIN - [testgetContactById_aluno ] :: getContactById contact : ", contact);
});
}
async testgetContactById_aleantwerp() {
// COM with aleantwerp.hubreception@gmail.com
/*
Le Contact cherché :
_id: "68e3beafc60980092418ffd4",
displayName: "hubuser01 ALEA",
aleantwerp.hubuser01@gmail.com
// */
/*await rainbowSDK.contacts.getMyInformations().then((contact: any) => {
_logger.log("debug", "MAIN - [testgetContactById_aleantwerp ] :: getMyInformations contact : ", contact);
});
// */
let forceServerSearch = true;
let forceServerSearch2 = false;
await rainbowSDK.contacts.getContactById("68e3beafc60980092418ffd4", forceServerSearch).then((contact: any) => {
_logger.log("debug", "MAIN - [testgetContactById_aleantwerp ] :: first getContactById contact : ", contact);
});
await rainbowSDK.contacts.getContactById("68e3beafc60980092418ffd4", forceServerSearch2).then((contact: any) => {
_logger.log("debug", "MAIN - [testgetContactById_aleantwerp ] :: second getContactById contact : ", contact);
});
/*
await rainbowSDK.admin.getContactInfos("68e3beafc60980092418ffd4").then((contact: any) => {
_logger.log("debug", "MAIN - [testgetContactById_aleantwerp ] :: getContactInfos contact : ", contact);
});
// */
}
async testUpdateFromUserData() {
let _contactFromServer = {
outOfOffice: {active: false},
firstName: 'HubReception',
lastName: 'ALEA',
displayName: 'HubReception ALEA',
tags: [],
searchTagsOnly: ['ale-antwerp'],
isActive: true,
roles: ['user', 'admin'],
adminType: 'company_admin',
accountType: 'free',
organisationId: null,
siteId: null,
systemId: null,
isInitialized: true,
initializationDate: '2025-10-01T11:53:25.153Z',
lastUpdateDate: '2025-10-06T14:40:14.710Z',
lastAvatarUpdateDate: null,
createdBySelfRegister: false,
createdByAppId: 'a2f8903000f011e886d9b5bbd3260792',
firstLoginDate: '2025-10-01T11:53:10.313Z',
lastLoginDate: '2025-10-07T13:03:26.737Z',
loggedSince: '2025-10-07T13:03:26.737Z',
lastSeenDate: '2025-10-07T13:03:26.737Z',
failedLoginAttempts: 0,
lastLoginFailureDate: null,
lastExpiredTokenRenewedDate: null,
lastPasswordUpdateDate: null,
timeToLive: -1,
timeToLiveDate: null,
terminatedDate: null,
isTerminated: false,
guestMode: false,
fileSharingCustomisation: 'enabled',
userTitleNameCustomisation: 'disabled',
softphoneOnlyCustomisation: 'disabled',
useRoomCustomisation: 'enabled',
phoneMeetingCustomisation: 'enabled',
useChannelCustomisation: 'enabled',
useScreenSharingCustomisation: 'enabled',
useWebRTCAudioCustomisation: 'enabled',
useWebRTCOnlyIfMobileLoggedCustomisation: 'disabled',
useWebRTCVideoCustomisation: 'enabled',
instantMessagesCustomisation: 'enabled',
userProfileCustomisation: 'enabled',
fileStorageCustomisation: 'enabled',
overridePresenceCustomisation: 'enabled',
changeTelephonyCustomisation: 'enabled',
changeSettingsCustomisation: 'enabled',
recordingConversationCustomisation: 'enabled',
useGifCustomisation: 'enabled',
useDialOutCustomisation: 'enabled',
fileCopyCustomisation: 'enabled',
fileTransferCustomisation: 'enabled',
forbidFileOwnerChangeCustomisation: 'enabled',
readReceiptsCustomisation: 'enabled',
useSpeakingTimeStatistics: 'enabled',
eLearningCustomisation: 'enabled',
eLearningGamificationCustomisation: 'enabled',
meetingRecordingCustomisation: 'enabled',
useOtherPhoneMode: 'enabled',
useComputerMode: 'enabled',
useSoftPhoneMode: 'enabled',
useTeamsMode: 'disabled',
userAvatarCustomisation: 'enabled',
imPopupDuration: 3,
canAccessWhatsNew: 'enabled',
canAccessFaqCustomisation: 'enabled',
canAccessHelpCenterCustomisation: 'enabled',
canAccessStoreCustomisation: 'enabled',
canDownloadAppCustomisation: 'enabled',
canUseTestConfigCustomisation: 'enabled',
canUseTaskCustomisation: 'enabled',
canUseTranscriptionCustomisation: 'disabled',
canSynchCalendar: 'enabled',
canUseSendReportCustomisation: 'enabled',
canCallParticipantPbxNumberCustomisation: 'enabled',
canSetInvisiblePresenceCustomisation: 'enabled',
receivedFileCustomisation: 'enabled',
selectedAppCustomisationTemplate: '5f59d89d170a0b348c1b4d58',
selectedManifestId: null,
useRoomAsRBVoiceUser: 'enabled',
useWebRTCAudioAsRBVoiceUser: 'enabled',
alertNotificationReception: 'disabled',
selectedDeviceFirmware: 'same_as_company',
useExternalStorage: 'disabled',
useRainbowStorage: 'enabled',
mainStorage: 'Rainbow Storage',
nextRosterAutoCleanup: 0,
selectedProgKeysGroupId: null,
loginEmail: 'aleantwerp.hubreception@gmail.com',
country: 'BEL',
visibility: 'same_than_company',
companyId: '5b8e3b3b67edb74a2cf6c00c',
createdByAdmin: {
userId: '60b7342a8e196a596ac8833f',
loginEmail: 'aleantwerp.compadmin@gmail.com'
},
jid_im: '5e88012f39ed4c999080b3cbc992ef81@openrainbow.com',
jid_tel: 'tel_5e88012f39ed4c999080b3cbc992ef81@openrainbow.com',
jid_password: 'eccf68bab9584e8f9d4c78370b6ec429',
emails: [{email: 'aleantwerp.hubreception@gmail.com', type: 'work'}],
phoneNumbers: [
{
firstName: '',
lastName: '',
deviceName: 'Cloud PBX DDI number',
names: [],
type: 'work',
deviceType: 'landline',
isVisibleByOthers: true,
isFromSystem: false,
isMonitored: false,
number: '+3215531095',
systemId: '689c59d56951a0152d70fbaf',
isCloudPbxDefault: true,
externalTrunkId: '5dfc95b0f4cb88079f43bd4d',
pbxId: 'PBXb641-60d7-6419-409c-b7c7-e112-9b5d-4585',
country: 'BEL',
numberE164: '+3215531095',
isCloudPbxDDI: true,
isAssignedAsSecondaryCloudPbxDDI: false,
secondaryDdiOrder: 0,
phoneNumberId: '68db9903de8ccb0a4aed1753'
},
{
firstName: '',
lastName: '',
deviceName: 'RVCP Subscriber',
names: [],
type: 'work',
deviceType: 'landline',
isVisibleByOthers: true,
isFromSystem: true,
isMonitored: true,
shortNumber: '799',
voiceMailNumber: 'voicebox',
systemId: '689c59d56951a0152d70fbaf',
pbxId: 'PBXb641-60d7-6419-409c-b7c7-e112-9b5d-4585',
country: 'BEL',
internalNumber: '799',
phoneNumberId: '68dd14f2bf41680a65c45f9b'
}
],
profiles: [
{
isDefault: true,
status: 'active',
canBeSold: false,
businessModel: 'nb_users',
businessSpecific: [Array],
isExclusive: false,
isPrepaid: false,
hasConference: false,
isBundle: false,
isVoicePhone: false,
guardianType: 'none',
subscriptionId: '5b8e3b3b67edb74a2cf6c00d',
offerId: '5820dc3af19a2bf6d7601ff7',
offerName: 'Essential',
profileId: '5820dc3af19a2bf6d7601ff6',
profileName: 'Essential',
isDemo: false,
offerDescription: 'Rainbow Essential 1 User 1 Month',
offerTechnicalDescription: 'Essential',
offerReference: 'RB-Essential',
assignationDate: '2025-10-01T11:47:23.144Z'
},
{
isDefault: false,
status: 'active',
canBeSold: false,
businessModel: 'nb_users',
businessSpecific: [Array],
isExclusive: true,
isPrepaid: false,
hasConference: false,
isBundle: false,
isVoicePhone: false,
guardianType: 'none',
subscriptionId: '64be9af1b47e4510575412f8',
offerId: '5e4af6185823231ba069ac51',
offerName: 'Voice Enterprise Custom',
profileId: '5d9a4b98ab5e5a4edf2f03c2',
profileName: 'Voice Enterprise',
isDemo: true,
hasVoice: true,
offerDescription: 'Rainbow Voice Enterprise Custom',
offerTechnicalDescription: 'Voice System Demo',
offerReference: 'RB-Voice-Enterprise-Custom',
groupName: 'Voice Enterprise',
assignationDate: '2025-10-01T11:47:24.215Z'
}
],
creationDate: '2025-10-01T11:47:23.137Z',
activationDate: '2025-10-01T11:47:23.137Z',
companyName: 'ALE-ANTWERP',
customData: {
pushToTalkEnabled: false,
pushToTalkKey: 'Shift',
pushToTalkDelay: 0,
enablePushToTalkTone: false,
hasSecondRinger: true,
forwardInternalValue: '',
forwardInternalContactId: '',
forwardExternalValue: '',
emergencyImSound: 'pager1',
storeProducts: {
rainbowSalesforce: false,
rainbowMSDynamics: false,
rainbowServicenow: false,
rainbowZoho: false,
rainbowZendesk: false,
onlyOffice: false,
moodleCanvasCornerstone: false,
rainbowDialIn: false,
rainbowWebinar: false,
digitalTransformationSuccess: false,
coachingHubAdministrator: false,
coachingHubUser: false
},
suggestionDisplayed: true,
guideTourDisplayed: true
},
guardianData: {},
language: 'en',
timezone: 'Europe/Paris',
state: null,
department: '',
jobTitle: '',
mfaRainbowAuth: {mfaStatus: 'disabled', mfaType: 'none'},
nickName: '',
rainbowPasswordlessPolicy: {},
singleSignOn: {},
title: '',
id: '68dd14cbdbc9e1f21b740b18',
isInDefaultCompany: false,
isADSearchAvailable: false,
calendars: [],
msTeamsPresence: [],
isAlertNotificationEnabled: false,
isCallFromPbxAuthorized: false,
isCallToPbxAuthorized: false,
capabilityOxeOverflow: false,
capabilityOxeBusy: false,
capabilityWRGConvShift: false,
isTv: false
};
let that = this;
let contact = rainbowSDK.contacts.createBasicContact(_contactFromServer.jid_im, undefined);
contact.updateFromUserData(_contactFromServer);
// contact.avatar = that.getAvatarByContactId(_contactFromServer.id, _contactFromServer.lastAvatarUpdateDate);
_logger.log("MAIN - (testUpdateFromUserData) after updateFromUserData ", contact);
}
// */
testCreateBubble_Uniasselvi() {
let loginEmail = "vincent02@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then((contact: any) => {
if (contact) {
_logger.log("debug", "MAIN - [testCreateBubbles ] :: getContactByLoginEmail result : ", contact);
let utc = new Date().toJSON().replace(/-/g, "_");
let withHistory = false;
rainbowSDK.bubbles.createBubble("TestBubbleBot" + utc, "TestBubbleBot" + utc, withHistory).then((bubble : any) => {
_logger.log("debug", "MAIN - [testCreateBubbles ] :: createBubble result : ", bubble);
rainbowSDK.events.on("rainbow_onbubbleaffiliationchanged", async (bubbleAffiliated) => {
_logger.log("debug", "MAIN - (rainbow_onbubbleaffiliationchanged) - affiliationchanged.");
if (bubbleAffiliated && bubbleAffiliated.users.filter((user) => {
let res = false;
if (user.userId===contact.id && user.status==="accepted") {
res = true;
}
return res;
}).length===1) {
let utcMsg = new Date().getTime();
let messageMD = "**Test message MD** at " + utcMsg;
await setTimeoutPromised(2000);
await rainbowSDK.im.sendMessageToBubbleJid(" ", bubbleAffiliated.jid, "en", {
//await rainbowSDK.im.sendMessageToBubbleJid(message, bubbleAffiliated.jid, "en", {
"type": "text/markdown",
"message": messageMD
}, "subject", undefined);
}
});
rainbowSDK.bubbles.inviteContactToBubble(contact, bubble, false, false).then(async () => {
});
});
}
}); // */
}
testCreateBubbles() {
let physician = {
"name": "",
"contact": null,
"loginEmail": "vincent02@vbe.test.openrainbow.net",
// "loginEmail": "vincent.berder@al-enterprise.com",
"appointmentRoom": "testBot"
};
let botappointment = "vincent01@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(physician.loginEmail).then((contact: any) => {
if (contact) {
_logger.log("debug", "MAIN - [testCreateBubbles ] :: getContactByLoginEmail contact : ", contact);
physician.name = contact.title + " " + contact.firstname + " " + contact.lastname;
physician.contact = contact;
for (let i = 0; i < 1; i++) {
let utc = new Date().toJSON().replace(/-/g, "/");
let withInvitation = false;
rainbowSDK.bubbles.createBubble(physician.appointmentRoom + utc + contact + "_" + i, physician.appointmentRoom + utc + "_" + i, withInvitation).then((bubble : any) => {
_logger.log("debug", "MAIN - [testCreateBubbles ] :: createBubble request ok", bubble);
rainbowSDK.events.on("rainbow_onbubbleaffiliationchanged", async (bubbleAffiliated) => {
// do something when the SDK has been started
_logger.log("debug", "MAIN - (rainbow_onbubbleaffiliationchanged) - affiliationchanged : ");
if (bubbleAffiliated && bubbleAffiliated.users.filter((user) => {
let res = false;
if (user.userId===contact.id && user.status==="accepted") {
res = true;
}
return res;
}).length===1) {
let utcMsg = new Date().getTime();
let message = "message de test in " + utcMsg;
await setTimeoutPromised(2000);
await rainbowSDK.im.sendMessageToBubbleJid(message, bubbleAffiliated.jid, "en", {
"type": "text/markdown",
"message": message
}, "subject", undefined);
}
});
rainbowSDK.bubbles.inviteContactToBubble(contact, bubble, false, false).then(async () => {
//await Utils.setTimeoutPromised(200);
/*let utcMsg = new Date().getTime();
let message = "message de test in " + utcMsg;
rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", { "type": "text/markdown", "message": message }, "subject");
// */
/*rainbowSDK.bubbles.deleteBubble(bubble).then(() => {
let bubbles = rainbowSDK.bubbles.getAll();
_logger.log("debug", "MAIN testCreateBubbles - after deleteBubble - bubble : ", bubble, ", bubbles : ", bubbles);
}); */
/*rainbowSDK.contacts.getContactByLoginEmail(botappointment).then(contactbot => {
rainbowSDK.bubbles.inviteContactToBubble(contactbot, bubble, false, false).then(function () {
setTimeout(() => { rainbowSDK.bubbles.promoteContactInBubble(contactbot, bubble).then(function (updatedBubble) {
rainbowSDK.conversations.getBubbleConversation(updatedBubble).then(conversation => {
_logger.log("debug", "MAIN - [start ] :: getBubbleConversation request ok", conversation);
});
})} , 2000);
});
}); // */
});
});
}
}
}); // */
// let utc = new Date().toJSON().replace(/-/g, '/');
}
async testCreateBubbleAndSendMessage() {
let loginEmail = "vincent02@vbe.test.openrainbow.net";
let appointmentRoom = "testBot";
//let botappointment = "vincent01@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(async contact => {
if (contact) {
_logger.log("debug", "MAIN - [testCreateBubbles ] :: getContactByLoginEmail contact : ", contact);
let utc = new Date().toJSON().replace(/-/g, "/");
await rainbowSDK.bubbles.createBubble(appointmentRoom + utc + contact + "_" + 1, appointmentRoom + utc + "_" + 1).then(async (bubble: any) => {
_logger.log("debug", "MAIN - [testCreateBubbles ] :: createBubble request ok", bubble);
rainbowSDK.bubbles.inviteContactToBubble(contact, bubble, false, false).then(async () => {
let message = "message de test";
await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", {
"type": "text/markdown",
"message": message
}, "subject", undefined, UrgencyType.MIDDLE);
});
});
}
}); // */
// let utc = new Date().toJSON().replace(/-/g, '/');
}
async testCreateBubbleAndInvite() {
let loginEmail = "vincent01@vbe.test.openrainbow.net";
let appointmentRoom = "testBot_";
//let botappointment = "vincent01@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(async contact => {
if (contact) {
_logger.log("debug", "MAIN - [testCreateBubbleAndInvite ] :: getContactByLoginEmail contact : ", contact);
let utc = new Date().toJSON().replace(/-/g, "/");
await rainbowSDK.bubbles.createBubble(appointmentRoom + utc + contact + "_" + 1, appointmentRoom + utc + "_" + 1).then(async (bubble: any) => {
_logger.log("debug", "MAIN - [testCreateBubbleAndInvite ] :: createBubble request ok", bubble);
rainbowSDK.bubbles.inviteContactToBubble(contact, bubble, false, false).then(async () => {
/*let message = "message de test";
await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", {
"type": "text/markdown",
"message": message
}, "subject", undefined, UrgencyType.MIDDLE);
// */
});
});
}
}); // */
// let utc = new Date().toJSON().replace(/-/g, '/');
}
async testCreateBubbleWithNoInvitationAndSendMessage() {
let loginEmail = "vincent02@vbe.test.openrainbow.net";
let appointmentRoom = "testBot";
//let botappointment = "vincent01@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(async contact => {
if (contact) {
_logger.log("debug", "MAIN - [testCreateBubbles ] :: getContactByLoginEmail contact : ", contact);
let utc = new Date().toJSON().replace(/-/g, "/");
await rainbowSDK.bubbles.createBubble(appointmentRoom + utc + contact + "_" + 1, appointmentRoom + utc + "_" + 1).then(async (bubble: any) => {
_logger.log("debug", "MAIN - [testCreateBubbles ] :: createBubble request ok", bubble);
rainbowSDK.bubbles.inviteContactToBubble(contact, bubble, false, false).then(async () => {
/* let message = "message de test";
await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", {
"type": "text/markdown",
"message": message
}, "subject", undefined, UrgencyType.MIDDLE);
// */
});
});
}
}); // */
// let utc = new Date().toJSON().replace(/-/g, '/');
}
async testCreateBubbleWithNoInvitationAndSendMessageAndRemoveAllMessages() {
let loginEmail = "vincent02@vbe.test.openrainbow.net";
let appointmentRoom = "testBot";
//let botappointment = "vincent01@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(async contact => {
if (contact) {
_logger.log("debug", "MAIN - [testCreateBubbles ] :: getContactByLoginEmail contact : ", contact);
let utc = new Date().toJSON().replace(/-/g, "/");
await rainbowSDK.bubbles.createBubble(appointmentRoom + utc + contact + "_" + 1, appointmentRoom + utc + "_" + 1).then(async (bubble: any) => {
_logger.log("debug", "MAIN - [testCreateBubbles ] :: createBubble request ok", bubble);
rainbowSDK.bubbles.inviteContactToBubble(contact, bubble, false, false).then(async () => {
let message = "message de **test** ";
await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", {
"type": "text/markdown",
"message": message + "_1"
}, "subject", undefined, UrgencyType.MIDDLE);
await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", {
"type": "text/markdown",
"message": message + "_2"
}, "subject", undefined, UrgencyType.MIDDLE);
// */
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForBubble(bubble);
let nbMsgToSend = 2;
let msgsSent = [];
for (let i = 1; i <= nbMsgToSend; i++) {
let now = new Date().getTime();
// Send message
let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "hello num " + i + " from node : " + now, "FR", null, "Le sujet de node : " + now);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - result sendMessageToConversation : ", msgSent);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
msgsSent.push(msgSent);
_logger.log("debug", "MAIN - testremoveAllMessages - wait for message to be in conversation : ", msgSent);
await Utils.until(() => {
return conversation.getMessageById(msgSent.id)!==undefined;
}, "Wait for message to be added in conversation num : " + i);
}
let conversationWithMessagesRemoved = await rainbowSDK.conversations.removeAllMessages(conversation);
_logger.log("debug", "MAIN - testremoveAllMessages - conversation with messages removed : ", conversationWithMessagesRemoved);
});
});
}
}); // */
// let utc = new Date().toJSON().replace(/-/g, '/');
}
async testCreateBubbleWithNoInvitationAndSendMessageAndsendCorrectedMessage() {
let loginEmail = "vincent02@vbe.test.openrainbow.net";
let appointmentRoom = "testBot";
//let botappointment = "vincent01@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(async contact => {
if (contact) {
_logger.log("debug", "MAIN - [testCreateBubbleWithNoInvitationAndSendMessageAndsendCorrectedMessage ] :: getContactByLoginEmail contact : ", contact);
let utc = new Date().toJSON().replace(/-/g, "/");
await rainbowSDK.bubbles.createBubble(appointmentRoom + utc + contact + "_" + 1, appointmentRoom + utc + "_" + 1).then(async (bubble: any) => {
_logger.log("debug", "MAIN - [testCreateBubbleWithNoInvitationAndSendMessageAndsendCorrectedMessage ] :: createBubble request ok", bubble);
rainbowSDK.bubbles.inviteContactToBubble(contact, bubble, false, false).then(async () => {
let message = "message de **test** ";
await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", {
"type": "text/markdown",
"message": message + "_1"
}, "subject", undefined, UrgencyType.MIDDLE);
// */
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForBubble(bubble);
_logger.log("debug", "MAIN - testCreateBubbleWithNoInvitationAndSendMessageAndsendCorrectedMessage - conversation.messages : ", conversation.messages);
_logger.log("debug", "MAIN - testCreateBubbleWithNoInvitationAndSendMessageAndsendCorrectedMessage - bubble.members : ", bubble.members);
if (conversation.messages?.length) {
let msgSentOrig = conversation.messages[0];
let msgStrModified = "Message updated.";
setTimeout(async () => {
_logger.log("debug", "MAIN - testCreateBubbleWithNoInvitationAndSendMessageAndsendCorrectedMessage - msgStrModified : ", msgStrModified);
let msgCorrectedSent = await rainbowSDK.conversations.sendCorrectedChatMessage(conversation, msgStrModified, msgSentOrig.id).catch((err) => {
_logger.log("error", "MAIN- testCreateBubbleWithNoInvitationAndSendMessageAndsendCorrectedMessage - error sendCorrectedChatMessage : ", err);
});
_logger.log("debug", "MAIN- testCreateBubbleWithNoInvitationAndSendMessageAndsendCorrectedMessage - msgCorrectedSent : ", msgCorrectedSent);
}, 5000);
}
});
});
}
}); // */
// let utc = new Date().toJSON().replace(/-/g, '/');
}
async testCreate50BubblesAndArchiveThem() {
let loginEmail = "vincent02@vbe.test.openrainbow.net";
let appointmentRoom = "testBot";
//let botappointment = "vincent01@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(async contact => {
if (contact) {
_logger.log("debug", "MAIN - [testCreateBubbles ] :: getContactByLoginEmail contact : ", contact);
for (let i = 0; i < 5; i++) {
let utc = new Date().toJSON().replace(/-/g, "/");
await rainbowSDK.bubbles.createBubble(appointmentRoom + utc + contact + "_" + i, appointmentRoom + utc + "_" + i).then(async (bubble: any) => {
_logger.log("debug", "MAIN - [testCreateBubbles ] :: createBubble request ok", bubble);
rainbowSDK.bubbles.inviteContactToBubble(contact, bubble, false, false).then(async () => {
let message = "message de test";
await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", {
"type": "text/markdown",
"message": message
}, "subject", undefined, UrgencyType.MIDDLE);
/*await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", { "type": "text/markdown", "message": message }, "subject");
await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", { "type": "text/markdown", "message": message }, "subject"); // */
rainbowSDK.bubbles.archiveBubble(bubble).then(() => {
let bubbles = rainbowSDK.bubbles.getAll();
_logger.log("debug", "MAIN testCreateBubbles - after archiveBubble - bubble : ", bubble, ", bubbles : ", bubbles);
}); // */
/*rainbowSDK.contacts.getContactByLoginEmail(botappointment).then(contactbot => {
rainbowSDK.bubbles.inviteContactToBubble(contactbot, bubble, false, false).then(function () {
setTimeout(() => { rainbowSDK.bubbles.promoteContactInBubble(contactbot, bubble).then(function (updatedBubble) {
rainbowSDK.conversations.getBubbleConversation(updatedBubble).then(conversation => {
_logger.log("debug", "MAIN - [start ] :: getBubbleConversation request ok", conversation);
});
})} , 2000);
});
}); // */
});
});
}
rainbowSDK.bubbles.getBubblesConsumption().then(consumption => {
if (consumption) {
_logger.log("debug", "MAIN - [testCreate50BubblesAndArchiveThem ] :: getBubblesConsumption consumption : ", consumption);
} else {
_logger.log("debug", "MAIN - [testCreate50BubblesAndArchiveThem ] :: getBubblesConsumption no consumption found.");
}
});
}
}); // */
// let utc = new Date().toJSON().replace(/-/g, '/');
}
async testCreate50BubblesAndActivateThem(nbCreateBubbles: number = 50) {
let loginEmail = "vincent02@vbe.test.openrainbow.net";
let appointmentRoom = "testBot";
//let botappointment = "vincent01@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(async contact => {
if (contact) {
_logger.log("debug", "MAIN - [testCreate50BubblesAndActivateThem ] :: getContactByLoginEmail contact : ", contact);
for (let i = 0; i < nbCreateBubbles; i++) {
let utc = new Date().toJSON().replace(/-/g, "/");
let bubbleName = appointmentRoom + "_" + utc + contact + "_" + i;
let timeBetweenCreate = 2000 + (getRandomInt(6) * 1000);
await setTimeoutPromised(timeBetweenCreate).then(async () => {
_logger.log("debug", "MAIN - [testCreate50BubblesAndActivateThem ] :: createBubble request ", bubbleName, " after : ", timeBetweenCreate, " seconds waiting.");
await rainbowSDK.bubbles.createBubble(bubbleName, "desc : " + appointmentRoom + "_" + utc + "_" + i).then(async (bubble: any) => {
_logger.log("debug", "MAIN - [testCreate50BubblesAndActivateThem ] :: createBubble request ok", bubble);
rainbowSDK.bubbles.inviteContactToBubble(contact, bubble, false, false).then(async () => {
let message = "message de test";
await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", {
"type": "text/markdown",
"message": message
}, "subject");
// await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", { "type": "text/markdown", "message": message }, "subject");
// await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", { "type": "text/markdown", "message": message }, "subject");
let bubbles = rainbowSDK.bubbles.getAll();
_logger.log("debug", "MAIN testCreate50BubblesAndActivateThem - after archiveBubble - bubble : ", bubble, ", bubbles : ", bubbles);
});
});
// */
});
}
}
}); // */
// let utc = new Date().toJSON().replace(/-/g, '/');
}
testCreateBubblesAndInviteContactsByEmails() {
let utc = new Date().toJSON().replace(/-/g, "/");
rainbowSDK.bubbles.createBubble("TestInviteByEmails" + utc, "TestInviteByEmails" + utc).then((bubble: any) => {
_logger.log("debug", "MAIN - [testCreateBubblesAndInviteContactsByEmails ] :: createBubble request ok", bubble);
let contacts = [];
let d = new Date();
let t = d.getTime();
let y = Math.round(t);
contacts.push("invited." + y + ".01@vbe.test.openrainbow.net");
contacts.push("invited." + y + ".02@vbe.test.openrainbow.net");
rainbowSDK.bubbles.inviteContactsByEmailsToBubble(contacts, bubble).then(async () => {
let message = "message de test";
await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", {
"type": "text/markdown",
"message": message
}, "subject", undefined, UrgencyType.MIDDLE);
});
});
// let utc = new Date().toJSON().replace(/-/g, '/');
}
testCreateBubblesAndInviteUnknownContactsByEmails() {
let utc = new Date().toJSON().replace(/-/g, "/");
rainbowSDK.bubbles.createBubble("TestInviteByEmails" + utc, "TestInviteByEmails" + utc).then((bubble: any) => {
_logger.log("debug", "MAIN - [testCreateBubblesAndInviteUnknownContactsByEmails ] :: createBubble request ok", bubble);
let contacts = [];
let d = new Date();
let t = d.getTime();
let y = Math.round(t);
contacts.push("vincent09@vbe.test.openrainbow.net");
rainbowSDK.bubbles.inviteContactsByEmailsToBubble(contacts, bubble).then(async () => {
/* let message = "message de test";
await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", {
"type": "text/markdown",
"message": message
}, "subject", undefined, UrgencyType.MIDDLE);
*/
await pause(45000);
let invitationsSent = await rainbowSDK.invitations.searchInvitationsSentFromServer("lastNotificationDate", "pending", "full", 50, 0, 1);
_logger.log("debug", "MAIN - [testCreateBubblesAndInviteUnknownContactsByEmails ] :: invitationsSent : ", invitationsSent);
rainbowSDK.contacts.getContactByLoginEmail("vincent09@vbe.test.openrainbow.net").then(async contact => {
if (contact) {
_logger.log("debug", "MAIN - [testCreateBubblesAndInviteUnknownContactsByEmails ] :: getContactByLoginEmail contact : ", contact);
}
});
});
rainbowSDK.bubbles.deleteBubble(bubble);
});
// let utc = new Date().toJSON().replace(/-/g, '/');
}
testCreateBubblesAndInviteVincentALEContactsByEmails() {
// To be used with vincent01 on COM (needs vincent.berder@al-enterprise.com to not be already in rooster).
let utc = new Date().toJSON().replace(/-/g, "/");
rainbowSDK.bubbles.createBubble("TestInviteByEmails" + utc, "TestInviteByEmails" + utc).then(async (bubble: any) => {
_logger.log("debug", "MAIN - [testCreateBubblesAndInviteVincentALEContactsByEmails ] :: createBubble request ok", bubble);
let contacts = [];
let d = new Date();
let t = d.getTime();
let y = Math.round(t);
let contactEmail = "vincent.berder@al-enterprise.com";
contacts.push(contactEmail);
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmail);
if (contact) {
await rainbowSDK.contacts.removeFromNetwork(contact);
}
await rainbowSDK.invitations.sendInvitationByEmail(contactEmail, "fr", "salut from rainbow bot.");
await rainbowSDK.bubbles.inviteContactsByEmailsToBubble(contacts, bubble).then(async () => {
/* let message = "message de test";
await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", {
"type": "text/markdown",
"message": message
}, "subject", undefined, UrgencyType.MIDDLE);
*/
await pause(15000);
let sentInvitations = await rainbowSDK.invitations.getAllSentInvitations();
_logger.log("debug", "MAIN - [testCreateBubblesAndInviteVincentALEContactsByEmails ] :: sentInvitations : ", sentInvitations);
let invitationsSent = await rainbowSDK.invitations.searchInvitationsSentFromServer("lastNotificationDate", "accepted", "full", 50, 0, 1);
_logger.log("debug", "MAIN - [testCreateBubblesAndInviteVincentALEContactsByEmails ] :: invitationsSent accepted : ", invitationsSent);
invitationsSent = await rainbowSDK.invitations.searchInvitationsSentFromServer("lastNotificationDate", "pending", "full", 50, 0, 1);
_logger.log("debug", "MAIN - [testCreateBubblesAndInviteVincentALEContactsByEmails ] :: invitationsSent pending : ", invitationsSent);
invitationsSent = await rainbowSDK.invitations.searchInvitationsSentFromServer("lastNotificationDate", "auto-accepted", "full", 50, 0, 1);
_logger.log("debug", "MAIN - [testCreateBubblesAndInviteVincentALEContactsByEmails ] :: invitationsSent auto-accepted : ", invitationsSent);
invitationsSent = await rainbowSDK.invitations.searchInvitationsSentFromServer("lastNotificationDate", "canceled", "full", 50, 0, 1);
_logger.log("debug", "MAIN - [testCreateBubblesAndInviteVincentALEContactsByEmails ] :: invitationsSent canceled : ", invitationsSent);
invitationsSent = await rainbowSDK.invitations.searchInvitationsSentFromServer("lastNotificationDate", "failed", "full", 50, 0, 1);
_logger.log("debug", "MAIN - [testCreateBubblesAndInviteVincentALEContactsByEmails ] :: invitationsSent failed : ", invitationsSent);
await rainbowSDK.contacts.getContactByLoginEmail(contactEmail).then(async contact => {
if (contact) {
_logger.log("debug", "MAIN - [testCreateBubblesAndInviteVincentALEContactsByEmails ] :: getContactByLoginEmail contact : ", contact);
}
});
});
//await rainbowSDK.bubbles.deleteBubble(bubble);
});
// let utc = new Date().toJSON().replace(/-/g, '/');
}
testCreateBubblesOnly() {
let utc = new Date().toJSON().replace(/-/g, "/");
rainbowSDK.bubbles.createBubble("TestInviteByEmails" + utc, "TestInviteByEmails" + utc).then((bubble: any) => {
_logger.log("debug", "MAIN - [testCreateBubblesOnly ] :: createBubble request ok", bubble);
});
// let utc = new Date().toJSON().replace(/-/g, '/');
}
async testNbCreateBubblesOnly(nbBubblesToCreate: number) {
let utc = new Date().toJSON().replace(/-/g, "/");
for (let i = 0; i < nbBubblesToCreate; i++) {
await rainbowSDK.bubbles.createBubble("bubbles_" + i + "_" + utc, "bubbles_" + i + "_" + utc).then((bubble: any) => {
_logger.log("debug", "MAIN - [testNbCreateBubblesOnly ] :: createBubble nb " + i + " ok : ", bubble.id);
});
await setTimeoutPromised(800);
// let utc = new Date().toJSON().replace(/-/g, '/');
}
}
testCreateBubble_closeAndDeleteBubble() {
let utc = new Date().toJSON().replace(/-/g, "/");
rainbowSDK.bubbles.createBubble("testCreateBubble_closeAndDeleteBubble" + utc, "testCreateBubble_closeAndDeleteBubble" + utc, true).then((bubble:any) => {
_logger.log("debug", "MAIN - [testCreateBubble_closeAndDeleteBubble ] :: createBubble request ok, bubble : ", bubble);
rainbowSDK.bubbles.closeAndDeleteBubble(bubble).then((result) => {
_logger.log("debug", "MAIN - [testCreateBubble_closeAndDeleteBubble ] :: closeAndDeleteBubble request ok, result : ", result);
});
});
// let utc = new Date().toJSON().replace(/-/g, '/');
}
async testsendMessageToBubbleJid_WithMention() {
let loginEmail = "vincent02@vbe.test.openrainbow.net";
let bubbleName = "testBotName_";
let bubbleDescription = "testBotDescription_";
let bubbleMessage = "testBotMessage_";
let bubbleMessageSubject = "testBotMessageSubject_";
//let botappointment = "vincent01@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(async (contact: any) => {
if (contact) {
_logger.log("debug", "MAIN - [testsendMessageToBubbleJid_WithMention ] :: getContactByLoginEmail contact : ", contact);
let utc: string = new Date().toJSON().replace(/-/g, "/");
bubbleName += utc + contact.name.value;
bubbleDescription += utc;
bubbleMessageSubject += utc;
await rainbowSDK.bubbles.createBubble(bubbleName, bubbleDescription, true).then(async (bubble: any) => {
_logger.log("debug", "MAIN - [testsendMessageToBubbleJid_WithMention ] :: createBubble request ok", bubble);
rainbowSDK.bubbles.inviteContactToBubble(contact, bubble, false, false, "").then(async () => {
let message = bubbleMessage + " @" + contact.name.value + " ";
let mentions = [];
mentions.push(contact.jid);
let content = {
message,
type: "text/markdown"
};
await setTimeoutPromised(20000);
//mentions
await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", content, undefined, contact.jid);
//await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", content, bubbleMessageSubject, contact.jid);
/*await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", {
"type": "text/markdown",
"message": message + " @" + contact.name.value
}, "subject", mentions); // */
});
});
}
}); // */
// let utc = new Date().toJSON().replace(/-/g, '/');
}
async testsendMultiFilesInBubbles() {
let that = this;
let file1 = null;
let file2 = null;
let file3 = null;
let strMessageFile1 = "message for the file 1";
let strMessageFile2 = "message for the file 2";
let strMessageFile3 = "message for the file 3";
file1 = new FileUpdated({
// path: "c:\\temp\\15777240.jpg", // path of file to read
path: "c:\\temp\\IMG_20131005_173918.jpg",
//path: "c:\\temp\\Rainbow_log_test.log", // path of file to read
jsdom: true,
async: false,
}); // */
// const stats : any = fs.statSync("c:\\temp\\IMG_20131005_173918.jpg");
_logger.log("debug", "MAIN - (testsendMultiFilesInBubbles) file1 : ", file1);
file2 = new FileUpdated({
// path: "c:\\temp\\15777240.jpg", // path of file to read
path: "src/lib/resources/unknownContact.png",
//path: "c:\\temp\\Rainbow_log_test.log", // path of file to read
jsdom: true,
async: false,
});
_logger.log("debug", "MAIN - (testsendMultiFilesInBubbles) file2 : ", file2);
file3 = new FileUpdated({
// path: "c:\\temp\\15777240.jpg", // path of file to read
path: "package.json",
//path: "c:\\temp\\Rainbow_log_test.log", // path of file to read
jsdom: true,
async: false,
});
_logger.log("debug", "MAIN - (testsendMultiFilesInBubbles) file3 : ", file3);
//let result = that.rainbowSDK.bubbles.getAllOwnedBubbles();
let bubbles = rainbowSDK.bubbles.getAllActiveBubbles();
_logger.log("debug", "MAIN - (testsendMultiFilesInBubbles) getAllActiveBubbles - bubbles : ", bubbles, "nb owned bulles : ", bubbles ? bubbles.length:0);
if (bubbles.length > 2) {
let bubblesActive = bubbles.filter((bubble) => {
return bubble.isActive===true;
});
for (let i = 0; i < bubblesActive.length; i++) {
let bubble = bubblesActive[i];
_logger.log("debug", "MAIN - (testsendMultiFilesInBubbles) iter - bubbles[", i, "] - bubble.name : ", bubble?.name, ", bubble?.id : ", bubble?.id, ", bubble?.jid : ", bubble?.jid, ", bubble?.status : ", bubble?.status, ", bubble?.isActive : ", bubble?.isActive);
}
/* if (bubble.isActive==false) {
rainbowSDK.presence.sendInitialBubblePresenceSync(bubble);
} // */
/*
rainbowSDK.fileStorage.uploadFileToBubble(bubblesActive[0], file1, strMessageFile1).then((result) => {
_logger.log("debug", "MAIN - (testsendMultiFilesInBubbles) uploadFileToBubble file1 - result : ", result);
});
rainbowSDK.fileStorage.uploadFileToBubble(bubblesActive[1], file2, strMessageFile2).then((result) => {
_logger.log("debug", "MAIN - (testsendMultiFilesInBubbles) uploadFileToBubble file1 - result : ", result);
});
// */
async function shareFile(id, file, strMessageFile) {
const bubble = await rainbowSDK.bubbles.getBubbleById(id);
// Share the file
rainbowSDK.fileStorage.uploadFileToBubble(bubble, file, strMessageFile).then((result) => {
_logger.log("debug", "MAIN - (testsendMultiFilesInBubbles) uploadFileToBubble file - result : ", result);
});
}
shareFile(bubblesActive[0]?.id, file1, strMessageFile1);
await pause(10000);
shareFile(bubblesActive[1]?.id, file2, strMessageFile2);
shareFile(bubblesActive[2]?.id, file3, strMessageFile3);
// */
}
//});
/*
private async sendMessageToBubbleRainbowClient(id: string, rainbowMessage: RainbowMessageDto, rainbowClient: typeof RainbowSDK): Promise {
try {
if (!rainbowClient) {
throw new NotFoundException('sendMessageToBubbleRainbowClient: No Rainbow client');
}
let res;
const bubble = await rainbowClient.bubbles.getBubbleById(id);
if (!bubble) {
throw new NotFoundException(`sendMessageToBubbleRainbowClient: Bubble ${id} not found`);
}
this.logger.debug(`sendMessageToBubbleRainbowClient - bubbleId: ${bubble?.id} - JID: ${bubble?.jid} name: ${bubble?.name}`);
const lang = "en"; // content language used
let message = rainbowMessage.message;
let content = (rainbowMessage.card ? { type: "form/json", message: rainbowMessage.card } : null);
if (rainbowMessage.file) {
message = message ? message : "Attached file";
const stats = fs.statSync(rainbowMessage.file.path);
// Construire l'objet avec les informations sur le fichier
const transformedFile = {
type: rainbowMessage.file.mimeType,
name: rainbowMessage.file.originalName,
path: rainbowMessage.file.path,
size: stats.size
};
res = await rainbowClient.fileStorage.uploadFileToBubble(bubble, transformedFile, message);
}
else {
message = message ? message : "Message";
let content = null;
if (rainbowMessage.card) {
// Update special characters of content message body
let adaptiveCard = rainbowMessage.card;
// List
adaptiveCard = adaptiveCard.replace(/\\\\n\\\\t-/g, '\\r\\t-');
// New line
adaptiveCard = adaptiveCard.replace(/\\\\n/g, '\\n\\n');
// Other
adaptiveCard = adaptiveCard.replace(/\\\\t/g, '\\t');
// Rainbow alternative text base content to send
content = {
type: "form/json",
message: adaptiveCard
};
}
//imsService.sendMessageToBubble(message, bubble, [lang], [content], [subject], mentions, urgency)
let urgency = (rainbowMessage.messageType ? rainbowMessage.messageType.toLowerCase() : null);
if (urgency === UrgencyType.HIGHT) {
urgency = UrgencyType.MIDDLE
}
res = await rainbowClient.im.sendMessageToBubble(message, bubble, lang, content, "", [], urgency);
}
return {
status: "SUCCESS",
msgId: res.id,
msgType: res.type
};
} catch (e: any) {
throw this.rainbowException(e);
}
}
// */
}
testgetConversationByDbId() {
let result = rainbowSDK.conversations.getConversationByDbId(undefined);
if (result) {
_logger.log("debug", "MAIN - [testgetConversationByDbId ] :: getConversationByDbId result : ", result);
} else {
_logger.log("debug", "MAIN - [testgetConversationByDbId ] :: getConversationByDbId no result found.");
}
}
testgetBubblesConsumption() {
rainbowSDK.bubbles.getBubblesConsumption().then(consumption => {
if (consumption) {
_logger.log("debug", "MAIN - [testgetBubblesConsumption ] :: getBubblesConsumption consumption : ", consumption);
} else {
_logger.log("debug", "MAIN - [testgetBubblesConsumption ] :: getBubblesConsumption no consumption found.");
}
});
}
async testgetAllOwnedNotArchivedBubbles() {
let bubblesNotArchived = await rainbowSDK.bubbles.getAllOwnedNotArchivedBubbles();
_logger.log("debug", "MAIN - testgetAllOwnedNotArchivedBubbles - bubblesNotArchived : ", bubblesNotArchived, ", nb bubblesNotArchived bulles : ", bubblesNotArchived ? bubblesNotArchived.length:0);
}
async testgetAllOwnedArchivedBubbles() {
let bubblesArchived = await rainbowSDK.bubbles.getAllOwnedArchivedBubbles();
_logger.log("debug", "MAIN - testgetAllOwnedArchivedBubbles - bubblesArchived : ", bubblesArchived, ", nb bubblesArchived bulles : ", bubblesArchived ? bubblesArchived.length:0);
}
async testgetAllOwnedBubblesArchivedBubbles() {
let result = rainbowSDK.bubbles.getAllOwnedBubbles();
_logger.log("debug", "MAIN - testgetAllOwnedBubblesArchivedBubbles getAllOwnedBubbles - result : ", result, ", nb owned bulles : ", result ? result.length:0);
async function asyncFilter(arr, predicate) {
const results = await Promise.all(arr.map(predicate));
return arr.filter((_v, index) => results[index]);
}
let bubblesNotArchived = await asyncFilter(result, async bubble => {
return (await rainbowSDK.bubbles.isBubbleArchived(bubble)===false);
});
_logger.log("debug", "MAIN - testgetAllOwnedBubblesArchivedBubbles - bubblesNotArchived : ", bubblesNotArchived, ", nb bubblesNotArchived bulles : ", bubblesNotArchived ? bubblesNotArchived.length:0);
let bubblesArchived = await asyncFilter(result, async bubble => {
return (await rainbowSDK.bubbles.isBubbleArchived(bubble)===true);
});
_logger.log("debug", "MAIN - testgetAllOwnedBubblesArchivedBubbles - bubblesArchived : ", bubblesArchived, ", nb bubblesArchived bulles : ", bubblesArchived ? bubblesArchived.length:0);
}
async testgetArchivedBubbles() {
let result = rainbowSDK.bubbles.getAllBubbles();
_logger.log("debug", "MAIN - testgetArchivedBubbles getAllOwnedBubbles - result : ", result, ", nb owned bulles : ", result ? result.length:0);
async function asyncFilter(arr, predicate) {
const results = await Promise.all(arr.map(predicate));
return arr.filter((_v, index) => results[index]);
}
let bubblesNotArchived = await asyncFilter(result, async bubble => {
return (await rainbowSDK.bubbles.isBubbleArchived(bubble)===false);
});
_logger.log("debug", "MAIN - testgetArchivedBubbles - bubblesNotArchived : ", bubblesNotArchived, ", nb bubblesNotArchived bulles : ", bubblesNotArchived ? bubblesNotArchived.length:0);
let bubblesArchived = await asyncFilter(result, async bubble => {
return (await rainbowSDK.bubbles.isBubbleArchived(bubble)===true);
});
_logger.log("debug", "MAIN - testgetArchivedBubbles - bubblesArchived : ", bubblesArchived, ", nb bubblesArchived bulles : ", bubblesArchived ? bubblesArchived.length:0);
}
testArchive10BubblesFromgetAllActiveBubbles() {
let bubbles = rainbowSDK.bubbles.getAllActiveBubbles();
_logger.log("debug", "MAIN - testArchive10BubblesFromgetAllActiveBubbles getAllActiveBubbles - nb owned bulles : ", bubbles ? bubbles.length:0);
for (let i = 0; i < 10; i++) {
rainbowSDK.bubbles.archiveBubble(bubbles[i]).then((result) => {
_logger.log("debug", "MAIN - testArchive10BubblesFromgetAllActiveBubbles archiveBubble - iter : ", i, ", result : ", result);
});
}
}
//utils.setTimeoutPromised(1).then(()=> {
// rainbowSDK.start();
//});
testBubblesArchived() {
/*let bubbles = rainbowSDK.bubbles.getAllBubbles();
bubbles.forEach((bubble) => {
_logger.log("debug", "MAIN - [testBubblesArchived ] :: bubble : ", bubble);
}); */
let bubbleTestestsed = "room_e290bece54c34d69aef68f831be0d309@muc.vberder-all-in-one-dev-1.opentouch.cloud";
rainbowSDK.bubbles.getBubbleByJid(bubbleTestestsed).then((bubbleFound) => {
_logger.log("debug", "MAIN - [testBubblesArchived ] :: bubbleFound : ", bubbleFound);
let utc = new Date().toJSON().replace(/-/g, "_");
let message = "message " + utc;
let jid = bubbleFound.jid;
let lang = "en";
let content = {"type": "text/markdown", "message": "**A message** for a _bubble_" + utc};
let subject = "subject";
rainbowSDK.im.sendMessageToBubbleJid(message, jid, lang, content, subject).then((result) => {
_logger.log("debug", "MAIN - testBubblesArchived sendMessageToBubbleJid result : ", JSON.stringify(result)); //logger.colors.green(JSON.stringify(result)));
}).catch((err) => {
_logger.log("error", "MAIN - testBubblesArchived error while sendMessageToBubbleJid result : ", err); //logger.colors.green(JSON.stringify(result)));
});
});
}
testgetBubbleUnknown() {
let bubbleTestestsed = "room_e290bece54c34d69aef68f831be0d309@muc.vberder-all-in-one-dev-1.opentouch.cloud";
rainbowSDK.bubbles.getBubbleByJid(bubbleTestestsed).then((bubbleFound) => {
_logger.log("debug", "MAIN - [testgetBubbleUnknown ] :: bubbleFound : ", bubbleFound);
}).catch((err) => {
_logger.log("error", "MAIN - testgetBubbleUnknown error while getBubbleByJid result : ", err); //logger.colors.green(JSON.stringify(result)));
});
}
async testSetBubbleCustomData() {
let that = this;
let activesBubbles = rainbowSDK.bubbles.getAllOwnedBubbles();
let bubble;
if (activesBubbles && activesBubbles.length > 0) {
//bubble = Object.assign(new Bubble(), activesBubbles[0]);
bubble = Bubble_1.Bubble.BubbleFactory("", rainbowSDK.contacts)(activesBubbles[0]);
}
//rainbowSDK.bubbles.getBubbleByJid("room_0f5e4e62e3ef4e43bc991dde6c53bc98@muc.vberder-all-in-one-dev-1.opentouch.cloud").then((bubble) => {
_logger.log("debug", "MAIN - testSetBubbleCustomData - bubble : ", bubble);
//that.rainbowSDK.bubbles.setBubbleCustomData(bubble, {});
let now = new Date().getTime();
await rainbowSDK.bubbles.setBubbleCustomData(bubble, {
"mypersonnaldata": "valueofmypersonnaldata",
"updateDate": now
});
/* await utils.setTimeoutPromised(3000);
activesBubbles = rainbowSDK.bubbles.getAllOwnedBubbles();
activesBubbles.forEach( ( bubbleIter )=> {
if (bubble && bubbleIter && bubbleIter.id === bubble.id) {
_logger.log("debug", "MAIN - testSetBubbleCustomData, Few seconds after sending the customData bubbleIter : ", bubbleIter);
}
});
// */
//});
}
async testSetBubbleName() {
let that = this;
let activesBubbles = rainbowSDK.bubbles.getAllOwnedBubbles();
let bubble;
if (activesBubbles && activesBubbles.length > 0) {
//bubble = Object.assign(new Bubble(), activesBubbles[0]);
bubble = await Bubble_1.Bubble.BubbleFactory(undefined, rainbowSDK.contacts)(activesBubbles[0]);
}
//rainbowSDK.bubbles.getBubbleByJid("room_0f5e4e62e3ef4e43bc991dde6c53bc98@muc.vberder-all-in-one-dev-1.opentouch.cloud").then((bubble) => {
_logger.log("debug", "MAIN - testSetBubbleName - bubble : ", bubble);
//that.rainbowSDK.bubbles.setBubbleCustomData(bubble, {});
let now = new Date().getTime();
let bubbleUpdated = await rainbowSDK.bubbles.setBubbleName(bubble, "TestName_" + now);
_logger.log("debug", "MAIN - testSetBubbleName, bubbleUpdated : ", bubbleUpdated);
}
async testSetBubbleTopic() {
let that = this;
let activesBubbles = rainbowSDK.bubbles.getAllOwnedBubbles();
let bubble;
if (activesBubbles && activesBubbles.length > 0) {
//bubble = Object.assign(new Bubble(), activesBubbles[0]);
bubble = await Bubble_1.Bubble.BubbleFactory(undefined, rainbowSDK.contacts)(activesBubbles[0]);
}
//rainbowSDK.bubbles.getBubbleByJid("room_0f5e4e62e3ef4e43bc991dde6c53bc98@muc.vberder-all-in-one-dev-1.opentouch.cloud").then((bubble) => {
_logger.log("debug", "MAIN - testSetBubbleTopic - bubble : ", bubble);
//that.rainbowSDK.bubbles.setBubbleCustomData(bubble, {});
let now = new Date().getTime();
let bubbleUpdated = await rainbowSDK.bubbles.setBubbleTopic(bubble, "TestTopic_" + now);
_logger.log("debug", "MAIN - testSetBubbleTopic, bubbleUpdated : ", bubbleUpdated);
}
async testDeletebubble() {
let bubbleId = "5cde768d424fb13186b9e6d4";
let bubble = await rainbowSDK.bubbles.getBubbleById(bubbleId);
rainbowSDK.bubbles.deleteBubble(bubble);
}
async testDeleteBubble() {
let bubbles = await rainbowSDK.bubbles.getAllOwnedBubbles();
_logger.log("debug", "MAIN - testDeleteBubble bubbles : ", bubbles); //logger.colors.green(JSON.stringify(result)));
rainbowSDK.bubbles.deleteBubble(bubbles[0]).then((resultDelete) => {
_logger.log("debug", "MAIN - testDeleteBubble resultDelete : ", resultDelete); //logger.colors.green(JSON.stringify(result)));
});
}
async testdeleteAllBubbles() {
//let bubbles = await rainbowSDK.bubbles.getAllOwnedBubbles();
//_logger.log("debug", "MAIN - testdeleteAllBubbles bubbles : ", bubbles); //logger.colors.green(JSON.stringify(result)));
rainbowSDK.bubbles.deleteAllBubbles();
}
async testDeleteBubble_ByBubbleId(bubbleId) {
let bubble = await rainbowSDK.bubbles.getBubbleById(bubbleId);
_logger.log("debug", "MAIN - testDeleteBubble_ByBubbleId, ", bubbleId, ", bubble : ", bubble); //logger.colors.green(JSON.stringify(result)));
rainbowSDK.bubbles.deleteBubble(bubble).then((resultDelete) => {
_logger.log("debug", "MAIN - testDeleteBubble_ByBubbleId resultDelete : ", resultDelete); //logger.colors.green(JSON.stringify(result)));
});
}
async testLeaveBubble() {
let bubbles = await rainbowSDK.bubbles.getAllBubbles();
_logger.log("debug", "MAIN - testLeaveBubble bubbles : ", bubbles); //logger.colors.green(JSON.stringify(result)));
for (const bubble of bubbles) {
if (bubble.name.indexOf("testBot")!= -1) {
_logger.log("debug", "MAIN - testLeaveBubble Found bubble.name : ", bubble.name, ", bubble.isActive : ", bubble.isActive); //logger.colors.green(JSON.stringify(result)));
if (bubble.ownerContact.id===rainbowSDK._core._rest.userId) {
// The bubble should be deleted instead of leaved
_logger.log("debug", "MAIN - testLeaveBubble Found bubble.name : ", bubble.name, ", The bubble should be deleted instead of leaved."); //logger.colors.green(JSON.stringify(result)));
rainbowSDK.bubbles.deleteBubble(bubble).then((resultDelete) => {
_logger.log("debug", "MAIN - testLeaveBubble resultDelete : ", resultDelete); //logger.colors.green(JSON.stringify(result)));
});
} else {
rainbowSDK.bubbles.leaveBubble(bubble).then((resultLeave) => {
_logger.log("debug", "MAIN - testLeaveBubble bubble.name : ", bubble.name, ", resultLeave : ", resultLeave); //logger.colors.green(JSON.stringify(result)));
});
// */
}
} else {
_logger.log("debug", "MAIN - testLeaveBubble NOT Found bubble.name : ", bubble.name, ", buibble.isActive : ", bubble.isActive); //logger.colors.green(JSON.stringify(result)));
}
}
}
testCreateBubblesAndSetTags() {
let utc = new Date().toJSON().replace(/-/g, "/");
rainbowSDK.bubbles.createBubble("testCreateBubblesAndSetTags" + utc, "testCreateBubblesAndSetTags" + utc).then((bubble: any) => {
_logger.log("debug", "MAIN - [testCreateBubblesAndSetTags ] :: createBubble request ok", bubble);
let tags: any = [{"tag": "Essai1DeTag"}, {"tag": "Essai2deTag"}];
rainbowSDK.bubbles.setTagsOnABubble(bubble, tags).then(async (result) => {
_logger.log("debug", "MAIN - [testCreateBubblesAndSetTags ] :: setTagsOnABubble result : ", result);
let tags = ["Essai1DeTag"];
rainbowSDK.bubbles.retrieveAllBubblesByTags(tags).then(bubbles => {
if (bubbles) {
_logger.log("debug", "MAIN - [testCreateBubblesAndSetTags ] :: bubbles : ", bubbles);
}
}).catch((err) => {
_logger.log("error", "MAIN - [testCreateBubblesAndSetTags ] :: error : ", err);
});
});
});
// let utc = new Date().toJSON().replace(/-/g, '/');
}
testretrieveAllBubblesByTags() {
//let tags = [{tag: "Essai1DeTag"}];
let tags = ["Essai1DeTag", "tagess2"];
let tags1 = ["Essai1DeTag"];
rainbowSDK.bubbles.retrieveAllBubblesByTags(tags1).then(bubbles => {
if (bubbles) {
_logger.log("debug", "MAIN - [testretrieveAllBubblesByTags ] :: one tag bubbles : ", bubbles);
}
}).catch((err) => {
_logger.log("error", "MAIN - [testretrieveAllBubblesByTags ] :: error : ", err);
});
rainbowSDK.bubbles.retrieveAllBubblesByTags(tags).then(bubbles => {
if (bubbles) {
_logger.log("debug", "MAIN - [testretrieveAllBubblesByTags ] :: two tags bubbles : ", bubbles);
}
}).catch((err) => {
_logger.log("error", "MAIN - [testretrieveAllBubblesByTags ] :: error : ", err);
});
}
testCreateBubblesAndSetTagsAndDeleteTags() {
let utc = new Date().toJSON().replace(/-/g, "/");
rainbowSDK.bubbles.createBubble("testCreateBubblesAndSetTagsAndDeleteTags" + utc, "testCreateBubblesAndSetTagsAndDeleteTags" + utc).then((bubble: any) => {
_logger.log("debug", "MAIN - [testCreateBubblesAndSetTagsAndDeleteTags ] :: createBubble request ok", bubble);
let tags: any = [{"tag": "Essai1DeTag"}, {"tag": "Essai2deTag"}];
rainbowSDK.bubbles.setTagsOnABubble(bubble, tags).then(async (result) => {
_logger.log("debug", "MAIN - [testCreateBubblesAndSetTagsAndDeleteTags ] :: setTagsOnABubble result : ", result);
let tags = ["Essai1DeTag"];
rainbowSDK.bubbles.retrieveAllBubblesByTags(tags).then(bubblesIdTags => {
if (bubblesIdTags) {
_logger.log("debug", "MAIN - [testCreateBubblesAndSetTagsAndDeleteTags ] :: bubblesIdTags : ", bubblesIdTags);
let bubblesTagsToDelete = [];
bubblesTagsToDelete.push({id: bubblesIdTags.rooms[0].roomId});
rainbowSDK.bubbles.deleteTagOnABubble(bubblesTagsToDelete, tags[0]).then(result => {
if (result) {
_logger.log("debug", "MAIN - [testCreateBubblesAndSetTagsAndDeleteTags ] :: deleteTagsOnABubble result : ", JSON.stringify(result));
}
}).catch((err) => {
_logger.log("error", "MAIN - [testCreateBubblesAndSetTagsAndDeleteTags ] :: error : ", err);
});
}
}).catch((err) => {
_logger.log("error", "MAIN - [testCreateBubblesAndSetTagsAndDeleteTags ] :: error : ", err);
});
});
});
// let utc = new Date().toJSON().replace(/-/g, '/');
}
testUploadFileToBubble() {
let that = this;
let file = null;
let strMessage = "message for the file";
file = new FileUpdated({
// path: "c:\\temp\\15777240.jpg", // path of file to read
path: "c:\\temp\\IMG_20131005_173918.jpg",
//path: "c:\\temp\\Rainbow_log_test.log", // path of file to read
jsdom: true,
async: false,
});
//let result = that.rainbowSDK.bubbles.getAllOwnedBubbles();
let result = rainbowSDK.bubbles.getAllActiveBubbles();
_logger.log("debug", "MAIN - (testUploadFileToBubble) getAllActiveBubbles - result : ", result, "nb owned bulles : ", result ? result.length:0);
if (result.length > 0) {
let bubble = result[0];
if (bubble.isActive==false) {
rainbowSDK.presence.sendInitialBubblePresenceSync(bubble);
}
// Share the file
return rainbowSDK.fileStorage.uploadFileToBubble(bubble, file, strMessage).then((result) => {
_logger.log("debug", "MAIN - (testUploadFileToBubble) uploadFileToBubble - result : ", result);
});
}
//});
}
test_refreshMemberAndOrganizerLists() {
//let result = that.rainbowSDK.bubbles.getAllOwnedBubbles();
let result = rainbowSDK.bubbles.getAllActiveBubbles();
_logger.log("debug", "test_refreshMemberAndOrganizerLists - getAllOwnedBubbles - result : ", result, "nb owned bulles : ", result ? result.length:0);
if (result.length > 0) {
let bubble = result[0];
// Share the file
rainbowSDK.bubbles.refreshMemberAndOrganizerLists(bubble);
_logger.log("debug", "MAIN - refreshMemberAndOrganizerLists - bubble : ", bubble);
}
}
testGetUsersFromBubble() {
//let result = that.rainbowSDK.bubbles.getAllOwnedBubbles();
let result = rainbowSDK.bubbles.getAllActiveBubbles();
_logger.log("debug", "MAIN - testGetUsersFromBubble getAllActiveBubbles - result : ", result, "nb owned bulles : ", result ? result.length:0);
if (result.length > 0) {
let bubble = result[0];
// Share the file
return rainbowSDK.bubbles.getUsersFromBubble(bubble, undefined).then((users) => {
_logger.log("debug", "MAIN - testGetUsersFromBubble - users : ", users);
});
}
//});
}
testGetUsersFullFromBubble() {
//let result = that.rainbowSDK.bubbles.getAllOwnedBubbles();
let result = rainbowSDK.bubbles.getAllActiveBubbles();
_logger.log("debug", "MAIN - testGetUsersFromBubble getAllActiveBubbles - result : ", result, "nb owned bulles : ", result ? result.length:0);
if (result.length > 0) {
let bubble = result[0];
// Share the file
return rainbowSDK.bubbles.getUsersFromBubble(bubble, {"format": "full"}).then((users) => {
_logger.log("debug", "MAIN - testGetUsersFromBubble - users : ", users);
});
}
//});
}
async testupdateAvatarForBubble() {
try {
// vincent00 on .net use bubble : testBotDescription_2024/02/07T15:18:39.669Z
/*let result = rainbowSDK.bubbles.getAllOwnedBubbles();
_logger.log("debug", "MAIN - testupdateAvatarForBubble - result : ", result, "nb owned bulles : ", result ? result.length:0);
rainbowSDK.bubbles.updateAvatarForBubble("c:\\temp\\IMG_20131005_173918.jpg", result[0]);
// */
let bubbles = rainbowSDK.bubbles.getAllActiveBubbles();
_logger.log("debug", "MAIN - testupdateAvatarForBubble - getAllActiveBubbles bubble.length : ", bubbles ? bubbles.length:0);
let bubble = bubbles.find(element => element.name==="testBotName_2024/02/07T15:18:39.669ZGuestUser")
_logger.log("debug", "MAIN - testupdateAvatarForBubble - bubble \"testBotName_2024/02/07T15:18:39.669ZGuestUser\" : ", bubble);
let resultOfUpdateAvatarBubble = await rainbowSDK.bubbles.updateAvatarForBubble("c:\\temp\\IMG_20131005_173918.jpg", bubble);
//let resultOfUpdateAvatarBubble = await rainbowSDK.bubbles.updateAvatarForBubble("c:\\temp\\infini.png", bubble);
_logger.log("debug", "MAIN - testupdateAvatarForBubble - resultOfUpdateAvatarBubble : ", resultOfUpdateAvatarBubble);
} catch (err) {
_logger.log("debug", "MAIN - testupdateAvatarForBubble - CATCH Error !!! error : ", err);
}
}
testgetAllOwnedBubbles() {
let result = rainbowSDK.bubbles.getAllOwnedBubbles();
_logger.log("debug", "MAIN - testgetAllOwnedBubbles - result : ", result, "nb owned bulles : ", result ? result.length:0);
}
testdeleteAllMessagesInRoomConversationFromModerator() {
// to be used with vincent02 on .NET with bubble "test".
let result = rainbowSDK.bubbles.getAllOwnedBubbles();
_logger.log("debug", "MAIN - testdeleteAllMessagesInRoomConversationFromModerator getAllOwnedBubbles - result : ", result, "nb owned bulles : ", result ? result.length:0);
if (result && result.length > 0 && result[0].name=="test") {
let resultDelete = rainbowSDK.bubbles.deleteAllMessagesInBubble(result[0], undefined);
_logger.log("debug", "MAIN - testdeleteAllMessagesInRoomConversationFromModerator - resultDelete : ", resultDelete);
}
}
async testdeleteAllMessagesInRoomConversationFromMember() {
// to be used with vincent01 on .NET with bubble "test".
//let listOfBubblesJIDs :any = await rainbowSDK.bubbles.getAllBubblesJidsOfAUserIsMemberOf(true, false, false, 100, 0, undefined, 1);
// @ts-ignore
let listOfBubblesJIDs: any = await rainbowSDK.bubbles.getAllBubblesJidsOfAUserIsMemberOf();
_logger.log("debug", "MAIN - testdeleteAllMessagesInRoomConversationFromMember getAllBubblesJidsOfAUserIsMemberOf - listOfBubblesJIDs : ", listOfBubblesJIDs);
for (let i = 0; i < listOfBubblesJIDs.data.length; i++) {
let bubble = await rainbowSDK.bubbles.getBubbleByJid(listOfBubblesJIDs.data[i]);
//logger.log("debug", "MAIN - testdeleteAllMessagesInRoomConversationFromMember bubble : ", bubble);
if (bubble && bubble.name=="test") {
_logger.log("debug", "MAIN - testdeleteAllMessagesInRoomConversationFromMember bubble name is test, so can delete all messages in bubble : ", bubble);
let resultDelete = rainbowSDK.bubbles.deleteAllMessagesInBubble(bubble, undefined);
_logger.log("debug", "MAIN - testdeleteAllMessagesInRoomConversationFromMember - resultDelete : ", resultDelete);
}
}
}
async testdeleteAllMessagesInRoomConversationFromMe() {
// to be used with vincent01 on .NET with bubble "test".
let listOfBubblesJIDs: any = await rainbowSDK.bubbles.getAllBubblesJidsOfAUserIsMemberOf(true, false, false, 100, 0, undefined, 1);
_logger.log("debug", "MAIN - testdeleteAllMessagesInRoomConversationFromMe getAllBubblesJidsOfAUserIsMemberOf - listOfBubblesJIDs : ", listOfBubblesJIDs);
for (let i = 0; i < listOfBubblesJIDs.data.length; i++) {
let bubble = await rainbowSDK.bubbles.getBubbleByJid(listOfBubblesJIDs.data[i]);
//logger.log("debug", "MAIN - testdeleteAllMessagesInRoomConversationFromMember bubble : ", bubble);
if (bubble && bubble.name=="test") {
_logger.log("debug", "MAIN - testdeleteAllMessagesInRoomConversationFromMe bubble name is test, so can delete all messages in bubble : ", bubble);
let resultDelete = rainbowSDK.bubbles.deleteAllMessagesInBubble(bubble, connectedUser.jid);
_logger.log("debug", "MAIN - testdeleteAllMessagesInRoomConversationFromMe - resultDelete : ", resultDelete);
}
}
}
async testdeleteAllMessagesInRoomConversationFromMemberToContact() {
// to be used with vincent01 on .NET with bubble "test".
let loginEmail = "vincent02@vbe.test.openrainbow.net"
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(async contact => {
let listOfBubblesJIDs: any = await rainbowSDK.bubbles.getAllBubblesJidsOfAUserIsMemberOf(true, false, false, 100, 0, undefined, 1);
_logger.log("debug", "MAIN - testdeleteAllMessagesInRoomConversationFromMemberToContact getAllBubblesJidsOfAUserIsMemberOf - listOfBubblesJIDs : ", listOfBubblesJIDs);
for (let i = 0; i < listOfBubblesJIDs.data.length; i++) {
let bubble = await rainbowSDK.bubbles.getBubbleByJid(listOfBubblesJIDs.data[i]);
//logger.log("debug", "MAIN - testdeleteAllMessagesInRoomConversationFromMember bubble : ", bubble);
if (bubble && bubble.name=="test") {
_logger.log("debug", "MAIN - testdeleteAllMessagesInRoomConversationFromMemberToContact bubble name is test, so can delete all messages in bubble : ", bubble);
let resultDelete = rainbowSDK.bubbles.deleteAllMessagesInBubble(bubble, contact.jid);
_logger.log("debug", "MAIN - testdeleteAllMessagesInRoomConversationFromMemberToContact - resultDelete : ", resultDelete);
}
}
});
}
async testdeleteAllMessagesInRoomConversationFromContactNotInBubble() {
// to be used with vincent03 on .NET with bubble "test" jid room_f8780e1fabd3449788896b73cab8bbbc@muc.openrainbow.net.
let bubbleJid = "room_f8780e1fabd3449788896b73cab8bbbc@muc.openrainbow.net";
let resultDelete = rainbowSDK._core._xmpp.deleteAllMessagesInRoomConversation(bubbleJid, undefined);
_logger.log("debug", "MAIN - testdeleteAllMessagesInRoomConversationFromContactNotInBubble - resultDelete : ", resultDelete);
}
async testdeleteAllMessagesInRoomConversationFromContactNotInBubble2() {
// to be used with vincent01 on .NET with bubble "test".
let bubbleJid = "room_f8780e1fabd3449788896b73cab8bbbc@muc.openrainbow.net";
let bubble = await rainbowSDK.bubbles.getBubbleByJid(bubbleJid);
//logger.log("debug", "MAIN - testdeleteAllMessagesInRoomConversationFromMember bubble : ", bubble);
if (bubble && bubble.name=="test") {
_logger.log("debug", "MAIN - testdeleteAllMessagesInRoomConversationFromContactNotInBubble2 bubble name is test, so can delete all messages in bubble : ", bubble);
let resultDelete = rainbowSDK.bubbles.deleteAllMessagesInBubble(bubble, undefined);
_logger.log("debug", "MAIN - testdeleteAllMessagesInRoomConversationFromContactNotInBubble2 - resultDelete : ", resultDelete);
}
}
async testgetAvatarFromBubble() {
let result = rainbowSDK.bubbles.getAllOwnedBubbles();
_logger.log("debug", "MAIN - testgetAvatarFromBubble - result : ", result, "nb owned bulles : ", result ? result.length:0);
let avatarBlob = await rainbowSDK.bubbles.getAvatarFromBubble(result[0]);
_logger.log("debug", "MAIN - testgetAvatarFromBubble - avatarBlob : ", avatarBlob);
}
async testgetABubblePublicLinkAsModerator() {
let result = rainbowSDK.bubbles.getAllOwnedBubbles();
_logger.log("debug", "MAIN - testgetABubblePublicLinkAsModerator - result : ", result, "nb owned bulles : ", result ? result.length:0);
let bubblePublicLink = await rainbowSDK.bubbles.getABubblePublicLinkAsModerator(result[0].id);
_logger.log("debug", "MAIN - testgetABubblePublicLinkAsModerator - bubblePublicLink : ", bubblePublicLink);
}
async testgetAllBubblesJidsOfAUserIsMemberOf() {
let result = rainbowSDK.bubbles.getAllOwnedBubbles();
_logger.log("debug", "MAIN - testgetAllBubblesJidsOfAUserIsMemberOf - result : ", result, "nb owned bulles : ", result ? result.length:0);
let result2 = await rainbowSDK.bubbles.getAllBubblesJidsOfAUserIsMemberOf();
_logger.log("debug", "MAIN - testgetAllBubblesJidsOfAUserIsMemberOf - result2 : ", result2);
}
async testgetAllBubblesVisibleByTheUser() {
let result = rainbowSDK.bubbles.getAllOwnedBubbles();
_logger.log("debug", "MAIN - testgetAllBubblesVisibleByTheUser - result : ", result, "nb owned bulles : ", result ? result.length:0);
let result2 = await rainbowSDK.bubbles.getAllBubblesVisibleByTheUser();
_logger.log("debug", "MAIN - testgetAllBubblesVisibleByTheUser - result2 : ", result2);
}
async testgetBubblesDataByListOfBubblesIds() {
let result = rainbowSDK.bubbles.getAllOwnedBubbles();
_logger.log("debug", "MAIN - testgetBubblesDataByListOfBubblesIds - result : ", result, "nb owned bulles : ", result ? result.length:0);
let bubblesIds = [];
for (let i = 0; i < result.length; i++) {
bubblesIds.push(result[i].id);
}
_logger.log("debug", "MAIN - testgetBubblesDataByListOfBubblesIds - bubblesIds : ", bubblesIds);
let result2 = await rainbowSDK.bubbles.getBubblesDataByListOfBubblesIds(bubblesIds);
_logger.log("debug", "MAIN - testgetBubblesDataByListOfBubblesIds - result2 : ", result2);
}
async testraiseerror_sendInitialAllBubblePresence_mock() {
let fullJid = rainbowSDK._core._xmpp.fullJid;
let domain = xmppUtils.getDomainFromFullJID(fullJid);
let muc = "muc." + domain + "/" + fullJid;
let stanzamocked = "" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"Access denied by service policy" +
"" +
"";
await rainbowSDK._core._xmpp.mockStanza(stanzamocked);
}
//endregion Bubbles
//region Conference V1
testGetAllConferences() {
/* rainbowSDK.bubbles.retrieveConferences(undefined, false, false).then((conferences) => {
_logger.log("debug", "MAIN - retrieveAllConferences : ", conferences);
}); // */
}
testaddPSTNParticipantToConference() {
let that = this;
let bubbles = rainbowSDK.bubbles.getAllOwnedBubbles();
if (bubbles.length > 0) {
let bubble = bubbles[0];
rainbowSDK.bubbles.addPSTNParticipantToConference(bubble.id, "0622413746", "FRA").then(async function (result) {
_logger.log("debug", "MAIN - testaddPSTNParticipantToConference - result : ", result);
}).catch((err) => {
_logger.log("warn", "MAIN - testaddPSTNParticipantToConference - err : ", err);
});
}
}
/*
async testaskConferenceSnapshot() {
let allConferences: [any] = await rainbowSDK.bubbles.retrieveConferences(undefined, false, false).then((conferences) => {
_logger.log("debug", "MAIN - testaskConferenceSnapshot all conferences : ", conferences);
return conferences;
});
try {
if (allConferences && allConferences.length > 0) {
let conferenceInfo: ConferenceSession = await rainbowSDK.bubbles.askConferenceSnapshot(allConferences[0].id);
_logger.log("debug", "MAIN - testaskConferenceSnapshot conference : ", conferenceInfo);
}
} catch (err) {
_logger.log("debug", "MAIN - testaskConferenceSnapshot from existing conference Error : ", err);
}
try {
let conferenceInfo: ConferenceSession = await rainbowSDK.bubbles.askConferenceSnapshot("XX7831e66d88e93afaa37cXX");
_logger.log("debug", "MAIN - testaskConferenceSnapshot conference : ", conferenceInfo);
} catch (err) {
_logger.log("debug", "MAIN - testaskConferenceSnapshot non existing conference Error : ", err);
}
}
testStartConference() {
let webrtcConferenceId = rainbowSDK.bubbles.getWebRtcConfEndpointId();
_logger.log("debug", "MAIN - testStartConference, webrtcConferenceId : ", webrtcConferenceId);
let bubbles = rainbowSDK.bubbles.getAllOwnedBubbles();
let myBubbleToConferenced = null;
for (const bubble of bubbles) {
if (bubble.name==="BullesOfTests") {
_logger.log("debug", "MAIN - testStartConference found BullesOfTests bubble : ", bubble);
myBubbleToConferenced = bubble;
}
}
rainbowSDK.bubbles.conferenceStart(myBubbleToConferenced).then((result) => {
_logger.log("debug", "MAIN - testStartConference, result : ", result);
});
}
testjoinConferenceV2(bubbleId : string = "621c9f61dd692c3dd3131869") {
rainbowSDK.bubbles.getBubbleById(bubbleId).then((bubble) => {
_logger.log("debug", "MAIN - testjoinConferenceV2 - found bubble.id : ", bubble.id);
//rainbowSDK.bubbles.getBubbleById("5bbb1f5fd6e166709a42d7c7").then((bubble) => {
rainbowSDK.bubbles.joinConferenceV2(bubble.id).then((result) => {
//let bubbles = rainbowSDK.bubbles.getAll();
_logger.log("debug", "MAIN - testjoinConferenceV2 - after joinConference - bubble : ", bubble, ", result : ", result);
});
});
// rainbowSDK.contacts.getContactByLoginEmail(physician.loginEmail).then(contact => {
// if (contact) {
// _logger.log("debug", "MAIN - [testCreateBubblesAndJoinConference ] :: getContactByLoginEmail contact : ", contact);
// physician.name = contact.title + " " + contact.firstname + " " + contact.lastname;
// physician.contact = contact;
// for (let i = 0; i < 1; i++) {
// let utc = new Date().toJSON().replace(/-/g, "/");
// rainbowSDK.bubbles.createBubble(physician.appointmentRoom + utc + contact + "_" + i, physician.appointmentRoom + utc + "_" + i).then((bubble) => {
// _logger.log("debug", "MAIN - [testCreateBubblesAndJoinConference ] :: createBubble request ok", bubble);
// rainbowSDK.bubbles.inviteContactToBubble(contact, bubble, false, false).then(async() => {
// await Utils.setTimeoutPromised(600);
// let message = "message de test";
// //await rainbowSDK.im.sendMessageToBubbleJid(message, bubble.jid, "en", { "type": "text/markdown", "message": message }, "subject");
// rainbowSDK.bubbles.joinConference(bubble).then((result) => {
// //let bubbles = rainbowSDK.bubbles.getAll();
// _logger.log("debug", "MAIN testCreateBubblesAndJoinConference - after joinConference - bubble : ", bubble, ", result : ", result);
// });
// });
// });
// }
// }
// });
// let utc = new Date().toJSON().replace(/-/g, '/');
}
// */
//endregion Conference V1
//region Guests
async testCreateAGuestAndAddItToACreatedBubble() {
let loginEmail = "vincentGuest+" + genererCode() + "@vbe.test.openrainbow.net";
let password = "Password_123"
let bubbleName = "testBotName_";
let bubbleDescription = "testBotDescription_";
let bubbleMessage = "testBotMessage_";
let bubbleMessageSubject = "testBotMessageSubject_";
let utc: string = new Date().toJSON().replace(/-/g, "/");
bubbleName += utc + "GuestUser";
bubbleDescription += utc;
bubbleMessageSubject += utc;
_logger.log("debug", "MAIN - [testCreateAGuestAndAddItToACreatedBubble ] :: loginEmail : ", loginEmail);
await rainbowSDK.bubbles.createBubble(bubbleName, bubbleDescription, false).then(async (bubble: any) => {
_logger.log("debug", "MAIN - [testCreateAGuestAndAddItToACreatedBubble ] :: createBubble request ok : ", bubble);
rainbowSDK.bubbles.createPublicUrl(bubble).then(async (publicUrl) => {
_logger.log("debug", "MAIN - [testCreateAGuestAndAddItToACreatedBubble ] :: createPublicUrl publicUrl : ", publicUrl);
rainbowSDK.bubbles.registerGuestForAPublicURL(publicUrl, loginEmail, password, "VincentGuest", "berderGuest", "VBGuest", "Mr.", "DevGuest", "ITGuest").then(async (result) => {
_logger.log("debug", "MAIN - [testCreateAGuestAndAddItToACreatedBubble ] :: registerGuestForAPublicURL result : ", result);
});
});
});
}
async testCleanAGuest() {
let loginEmail = "vincentGuest@vbe.test.openrainbow.net";
let password = "Password_123"
let bubbleName = "testBotName_";
let bubbleDescription = "testBotDescription_";
let bubbleMessage = "testBotMessage_";
let bubbleMessageSubject = "testBotMessageSubject_";
let utc: string = new Date().toJSON().replace(/-/g, "/");
bubbleName += utc + "GuestUser";
bubbleDescription += utc;
bubbleMessageSubject += utc;
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(contact => {
if (contact) {
_logger.log("debug", "MAIN - [testCleanAGuest ] :: getContactByLoginEmail contact : ", contact);
rainbowSDK.admin.deleteUser(contact.id).then(async (result) => {
_logger.log("debug", "MAIN - [testCleanAGuest ] :: deleteUser result : ", result);
});
}
});
}
//endregion Guests
async testsendChatMessageWithContentAdaptiveCard() {
let that = this;
//let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
let contactEmailToSearch = "vincent00@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let msgsSent = [];
let now = new Date().getTime();
let formattedMessage = that.formatCard2("original msg : ", now);
let content = {
"type": "form/json",
"message": formattedMessage
}
/*
{
"title": "Report an issue",
"issueList": [
{
"category": "Rainbow",
"tag": "Sounds metallic",
"idcategory": "idcategory",
"idtag": "idtag",
"reported": "false"
},
{
"category": "Rainbow",
"tag": "Sounds low",
"idcategory": "idcategory1",
"idtag": "idtag1",
"reported": "true"
}
]
}
*/
// Send message
let msgSent = await rainbowSDK.im.sendMessageToConversation(conversation, "Welcome to the MCQ Test", "en", content, undefined);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - result sendMessageToConversation : ", msgSent);
//_logger.log("debug", "MAIN - testsendCorrectedChatMessage - conversation : ", conversation);
msgsSent.push(msgSent);
_logger.log("debug", "MAIN - testsendChatMessageWithContentAdaptiveCard - wait for message to be in conversation : ", msgSent);
await until(() => {
return conversation.getMessageById(msgSent.id)!==undefined;
}, "Wait for message to be added in conversation.");
let msgSentOrig = msgsSent.slice(-1)[0];
let msgStrModified = "modified : " + msgSentOrig.content;
_logger.log("debug", "MAIN - testsendChatMessageWithContentAdaptiveCard - msgStrModified : ", msgStrModified);
}
async testLoic() {
let alternateContent = null;
let msg: any = {};
msg.template = "{\n" +
" \"type\": \"AdaptiveCard\",\n" +
" \"backgroundImage\": \"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22600%22%20height%3D%22600%22%3E%0A%20%20%3Crect%20fill%3D%22white%22%20x%3D%220%25%22%20y%3D%220%25%22%20width%3D%22100%25%22%20height%3D%22100%25%22%20%2F%3E%0A%3C%2Fsvg%3E%0A\",\n" +
" \"body\": [\n" +
" {\n" +
" \"type\": \"TextBlock\",\n" +
" \"size\": \"medium\",\n" +
" \"weight\": \"bolder\",\n" +
" \"text\": \"${title}\",\n" +
" \"spacing\": \"large\",\n" +
" \"height\": \"stretch\",\n" +
" \"maxLines\": 1,\n" +
" \"separator\": true\n" +
" },\n" +
" {\n" +
" \"type\": \"Container\",\n" +
" \"spacing\": \"none\",\n" +
" \"items\": [\n" +
" {\n" +
" \"type\": \"ColumnSet\",\n" +
" \"columns\": [\n" +
" {\n" +
" \"type\": \"Column\",\n" +
" \"items\": [\n" +
" {\n" +
" \"type\": \"TextBlock\",\n" +
" \"wrap\": true\n" +
" }\n" +
" ],\n" +
" \"width\": \"31px\",\n" +
" \"spacing\": \"none\"\n" +
" },\n" +
" {\n" +
" \"type\": \"Column\",\n" +
" \"items\": [\n" +
" {\n" +
" \"type\": \"TextBlock\",\n" +
" \"weight\": \"Bolder\",\n" +
" \"text\": \"CATEGORY\",\n" +
" \"wrap\": true\n" +
" }\n" +
" ],\n" +
" \"width\": \"150px\",\n" +
" \"spacing\": \"none\",\n" +
" \"verticalContentAlignment\": \"Bottom\",\n" +
" \"minHeight\": \"20px\"\n" +
" },\n" +
" {\n" +
" \"type\": \"Column\",\n" +
" \"spacing\": \"none\",\n" +
" \"items\": [\n" +
" {\n" +
" \"type\": \"TextBlock\",\n" +
" \"weight\": \"Bolder\",\n" +
" \"text\": \"ISSUE\",\n" +
" \"wrap\": true\n" +
" }\n" +
" ],\n" +
" \"width\": \"150px\",\n" +
" \"horizontalAlignment\": \"Left\",\n" +
" \"verticalContentAlignment\": \"Bottom\"\n" +
" },\n" +
" {\n" +
" \"type\": \"Column\",\n" +
" \"items\": [\n" +
" {\n" +
" \"type\": \"TextBlock\",\n" +
" \"weight\": \"Bolder\",\n" +
" \"wrap\": true\n" +
" }\n" +
" ],\n" +
" \"width\": \"66px\"\n" +
" }\n" +
" ],\n" +
" \"horizontalAlignment\": \"Left\",\n" +
" \"minHeight\": \"30px\"\n" +
" }\n" +
" ]\n" +
" },\n" +
" {\n" +
" \"type\": \"Image\",\n" +
" \"url\": \"https://st-exupery.ale-custo.com/greenbot/line.svg\",\n" +
" \"height\": \"15px\",\n" +
" \"spacing\": \"none\",\n" +
" \"width\": \"383px\"\n" +
" },\n" +
" {\n" +
" \"$data\": \"${issueList}\",\n" +
" \"type\": \"Container\",\n" +
" \"items\": [\n" +
" {\n" +
" \"type\": \"ColumnSet\",\n" +
" \"columns\": [\n" +
" {\n" +
" \"type\": \"Column\",\n" +
" \"items\": [\n" +
" {\n" +
" \"id\": \"${idcategory};${idTag}\",\n" +
" \"type\": \"Input.Toggle\",\n" +
" \"title\": \"\",\n" +
" \"value\": \"${reported}\",\n" +
" \"spacing\": \"none\"\n" +
" }\n" +
" ],\n" +
" \"width\": \"31px\",\n" +
" \"spacing\": \"none\",\n" +
" \"verticalContentAlignment\": \"Center\"\n" +
" },\n" +
" {\n" +
" \"type\": \"Column\",\n" +
" \"items\": [\n" +
" {\n" +
" \"type\": \"TextBlock\",\n" +
" \"text\": \"${category}\",\n" +
" \"wrap\": true\n" +
" }\n" +
" ],\n" +
" \"width\": \"150px\",\n" +
" \"spacing\": \"none\",\n" +
" \"verticalContentAlignment\": \"Center\"\n" +
" },\n" +
" {\n" +
" \"type\": \"Column\",\n" +
" \"items\": [\n" +
" {\n" +
" \"type\": \"TextBlock\",\n" +
" \"text\": \"${tag}\",\n" +
" \"wrap\": true\n" +
" }\n" +
" ],\n" +
" \"width\": \"150px\",\n" +
" \"spacing\": \"none\",\n" +
" \"verticalContentAlignment\": \"Center\"\n" +
" },\n" +
" {\n" +
" \"type\": \"Column\",\n" +
" \"items\": [\n" +
" {\n" +
" \"type\": \"Image\",\n" +
" \"$when\": \"${reported=='true'}\",\n" +
" \"url\": \"https://st-exupery.ale-custo.com/greenbot/Off.svg\",\n" +
" \"height\": \"19px\"\n" +
" },\n" +
" {\n" +
" \"type\": \"Image\",\n" +
" \"$when\": \"${reported=='false'}\",\n" +
" \"url\": \"https://st-exupery.ale-custo.com/greenbot/Running.svg\",\n" +
" \"height\": \"19px\"\n" +
" }\n" +
" ],\n" +
" \"width\": \"150px\",\n" +
" \"verticalContentAlignment\": \"Center\",\n" +
" \"horizontalAlignment\": \"Left\",\n" +
" \"spacing\": \"none\"\n" +
" },\n" +
" {\n" +
" \"type\": \"Column\",\n" +
" \"spacing\": \"none\",\n" +
" \"items\": [\n" +
" {\n" +
" \"type\": \"ActionSet\",\n" +
" \"actions\": [\n" +
" {\n" +
" \"type\": \"Action.Submit\",\n" +
" \"$when\": \"${reported=='false'}\",\n" +
" \"title\": \"Report\",\n" +
" \"style\": \"destructive\",\n" +
" \"data\": {\n" +
" \"idCategory\": \"${idcategory}\",\n" +
" \"idTag\": \"${idtag}\",\n" +
" \"rainbow\": {\n" +
" \"text\": \"#report ${category} ${tag}\",\n" +
" \"type\": \"messageBack\",\n" +
" \"value\": {\n" +
" \"response\": \"report\",\n" +
" \"idCategory\": \"${idcategory}\",\n" +
" \"idTag\": \"${idtag}\"\n" +
" }\n" +
" }\n" +
" }\n" +
" },\n" +
" {\n" +
" \"type\": \"Action.Submit\",\n" +
" \"$when\": \"${reported=='true'}\",\n" +
" \"title\": \"Cancel\",\n" +
" \"style\": \"destructive\",\n" +
" \"data\": {\n" +
" \"idCategory\": \"${idcategory}\",\n" +
" \"idTag\": \"${idtag}\",\n" +
" \"rainbow\": {\n" +
" \"text\": \"#cancelreporting ${category} ${tag}\",\n" +
" \"type\": \"messageBack\",\n" +
" \"value\": {\n" +
" \"response\": \"cancelreporting\",\n" +
" \"idCategory\": \"${idcategory}\",\n" +
" \"idTag\": \"${idtag}\"\n" +
" }\n" +
" }\n" +
" }\n" +
" }\n" +
" ]\n" +
" }\n" +
" ],\n" +
" \"width\": \"66px\"\n" +
" }\n" +
" ]\n" +
" },\n" +
" {\n" +
" \"type\": \"Image\",\n" +
" \"url\": \"https://st-exupery.ale-custo.com/greenbot/line.svg\",\n" +
" \"spacing\": \"none\",\n" +
" \"height\": \"15px\",\n" +
" \"width\": \"383px\"\n" +
" }\n" +
" ],\n" +
" \"spacing\": \"none\"\n" +
" },\n" +
" {\n" +
" \"type\": \"ColumnSet\",\n" +
" \"columns\": [\n" +
" {\n" +
" \"type\": \"Column\",\n" +
" \"width\": \"auto\",\n" +
" \"items\": [\n" +
" {\n" +
" \"type\": \"ActionSet\",\n" +
" \"actions\": [\n" +
" {\n" +
" \"type\": \"Action.Submit\",\n" +
" \"title\": \"Report selected\",\n" +
" \"style\": \"positive\",\n" +
" \"data\": {\n" +
" \"rainbow\": {\n" +
" \"text\": \"#report-selected\",\n" +
" \"type\": \"messageBack\",\n" +
" \"value\": {\n" +
" \"response\": \"#report-selected\"\n" +
" }\n" +
" }\n" +
" }\n" +
" }\n" +
" ]\n" +
" }\n" +
" ]\n" +
" }\n" +
" ],\n" +
" \"horizontalAlignment\": \"Center\",\n" +
" \"spacing\": \"ExtraLarge\",\n" +
" \"height\": \"stretch\"\n" +
" }\n" +
" ],\n" +
" \"$schema\": \"http://adaptivecards.io/schemas/adaptive-card.json\",\n" +
" \"version\": \"1.3\"\n" +
"}";
const buildCard = (type) => {
const content = msg.template
// Create a Template instance from the template payload
const template = new ACData.Template(content);
const context = {
$root: msg.sample
};
const card = template.expand(context);
return card;
}
alternateContent = {
type: 'form/json',
message: serialize.configure(buildCard(""))
};
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
msg.conversation = rainbowSDK.conversations.getConversationById(conversation.id);
function getConversationHistory(conversation) {
return rainbowSDK.conversations.getHistoryPage(conversation, 100).then(function (conversationUpdated) {
msg.conversationUpdated = conversationUpdated
return conversationUpdated.historyComplete ? conversationUpdated:getConversationHistory(conversationUpdated);
});
}
getConversationHistory(msg.conversation).then(async conversation => {
msg.conversation = conversation
await rainbowSDK.im.getMessagesFromConversation(conversation, 10);
let msgSentOrig = conversation.getlastEditableMsg();
rainbowSDK.conversations.sendCorrectedChatMessage(msg.conversation, `${msgSentOrig.content} up`, msgSentOrig.id, alternateContent).then(message => {
msg.message = message;
//node.send([msg, null])
_logger.log("debug", "MAIN - testLoic - sendCorrectedChatMessage msg : ", msg);
}, error => {
msg.error = error
_logger.log("debug", "MAIN - testLoic - sendCorrectedChatMessage msg : ", msg);
//node.send([null, msg])
})
}, error => {
msg.error = error
_logger.log("debug", "MAIN - testLoic - sendCorrectedChatMessage msg : ", msg);
//node.send([null, msg])
})
}
async testsendMessageToConversationFormJson() {
/*
const moment = global.get('moment');
const serialize = global.get('safestablestringify');
const ACData = global.get('adaptivecardstemplating');
// */
const message = "test"
let alternateContent = null;
const waitUntil = (condition, checkInterval = 500) => {
return new Promise(resolve => {
let iter = 100
let interval = setInterval(() => {
_logger.log("debug", "MAIN - testsendMessageToConversationFormJson - (waitUntil::setInterval) test condition in waitUntil")
if (!condition() && iter-- > 0) return;
_logger.log("debug", "MAIN - testsendMessageToConversationFormJson - (waitUntil::setInterval) test condition in waitUntil is true")
clearInterval(interval);
resolve(true);
}, checkInterval)
})
}
const buildCard = (type) => {
const content = "{\n" +
" \"title\": \"Report an issue\",\n" +
" \"title1\": \"Your Issue(s) reported\",\n" +
" \"issueList\": [\n" +
" {\n" +
" \"category\": \"Rainbow\",\n" +
" \"tag\": \"Sounds metallic\",\n" +
" \"idcategory\": \"idcategory\",\n" +
" \"idtag\": \"idtag\",\n" +
" \"reported\": \"false\"\n" +
" },\n" +
" {\n" +
" \"category\": \"Rainbow\",\n" +
" \"tag\": \"Sounds high\",\n" +
" \"idcategory\": \"idcategory\",\n" +
" \"idtag\": \"idtag2\",\n" +
" \"reported\": \"false\"\n" +
" },\n" +
" {\n" +
" \"category\": \"Rainbow\",\n" +
" \"tag\": \"Sounds low\",\n" +
" \"idcategory\": \"idcategory\",\n" +
" \"idtag\": \"idtag1\",\n" +
" \"reported\": \"true\",\n" +
" \"when\": \"August 19, 2022 23:15:30\",\n" +
" \"idIssue\": \"idIssue1\"\n" +
" }\n" +
" ]\n" +
"}"
// Create a Template instance from the template payload
const template = new ACData.Template(content);
const context = {
$root: JSON.parse(content)
};
const card = template.expand(context);
return card;
}
alternateContent = {
type: 'form/json',
message: serialize.configure(buildCard(""))
};
//let msg : any = {origin : {}};
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
let conversationId = conversation.id;
await rainbowSDK.im.sendMessageToConversation(conversation, 'ok', "fr", alternateContent, "alternate").then(async message => {
_logger.log("debug", "MAIN - testsendMessageToConversationFormJson - search msgId : " + message.id);
_logger.log("debug", "MAIN - testsendMessageToConversationFormJson - msg.origin.conversation.id : " + conversation.id)
await waitUntil(() => {
_logger.log("debug", "MAIN - testsendMessageToConversationFormJson - (condition) of waitUntil");
let conversation = rainbowSDK.conversations.getConversationById(conversationId);
_logger.log("debug", "MAIN - testsendMessageToConversationFormJson - (condition) conversation getConversationById : " + conversation.id);
let msgFound = conversation.getMessageById(message.id);
if (msgFound) {
_logger.log("debug", "MAIN - testsendMessageToConversationFormJson - (condition) msgFound returned by getMessageById : " + msgFound.id);
;
} else {
_logger.log("debug", "MAIN - testsendMessageToConversationFormJson - (condition) empty msgFound returned by getMessageById.");
}
return msgFound!==undefined
})
_logger.log("debug", "MAIN - testsendMessageToConversationFormJson - after waitUntil");
}, error => {
})
return null;
}
async testsendMessageAdaptiveCard() {
let alternateContent = null;
function treatmentOfAdaptiveCardMessage(adaptiveResponse) {
// Treatment of returned data by the adptive card.
if (adaptiveResponse?.rainbow?.value?.response==="adaptiveCard_responseIntervention") {
let firstName = adaptiveResponse?.firstName;
let lastName = adaptiveResponse?.lastName;
let soinDone = adaptiveResponse?.interventionDoneVal;
let quantity = adaptiveResponse?.quantity;
let dateVal = adaptiveResponse?.dateVal;
let timeVal = adaptiveResponse?.timeVal;
let dateRespVal = adaptiveResponse?.dateRespVal;
_logger.log("debug", "MAIN - treatmentOfAdaptiveCardMessage - prenom : ", firstName, ", nom : ", lastName, ", le soin a-t-il était fait : ", soinDone +
", Quantité : ", quantity +
", le : ", dateVal +
", à : ", timeVal +
", hidden dateRespVal : ", dateRespVal);
} else {
// The card is not the result of an intervention.
}
}
// The Handle on the event should be only once. So in a prod program it should be outside of the initial send message of the adpative Card.
rainbowSDK.events.on("rainbow_onmessagereceived", (message) => {
_logger.log("debug", "MAIN - (rainbow_onmessagereceived) - rainbow event received. message", message);
let responseObjJson = "";
if (message.alternativeContent?.length > 0 && message.alternativeContent[0]?.message && message.alternativeContent[0]?.type) {
switch (message.alternativeContent[0].type) {
case "rainbow/json":
responseObjJson = JSON.parse(message.alternativeContent[0].message);
treatmentOfAdaptiveCardMessage(responseObjJson);
default:
}
}
});
const buildCard = (type) => {
let templateJson = {
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.4",
"body": [
{
"type": "TextBlock",
"text": "${titleCard}"
},
{
"type": "TextBlock",
"size": "Medium",
"weight": "Bolder",
"text": "${Survey.title}",
"horizontalAlignment": "Center",
"wrap": true,
"style": "heading"
},
{
"type": "Input.Text",
"id": "firstName",
"label": "${Survey.askFirstName}"
},
{
"type": "Input.Text",
"id": "lastName",
"label": "${Survey.askLastName}"
},
{ // start
"type": "TextBlock",
"text": "${Survey.askQuantity}",
"wrap": true
},
{
"type": "Input.Number",
"min": 0,
"max": 5,
"value": 1,
"id": "quantity"
},
{
"type": "TextBlock",
"text": "${Survey.askDate}",
"wrap": true
},
{
"type": "Input.Date",
"id": "dateVal",
"value": "2023-11-06"
},
{
"type": "TextBlock",
"text": "${Survey.askTime}",
"wrap": true
},
{
"type": "Input.Time",
"id": "timeVal",
"value": "16:59"
},
{
"type": "TextBlock",
"text": "${Survey.questions[0].question}",
"wrap": true
},
{
"type": "Input.ChoiceSet",
"id": "interventionDoneVal",
"style": "expanded",
"value": "false",
"choices": [
{
"$data": "${Survey.questions[0].items}",
"title": "${title}",
"value": "${value}"
}
]
},
{
"type": "Input.Date",
"id": "dateRespVal",
"isVisible": false,
"value": "${formatDateTime(utcNow(), 'yyyy-MM-dd')}"
},
],
"actions": [
{
"type": "Action.Submit",
"title": "Valider",
"data": {
"rainbow": {
"text": "Retour fait.",
"type": "messageBack",
"value": {
"response": "adaptiveCard_responseIntervention"
}
}
}
}
]
}; // */
let messageJson = {
"titleCard": "Retour de textes et choix.",
"Survey": {
"title": "Résultat d'intervension : ",
"askFirstName": "Votre prénom ?",
"askLastName": "Votre nom ?",
"askQuantity": "Quantité deliverée ? ",
"askDate": "Date de réalisation : ",
"askTime": "Start time : ",
"questions": [
{
"question": "Avez-vous effectué l'intervension ? ",
"items": [
{
"title": "Oui",
"value": "true"
},
{
"title": "Non",
"value": "false"
}
]
}
]
}
};
// Create a Template instance from the template payload
const template = new ACData.Template(templateJson);
const context = {
$root: messageJson
};
const card = template.expand(context);
return JSON.stringify(card);
}
alternateContent = {
type: 'form/json',
//message: serialize.configure(buildCard(""))
message: buildCard("")
};
_logger.log("debug", "MAIN - testsendMessageToConversationFormJson - alternateContent : ", alternateContent?.message);
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
//let conversationId = conversation.id;
await rainbowSDK.im.sendMessageToConversation(conversation, 'ok', "fr", alternateContent, "retour intervension").then(async message => {
_logger.log("debug", "MAIN - testsendMessageToConversationFormJson - search msgId : " + message.id);
_logger.log("debug", "MAIN - testsendMessageToConversationFormJson - msg.origin.conversation.id : " + conversation.id)
}, error => {
})
}
async testsendMessageAdaptiveCard_anthony() {
let alternateContent = null;
function treatmentOfAdaptiveCardMessage(adaptiveResponse) {
// Treatment of returned data by the adptive card.
if (adaptiveResponse?.rainbow?.value?.response==="adaptiveCard_responseIntervention") {
let firstName = adaptiveResponse?.firstName;
let lastName = adaptiveResponse?.lastName;
let soinDone = adaptiveResponse?.interventionDoneVal;
let quantity = adaptiveResponse?.quantity;
let dateVal = adaptiveResponse?.dateVal;
let timeVal = adaptiveResponse?.timeVal;
let dateRespVal = adaptiveResponse?.dateRespVal;
_logger.log("debug", "MAIN - treatmentOfAdaptiveCardMessage - prenom : ", firstName, ", nom : ", lastName, ", le soin a-t-il était fait : ", soinDone +
", Quantité : ", quantity +
", le : ", dateVal +
", à : ", timeVal +
", hidden dateRespVal : ", dateRespVal);
} else {
// The card is not the result of an intervention.
}
}
// The Handle on the event should be only once. So in a prod program it should be outside of the initial send message of the adpative Card.
rainbowSDK.events.on("rainbow_onmessagereceived", (message) => {
_logger.log("debug", "MAIN - (rainbow_onmessagereceived) - rainbow event received. message", message);
let responseObjJson = "";
if (message.alternativeContent?.length > 0 && message.alternativeContent[0]?.message && message.alternativeContent[0]?.type) {
switch (message.alternativeContent[0].type) {
case "rainbow/json":
responseObjJson = JSON.parse(message.alternativeContent[0].message);
treatmentOfAdaptiveCardMessage(responseObjJson);
default:
}
}
});
const buildCard = (type) => {
let templateJson = {
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.4",
"body": [
{
"type": "TextBlock",
"text": "${titleCard}"
},
{
"type": "TextBlock",
"size": "Medium",
"weight": "Bolder",
"text": "${Survey.title}",
"horizontalAlignment": "Center",
"wrap": true,
"style": "heading"
},
{
"type": "Input.Text",
"id": "firstName",
"label": "${Survey.askFirstName}"
},
{
"type": "Input.Text",
"id": "lastName",
"label": "${Survey.askLastName}"
},
{ // start
"type": "TextBlock",
"text": "${Survey.askQuantity}",
"wrap": true
},
{
"type": "Input.Number",
"min": 0,
"max": 5,
"value": 1,
"id": "quantity"
},
{
"type": "TextBlock",
"text": "${Survey.askDate}",
"wrap": true
},
{
"type": "Input.Date",
"id": "dateVal",
"value": "2023-11-06"
},
{
"type": "TextBlock",
"text": "${Survey.askTime}",
"wrap": true
},
{
"type": "Input.Time",
"id": "timeVal",
"value": "16:59"
},
{
"type": "TextBlock",
"text": "${Survey.questions[0].question}",
"wrap": true
},
{
"type": "Input.ChoiceSet",
"id": "interventionDoneVal",
"style": "expanded",
"value": "false",
"choices": [
{
"$data": "${Survey.questions[0].items}",
"title": "${title}",
"value": "${value}"
}
]
},
{
"type": "Input.Date",
"id": "dateRespVal",
"isVisible": false,
"value": "${formatDateTime(utcNow(), 'yyyy-MM-dd')}"
},
],
"actions": [
{
"type": "Action.Submit",
"title": "Valider",
"data": {
"rainbow": {
"text": "Retour fait.",
"type": "messageBack",
"value": {
"response": "adaptiveCard_responseIntervention"
}
}
}
}
]
}; // */
let messageJson = {
"titleCard": "Retour de textes et choix.",
"Survey": {
"title": "Résultat d'intervension : ",
"askFirstName": "Votre prénom ?",
"askLastName": "Votre nom ?",
"askQuantity": "Quantité deliverée ? ",
"askDate": "Date de réalisation : ",
"askTime": "Start time : ",
"questions": [
{
"question": "Avez-vous effectué l'intervension ? ",
"items": [
{
"title": "Oui",
"value": "true"
},
{
"title": "Non",
"value": "false"
}
]
}
]
}
};
// Create a Template instance from the template payload
const template = new ACData.Template(templateJson);
const context = {
$root: messageJson
};
const card = template.expand(context);
return JSON.stringify(card);
}
alternateContent = {
type: 'form/json',
//message: serialize.configure(buildCard(""))
message: buildCard("")
};
_logger.log("debug", "MAIN - testsendMessageToConversationFormJson - alternateContent : ", alternateContent?.message);
let contactEmailToSearch = "anthony.legal@al-enterprise.com";
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
//let conversationId = conversation.id;
await rainbowSDK.im.sendMessageToConversation(conversation, 'ok', "fr", alternateContent, "retour intervension").then(async message => {
_logger.log("debug", "MAIN - testsendMessageToConversationFormJson - search msgId : " + message.id);
_logger.log("debug", "MAIN - testsendMessageToConversationFormJson - msg.origin.conversation.id : " + conversation.id)
}, error => {
})
}
async testgetLastMessageOfConversation() {
let that = this;
let contactEmailToSearch = "vincent00@vbe.test.openrainbow.net";
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let conversation = await that.getLastMessageOfConversation(contact);
_logger.log("debug", "MAIN - testgetLastMessageOfConversation - conversation : ", conversation);
conversation.messages.forEach((message) => {
_logger.log("debug", "MAIN - testgetLastMessageOfConversation - conversation.message : ", message);
});
}
async testresetHistoryPageForConversation() {
let contactEmailToSearch = "vincent00@vbe.test.openrainbow.net";
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
rainbowSDK.conversations.openConversationForContact(contact).then(async function (conversation) {
_logger.log("debug", "MAIN - testresetHistoryPageForConversation - openConversationForContact, conversation : ", conversation);
rainbowSDK.conversations.resetHistoryPageForConversation(conversation);
});
}
getLastMessageOfConversation(contact): Promise {
let that = this;
let theLastMessageText = null;
let conv = undefined;
return new Promise((resolve, reject) => {
//Request to create new conversation with the contact (in case if it does not exists)
// or open existing (in case if it already exists)
rainbowSDK.conversations.openConversationForContact(contact).then(async function (conversation) {
_logger.log("debug", "MAIN - getLastMessageOfConversation - openConversationForContact, conversation : ", conversation);
conv = conversation;
//This line of code will be executed when conversation object of the contact is provided
//Check value of property conversation.historyComplete
if (conversation.historyComplete===false) {
//Retrieve conversation history prior getting last message from conversation history
await that.getConversationHistory(conversation);
resolve(conversation);
} else {
//The code below will be executed in case if conversation history in completed.
//Therefore we can call function to output the last message to console
that.PrintTheLastMessage(conversation);
resolve(conversation);
}
}).catch(function (err) {
//Something when wrong with the server. Handle the trouble here
_logger.log("debug", "MAIN - Error occurred in function getLastMessageOfConversation:" + err);
});
});
}
getConversationHistory(conversation) {
let that = this;
return new Promise((resolve, reject) => {
//get messages from conversation. Max number of messages whichcan be retrieved at once is 100
rainbowSDK.im.getMessagesFromConversation(conversation, 3).then(function (result) {
_logger.log("debug", "MAIN - messages : ", result);
// The conversation object is updated with the messages retrieved from the server after
//execution of rainbowSDK.im.getMessagesFromConversation function
// Check if there are is possibly more messages on the server than 100 requested
if (conversation.historyComplete===false) {
// TO DO: get next 100 messages
} else {
//At that pint conversation object has message history updated.
//Therefore we can call function to output the last message to console
that.PrintTheLastMessage(conversation);
resolve(conversation)
}
}).catch(function (err) {
//Something when wrong with the server. Handle the trouble here
_logger.log("debug", "MAIN - Error in function getConversationHistory: " + err);
reject(err);
});
});
}
PrintTheLastMessage(conversation) {
//Get number of messages in conversation
let nbMessagesInConversation = conversation.messages.length;
//If it is more than 0 then retrieve the last message from messages array.
if (nbMessagesInConversation > 0) {
//Note the messages array is 0 based, the first message has index 0
//Therefore the last message index will be nbMessagesInConversation-1
let theLastMessageText = conversation.messages[nbMessagesInConversation - 1].content;
_logger.log("debug", "MAIN - The last message text is: " + theLastMessageText);
_logger.log("debug", "MAIN - conversation.lastMessageText =" + conversation.lastMessageText);
} else {
_logger.log("debug", "MAIN - There are no messages in the conversation");
}
}
getConversationHistoryMaxime(conversation) {
let that = this;
_logger.log("debug", "MAIN - getConversationHistoryMaxime");
return rainbowSDK.conversations.getHistoryPage(conversation, 100).then((conversationUpdated) => {
_logger.log("debug", "MAIN - getConversationHistoryMaxime getHistoryPage");
let result = conversationUpdated.historyComplete ? conversationUpdated:that.getConversationHistoryMaxime(conversationUpdated);
_logger.log("debug", "MAIN - getConversationHistoryMaxime getHistoryPage result : ", result);
return result;
});
}
async testGetHistoryPage() {
let that = this;
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
rainbowSDK.conversations.openConversationForContact(contact).then(async function (conversation) {
_logger.log("debug", "MAIN - testGetHistoryPage - openConversationForContact, conversation : ", conversation);
that.getConversationHistoryMaxime(conversation).then(() => {
_logger.log("debug", "MAIN - testGetHistoryPage - getConversationHistoryMaxime, conversation : ", conversation);
});
;
});
}
async testgetS2SMessagesByConversationId(contactEmailToSearch: string = "vincent01@vbe.test.openrainbow.net") {
let that = this;
//let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
rainbowSDK.conversations.openConversationForContact(contact).then(async function (conversation) {
//logger.log("debug", "MAIN - testgetS2SMessagesByConversationId - openConversationForContact, conversation : ", conversation);
_logger.log("debug", "MAIN - testgetS2SMessagesByConversationId - openConversationForContact, conversation.messages.length : ", conversation.messages.length);
rainbowSDK.conversations.getS2SMessagesByConversationId(conversation.dbId).then((result) => {
_logger.log("debug", "MAIN - testgetS2SMessagesByConversationId - getS2SMessagesByConversationId, conversation.messages.length : ", result.messages.length);
//_logger.log("debug", "MAIN - testgetS2SMessagesByConversationId - getS2SMessagesByConversationId, result : ", result);
for (let i = 0; i < result.messages.length; i++) {
/*
let msg = {
"id": result.messages[i].id,
"from": result.messages[i].from,
"date": result.messages[i].datetime,
"side": result.messages[i].side,
"type": result.messages[i].type,
"alternativeContent": result.messages[i].contents,
"subject": result.messages[i].subject,
"body": result.messages[i].body,
"lang": result.messages[i].lang,
"urgency": result.messages[i].urgency,
"deleted": result.messages[i].isDeleted,
"modified": result.messages[i].isModified
}
_logger.log("debug", "MAIN - testgetS2SMessagesByConversationId - getS2SMessagesByConversationId, iter : [" + i + "], result.messages : ", result.messages[i], ", msg : ", msg);
// */
_logger.log("debug", "MAIN - testgetS2SMessagesByConversationId - getS2SMessagesByConversationId, iter : [" + i + "], result.messages : ", result.messages[i]);
}
/*
_links: {
prev: '/api/rainbow/ucs/v1.0/connections/aa7565f8-d1be-11ef-ae81-00505628611e/conversations/1668445329264340/messages?before=1708471230825733&limit=10',
next: '/api/rainbow/ucs/v1.0/connections/aa7565f8-d1be-11ef-ae81-00505628611e/conversations/1668445329264340/messages?after=1736780603704239&limit=10'
}
*/
let urlNext = result._links.next;
let urlPrev = result._links.prev;
function getS2SMessagesByConversationIdNext(urlNext) {
_logger.log("debug", "MAIN - testgetS2SMessagesByConversationId - getS2SMessagesByConversationIdNext, urlNext : ", urlNext);
const match = urlNext.match(/after=(\d+)&/);
if (match && match[1]) {
const afterValue = match[1];
rainbowSDK.conversations.getS2SMessagesByConversationId(conversation.dbId, 10, undefined, afterValue).then((resultNext) => {
_logger.log("debug", "MAIN - testgetS2SMessagesByConversationId - getS2SMessagesByConversationId, resultNext.messages.length : ", resultNext.messages.length);
// _logger.log("debug", "MAIN - testgetS2SMessagesByConversationId - getS2SMessagesByConversationId, resultNext : ", resultNext);
for (let i = 0; i < resultNext.messages.length; i++) {
_logger.log("debug", "MAIN - testgetS2SMessagesByConversationId - getS2SMessagesByConversationId, iter : [" + i + "], resultNext.messages : ", resultNext.messages[i]);
}
let urlNextNext = resultNext._links.next;
if (urlNextNext) getS2SMessagesByConversationIdNext(urlNextNext);
});
}
}
function getS2SMessagesByConversationIdPrev(urlPrev) {
_logger.log("debug", "MAIN - testgetS2SMessagesByConversationId - getS2SMessagesByConversationIdPrev, urlPrev : ", urlPrev);
const matchPrev = urlPrev.match(/before=(\d+)&/);
if (matchPrev && matchPrev[1]) {
const beforeValue = matchPrev[1];
rainbowSDK.conversations.getS2SMessagesByConversationId(conversation.dbId, 10, beforeValue, undefined).then((resultPrev) => {
_logger.log("debug", "MAIN - testgetS2SMessagesByConversationId - getS2SMessagesByConversationId, resultPrev.messages.length : ", resultPrev.messages.length);
_logger.log("debug", "MAIN - testgetS2SMessagesByConversationId - getS2SMessagesByConversationId, resultPrev : ", resultPrev);
for (let i = 0; i < resultPrev.messages.length; i++) {
_logger.log("debug", "MAIN - testgetS2SMessagesByConversationId - getS2SMessagesByConversationId, iter : [" + i + "], resultPrev.messages : ", resultPrev.messages[i]);
}
let urlPrevPrev = resultPrev._links.prev;
if (urlPrevPrev) getS2SMessagesByConversationIdPrev(urlPrevPrev);
});
}
}
getS2SMessagesByConversationIdNext(urlNext);
getS2SMessagesByConversationIdPrev(urlPrev);
});
});
}
async testgetAllS2SMessagesByConversationId(contactEmailToSearch: string = "vincent01@vbe.test.openrainbow.net") {
let that = this;
//let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
rainbowSDK.conversations.openConversationForContact(contact).then(async function (conversation) {
//logger.log("debug", "MAIN - testgetS2SMessagesByConversationId - openConversationForContact, conversation : ", conversation);
_logger.log("debug", "MAIN - testgetAllS2SMessagesByConversationId - openConversationForContact");
rainbowSDK.conversations.getAllS2SMessagesByConversationId(conversation.dbId).then((messages) => {
_logger.log("debug", "MAIN - testgetAllS2SMessagesByConversationId - getS2SMessagesByConversationId, messages.length : ", messages.length);
//_logger.log("debug", "MAIN - testgetS2SMessagesByConversationId - getS2SMessagesByConversationId, result : ", result);
for (let i = 0; i < messages.length; i++) {
/*
let msg = {
"id": result.messages[i].id,
"from": result.messages[i].from,
"date": result.messages[i].datetime,
"side": result.messages[i].side,
"type": result.messages[i].type,
"alternativeContent": result.messages[i].contents,
"subject": result.messages[i].subject,
"body": result.messages[i].body,
"lang": result.messages[i].lang,
"urgency": result.messages[i].urgency,
"deleted": result.messages[i].isDeleted,
"modified": result.messages[i].isModified
}
_logger.log("debug", "MAIN - testgetAllS2SMessagesByConversationId - getS2SMessagesByConversationId, iter : [" + i + "], result.messages : ", result.messages[i], ", msg : ", msg);
// */
_logger.log("debug", "MAIN - testgetAllS2SMessagesByConversationId - getS2SMessagesByConversationId, iter : [" + i + "], result.messages : ", messages[i]);
}
});
});
}
async testloadConversationHistory(contactEmailToSearch: string = "vincent01@vbe.test.openrainbow.net") {
let that = this;
//let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
rainbowSDK.conversations.openConversationForContact(contact).then(async function (conversation) {
//logger.log("debug", "MAIN - testloadConversationHistory - openConversationForContact, conversation : ", conversation);
_logger.log("debug", "MAIN - testloadConversationHistory - openConversationForContact, conversation.messages.length : ", conversation.messages.length);
rainbowSDK.conversations.loadConversationHistory(conversation).then(() => {
_logger.log("debug", "MAIN - testloadConversationHistory - loadConversationHistory, conversation.messages.length : ", conversation.messages.length);
_logger.log("debug", "MAIN - testloadConversationHistory - loadConversationHistory, conversation : ", conversation);
for (let i = 0; i < conversation.messages.length; i++) {
let msg = {
"id": conversation.messages[i].id,
"from": conversation.messages[i].from ? conversation.messages[i].from._displayName:"",
"date": conversation.messages[i].date,
"side": conversation.messages[i].side,
"type": conversation.messages[i].type,
"content": conversation.messages[i].content,
"alternativeContent": conversation.messages[i].alternativeContent,
"deleted": conversation.messages[i].deleted,
"modified": conversation.messages[i].modified
}
_logger.log("debug", "MAIN - testloadConversationHistory - loadConversationHistory, iter : " + i + "], msg : ", msg);
}
});
});
}
async testGetHistoryPageBubbleOpenrainbowNet() {
// To be used on PROD.
let that = this;
let bubbles = rainbowSDK.bubbles.getAllBubbles();
if (bubbles.length > 0) {
//let bubble = bubbles[0];
//let jid = "room_61aee9e9d7e94cacbce7234e3fca93f2@muc.openrainbow.com/a9b77288b939470b8da4611cc2af1ed1@openrainbow.com" // jid of the bubble "openrainbow.net" on .COM platform
let jid = "room_61aee9e9d7e94cacbce7234e3fca93f2@muc.openrainbow.com" // jid of the bubble "openrainbow.net" on .COM platform
rainbowSDK.conversations.getBubbleConversation(jid).then(async function (conversation) {
_logger.log("debug", "MAIN - testGetHistoryPageBubbleOpenrainbowNet - getBubbleConversation, conversation.jid : ", conversation.jid, ", conversation : ", conversation);
/* that.getConversationHistoryMaxime(conversation).then(() => {
_logger.log("debug", "MAIN - testGetHistoryPageBubble - getConversationHistoryMaxime, conversation : ", conversation, ", status : ", conversation.status);
}); // */
rainbowSDK.conversations.getHistoryPage(conversation, 20).then((conversationUpdated) => {
_logger.log("debug", "MAIN - testGetHistoryPageBubbleOpenrainbowNet getHistoryPage, conversationUpdated : ", conversationUpdated);
/*
let result = conversationUpdated.historyComplete ? conversationUpdated:that.getConversationHistoryMaxime(conversationUpdated);
_logger.log("debug", "MAIN - testGetHistoryPageBubbleOpenrainbowNet getHistoryPage result : ", result);
return result;
// */
});
});
}
}
async testsendMessageBubbleTestBotName_2024() {
// To be used with user vincent00 on .Net
let that = this;
let bubbles = rainbowSDK.bubbles.getAllActiveBubbles();
for (const bubble of bubbles) {
//if (bubble.name.indexOf("testBubbleEvents")!= -1) {
if (bubble.name.indexOf("testBotName_2024/02/09T10:35:36.732ZGuestUser")!= -1) {
_logger.log("debug", "MAIN - testsendMessageBubbleTestBotName_2024 Found bubble.name : ", bubble.name, ", bubble.isActive : ", bubble.isActive);
rainbowSDK.conversations.getBubbleConversation(bubble.jid).then(async function (conversation) {
_logger.log("info", "MAIN - testsendMessageBubbleTestBotName_2024 - getBubbleConversation, conversation.jid : ", conversation.jid);
//setInterval(() => {
for (let i = 0; i < 4400; i++) {
rainbowSDK.im.sendMessageToConversation(conversation, "hello from node_" + i, "FR", null, "Le sujet de node").then((result) => {
_logger.log("debug", "MAIN - testsendMessageBubbleTestBotName_2024 sendMessageToConversation - result : ", result);
});
//}, 15000);
await pause(100);
}
});
} else {
_logger.log("debug", "MAIN - testsendMessageBubbleTestBotName_2024 NOT Found bubble.name : ", bubble.name, ", buibble.isActive : ", bubble.isActive);
}
}
}
async testloadConversationHistoryAsyncBubbleTestBotName_2024() {
// To be used with user vincent00 on .Net
let that = this;
let bubbles = rainbowSDK.bubbles.getAllActiveBubbles();
for (const bubble of bubbles) {
//if (bubble.name.indexOf("testBubbleEvents")!= -1) {
// if (bubble.name.indexOf("bulleDeTest")!= -1) {
if (bubble.name.indexOf("testBotName_2024/02/09T10:35:36.732ZGuestUser")!= -1) {
_logger.log("debug", "MAIN - testloadConversationHistoryAsyncBubbleTestBotName_2024 Found bubble.name : ", bubble.name, ", bubble.isActive : ", bubble.isActive);
that.testloadConversationHistoryAsyncBubbleByJid(bubble.jid).then((res) => {
_logger.log("debug", "MAIN - testloadConversationHistoryAsyncBubbleTestBotName_2024 testloadConversationHistoryAsyncBubbleByJid treated.");
});
} else {
_logger.log("debug", "MAIN - testloadConversationHistoryAsyncBubbleTestBotName_2024 NOT Found bubble.name : ", bubble.name, ", buibble.isActive : ", bubble.isActive);
}
}
}
async teststring() {
let msg = {"content": undefined};
msg.content = {"body": "testString"};
let res = isString(msg.content) ? msg.content?.replace(/\n/g, "").replace(/\r/g, ""):"" + msg.content;
_logger.log("debug", "MAIN - teststring res : ", res);
}
async testfindAllPropInJSONByPropertyNameByXmlNS() {
let jsonMessage: any = {
"$attrs": {
"xml:lang": "fr",
"from": "room_4ffb3ac439d048549eff81ec273fcf46@muc.openrainbow.net/adcf613d42984a79a7bebccc80c2b65e@openrainbow.net/web_win_2.143.1_vX7Xa0OG",
"type": "groupchat",
"id": "web_b073d60e-6a20-49d9-9e16-1d91f2e2b3bc4",
"xmlns": "jabber:client"
},
"ack": {
"$attrs": {
"recv": false,
"read": false,
"xmlns": "urn:xmpp:receipts"
}
},
"x": [
{
"$attrs": {
"xmlns": "http://jabber.org/protocol/muc#user"
},
"item": {
"$attrs": {
"jid": "adcf613d42984a79a7bebccc80c2b65e@openrainbow.net"
}
}
},
{
"$attrs": {
"xmlns": "jabber:x:oob"
},
"url": "https://openrainbow.net:443/api/rainbow/fileserver/v1.0/files/66c884c52a85a299acd65f3d",
"mime": "image/jpeg",
"filename": "4289476.jpg",
"size": 133829
}
],
"archived": {
"$attrs": {
"stamp": "2024-08-23T12:47:02.129723Z",
"by": "room_4ffb3ac439d048549eff81ec273fcf46@muc.openrainbow.net",
"id": 1724417222129723,
"xmlns": "urn:xmpp:mam:tmp"
}
},
"stanza-id": {
"$attrs": {
"by": "room_4ffb3ac439d048549eff81ec273fcf46@muc.openrainbow.net",
"id": 1724417222129723,
"xmlns": "urn:xmpp:sid:0"
}
},
"store": {
"$attrs": {
"xmlns": "urn:xmpp:hints"
}
},
"request": {
"$attrs": {
"xmlns": "urn:xmpp:receipts"
}
},
"active": {
"$attrs": {
"xmlns": "http://jabber.org/protocol/chatstates"
}
},
"body": {
"_": "4289476.jpg",
"$attrs": {
"xml:lang": "fr"
}
}
};
let oobElmt = findAllPropInJSONByPropertyNameByXmlNS(jsonMessage, "x", "jabber:x:oob"); //? jsonMessage?.x //: undefined; // stanzaMessage?.getChild("x", "jabber:x:oob");
_logger.log("debug", "MAIN - testfindAllPropInJSONByPropertyNameByXmlNS : ", oobElmt);
}
async testfindAllPropInJSONByPropertyName() {
let jsonMessage: any = {
'$attrs': {xmlns: 'urn:xmpp:attention:0'},
jid: '4c4400e242b946b08f79c2ee01c2f044@openrainbow.net',
length: 1
};
let oobElmt = findAllPropInJSONByPropertyName(jsonMessage, "jid"); //? jsonMessage?.x //: undefined; // stanzaMessage?.getChild("x", "jabber:x:oob");
_logger.log("debug", "MAIN - testfindAllPropInJSONByPropertyName : ", oobElmt);
}
async testgetTextFromJSONProperty() {
let jsonMessage: any = {
'$attrs': {xmlns: 'urn:xmpp:attention:0'},
jid: '4c4400e242b946b08f79c2ee01c2f044@openrainbow.net',
length: 1
};
let attention = getTextFromJSONProperty(jsonMessage.attention)==="true" ? true:false;
_logger.log("debug", "MAIN - testgetTextFromJSONProperty : ", attention);
}
async testgetTextFromJSONProperty_forwardedElmt_message() {
let jsonMessage: any = {
'$attrs': {
xmlns: 'jabber:client',
to: 'b1e0d314a3a54bbd84c40c638976fab4@openrainbow.com',
from: 'b3d12420fd21425eb34506a40253ec75@openrainbow.com',
id: 'web_26ce9774-c3a4-463c-8d13-84f2f7146b292',
'xml:lang': 'fr',
type: 'groupchat'
},
body: 'Hi All, Voip calls are not working. when make call it shows dialing but not reaching to the destination.'
};
let result = getTextFromJSONProperty(jsonMessage.body);
_logger.log("debug", "MAIN - testgetTextFromJSONProperty_forwardedElmt_message - result : ", result);
}
async testloadConversationHistoryAsyncBubbleTestBubbleBot2023_03_13T16() {
// To be used with user vincent00 on .Net
let that = this;
let bubbles = rainbowSDK.bubbles.getAllActiveBubbles();
for (const bubble of bubbles) {
//if (bubble.name.indexOf("testBubbleEvents")!= -1) {
// if (bubble.name.indexOf("bulleDeTest")!= -1) {
if (bubble.name.indexOf("TestBubbleBot2023_03_13T16:15:24.673Z")!= -1) {
_logger.log("debug", "MAIN - testloadConversationHistoryAsyncBubbleTestBubbleBot2023_03_13T16 Found bubble.name : ", bubble.name, ", bubble.isActive : ", bubble.isActive);
that.testloadConversationHistoryAsyncBubbleByJid(bubble.jid).then((res) => {
_logger.log("debug", "MAIN - testloadConversationHistoryAsyncBubbleTestBubbleBot2023_03_13T16 testloadConversationHistoryAsyncBubbleByJid treated.");
});
} else {
_logger.log("debug", "MAIN - testloadConversationHistoryAsyncBubbleTestBubbleBot2023_03_13T16 NOT Found bubble.name : ", bubble.name, ", buibble.isActive : ", bubble.isActive);
}
}
}
async testloadConversationHistoryAsyncBubblebulle1() {
// To be used with user vincent00 on .Net
let that = this;
let bubbles = rainbowSDK.bubbles.getAllActiveBubbles();
rainbowSDK.events.on("rainbow_onloadConversationHistoryCompleted", (conversationHistoryUpdated) => {
// do something when the SDK has been started
_logger.log("info", "MAIN - (rainbow_onloadConversationHistoryCompleted) - rainbow conversation history loaded completed, conversationHistoryUpdated?.messages?.length : ", conversationHistoryUpdated?.messages?.length);
for (let i = 0; i < conversationHistoryUpdated?.messages?.length; i++) {
let msg = conversationHistoryUpdated?.messages[i];
_logger.log("info", "MAIN - testloadConversationHistoryAsyncBubbleByJid conversationHistoryUpdated.messages[" + i + "] id : ", msg.id, ", fromJid : ", msg.fromJid, ", date : ", msg.date, ", content : ", msg.content);
}
// */
});
for (const bubble of bubbles) {
//if (bubble.name.indexOf("testBubbleEvents")!= -1) {
// if (bubble.name.indexOf("bulleDeTest")!= -1) {
if (bubble.name.indexOf("bulle1")!= -1) {
_logger.log("debug", "MAIN - testloadConversationHistoryAsyncBubblebulle1 Found bubble.name : ", bubble.name, ", bubble.isActive : ", bubble.isActive);
that.testloadConversationHistoryAsyncBubbleByJid(bubble.jid).then((res) => {
_logger.log("debug", "MAIN - testloadConversationHistoryAsyncBubblebulle1 testloadConversationHistoryAsyncBubbleByJid treated.");
});
} else {
_logger.log("debug", "MAIN - testloadConversationHistoryAsyncBubblebulle1 NOT Found bubble.name : ", bubble.name, ", buibble.isActive : ", bubble.isActive);
}
}
}
async testloadConversationHistoryAsyncBubbleOpenrainbowNet() {
// To be used on PROD.
let that = this;
let bubbles = rainbowSDK.bubbles.getAllBubbles();
if (bubbles.length > 0) {
//let bubble = bubbles[0];
//let jid = "room_61aee9e9d7e94cacbce7234e3fca93f2@muc.openrainbow.com/a9b77288b939470b8da4611cc2af1ed1@openrainbow.com" // jid of the bubble "openrainbow.net" on .COM platform
let jid = "room_61aee9e9d7e94cacbce7234e3fca93f2@muc.openrainbow.com" // jid of the bubble "openrainbow.net" on .COM platform
await that.testloadConversationHistoryAsyncBubbleByJid(jid);
}
}
async testloadConversationHistoryAsyncBubbleByJid(jid = "room_61aee9e9d7e94cacbce7234e3fca93f2@muc.openrainbow.com") {
// To be used on PROD.
let that = this;
let bubbles = rainbowSDK.bubbles.getAllBubbles();
if (bubbles.length > 0) {
//let bubble = bubbles[0];
//let jid = "room_61aee9e9d7e94cacbce7234e3fca93f2@muc.openrainbow.com/a9b77288b939470b8da4611cc2af1ed1@openrainbow.com" // jid of the bubble "openrainbow.net" on .COM platform
//let jid = "room_61aee9e9d7e94cacbce7234e3fca93f2@muc.openrainbow.com" // jid of the bubble "openrainbow.net" on .COM platform
let startDate = undefined// new Date();
rainbowSDK.events.on("rainbow_onloadConversationHistoryCompleted", (conversationHistoryUpdated) => {
// do something when the SDK has been started
_logger.log("info", "MAIN - (rainbow_onloadConversationHistoryCompleted) - rainbow conversation history loaded completed, conversationHistoryUpdated?.messages?.length : ", conversationHistoryUpdated?.messages?.length);
let stopDate = new Date();
// @ts-ignore
let startDuration = Math.round(stopDate - startDate);
let historyDelay: number = rainbowSDK.conversations.conversationHistoryHandler.historyDelay;
_logger.log("info", "MAIN - testloadConversationHistoryAsyncBubbleByJid loadConversationHistoryAsync duration : " + startDuration + " ms => ", msToTime(startDuration));
_logger.log("info", "MAIN - testloadConversationHistoryAsyncBubbleByJid loadConversationHistoryAsync treatment in callback duration historyDelay : " + historyDelay + " ms => ", msToTime(historyDelay));
let utc = new Date().toJSON().replace(/-/g, "_").replace(/:/g, "_");
let fileName = "listMsgs_" + utc;
const path = 'c:/Temp/' + fileName + '.txt';
//writeFileSync(path, "", "utf8");
try {
let data = conversationHistoryUpdated.messages.toSmallString() + "MAIN - testloadConversationHistoryAsyncBubbleByJid loadConversationHistoryAsync duration : " + startDuration + " ms => " + msToTime(startDuration) + "\n MAIN - testloadConversationHistoryAsyncBubbleByJid loadConversationHistoryAsync treatment in callback duration historyDelay : " + historyDelay + " ms => " + msToTime(historyDelay);
writeFileSync(path, data, "utf8");
//appendFileSync(path, data);
} catch (err) {
_logger.log("error", "MAIN - testloadConversationHistoryAsyncBubbleByJid loadConversationHistoryAsync CATCH Error !!! : ", err);
}
/*
for (let i = 0; i < conversationHistoryUpdated?.messages?.length ; i++) {
let msg = conversationHistoryUpdated?.messages[i];
_logger.log("info", "MAIN - testloadConversationHistoryAsyncBubbleByJid conversationHistoryUpdated.messages[" + i + "] id : ", msg.id, ", fromJid : ", msg.fromJid, ", date : ", msg.date, ", content : ", msg.content);
}
// */
if (rainbowSDK) {
rainbowSDK.stop().then(() => {
process.exit(0);
}).catch((err) => {
_logger.log("warn", "MAIN - testloadConversationHistoryAsyncBubbleByJid RainbowSDK stop failed : ", err, ", but even stop the process."); //logger.colors.green(JSON.stringify(result)));
process.exit(0);
});
} else {
process.exit(0);
}
});
rainbowSDK.conversations.getBubbleConversation(jid).then(async function (conversation) {
_logger.log("info", "MAIN - testloadConversationHistoryAsyncBubbleByJid - getBubbleConversation, conversation.jid : ", conversation.jid);
/* that.getConversationHistoryMaxime(conversation).then(() => {
_logger.log("debug", "MAIN - testGetHistoryPageBubble - getConversationHistoryMaxime, conversation : ", conversation, ", status : ", conversation.status);
}); // */
startDate = new Date();
let useBulk = true;
rainbowSDK.conversations.loadConversationHistoryAsync(conversation, 400, useBulk).then((running) => {
_logger.log("info", "MAIN - testloadConversationHistoryAsyncBubbleByJid loadConversationHistoryAsync running : ", running);
/*
let result = conversationUpdated.historyComplete ? conversationUpdated:that.getConversationHistoryMaxime(conversationUpdated);
_logger.log("debug", "MAIN - testloadConversationHistoryAsyncBubbleByJid getHistoryPage result : ", result);
return result;
// */
});
});
}
}
async testloadConversationHistoryAsyncP2P() {
// To be used on .NET with vincent00.
let that = this;
let startDate = new Date();
rainbowSDK.events.on("rainbow_onloadConversationHistoryCompleted", (conversationHistoryUpdated) => {
// do something when the SDK has been started
_logger.log("info", "MAIN - (rainbow_onloadConversationHistoryCompleted) - rainbow conversation history loaded completed, conversationHistoryUpdated?.messages?.length : ", conversationHistoryUpdated?.messages?.length);
let stopDate = new Date();
// @ts-ignore
let startDuration = Math.round(stopDate - startDate);
_logger.log("info", "MAIN - testloadConversationHistoryAsyncP2P loadConversationHistoryAsync duration : " + startDuration + " ms.");
if (conversationHistoryUpdated && conversationHistoryUpdated.messages) {
for (let i = 0; i < conversationHistoryUpdated.messages.length; i++) {
_logger.log("info", "MAIN - testloadConversationHistoryAsyncP2P conversationHistoryUpdated.messages[" + i + "] : ", conversationHistoryUpdated.messages[i]);
}
}
if (rainbowSDK) {
rainbowSDK.stop().then(() => {
process.exit(0);
}).catch((err) => {
_logger.log("warn", "MAIN - RainbowSDK stop failed : ", err, ", but even stop the process."); //logger.colors.green(JSON.stringify(result)));
process.exit(0);
});
} else {
process.exit(0);
}
});
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
let utc = new Date().toJSON().replace(/-/g, "_");
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let conversation: Conversation = await rainbowSDK.conversations.openConversationForContact(contact);
if (conversation && conversation.id) {
_logger.log("info", "MAIN - testloadConversationHistoryAsyncP2P - getBubbleConversation, conversation.id : ", conversation.id, ", conversation?.messages.length : ", conversation?.messages.length);
/* that.getConversationHistoryMaxime(conversation).then(() => {
_logger.log("debug", "MAIN - testGetHistoryPageBubble - getConversationHistoryMaxime, conversation : ", conversation, ", status : ", conversation.status);
}); // */
rainbowSDK.conversations.loadConversationHistoryAsync(conversation, 20).then((running) => {
_logger.log("info", "MAIN - testloadConversationHistoryAsyncP2P loadConversationHistoryAsync running : ", running);
/*
let result = conversationUpdated.historyComplete ? conversationUpdated:that.getConversationHistoryMaxime(conversationUpdated);
_logger.log("debug", "MAIN - testloadConversationHistoryAsyncBubbleOpenrainbowNet getHistoryPage result : ", result);
return result;
// */
});
}
}
async testGetHistoryPageBubble() {
let that = this;
let bubbles = rainbowSDK.bubbles.getAllBubbles();
if (bubbles.length > 0) {
let bubble = bubbles[0];
rainbowSDK.conversations.getBubbleConversation(bubble.jid).then(async function (conversation) {
_logger.log("info", "MAIN - testGetHistoryPageBubble - openConversationForContact, conversation : ", conversation);
that.getConversationHistoryMaxime(conversation).then(() => {
_logger.log("info", "MAIN - testGetHistoryPageBubble - getConversationHistoryMaxime, conversation : ", conversation, ", status : ", conversation.status);
});
});
}
}
testgetAllConversations() {
let conversations = rainbowSDK.conversations.getAllConversations();
if (conversations) {
_logger.log("info", "MAIN - [testgetAllConversations ] :: rainbowSDK.conversations.pendingMessages.length : ", rainbowSDK.conversations?.pendingMessages?.length);
conversations.forEach((conversation) => {
_logger.log("info", "MAIN - [testgetAllConversations ] :: conversation.d : ", conversation.id, ", conversations.messages.length : ", conversation?.messages?.length, ", conversations.pendingMessages.length : ", conversation?.pendingMessages?.length);
});
}
}
testgetApiConfigurationFromServer() {
rainbowSDK._core.rest.getApiConfigurationFromServer();
let apiSettings = rainbowSDK._core._rest.http.apiHeadersConfiguration;
if (apiSettings) {
_logger.log("info", "MAIN - [testgetApiConfigurationFromServer ] :: apiSettings : ", apiSettings);
apiSettings.forEach((apiConfig) => {
_logger.log("info", "MAIN - [testgetApiConfigurationFromServer ] :: apiConfig.method : ", apiConfig.method, ", apiConfig.URL : ", apiConfig.URL, ", apiConfig.headers : ", apiConfig.headers);
});
}
}
async testgetMyProfiles() {
//let contactEmailToSearch = "vincent00@vbe.test.openrainbow.net";
//let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
/*
rainbowSDK.admin.retrieveUserSubscriptions(connectedUser.id).then(async function (result) {
_logger.log("debug", "MAIN - testretrieveUserSubscriptions - retrieveUserSubscriptions, result : ", result);
});
// */
let result = rainbowSDK.profiles.getMyProfiles()
_logger.log("debug", "MAIN - testgetMyProfiles - getMyProfiles, result : ", result);
}
async testgetMyInformations() {
//let contactEmailToSearch = "vincent00@vbe.test.openrainbow.net";
//let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
/*
rainbowSDK.admin.retrieveUserSubscriptions(connectedUser.id).then(async function (result) {
_logger.log("debug", "MAIN - testretrieveUserSubscriptions - retrieveUserSubscriptions, result : ", result);
});
// */
let result = await rainbowSDK.contacts.getMyInformations();
_logger.log("debug", "MAIN - testgetMyInformations - getMyInformations, result : ", result);
}
//region test Methodes
teststripStringForLogs() {
let str = null;
_logger.log("info", "MAIN - (teststripStringForLogs) - '", str, "' value test, result : ", _logger.stripStringForLogs(str));
str = undefined;
_logger.log("info", "MAIN - (teststripStringForLogs) - '", str, "' value test, result : ", _logger.stripStringForLogs(str));
str = NaN;
_logger.log("info", "MAIN - (teststripStringForLogs) - '", str, "' value test, result : ", _logger.stripStringForLogs(str));
str = "A";
_logger.log("info", "MAIN - (teststripStringForLogs) - '", str, "' value test, result : ", _logger.stripStringForLogs(str));
str = "AB";
_logger.log("info", "MAIN - (teststripStringForLogs) - '", str, "' value test, result : ", _logger.stripStringForLogs(str));
str = "ABC";
_logger.log("info", "MAIN - (teststripStringForLogs) - '", str, "' value test, result : ", _logger.stripStringForLogs(str));
str = "ABCD";
_logger.log("info", "MAIN - (teststripStringForLogs) - '", str, "' value test, result : ", _logger.stripStringForLogs(str));
}
//endregion
//region BUBBLES CONTAINERS
async testgetAllBubblesContainers() {
rainbowSDK.bubbles.getAllBubblesContainers().then(async function (result) {
_logger.log("debug", "MAIN - testgetAllBubblesContainers - getAllBubblesContainers, result : ", result);
});
}
async testgetAllBubblesContainersByName() {
rainbowSDK.bubbles.getAllBubblesContainers("containers1").then(async function (result) {
_logger.log("debug", "MAIN - testgetAllBubblesContainersByName - getAllBubblesContainers, result : ", result);
});
}
async testgetABubblesContainersById() {
rainbowSDK.bubbles.getAllBubblesContainers().then(async function (result) {
_logger.log("debug", "MAIN - testgetABubblesContainersById - getAllBubblesContainers, result : ", result);
rainbowSDK.bubbles.getABubblesContainersById(result[0].id).then(async function (result2) {
_logger.log("debug", "MAIN - testgetABubblesContainersById - getABubblesContainersById, result2 : ", result2);
});
});
}
async testaddBubblesToContainerById() {
rainbowSDK.bubbles.getAllBubblesContainers("containers1").then(async function (result) {
_logger.log("debug", "MAIN - testaddBubblesToContainerById - getAllBubblesContainers, result : ", result);
let bubbles = rainbowSDK.bubbles.getAllOwnedBubbles();
let bubble = bubbles.find(element => element.name==="bubble2")
let bubblesToMove = [];
bubblesToMove.push(bubble.id);
rainbowSDK.bubbles.addBubblesToContainerById(result[0].id, bubblesToMove).then(async function (result2) {
_logger.log("debug", "MAIN - testaddBubblesToContainerById - addBubblesToContainerById, result2 : ", result2);
});
});
}
async testupdateBubbleContainerNameAndDescriptionById() {
let name = "containers1"
rainbowSDK.bubbles.getAllBubblesContainers(name).then(async function (result) {
_logger.log("debug", "MAIN - testupdateBubbleContainerNameAndDescriptionById - getAllBubblesContainers, result : ", result);
let utc = new Date().toJSON().replace(/-/g, "_");
name += "_" + utc;
let description = "description_" + utc;
rainbowSDK.bubbles.updateBubbleContainerNameAndDescriptionById(result[0].id, name, description).then(async function (result2) {
_logger.log("debug", "MAIN - testupdateBubbleContainerNameAndDescriptionById - addBubblesToContainersById, result2 : ", result2);
});
});
}
async testcreateBubbleContainer() {
let name = "containersNew"
let utc = new Date().toJSON().replace(/-/g, "_");
name += "_" + utc;
let description = "description_" + utc;
rainbowSDK.bubbles.createBubbleContainer(name, description).then(async function (result: any) {
_logger.log("debug", "MAIN - testcreateBubbleContainer - createBubbleContainer, result : ", result);
rainbowSDK.bubbles.deleteBubbleContainer(result.id).then((result2) => {
_logger.log("debug", "MAIN - testcreateBubbleContainer - deleteBubbleContainer, result2 : ", result2);
});
});
}
async testaddBubblesAndRemoveToContainersById() {
rainbowSDK.bubbles.getAllBubblesContainers("containers1").then(async function (result: any) {
_logger.log("debug", "MAIN - testaddBubblesAndRemoveToContainersById - getAllBubblesContainers, result : ", result);
let bubbles = rainbowSDK.bubbles.getAllOwnedBubbles();
let bubble = bubbles.find(element => element.name==="bubble2")
let bubblesToMove = [];
bubblesToMove.push(bubble.id);
rainbowSDK.bubbles.addBubblesToContainerById(result[0].id, bubblesToMove).then(async function (result2) {
_logger.log("debug", "MAIN - testaddBubblesAndRemoveToContainersById - addBubblesToContainerById, result2 : ", result2);
rainbowSDK.bubbles.removeBubblesFromContainer(result[0].id, bubblesToMove).then(async function (result3) {
_logger.log("debug", "MAIN - testaddBubblesAndRemoveToContainersById - removeBubblesFromContainer, result3 : ", result3);
});
});
});
}
//endregion BUBBLES CONTAINERS
//region CallLog
testgetCallLogHistoryPage() {
//let mycalllog = mycalllogs ? mycalllogs.callLogs[0]:{};
//let utc = new Date().toJSON().replace(/-/g, "_");
rainbowSDK.calllog.getCallLogHistoryPage();
}
testDeleteOneCallLog() {
let mycalllog = mycalllogs ? mycalllogs.callLogs[0]:{};
let utc = new Date().toJSON().replace(/-/g, "_");
rainbowSDK.calllog.deleteOneCallLog(mycalllog.id);
}
testDeleteAllCallLogs() {
let mycalllog = mycalllogs ? mycalllogs.callLogs[0]:{};
let utc = new Date().toJSON().replace(/-/g, "_");
rainbowSDK.calllog.deleteAllCallLogs();
}
async testDeleteCallLogsForContact() {
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
let utc = new Date().toJSON().replace(/-/g, "_");
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let jid = contact.jid_im;
rainbowSDK.calllog.deleteCallLogsForContact(jid);
}
testmarkCallLogAsRead() {
let mycalllog = {"id": null}; //mycalllogs ? mycalllogs.callLogs[0] : {};
let utc = new Date().toJSON().replace(/-/g, "_");
if (mycalllogs) {
mycalllogs.simplifiedCallLogs.forEach((simpleCallL) => {
_logger.log("debug", "MAIN - testmarkCallLogAsRead simpleCallL : ", simpleCallL); //logger.colors.green(JSON.stringify(result)));
if (!simpleCallL.read) {
mycalllog = simpleCallL; // Keep a ref to the last call Logged which is not read
}
});
if (mycalllog.id) {
_logger.log("debug", "MAIN - testmarkCallLogAsRead simpleCallL not read is : ", mycalllog); //logger.colors.green(JSON.stringify(result)));
rainbowSDK.calllog.markCallLogAsRead(mycalllog.id);
}
} else {
_logger.log("debug", "MAIN - testmarkCallLogAsRead mycalllogs is not defined : ", mycalllogs); //logger.colors.green(JSON.stringify(result)));
}
}
testmarkAllCallsLogsAsRead() {
_logger.log("debug", "MAIN - testmarkAllCallsLogsAsRead."); //logger.colors.green(JSON.stringify(result)));
rainbowSDK.calllog.markAllCallsLogsAsRead();
}
//endregion CallLog
//region Telephony
testmakeCallByPhoneNumber() {
return __awaiter(this, void 0, void 0, function* () {
rainbowSDK.telephony.makeCallByPhoneNumber("23050", undefined).then((data1) => {
// rainbowSDK.telephony.makeCallByPhoneNumber("23050","My_correlatorData").then((data1)=>{
_logger.log("debug", "MAIN - [testmakeCallByPhoneNumber] after makecall : ", data1);
Utils.setTimeoutPromised(1000).then(() => {
rainbowSDK.telephony.getCalls().forEach((data2) => {
_logger.log("debug", "MAIN - [testmakeCallByPhoneNumber] after makecall getCalls : ", data2);
});
});
}).catch((error) => {
_logger.log("debug", "MAIN - [testmakeCallByPhoneNumber] error ", error);
});
setTimeout(() => {
_logger.log("debug", "MAIN - [testmakeCallByPhoneNumber] Release all calls, calls size : ", Object.keys(calls).length);
// Release all calls
calls.forEach((c) => __awaiter(this, void 0, void 0, function* () {
//await rainbowSDK.telephony.releaseCall(c);
Utils.setTimeoutPromised(10000).then(() => {
_logger.log("debug", "MAIN - [testmakeCallByPhoneNumber] getCallsSize : ", rainbowSDK.telephony.getCallsSize());
rainbowSDK.telephony.getCalls().forEach((data3) => {
_logger.log("debug", "MAIN - [testmakeCallByPhoneNumber] after releaseCall getCalls : ", data3);
});
});
}));
}, 15000);
// */
});
}
testmakeCallByPhoneNumberAndHoldCallRetrieveCall() {
return __awaiter(this, void 0, void 0, function* () {
rainbowSDK.telephony.makeCallByPhoneNumber("23050", undefined).then((data1) => {
// rainbowSDK.telephony.makeCallByPhoneNumber("23050","My_correlatorData").then((data1)=>{
_logger.log("debug", "MAIN - [testmakeCallByPhoneNumberAndHoldCallRetrieveCall] after makecall : ", data1, " PLEASE ANSWER CALL ON PHONE.");
Utils.setTimeoutPromised(1000).then(() => {
rainbowSDK.telephony.getCalls().forEach((data2) => {
_logger.log("debug", "MAIN - [testmakeCallByPhoneNumberAndHoldCallRetrieveCall] after makecall getCalls : ", data2);
});
});
}).catch((error) => {
_logger.log("debug", "MAIN - [testmakeCallByPhoneNumberAndHoldCallRetrieveCall] error ", error);
});
setTimeout(() => {
_logger.log("debug", "MAIN - [testmakeCallByPhoneNumberAndHoldCallRetrieveCall] holdCall all calls, calls size : ", Object.keys(calls).length);
// Release all calls
calls.forEach(async (c) => {
await rainbowSDK.telephony.holdCall(c);
Utils.setTimeoutPromised(6000).then(async () => {
_logger.log("debug", "MAIN - [testmakeCallByPhoneNumberAndHoldCallRetrieveCall] getCallsSize : ", rainbowSDK.telephony.getCallsSize());
rainbowSDK.telephony.getCalls().forEach((data3) => {
_logger.log("debug", "MAIN - [testmakeCallByPhoneNumberAndHoldCallRetrieveCall] after holdCall getCalls : ", data3);
});
await rainbowSDK.telephony.retrieveCall(c);
});
});
}, 15000);
// */
});
}
testmakeCallByPhoneNumberProd() {
return __awaiter(this, void 0, void 0, function* () {
rainbowSDK.telephony.makeCallByPhoneNumber("00622413746", "My_correlatorData").then((data1) => {
// rainbowSDK.telephony.makeCallByPhoneNumber("23050","My_correlatorData").then((data1)=>{
_logger.log("debug", "MAIN - [testmakeCallByPhoneNumberProd] after makecall : ", data1);
Utils.setTimeoutPromised(1000).then(() => {
rainbowSDK.telephony.getCalls().forEach((data2) => {
_logger.log("debug", "MAIN - [testmakeCallByPhoneNumberProd] after makecall getCalls : ", data2);
});
});
}).catch((error) => {
_logger.log("debug", "MAIN - [testmakeCallByPhoneNumberProd] error ", error);
});
setInterval(() => {
_logger.log("debug", "MAIN - [testmakeCallByPhoneNumberProd] Release all calls, calls size : ", Object.keys(calls).length);
// Release all calls
calls.forEach((c) => __awaiter(this, void 0, void 0, function* () {
//await rainbowSDK.telephony.releaseCall(c);
Utils.setTimeoutPromised(10000).then(() => {
_logger.log("debug", "MAIN - [testmakeCallByPhoneNumberProd] getCallsSize : ", rainbowSDK.telephony.getCallsSize());
rainbowSDK.telephony.getCalls().forEach((data3) => {
_logger.log("debug", "MAIN - [testmakeCallByPhoneNumberProd] after releaseCall getCalls : ", data3);
});
});
}));
}, 10000);
// */
});
}
async testdeflectCallToVM() {
//let call = {contact:{displayNameForLog:()=>{console.log("deflectCallToVM contact display.")}}};
let call = calls ? calls[(calls.length - 1)]:{
contact: {
displayNameForLog: () => {
console.log("deflectCallToVM contact display.")
}
}
};
let result = await rainbowSDK.telephony.deflectCallToVM(call).catch((err) => {
_logger.log("debug", "MAIN - (testdeflectCallToVM) error while deflect call to VM : ", err);
});
_logger.log("debug", "MAIN - (testdeflectCallToVM) result : ", result);
}
//endregion Telephony
//region Public URL of Bubble
async testgetAllPublicUrlOfBubbles() {
let result = await rainbowSDK.bubbles.getAllPublicUrlOfBubbles().catch((err) => {
_logger.log("debug", "MAIN - (testgetAllPublicUrlOfBubbles) error while creating guest user : ", err);
});
_logger.log("debug", "MAIN - [testgetAllPublicUrlOfBubbles] All PublicUrl Of Bubbles : ", result);
}
async testgetAllPublicUrlOfBubblesOfAUser() {
//let contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent00@vbe.test.openrainbow.net");
let contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent.berder@al-enterprise.com");
let result = await rainbowSDK.bubbles.getAllPublicUrlOfBubblesOfAUser(contact).catch((err) => {
_logger.log("debug", "MAIN - (testgetAllPublicUrlOfBubblesOfAUser) error : ", err);
});
_logger.log("debug", "MAIN - [testgetAllPublicUrlOfBubblesOfAUser] All PublicUrl Of Bubbles : ", result);
}
async testgetAllPublicUrlOfABubble() {
//let contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent00@vbe.test.openrainbow.net");
//let contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent.berder@al-enterprise.com");
let myBubbles = rainbowSDK.bubbles.getAllOwnedBubbles();
if (myBubbles.length > 0) {
_logger.log("debug", "MAIN - testgetAllPublicUrlOfABubble - myBubbles : ", myBubbles, " nb owned bulles : ", myBubbles ? myBubbles.length:0);
for (let bubble of myBubbles) {
let result = await rainbowSDK.bubbles.getAllPublicUrlOfABubble(bubble).catch((err) => {
_logger.log("debug", "MAIN - (testgetAllPublicUrlOfABubble) error : ", err);
});
_logger.log("debug", "MAIN - [testgetAllPublicUrlOfABubble] The PublicUrl ", result, " Of a Bubble : ", bubble);
}
}
}
async testgetAllPublicUrlOfABubbleOfAUser() {
//let contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent00@vbe.test.openrainbow.net");
//let contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent.berder@al-enterprise.com");
let contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent.berder@al-enterprise.com");
let myBubbles = rainbowSDK.bubbles.getAllOwnedBubbles();
if (myBubbles.length > 0) {
_logger.log("debug", "MAIN - testgetAllPublicUrlOfABubbleOfAUser - myBubbles : ", myBubbles, " nb owned bulles : ", myBubbles ? myBubbles.length:0);
for (let bubble of myBubbles) {
let result = await rainbowSDK.bubbles.getAllPublicUrlOfABubbleOfAUser(contact, bubble).catch((err) => {
_logger.log("debug", "MAIN - (testgetAllPublicUrlOfABubbleOfAUser) error : ", err);
});
_logger.log("debug", "MAIN - [testgetAllPublicUrlOfABubbleOfAUser] The PublicUrl ", result, " Of a Bubble : ", bubble);
}
}
}
//endregion Public URL of Bubble
//region Offers
async testretrieveAllOffersOfCompanyById() {
let Offers = await rainbowSDK.admin.retrieveAllOffersOfCompanyById();
_logger.log("debug", "MAIN - testretrieveAllOffersOfCompanyById - Offers : ", Offers);
for (let offer of Offers) {
_logger.log("debug", "MAIN - [testretrieveAllOffersOfCompanyById] offer : ", offer);
if (offer.name==="Enterprise Demo") {
_logger.log("debug", "MAIN - [testretrieveAllOffersOfCompanyById] offer Enterprise Demo found : ", offer);
}
}
}
async testsubscribeCompanyToDemoOffer() {
// To use with rford@westworld.com
let utc = new Date().toJSON().replace(/-/g, '_');
let companyName = "MyVberderCompany_" + utc;
let newCompany = await (rainbowSDK.admin.createCompany(companyName, "USA", "AA", OFFERTYPES.PREMIUM).catch((e) => {
_logger.log("error", "MAIN - testsubscribeCompanyToDemoOffer - createCompany Error : ", e);
}));
await pause(2000);
let subscribeResult: any = await rainbowSDK.admin.subscribeCompanyToDemoOffer(newCompany.id).catch((e) => {
_logger.log("error", "MAIN - testsubscribeCompanyToDemoOffer - subscribeCompanyToDemoOffer Error : ", e);
});
_logger.log("debug", "MAIN - testsubscribeCompanyToDemoOffer - subscribeResult : ", subscribeResult);
let email = "vincentTest01@vbe.test.openrainbow.com";
let password = "Password_123";
let firstname = "vincentTest01";
let lastname = "berderTest01";
await pause(2000);
_logger.log("debug", "MAIN - testsubscribeCompanyToDemoOffer - retrieveAllSubscriptionsOfCompanyById Result : ", await rainbowSDK.admin.retrieveAllSubscriptionsOfCompanyById(newCompany.id).catch((e) => {
_logger.log("error", "MAIN - testsubscribeCompanyToDemoOffer - retrieveAllSubscriptionsOfCompanyById Error : ", e);
}));
await pause(2000);
let newUser: any = await rainbowSDK.admin.createUserInCompany(email, password, firstname, lastname, newCompany.id, "en-US", false /* admin or not */, ["user", "closed_channels_admin", "private_channels_admin", "public_channels_admin"]).catch((e) => {
_logger.log("error", "MAIN - testsubscribeCompanyToDemoOffer - createUserInCompany Error : ", e);
});
await pause(10000);
_logger.log("debug", "MAIN - testsubscribeCompanyToDemoOffer - subscribeUserToSubscription Result : ", await rainbowSDK.admin.subscribeUserToSubscription(newUser.id, subscribeResult.id).catch((e) => {
_logger.log("error", "MAIN - testsubscribeCompanyToDemoOffer - subscribeUserToSubscription Error : ", e);
}));
_logger.log("debug", "MAIN - testsubscribeCompanyToDemoOffer - unSubscribeUserToSubscription Result : ", await rainbowSDK.admin.unSubscribeUserToSubscription(newUser.id, subscribeResult.id).catch((e) => {
_logger.log("error", "MAIN - testsubscribeCompanyToDemoOffer - unSubscribeUserToSubscription Error : ", e);
}));
_logger.log("debug", "MAIN - testsubscribeCompanyToDemoOffer - unSubscribeCompanyToDemoOffer Result : ", await rainbowSDK.admin.unSubscribeCompanyToDemoOffer(newCompany.id).catch((e) => {
_logger.log("error", "MAIN - testsubscribeCompanyToDemoOffer - unSubscribeCompanyToDemoOffer Error : ", e);
}));
let deletedUser = await rainbowSDK.admin.deleteUser(newUser.id);
let deletedCompany = await rainbowSDK.admin.removeCompany({id: newCompany.id});
}
async testCreateCompanyCreateUserAndDelete() {
// To use with rford@westworld.com
let utc = new Date().toJSON().replace(/-/g, '_');
let companyName = "MyVberderCompany_" + utc;
let newCompany = await (rainbowSDK.admin.createCompany(companyName, "USA", "AA", OFFERTYPES.PREMIUM).catch((e) => {
_logger.log("error", "MAIN - testCreateCompanyCreateUserAndDelete - createCompany Error : ", e);
}));
await pause(2000);
/* let subscribeResult: any = await rainbowSDK.admin.subscribeCompanyToDemoOffer(newCompany.id).catch((e) => {
_logger.log("error", "MAIN - testCreateCompanyCreateUserAndDelete - subscribeCompanyToDemoOffer Error : ", e);
}) ;
_logger.log("debug", "MAIN - testCreateCompanyCreateUserAndDelete - subscribeResult : ", subscribeResult);
// */
let generatedId = makeId(15);
let email = "vincentTest01" + generatedId + "@vbe.test.openrainbow.com";
let password = "Password_123";
let firstname = "vincentTest01_" + generatedId;
let lastname = "berderTest01_" + generatedId;
await pause(2000);
/*logger.log("debug", "MAIN - testCreateCompanyCreateUserAndDelete - retrieveAllSubscriptionsOfCompanyById Result : ", await rainbowSDK.admin.retrieveAllSubscriptionsOfCompanyById(newCompany.id).catch((e) => {
_logger.log("error", "MAIN - testCreateCompanyCreateUserAndDelete - retrieveAllSubscriptionsOfCompanyById Error : ", e);
}));
await pause(2000);
// */
let newUser: any = await rainbowSDK.admin.createUserInCompany(email, password, firstname, lastname, newCompany.id, "en-US", false /* admin or not */, ["user", "closed_channels_admin", "private_channels_admin", "public_channels_admin"]).catch((e) => {
_logger.log("error", "MAIN - testCreateCompanyCreateUserAndDelete - createUserInCompany Error : ", e);
});
await pause(10000);
/*
_logger.log("debug", "MAIN - testCreateCompanyCreateUserAndDelete - subscribeUserToSubscription Result : ", await rainbowSDK.admin.subscribeUserToSubscription(newUser.id, subscribeResult.id).catch((e) => {
_logger.log("error", "MAIN - testCreateCompanyCreateUserAndDelete - subscribeUserToSubscription Error : ", e);
}));
_logger.log("debug", "MAIN - testsubscribtestCreateCompanyCreateUserAndDeleteeCompanyToDemoOffer - unSubscribeUserToSubscription Result : ", await rainbowSDK.admin.unSubscribeUserToSubscription(newUser.id, subscribeResult.id).catch((e) => {
_logger.log("error", "MAIN - testCreateCompanyCreateUserAndDelete - unSubscribeUserToSubscription Error : ", e);
}));
_logger.log("debug", "MAIN - testCreateCompanyCreateUserAndDelete - unSubscribeCompanyToDemoOffer Result : ", await rainbowSDK.admin.unSubscribeCompanyToDemoOffer(newCompany.id).catch((e) => {
_logger.log("error", "MAIN - testCreateCompanyCreateUserAndDelete - unSubscribeCompanyToDemoOffer Error : ", e);
}));
// */
let result = await rainbowSDK.contacts.addToNetwork(newUser);
await pause(10000);
_logger.log("debug", "MAIN - testCreateCompanyCreateUserAndDelete - addToNetwork done Result : ", result);
let contacts = rainbowSDK.contacts.getAll();
_logger.log("debug", "MAIN - contacts : ", contacts);
let deletedUser = await rainbowSDK.admin.deleteUser(newUser.id);
let contacts2 = rainbowSDK.contacts.getAll();
_logger.log("debug", "MAIN - contacts2 : ", contacts2);
await pause(10000);
let contacts3 = rainbowSDK.contacts.getAll();
_logger.log("debug", "MAIN - contacts3 : ", contacts3);
let deletedCompany = await rainbowSDK.admin.removeCompany({id: newCompany.id});
}
async testCreateCompanyCreateUsersForTests() {
// To use with rford@westworld.com
let utc = new Date().toJSON().replace(/-/g, '_');
let companyName = "VBRCompany";
let newCompany: any = await (rainbowSDK.admin.getCompanieByName(companyName));
if (!newCompany) {
newCompany = await (rainbowSDK.admin.createCompany(companyName, "USA", "AA", OFFERTYPES.PREMIUM).catch((e) => {
_logger.log("error", "MAIN - testCreateCompanyCreateUsersForTests - createCompany Error : ", e);
}));
await pause(2000);
} else {
newCompany = newCompany?.data;
if (Array.isArray(newCompany) && newCompany.length===1) {
newCompany = newCompany[0];
}
}
for (let i = 0; i < 100; i++) {
let generatedId = i;
//let generatedId = makeId(15);
let email = "vbrTests" + generatedId + "@vbe.test.openrainbow.net";
let password = "Password_123";
let firstname = "vbrTests_" + generatedId;
let lastname = "vbrTests_" + generatedId;
await pause(2000);
let newUser: any = await rainbowSDK.admin.createUserInCompany(email, password, firstname, lastname, newCompany.id, "en-US", false /* admin or not */, ["user", "closed_channels_admin", "private_channels_admin", "public_channels_admin"]).catch((e) => {
_logger.log("error", "MAIN - testCreateCompanyCreateUsersForTests - createUserInCompany Error : ", e);
});
_logger.log("debug", "MAIN - ", i, " contact created. Wait 5seconds before next creation.");
await pause(5000);
}
}
async testDeleteUsersForTestsWithComExtension() {
// To use with rford@westworld.com
// i created contacts with wrong emails extension, so this method is to clean server.
let utc = new Date().toJSON().replace(/-/g, '_');
let companyName = "VBRCompany";
let newCompany: any = await (rainbowSDK.admin.getCompanieByName(companyName));
if (!newCompany) {
await pause(2000);
_logger.log("debug", "MAIN - testDeleteUsersForTestsWithComExtension - newCompany ", companyName, " not found.");
return;
} else {
newCompany = newCompany?.data;
if (Array.isArray(newCompany) && newCompany.length===1) {
newCompany = newCompany[0];
}
}
await pause(2000);
for (let i = 0; i < 100; i++) {
let generatedId = i;
//let generatedId = makeId(15);
let email = "vbrTests" + generatedId + "@vbe.test.openrainbow.com";
let password = "Password_123";
let firstname = "vbrTests_" + generatedId;
let lastname = "vbrTests_" + generatedId;
let contactEmailToSearch = email;
let utc = new Date().toJSON().replace(/-/g, "_");
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let deletedUser = await rainbowSDK.admin.deleteUser(contact.id).then(async () => {
_logger.log("debug", "MAIN - testDeleteUsersForTestsWithComExtension - ", i, " contact deleted. Wait 5seconds before next creation.");
// */
await pause(1000);
}).catch((err) => {
_logger.log("error", "MAIN - testDeleteUsersForTestsWithComExtension - ", i, " failed to delete contact. Err : ", err);
});
}
}
async testJoinCompanyInvitations() {
// To use with rford@westworld.com
let utc = new Date().toJSON().replace(/-/g, '_');
let companyName = "MyVberderCompany_" + utc;
let newCompany = await (rainbowSDK.admin.createCompany(companyName, "USA", "AA", OFFERTYPES.PREMIUM).catch((e) => {
_logger.log("error", "MAIN - testJoinCompanyInvitations - createCompany Error : ", e);
}));
await pause(2000);
let email = "vincentTest01@vbe.test.openrainbow.com";
let password = "Password_123";
let firstname = "vincentTest01";
let lastname = "berderTest01";
await pause(2000);
/*logger.log("debug", "MAIN - testJoinCompanyInvitations - retrieveAllSubscriptionsOfCompanyById Result : ", await rainbowSDK.admin.retrieveAllSubscriptionsOfCompanyById(newCompany.id).catch((e) => {
_logger.log("error", "MAIN - testJoinCompanyInvitations - retrieveAllSubscriptionsOfCompanyById Error : ", e);
}));
await pause(2000);
// */
let loginEmail = rainbowSDK.Utils.generateRamdomEmail(email);
// let newUser : any = await rainbowSDK.admin.createUser(email, password, firstname, lastname, undefined, "en-US", false /* admin or not */, ["user"]).catch((e) => {
let p_sendInvitationEmail: boolean = false, p_doNotAssignPaidLicense: boolean = false,
p_mandatoryDefaultSubscription: boolean = false,
p_companyId: string = undefined, p_loginEmail: string = loginEmail, p_customData: any = undefined,
p_password: string = password,
p_firstName: string = firstname, p_lastName: string = lastname,
p_nickName: string = undefined, p_title: string = undefined, p_jobTitle: string = undefined,
p_department: string = undefined,
p_tags: Array = undefined, p_emails: Array = undefined,
p_phoneNumbers: Array = undefined, p_country: string = undefined,
p_state: string = undefined, p_language: string = "en-US",
p_timezone: string = undefined, p_accountType: string = "free", p_roles: Array = ["user"],
p_adminType: string = undefined, p_isActive: boolean = true, p_isInitialized: boolean = false,
p_visibility: string = undefined,
p_timeToLive: number = -1, p_authenticationType: string = undefined,
p_authenticationExternalUid: string = undefined, p_userInfo1: string = undefined,
p_selectedTheme: string = undefined, p_userInfo2: string = undefined, p_isAdmin: boolean = false;
let newUser: any = await rainbowSDK.admin.createUser(p_sendInvitationEmail, p_doNotAssignPaidLicense, p_mandatoryDefaultSubscription, p_companyId, p_loginEmail, p_customData, p_password, p_firstName, p_lastName,
p_nickName, p_title, p_jobTitle, p_department, p_tags, p_emails, p_phoneNumbers, p_country, p_state, p_language,
p_timezone, p_accountType, p_roles, p_adminType, p_isActive, p_isInitialized, p_visibility, p_timeToLive, p_authenticationType,
p_authenticationExternalUid, p_userInfo1, p_selectedTheme, p_userInfo2, p_isAdmin).catch((e) => {
_logger.log("error", "MAIN - testJoinCompanyInvitations - createUser Error : ", e);
});
await pause(10000);
try {
let invitation: any = await rainbowSDK.admin.inviteUserInCompany(newUser.loginEmail, newCompany.id, "en-US", "Hello !!!");
_logger.log("debug", "MAIN - (testJoinCompanyInvitations) invitation : ", invitation);
let options1: any = {};
Object.assign(options1, options);
options1.credentials.login = loginEmail;
options1.credentials.password = password;
options1.logs.customLabel = options1.credentials.login + "_1";
options1.logs.file.customFileName = "R-SDK-Node-" + options1.credentials.login + "_1";
let rainbowSDK1 = new RainbowSDK(options1);
rainbowSDK1.events.on("rainbow_onconnectionerror", () => {
// do something when the SDK has been started
_logger.log("debug", "MAIN - (rainbow_onconnectionerror) - rainbow failed to start.");
});
rainbowSDK1.events.on("rainbow_onerror", (data) => {
_logger.log("debug", "MAIN - (rainbow_onerror) - rainbow event received. data", data, " should destroy and recreate the SDK.");
rainbowSDK1 = undefined;
});
rainbowSDK1.events.on("rainbow_onjoincompanyinvitereceived", (data) => {
_logger.log("debug", "MAIN - (rainbow_onjoincompanyinvitereceived) - rainbow event received. data", data);
rainbowSDK1 = undefined;
});
await rainbowSDK1.start(undefined).then(async (result2) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - (testJoinCompanyInvitations) rainbow SDK started : ", _logger.colors.green(result2)); //logger.colors.green(JSON.stringify(result)));
});
let allInvitations: any = await rainbowSDK1.admin.getAllJoinCompanyInvitations("lastNotificationDate", undefined, "small", 100, 0, 1).catch((e) => {
_logger.log("error", "MAIN - testJoinCompanyInvitations - getAllJoinCompanyInvitations Error : ", e);
})
_logger.log("debug", "MAIN - testJoinCompanyInvitations - getAllJoinCompanyInvitations Result : ", allInvitations); // */
_logger.log("debug", "MAIN - testJoinCompanyInvitations - acceptJoinCompanyInvitation Result : ", await rainbowSDK1.admin.acceptJoinCompanyInvitation(allInvitations.data[0].id).catch((e) => {
_logger.log("error", "MAIN - testJoinCompanyInvitations - acceptJoinCompanyInvitation Error : ", e);
})); // */
} catch (e) {
}
let deletedUser = await rainbowSDK.admin.deleteUser(newUser.id);
let deletedCompany = await rainbowSDK.admin.removeCompany({id: newCompany.id});
}
async testJoinCompanyRequest() {
// To use with rford@westworld.com
let utc = new Date().toJSON().replace(/-/g, '_');
let companyName = "MyVberderCompany_" + utc;
let newCompany = await (rainbowSDK.admin.createCompany(companyName, "USA", "AA", OFFERTYPES.PREMIUM).catch((e) => {
_logger.log("error", "MAIN - testJoinCompanyRequest - createCompany Error : ", e);
}));
await pause(2000);
let email = "vincentTest01@vbe.test.openrainbow.com";
let password = "Password_123";
let firstname = "vincentTest01";
let lastname = "berderTest01";
await pause(2000);
/*logger.log("debug", "MAIN - testJoinCompanyInvitations - retrieveAllSubscriptionsOfCompanyById Result : ", await rainbowSDK.admin.retrieveAllSubscriptionsOfCompanyById(newCompany.id).catch((e) => {
_logger.log("error", "MAIN - testJoinCompanyInvitations - retrieveAllSubscriptionsOfCompanyById Error : ", e);
}));
await pause(2000);
// */
let loginEmail = rainbowSDK.Utils.generateRamdomEmail(email);
// let newUser : any = await rainbowSDK.admin.createUser(email, password, firstname, lastname, undefined, "en-US", false /* admin or not */, ["user"]).catch((e) => {
let p_sendInvitationEmail: boolean = false, p_doNotAssignPaidLicense: boolean = false,
p_mandatoryDefaultSubscription: boolean = false,
p_companyId: string = undefined, p_loginEmail: string = loginEmail, p_customData: any = undefined,
p_password: string = password,
p_firstName: string = firstname, p_lastName: string = lastname,
p_nickName: string = undefined, p_title: string = undefined, p_jobTitle: string = undefined,
p_department: string = undefined,
p_tags: Array = undefined, p_emails: Array = undefined,
p_phoneNumbers: Array = undefined, p_country: string = undefined,
p_state: string = undefined, p_language: string = "en-US",
p_timezone: string = undefined, p_accountType: string = "free", p_roles: Array = ["user"],
p_adminType: string = undefined, p_isActive: boolean = true, p_isInitialized: boolean = false,
p_visibility: string = undefined,
p_timeToLive: number = -1, p_authenticationType: string = undefined,
p_authenticationExternalUid: string = undefined, p_userInfo1: string = undefined,
p_selectedTheme: string = undefined, p_userInfo2: string = undefined, p_isAdmin: boolean = false;
let newUser: any = await rainbowSDK.admin.createUser(p_sendInvitationEmail, p_doNotAssignPaidLicense, p_mandatoryDefaultSubscription, p_companyId, p_loginEmail, p_customData, p_password, p_firstName, p_lastName,
p_nickName, p_title, p_jobTitle, p_department, p_tags, p_emails, p_phoneNumbers, p_country, p_state, p_language,
p_timezone, p_accountType, p_roles, p_adminType, p_isActive, p_isInitialized, p_visibility, p_timeToLive, p_authenticationType,
p_authenticationExternalUid, p_userInfo1, p_selectedTheme, p_userInfo2, p_isAdmin).catch((e) => {
_logger.log("error", "MAIN - testJoinCompanyRequest - createUser Error : ", e);
});
await pause(10000);
try {
let invitation: any = await rainbowSDK.admin.inviteUserInCompany(newUser.loginEmail, newCompany.id, "en-US", "Hello !!!");
_logger.log("debug", "MAIN - (testJoinCompanyRequest) invitation : ", invitation);
let options1: any = {};
Object.assign(options1, options);
options1.credentials.login = loginEmail;
options1.credentials.password = password;
options1.logs.customLabel = options1.credentials.login + "_1";
options1.logs.file.customFileName = "R-SDK-Node-" + options1.credentials.login + "_1";
let rainbowSDK1 = new RainbowSDK(options1);
rainbowSDK1.events.on("rainbow_onconnectionerror", () => {
// do something when the SDK has been started
_logger.log("debug", "MAIN - (rainbow_onconnectionerror) - rainbow failed to start.");
});
rainbowSDK1.events.on("rainbow_onerror", (data) => {
_logger.log("debug", "MAIN - (rainbow_onerror) - rainbow event received. data", data, " should destroy and recreate the SDK.");
rainbowSDK1 = undefined;
});
rainbowSDK1.events.on("rainbow_onjoincompanyinvitereceived", (data) => {
_logger.log("debug", "MAIN - (rainbow_onjoincompanyinvitereceived) - rainbow event received. data", data);
rainbowSDK1 = undefined;
});
await rainbowSDK1.start(undefined).then(async (result2) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - (testJoinCompanyRequest) rainbow SDK started : ", _logger.colors.green(result2)); //logger.colors.green(JSON.stringify(result)));
});
let allInvitations: any = await rainbowSDK1.admin.getAllJoinCompanyInvitations("lastNotificationDate", undefined, "small", 100, 0, 1).catch((e) => {
_logger.log("error", "MAIN - testJoinCompanyRequest - getAllJoinCompanyInvitations Error : ", e);
})
_logger.log("debug", "MAIN - testJoinCompanyRequest - getAllJoinCompanyInvitations Result : ", allInvitations); // */
_logger.log("debug", "MAIN - testJoinCompanyRequest - acceptJoinCompanyInvitation Result : ", await rainbowSDK1.admin.acceptJoinCompanyInvitation(allInvitations.data[0].id).catch((e) => {
_logger.log("error", "MAIN - testJoinCompanyRequest - acceptJoinCompanyInvitation Error : ", e);
})); // */
} catch (e) {
}
let deletedUser = await rainbowSDK.admin.deleteUser(newUser.id);
let deletedCompany = await rainbowSDK.admin.removeCompany({id: newCompany.id});
}
async testregisterUserByEmailFirstStep(userInfo: { "email": string, "lang": string }) {
let result = await rainbowSDK.admin.registerUserByEmailFirstStep(userInfo);
_logger.log("debug", "MAIN - testregisterUserByEmailFirstStep - result : ", result);
}
async testregisterUserByEmailSecondStepWithToken(userLoginInfo: {
"loginEmail": string,
"password": string,
"temporaryToken": string
}) {
let result = await rainbowSDK.admin.registerUserByEmailSecondStepWithToken(userLoginInfo);
_logger.log("debug", "MAIN - registerUserByEmailSecondStepWithToken - result : ", result);
}
async testaddPropertyToObj() {
let user: any = {};
let companyId = "12345678";
let loginEmail = "vincent01@vbe.test.openrainbow.net";
let companyName = undefined;
let phoneNumber = undefined;
addPropertyToObj(user, "companyId", companyId, false);
addPropertyToObj(user, "loginEmail", loginEmail, false);
addPropertyToObj(user, "companyName", companyName, true);
addPropertyToObj(user, "phoneNumber", phoneNumber, false);
_logger.log("debug", "MAIN - testaddPropertyToObj - user : ", user);
}
async testgetAUserProfilesByUserId() {
let Offers = await rainbowSDK.admin.getAUserProfilesByUserId(connectedUser.id);
_logger.log("debug", "MAIN - testgetAUserProfilesByUserId - profiles : ", Offers);
let result = await rainbowSDK.admin.getAUserProfilesByUserEmail(connectedUser.loginEmail);
_logger.log("debug", "MAIN - testgetAUserProfilesByUserId by email - profiles : ", result);
}
async testgetAUserProfilesFeaturesByUserId() {
let Offers = await rainbowSDK.admin.getAUserProfilesFeaturesByUserId(connectedUser.id);
_logger.log("debug", "MAIN - testgetAUserProfilesFeaturesByUserId - profiles : ", Offers);
let result = await rainbowSDK.admin.getAUserProfilesFeaturesByUserEmail(connectedUser.loginEmail);
_logger.log("debug", "MAIN - testgetAUserProfilesFeaturesByUserId by email - profiles : ", result);
}
//endregion Offers
//region Connections
testReconnection() {
let that = this;
// let conversation = null;
let contactIdToSearch = "5bbdc3812cf496c07dd89128"; // vincent01 vberder
//let contactIdToSearch = "5bbb3ef9b0bb933e2a35454b"; // vincent00 official
// Retrieve a contact by its id
rainbowSDK.contacts.getContactById(contactIdToSearch)
.then(function (contact) {
// Retrieve the associated conversation
return rainbowSDK.conversations.openConversationForContact(contact);
}).then(function (conversation) {
// Share the file
setInterval(() => {
rainbowSDK.im.sendMessageToConversation(conversation, "hello from node", "FR", null, "Le sujet de node").then((result) => {
_logger.log("debug", "MAIN - testReconnection sendMessageToConversation - result : ", result);
});
}, 15000);
/* that.rainbowSDK.fileStorage.getFilesSentInConversation(conversation).then((result) => {
that._logger.log("debug", "MAIN - testHDS getFilesSentInConversation - result : ", result);
}); // */
});
}
async testDeleteServerConversation() {
let that = this;
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
let utc = new Date().toJSON().replace(/-/g, "_");
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
if (conversation && conversation.id) {
let result = await rainbowSDK.conversations.deleteServerConversation(conversation.dbId);
_logger.log("debug", "MAIN - testDeleteServerConversation deleteServerConversation - result : ", result);
_logger.log("debug", "MAIN - testDeleteServerConversation deleteServerConversation - conversation : ", conversation);
} else {
_logger.log("debug", "MAIN - testDeleteServerConversation conversation empty or no id defined - conversation : ", conversation);
}
}
async test_multireconnect() {
for (let i = 0; i < 1000; i++) {
/*
rainbowSDK._core.rest.reconnect().then((result)=> {
_logger.log("debug", "MAIN - test_multireconnect - reconnect succeed : ", result, ", for i : ", i);
}).catch((err)=> {
_logger.log("error", "MAIN - test_multireconnect - reconnect error : ", err, ", for i : ", i);
});
// */
//await rainbowSDK._core.rest.reconnect();
await rainbowSDK._core._eventEmitter.iee.emit("rainbow_xmppreconnected");
_logger.log("debug", "MAIN - test_multireconnect - reconnect sent ++ : ", i);
}
}
async testcheckPortalHealth() {
rainbowSDK._core.rest.checkPortalHealth(0).then((result) => {
_logger.log("debug", "MAIN - testcheckPortalHealth - succeed : ", result);
}).catch((err) => {
_logger.log("error", "MAIN - testcheckPortalHealth - error : ", err);
});
// */
//await rainbowSDK._core.rest.reconnect();
_logger.log("debug", "MAIN - testcheckPortalHealth - ");
}
async testgetConnectionStatus() {
let connectionStatus: {
restStatus: boolean,
xmppStatus: boolean,
s2sStatus: boolean,
state: SDKSTATUSENUM,
nbHttpAdded: number,
httpQueueSize: number,
nbRunningReq: number,
maxSimultaneousRequests: number
} = await rainbowSDK.getConnectionStatus();
_logger.log("debug", "MAIN - [testgetConnectionStatus ] :: connectionStatus : ", connectionStatus);
let state = SDKSTATUSENUM.CONNECTED;
_logger.log("debug", "MAIN - [testgetConnectionStatus ] :: SDKSTATUSENUM.CONNECTED state : ", state);
}
//region apikeys rainbow authentication
public apiKeyGetted = "";
testdeleteApiKey(apiKeyId: string) {
let that = this;
_logger.log("debug", "MAIN - (testdeleteApiKey) apiKeyId : ", apiKeyId);
try {
apiKeyId = isDefined(apiKeyId) ? apiKeyId:that.apiKeyGetted;
rainbowSDK.admin.deleteApiKey(apiKeyId).then((result) => {
_logger.log("debug", "MAIN - (testdeleteApiKey) Successfully - result : ", result);
}).catch((err) => {
_logger.log("debug", "MAIN - (testdeleteApiKey) ErrorManager error : ", err);
});
} catch (err) {
_logger.log("debug", "MAIN - (testdeleteApiKey) CATCH error !!! : ", err);
}
}
testgenerateApiKey(scope: Array = ["all"], description: string = "Generated with R-node-SDK Sample", isActive: boolean = true, expirationDate?: string) {
let that = this;
_logger.log("debug", "MAIN - (testgenerateApiKey)");
try {
//apiKeyId = isDefined(apiKeyId) ? apiKeyId:that.apiKeyGetted;
rainbowSDK.admin.generateApiKey(scope, description, isActive, expirationDate).then((result) => {
_logger.log("debug", "MAIN - (testgenerateApiKey) Successfully - result : ", result);
that.apiKeyGetted = result?.apiKey;
}).catch((err) => {
_logger.log("debug", "MAIN - (testgenerateApiKey) ErrorManager error : ", err);
});
} catch (err) {
_logger.log("debug", "MAIN - (testgenerateApiKey) CATCH error !!! : ", err);
}
}
testgetAllApiKey(isActive:boolean = undefined, fromCreationDate:string = undefined, toCreationDate:string = undefined, limit:number = 100, offset:number = 0, sortField:string = "creationDate", sortOrder : number = -1, format : string = "small", userId : string) {
let that = this;
_logger.log("debug", "MAIN - (testgetAllApiKey)");
try {
//apiKeyId = isDefined(apiKeyId) ? apiKeyId:that.apiKeyGetted;
rainbowSDK.admin.getAllApiKey(isActive, fromCreationDate, toCreationDate, limit, offset, sortField, sortOrder, format, userId).then((result) => {
_logger.log("debug", "MAIN - (testgetAllApiKey) Successfully - result : ", result);
}).catch((err) => {
_logger.log("debug", "MAIN - (testgetAllApiKey) ErrorManager error : ", err);
});
} catch (err) {
_logger.log("debug", "MAIN - (testgetAllApiKey) CATCH error !!! : ", err);
}
}
testgetApiKey(apiKeyId:string = undefined) {
let that = this;
_logger.log("debug", "MAIN - (testgetApiKey)");
try {
apiKeyId = isDefined(apiKeyId) ? apiKeyId:that.apiKeyGetted;
rainbowSDK.admin.getApiKey(apiKeyId).then((result) => {
_logger.log("debug", "MAIN - (testgetApiKey) Successfully - result : ", result);
}).catch((err) => {
_logger.log("debug", "MAIN - (testgetApiKey) ErrorManager error : ", err);
});
} catch (err) {
_logger.log("debug", "MAIN - (testgetApiKey) CATCH error !!! : ", err);
}
}
testgetCurrentApiKey() {
//that._rest.getCurrentApiKey(apiKeyId).then((result) => {
let that = this;
_logger.log("debug", "MAIN - (getCurrentApiKey)");
try {
//apiKeyId = isDefined(apiKeyId) ? apiKeyId:that.apiKeyGetted;
rainbowSDK.admin.getCurrentApiKey().then((result) => {
_logger.log("debug", "MAIN - (getCurrentApiKey) Successfully - result : ", result);
}).catch((err) => {
_logger.log("debug", "MAIN - (getCurrentApiKey) ErrorManager error : ", err);
});
} catch (err) {
_logger.log("debug", "MAIN - (getCurrentApiKey) CATCH error !!! : ", err);
}
}
testupdateApiKey(apiKeyId : string, description : string, isActive : boolean, expirationDate: string = undefined) {
//that._rest.updateApiKey(apiKeyId, description, isActive, expirationDate).then((result) => {
let that = this;
_logger.log("debug", "MAIN - (testgetApiKey)");
try {
apiKeyId = isDefined(apiKeyId) ? apiKeyId:that.apiKeyGetted;
rainbowSDK.admin.getApiKey(apiKeyId).then((result) => {
_logger.log("debug", "MAIN - (testgetApiKey) Successfully - result : ", result);
}).catch((err) => {
_logger.log("debug", "MAIN - (testgetApiKey) ErrorManager error : ", err);
});
} catch (err) {
_logger.log("debug", "MAIN - (testgetApiKey) CATCH error !!! : ", err);
}
}
//endregion apikeys rainbow authentication
//endregion Connections
//region Alerts
async testcreateDevice() {
let alertDevice: AlertDevice = new AlertDevice();
alertDevice.name = "MyNodeDevice";
alertDevice.jid_im = rainbowSDK._core._xmpp.fullJid;
let result = await rainbowSDK.alerts.createDevice(alertDevice);
_logger.log("debug", "MAIN - testcreateDevice - result : ", result);
}
async testdeleteDevice() {
let result: AlertDevicesData = await rainbowSDK.alerts.getDevices(connectedUser.companyId, connectedUser.id, null, null, null);
_logger.log("debug", "MAIN - testdeleteDevice getDevices - result : ", result);
let alertDevices = result.getAlertDevices().toArray();
for (let i = 0; i < alertDevices.length; i++) {
_logger.log("debug", "MAIN - testdeleteDevice - alertDevices[" + i + "] : ", alertDevices[i].value);
await rainbowSDK.alerts.deleteDevice(alertDevices[i].value);
}
}
async testgetDevicesList() {
let result: AlertDevicesData = await rainbowSDK.alerts.getDevices(connectedUser.companyId, connectedUser.id, null, null, null);
_logger.log("debug", "MAIN - testgetDevicesList getDevices - result : ", result);
let alertDevices = result.getAlertDevices().toArray();
for (let i = 0; i < alertDevices.length; i++) {
_logger.log("debug", "MAIN - testgetDevicesList - alertDevices[" + i + "] : ", alertDevices[i].value);
}
}
async testcreateFilter() {
let filter: AlertFilter = new AlertFilter();
filter.name = "Filter1";
filter.tags = new List();
filter.companyId = connectedUser.companyId;
let result = await rainbowSDK.alerts.createFilter(filter);
_logger.log("debug", "MAIN - testcreateFilter - result : ", result);
/* {
"executing": "api:_core._alerts.createFilter",
"injecting":["obj:{ \"Name\" : \"Filter1\", \"Tags\" : null, \"CompanyId\" : @glo:maeveContact.companyId@ }"],
"resulting": "filterCreated",
"expecting": [{ "var:filterCreated": "$defined" } ],
"using": [
"robert"
]
// */
}
async testcreateTemplate() {
let template: AlertTemplate = new AlertTemplate();
template.name = "Template01";
template.companyId = connectedUser.companyId;
template.event = "Fire in building";
template.senderName = "sender name";
template.headline = "headline - headline";
template.instruction = "instruction - instruction";
template.contact = "contact - contact";
template.mimeType = "text/html";
template.description = "Fire in the building";
let result = await rainbowSDK.alerts.createTemplate(template);
_logger.log("debug", "MAIN - testcreateTemplate - result : ", result);
/*
{
"executing": "api:_core._alerts.createTemplate",
"injecting": [ "obj:{ \"name\" : \"Template01\", \"companyId\" : @glo:maeveContact.companyId@, \"event\" : \"Fire in building\", \"senderName\" : \"sender name\", \"headline\" : \"headline - headline\", \"instruction\" : \"instruction - instruction\", \"contact\" : \"contact - contact\", \"mimeType\" : \"text/html\", \"description\" : \"Fire in the building\" }"],
"resulting": "glo:templateCreated",
"expecting": [
{
"glo:templateCreated": "$defined"
}
],
"using": [
"robert"
]
},
// */
}
async testdeleteDevice_createDevice() {
// Use alertDemoWestworld@vbe.test.openrainbow.net
let result: any = await rainbowSDK.alerts.getDevices(connectedUser.companyId, connectedUser.id, null, null, null);
_logger.log("debug", "MAIN - testdeleteDevice_createDevice - result : ", result);
let alertDevices = result.getAlertDevices().toArray();
for (let i = 0; i < alertDevices.length; i++) {
_logger.log("debug", "MAIN - testdeleteDevice_createDevice - alertDevices[" + i + "] : ", alertDevices[i].value);
await rainbowSDK.alerts.deleteDevice(alertDevices[i].value);
}
let alertDevice: AlertDevice = new AlertDevice();
alertDevice.name = "MyNodeDevice";
alertDevice.jid_im = rainbowSDK._core._xmpp.fullJid;
alertDevice.tags = new List();
alertDevice.tags.add("tag1");
alertDevice.tags.add("tag2");
alertDevice.tags.add("tag3");
alertDevice.tags.add("tag4");
result = await rainbowSDK.alerts.createDevice(alertDevice);
_logger.log("debug", "MAIN - testdeleteDevice_createDevice - result : ", result);
}
async testcreateAlert() {
// Use vincent01@vbe.test.openrainbow.net
let alert: Alert = new Alert();
alert.companyId = connectedUser.companyId;
let resultTemplates: any = await rainbowSDK.alerts.getTemplates(connectedUser.companyId, 0, 100);
_logger.log("debug", "MAIN - testcreateAlert - resultTemplates : ", resultTemplates, " nb templates : ", resultTemplates.alertTemplates ? resultTemplates.alertTemplates.length:0);
if (resultTemplates.alertTemplates.length > 0) {
let template = resultTemplates.alertTemplates.elementAt(0).value;
alert.templateId = template.id;
let result = await rainbowSDK.alerts.createAlert(alert);
_logger.log("debug", "MAIN - testcreateAlert - result : ", result);
}
/*
{
"executing": "api:_core._alerts.createAlert",
"injecting": [ "obj:{ \"companyId\" : @glo:maeveContact.companyId@, \"templateId\" : @glo:templateCreated.id@ }"],
"resulting": "glo:alertCreated",
"expecting": [
{
"glo:alertCreated": "$defined"
}
],
"using": [
"robert"
]
}, // */
}
async testgetDevices() {
//let result = that.rainbowSDK.bubbles.getAllOwnedBubbles();
let result: AlertDevicesData = await rainbowSDK.alerts.getDevices(connectedUser.companyId, connectedUser.id, "", "", "", 0, 100);
_logger.log("debug", "MAIN - testgetDevices - result : ", result, " nb devices : ", result ? result.total:0);
if (result.total > 0) {
_logger.log("debug", "MAIN - testgetDevices - devices : ", result);
_logger.log("debug", "MAIN - testgetDevices - first device : ", await result.first());
}
//});
}
async testgetDevice() {
//let result = that.rainbowSDK.bubbles.getAllOwnedBubbles();
let result = await rainbowSDK.alerts.getDevices(connectedUser.companyId, connectedUser.id, "", "", "", 0, 100);
_logger.log("debug", "MAIN - testgetDevice - result : ", result, " nb devices : ", result ? result.total:0);
if (result.total > 0) {
_logger.log("debug", "MAIN - testgetDevice - devices : ", result);
let result2 = await rainbowSDK.alerts.getDevice((await result.first()).id);
_logger.log("debug", "MAIN - testgetDevice - AlertDevice : ", result2);
}
//});
}
async testgetDevicesTags() {
//let result = that.rainbowSDK.bubbles.getAllOwnedBubbles();
_logger.log("debug", "MAIN - testgetDevicesTags. ");
let result = await rainbowSDK.alerts.getDevicesTags(connectedUser.companyId);
_logger.log("debug", "MAIN - testgetDevicesTags - result : ", result);
//});
}
async testrenameDevicesTags() {
let newTagName: string;
let tag: string;
let companyId: string = connectedUser.companyId;
let tags = await rainbowSDK.alerts.getDevicesTags(connectedUser.companyId);
tag = tags.tags[0]
newTagName = "tag1_" + new Date().getTime();
let result = await rainbowSDK.alerts.renameDevicesTags(newTagName, tag, companyId);
_logger.log("debug", "MAIN - testrenameDevicesTags - result : ", result);
//});
}
async testdeleteDevicesTags() {
let tag: string;
let companyId: string = connectedUser.companyId;
let tags = await rainbowSDK.alerts.getDevicesTags(connectedUser.companyId);
tag = tags.tags[(tags.tags.length - 1)];
let result = await rainbowSDK.alerts.deleteDevicesTags(tag, companyId);
_logger.log("debug", "MAIN - testdeleteDevicesTags - result : ", result);
//});
}
async testgetstatsTags() {
let companyId: string = connectedUser.companyId;
let result = await rainbowSDK.alerts.getstatsTags(companyId);
_logger.log("debug", "MAIN - testgetstatsTags - result : ", result);
//});
}
async testgetTemplates() {
//let result = that.rainbowSDK.bubbles.getAllOwnedBubbles();
let result: any = await rainbowSDK.alerts.getTemplates(connectedUser.companyId, 0, 100);
_logger.log("debug", "MAIN - testgetTemplates - result : ", result, " nb templates : ", result ? result.length:0);
if (result.length > 0) {
_logger.log("debug", "MAIN - testgetTemplates - filters : ", result);
}
//});
}
async testgetFilters() {
//let result = that.rainbowSDK.bubbles.getAllOwnedBubbles();
let result: any = await rainbowSDK.alerts.getFilters(0, 100);
_logger.log("debug", "MAIN - testgetFilters - result : ", result, " nb filters : ", result ? result.length:0);
if (result.length > 0) {
_logger.log("debug", "MAIN - testgetFilters - filters : ", result);
}
//});
}
async testgetAlerts() {
// To use with vincent01 on .NET
//let result = that.rainbowSDK.bubbles.getAllOwnedBubbles();
let result: any = await rainbowSDK.alerts.getAlerts();
_logger.log("debug", "MAIN - testgetAlerts - result : ", result, " nb alerts : ", result ? result.length:0);
if (result.length > 0) {
_logger.log("debug", "MAIN - testgetAlerts - alerts : ", result);
}
//});
}
//endregion Alerts
//region Calendar
async testgetCalendarState() {
// To use with vincent.berder on Official
let result = await rainbowSDK.presence.getCalendarState();
_logger.log("debug", "MAIN - testgetCalendarState - result : ", result);
}
async testgetCalendarStates() {
// To use with vincent.berder on Official
let contacts = rainbowSDK.contacts.getAll();
_logger.log("debug", "MAIN - testgetCalendarStates - contacts : ", contacts);
let contactsIdentifier = contacts.map(elt => elt.loginEmail);
//let contactsIdentifier = contacts.map(elt => elt.id ) ;
_logger.log("debug", "MAIN - testgetCalendarStates - contactsIdentifier : ", contactsIdentifier);
/*let usersIds = [];
usersIds.push(contactsIdentifier[0]);
usersIds.push(contactsIdentifier[1]);
usersIds.push(contactsIdentifier[2]);
let result = await rainbowSDK.presence.getCalendarStates(usersIds);
// */
let result = await rainbowSDK.presence.getCalendarStates(contactsIdentifier);
_logger.log("debug", "MAIN - testgetCalendarStates - result : ", result);
}
async testgetCalendarAutomaticReplyStatus() {
// To use with vincent.berder on Official
let result = await rainbowSDK.presence.getCalendarAutomaticReplyStatus();
_logger.log("debug", "MAIN - testgetCalendarAutomaticReplyStatus - result : ", result);
let contacts = rainbowSDK.contacts.getAll();
_logger.log("debug", "MAIN - testgetCalendarAutomaticReplyStatus - contacts : ", contacts);
let result2 = await rainbowSDK.presence.getCalendarAutomaticReplyStatus(contacts[0].id);
_logger.log("debug", "MAIN - testgetCalendarAutomaticReplyStatus - contact : ", contacts[0], ", result2 : ", result2);
}
async testenableDisableCalendar() {
// To use with vincent.berder on Official
/* let result = await rainbowSDK.presence.disableCalendar();
_logger.log("debug", "MAIN - testenableDisableCalendar - result : ", result);
let result2 = await rainbowSDK.presence.enableCalendar();
_logger.log("debug", "MAIN - testenableDisableCalendar - result2 : ", result2);
// */
}
//endregion
//region Country
async testgetListOfCountries() {
try {
let result = await rainbowSDK.admin.getListOfCountries();
_logger.log("debug", "MAIN - testgetListOfCountries - result : ", result);
} catch (e) {
_logger.log("error", "MAIN - testgetListOfCountries - error : ", e);
}
}
//endregion Country
//region Bubble - dialIn
async testdialIn() {
// To be used with vincent00 on .Net
try {
_logger.log("debug", "MAIN - testdialIn - getAll bubbles : ", rainbowSDK.bubbles.getAll());
let bubbles = rainbowSDK.bubbles.getAllOwnedBubbles();
_logger.log("debug", "MAIN - testdialIn - getAllOwnedBubbles bubble : ", bubbles);
let bubble = bubbles.find(element => element.name==="bulle1")
_logger.log("debug", "MAIN - testdialIn - bubble \"bulle1\" : ", bubble);
if (bubble) {
let bubbleId = bubble.id;
let result1 = await rainbowSDK.bubbles.enableDialInForABubble(bubbleId);
_logger.log("debug", "MAIN - testdialIn - enableDialInForABubble result1 : ", result1);
let result = await rainbowSDK.bubbles.disableDialInForABubble(bubbleId);
_logger.log("debug", "MAIN - testdialIn - disableDialInForABubble result : ", result);
let result4 = await rainbowSDK.bubbles.enableDialInForABubble(bubbleId);
_logger.log("debug", "MAIN - testdialIn - enableDialInForABubble result4 : ", result4);
let result2 = await rainbowSDK.bubbles.resetDialInCodeForABubble(bubbleId);
_logger.log("debug", "MAIN - testdialIn - resetDialInCodeForABubble result2 : ", result2);
}
} catch (e) {
_logger.log("error", "MAIN - testdialIn - error : ", e);
}
}
async testgetDialInPhoneNumbersList() {
// To be used with vincent00 on .Net
try {
let shortList = true;
//logger.log("debug", "MAIN - testgetDialInPhoneNumbersList - getAll bubbles : ", rainbowSDK.bubbles.getAll());
let result = rainbowSDK.bubbles.getDialInPhoneNumbersList(shortList);
_logger.log("debug", "MAIN - testgetDialInPhoneNumbersList - result : ", result);
} catch (e) {
}
}
//endregion Bubble - dialIn
//region MS Teams
async testcontrolMsteamsPresenceDisable() {
try {
let disable: boolean = false;
let ignore: string = "true";
let result = await rainbowSDK.presence.controlMsteamsPresence(disable, ignore);
_logger.log("debug", "MAIN - testcontrolMsteamsPresence - result : ", result);
} catch (e) {
_logger.log("error", "MAIN - testcontrolMsteamsPresence - error : ", e);
}
}
async testcontrolMsteamsPresenceEnable() {
try {
let disable: boolean = true;
let ignore: string = "true";
let result = await rainbowSDK.presence.controlMsteamsPresence(disable, ignore);
_logger.log("debug", "MAIN - testcontrolMsteamsPresence - result : ", result);
} catch (e) {
_logger.log("error", "MAIN - testcontrolMsteamsPresence - error : ", e);
}
}
async testgetMsteamsPresenceState() {
try {
let result = await rainbowSDK.presence.getMsteamsPresenceState();
_logger.log("debug", "MAIN - testgetMsteamsPresenceState - result : ", result);
} catch (e) {
_logger.log("error", "MAIN - testgetMsteamsPresenceState - error : ", e);
}
}
async testgetMsteamsPresenceStates() {
try {
let result = await rainbowSDK.presence.getMsteamsPresenceStates();
_logger.log("debug", "MAIN - testgetMsteamsPresenceStates - result : ", result);
} catch (e) {
_logger.log("error", "MAIN - testgetMsteamsPresenceStates - error : ", e);
}
}
async testunregisterMsteamsPresenceSharing() {
try {
let result = await rainbowSDK.presence.unregisterMsteamsPresenceSharing();
_logger.log("debug", "MAIN - testunregisterMsteamsPresenceSharing - result : ", result);
} catch (e) {
_logger.log("error", "MAIN - testunregisterMsteamsPresenceSharing - error : ", e);
}
}
async testactivateMsteamsPresence() {
try {
let result = await rainbowSDK.presence.activateMsteamsPresence();
_logger.log("debug", "MAIN - testactivateMsteamsPresence - result : ", result);
} catch (e) {
_logger.log("error", "MAIN - testactivateMsteamsPresence - error : ", e);
}
}
async testdeactivateMsteamsPresence() {
try {
let result = await rainbowSDK.presence.deactivateMsteamsPresence();
_logger.log("debug", "MAIN - testdeactivateMsteamsPresence - result : ", result);
} catch (e) {
_logger.log("error", "MAIN - testdeactivateMsteamsPresence - error : ", e);
}
}
//endregion MS Teams
//region Rainbow Voice
async testgetCloudPbxById() {
// To use with
let systemId = "5cf7dd229fb99523e4de0ea9";
let result = await rainbowSDK.admin.getCloudPbxById(systemId);
_logger.log("debug", "MAIN - testgetCloudPbxById - result : ", result);
}
async testgetCloudPbxs() {
// To use with
let result = await rainbowSDK.admin.getCloudPbxs(100, 0, "companyId", 1, connectedUser.companyId, null);
_logger.log("debug", "MAIN - testgetCloudPbxs - result : ", result);
}
async testmakeCall3PCC() {
// to use with user851@pqa.test.openrainbow.net
/* Data sent by Web UI : {
"deviceId":"9990130000168511",
"calleeExtNumber":"",
"calleeShortNumber":"840",
"calleePbxId":"PBX1117-d1e8-9eac-4a8d-8b87-6593-1f26-c528",
"callerAutoAnswer":true
}
*/
let contactEmailToSearch = "dom1@pqa.test.openrainbow.net";
let contactDom1 = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let userDevices: any = await rainbowSDK.rbvoice.getUserDevices();
let sipDeviceId = "";
for (let i = 0; userDevices && i < userDevices.length; i++) {
if (userDevices[i].type=="sip") {
sipDeviceId = userDevices[i].deviceId;
}
}
let callData: any = {
deviceId: sipDeviceId,
callerAutoAnswer: true,
anonymous: false,
calleeExtNumber: "",
calleePbxId: contactDom1.phoneNumbers[0].pbxId,
calleeShortNumber: contactDom1.phoneNumbers[0].shortNumber,
calleeCountry: contactDom1.phoneNumbers[0].country,
//dialPadCalleeNumber: string
};
_logger.log("debug", "MAIN - testmakeCall3PCC - callData : ", callData);
let result = await rainbowSDK.rbvoice.makeCall3PCC(callData);
_logger.log("debug", "MAIN - testmakeCall3PCC - result : ", result);
}
//endregion
//region Company
//region Company From enduser
async testgetAllCompaniesVisibleByUser() {
_logger.log("debug", "MAIN - testgetAllCompaniesVisibleByUser. ");
let allCompanies: any = await rainbowSDK.admin.getAllCompaniesVisibleByUser();
_logger.log("debug", "MAIN - testgetAllCompaniesVisibleByUser - allCompanies : ", allCompanies.length);
}
async testgetCompanyAdministrators() {
_logger.log("debug", "MAIN - testgetCompanyAdministrators. ");
let allCompanies: any = await rainbowSDK.admin.getCompanyAdministrators();
_logger.log("debug", "MAIN - testgetCompanyAdministrators - allCompanies : ", allCompanies.length);
}
//endregion Company From enduser
//region compagnies
async testcreateRainbowMultifactorAuthenticationServerConfiguration() {
// let results: any = await rainbowSDK.admin.createRainbowMultifactorAuthenticationServerConfiguration();
//_logger.log("debug", "MAIN - testcreateRainbowMultifactorAuthenticationServerConfiguration - results : ", results);
}
async testgetAllRainbowMultifactorConfiguration () {
try {
let results: any = await rainbowSDK.admin.getAllRainbowMultifactorConfiguration(undefined, "small");
_logger.log("debug", "MAIN - testgetAllRainbowMultifactorConfiguration - results : ", results);
} catch (err) {
_logger.log("debug", "MAIN - testgetAllRainbowMultifactorConfiguration - CATCH Error !!! error : ", err);
}
}
//endregion compagnies
async testgetAllCompanies() {
// to be used with vincentbp@vbe.test.openrainbow.net on vberder AIO.
_logger.log("debug", "MAIN - testgetAllCompanies. ");
let allCompanies: any = await rainbowSDK.admin.getAllCompanies();
_logger.log("debug", "MAIN - testgetAllCompanies - allCompanies : ", allCompanies.length);
/*let companyId = connectedUser.companyId;
for (let company of allCompanies.data) {
//that._logger.log("debug", "(getSubscriptionsOfCompanyByOfferId) subscription : ", subscription);
if (company.name==="vbeCompanie") {
_logger.log("debug", "MAIN - testgetAllCompanies vbeCompanie found : ", company);
companyId = company.id;
}
}
_logger.log("debug", "MAIN - testgetAllCompanies - companyId : ", companyId);
let result = await rainbowSDK.admin.testgetAllCompanies(companyId, "csv", true);
_logger.log("debug", "MAIN - testgetAllCompanies - result : ", result);
// */
}
async testgetAllCompaniesWithFilters() {
// to be used with vincentbp@vbe.test.openrainbow.net on vberder AIO.
_logger.log("debug", "MAIN - testgetAllCompaniesWithFilters. ");
let format: string = "small";
let sortField: string = "name";
let bpId: string = undefined;
let catalogId: string = undefined;
let offerId: string = undefined;
let offerCanBeSold: boolean = undefined;
let externalReference: string = undefined;
let externalReference2: string = undefined;
let salesforceAccountId: string = undefined;
let selectedAppCustomisationTemplate: string = undefined
let selectedThemeObj: boolean = undefined;
let offerGroupName: string = undefined;
let limit: number = 100;
let offset: number = 0;
let sortOrder: number = 1;
let name: string = "westworld";
let status: string = undefined;
let visibility: string = undefined;
let organisationId: string = undefined
let isBP: boolean = undefined;
let hasBP: boolean = undefined;
let bpType: string = undefined;
let allCompanies: any = await rainbowSDK.admin.getAllCompanies(format, sortField, bpId, catalogId, offerId, offerCanBeSold, externalReference, externalReference2, salesforceAccountId, selectedAppCustomisationTemplate, selectedThemeObj, offerGroupName, limit, offset, sortOrder, name, status, visibility, organisationId, isBP, hasBP, bpType);
_logger.log("debug", "MAIN - testgetAllCompaniesWithFilters - allCompanies : ", allCompanies.length);
/*let companyId = connectedUser.companyId;
for (let company of allCompanies.data) {
//that._logger.log("debug", "(getSubscriptionsOfCompanyByOfferId) subscription : ", subscription);
if (company.name==="vbeCompanie") {
_logger.log("debug", "MAIN - testgetAllCompaniesWithFilters vbeCompanie found : ", company);
companyId = company.id;
}
}
_logger.log("debug", "MAIN - testgetAllCompaniesWithFilters - companyId : ", companyId);
let result = await rainbowSDK.admin.retrieveRainbowUserList(companyId, "csv", true);
_logger.log("debug", "MAIN - testgetAllCompaniesWithFilters - result : ", result);
// */
}
async testgetCompanyById() {
let myCompanyId = connectedUser.companyId;
let companyInfo = await rainbowSDK.admin.getCompanyById(myCompanyId)
_logger.log("debug", "MAIN - testgetCompanyById - companyInfo : ", companyInfo);
}
async testCreateCompanyAndRemoveCompany() {
// To use with rford@westworld.com
let utc = new Date().toJSON().replace(/-/g, '_');
let companyName = "MyVberderCompany_" + utc;
let newCompany = await (rainbowSDK.admin.createCompany(companyName, "USA", "AA", OFFERTYPES.PREMIUM).catch((e) => {
_logger.log("error", "MAIN - (testCreateCompanyAndRemoveCompany) - createCompany Error : ", e);
}));
await pause(2000);
let deletedCompany = await rainbowSDK.admin.removeCompany({id: newCompany.id});
_logger.log("debug", "MAIN - (testCreateCompanyAndRemoveCompany) deletedCompany : ", deletedCompany);
}
async testupdateCompany() {
// to be used with rford@westworld.com on .Net.
_logger.log("debug", "MAIN - testgetAllCompaniesWithFilters. ");
let format: string = "small";
let sortField: string = "name";
let bpId: string = undefined;
let catalogId: string = undefined;
let offerId: string = undefined;
let offerCanBeSold: boolean = undefined;
let externalReference: string = undefined;
let externalReference2: string = undefined;
let salesforceAccountId: string = undefined;
let selectedAppCustomisationTemplate: string = undefined
let selectedThemeObj: boolean = undefined;
let offerGroupName: string = undefined;
let limit: number = 100;
let offset: number = 0;
let sortOrder: number = 1;
let name: string = "MyVberderCompany_updated";
let status: string = undefined;
let visibility: string = undefined;
let organisationId: string = undefined
let isBP: boolean = undefined;
let hasBP: boolean = undefined;
let bpType: string = undefined;
let allCompanies: any = await rainbowSDK.admin.getAllCompanies(format, sortField, bpId, catalogId, offerId, offerCanBeSold, externalReference, externalReference2, salesforceAccountId, selectedAppCustomisationTemplate, selectedThemeObj, offerGroupName, limit, offset, sortOrder, name, status, visibility, organisationId, isBP, hasBP, bpType);
_logger.log("debug", "MAIN - testgetAllCompaniesWithFilters - allCompanies.total : ", allCompanies.total);
//let companyId = connectedUser.companyId;
for (let company of allCompanies.data) {
//that._logger.log("debug", "(getSubscriptionsOfCompanyByOfferId) subscription : ", subscription);
if (company.name===name) {
_logger.log("debug", "MAIN - testgetAllCompaniesWithFilters company ", name, " found : ", company);
let companyId = company.id;
let companyInfo: any = await rainbowSDK.admin.getCompanyById(companyId);
_logger.log("debug", "MAIN - testgetAllCompaniesWithFilters - before update companyInfo : ", companyInfo);
/*
companyInfo : {
selectedTheme: null,
localPublicSafetyAnsweringPoint: { userLocationReminderTimer: 360, globalUserRight: false },
names: [ 'myvberdercompany_2023_10_11t12:51:53758z' ],
offerType: 'freemium',
organisationId: '5c40a2d447ed8d89832292ff',
catalogId: '5fb32098514d23221012cfb5',
isBP: false,
bpBusinessType: [],
bpId: null,
disableCCareAdminAccess: false,
size: 'self-employed',
status: 'active',
visibility: 'organization',
visibleBy: [],
forceHandshake: false,
autoAcceptUserInvitations: true,
userSelfRegisterEnabled: true,
userSelfRegisterAllowedDomains: [],
lastAvatarUpdateDate: null,
lastBannerUpdateDate: null,
office365ScopesGranted: [],
avatarShape: 'circle',
adminCanSetCustomData: false,
isCentrex: false,
allowUsersSelectTheme: true,
allowUsersSelectPublicTheme: true,
selectedAppCustomisationTemplate: '5f43d61db7b6d40988a73e7c',
cloudPbxRecordingInboundOnly: true,
cloudPbxVoicemailToEmail: 'none',
mobilePermanentConnectionMode: false,
fileSharingCustomisation: 'enabled',
userTitleNameCustomisation: 'enabled',
softphoneOnlyCustomisation: 'disabled',
useRoomCustomisation: 'enabled',
phoneMeetingCustomisation: 'enabled',
useChannelCustomisation: 'enabled',
useScreenSharingCustomisation: 'enabled',
useWebRTCVideoCustomisation: 'enabled',
useWebRTCAudioCustomisation: 'enabled',
useWebRTCOnlyIfMobileLoggedCustomisation: 'disabled',
instantMessagesCustomisation: 'enabled',
userProfileCustomisation: 'enabled',
fileStorageCustomisation: 'enabled',
overridePresenceCustomisation: 'enabled',
changeTelephonyCustomisation: 'enabled',
changeSettingsCustomisation: 'enabled',
recordingConversationCustomisation: 'enabled',
useGifCustomisation: 'enabled',
useDialOutCustomisation: 'enabled',
fileCopyCustomisation: 'enabled',
fileTransferCustomisation: 'enabled',
forbidFileOwnerChangeCustomisation: 'enabled',
readReceiptsCustomisation: 'enabled',
useSpeakingTimeStatistics: 'enabled',
allowDeviceFirmwareSelection: false,
eLearningCustomisation: 'enabled',
eLearningGamificationCustomisation: 'enabled',
meetingRecordingCustomisation: 'enabled',
alertNotificationReception: 'disabled',
alertNotificationSending: 'disabled',
selectedDeviceFirmware: 'released',
defaultOptionsGroups: [],
sendPrepaidSubscriptionsNotification: true,
ddiReadOnly: false,
allowPhoneNumbersVisibility: false,
isMonitorable: false,
csEmailList: [],
seEmailList: [],
csmEmailList: [],
kamEmailList: [],
supervisionGroupMaxSize: 1500,
supervisionGroupMaxNumber: 5,
supervisionGroupMaxUsers: 30,
allowTeamsToDesktopSso: true,
useExternalStorage: 'disabled',
useRainbowStorage: 'enabled',
externalStorageAllowedAllUsers: false,
rainbowStorageAllowedAllUsers: true,
mainStorage: 'Rainbow Storage',
name: 'MyVberderCompany_updated',
state: 'AA',
country: 'USA',
statusUpdatedDate: '2023-10-11T12:51:59.689Z',
creationDate: '2023-10-11T12:51:59.689Z',
useComputerMode: 'enabled',
useOtherPhoneMode: 'enabled',
canCallParticipantPbxNumberCustomisation: 'enabled',
imPopupDuration: 3,
useSoftPhoneMode: 'enabled',
canAccessFaqCustomisation: 'enabled',
canAccessHelpCenterCustomisation: 'enabled',
canAccessStoreCustomisation: 'enabled',
canAccessWhatsNew: 'enabled',
canDownloadAppCustomisation: 'enabled',
endOfConferenceBehavior: { behavior: 'rainbow' },
canSetInvisiblePresenceCustomisation: 'enabled',
teamsPresenceOnRainbowBusyPhone: 'Busy',
canUseSendReportCustomisation: 'enabled',
canUseTaskCustomisation: 'enabled',
canUseTestConfigCustomisation: 'enabled',
useTeamsMode: 'disabled',
id: '65269a6fb06ddfd882b9c09f',
numberUsers: 0,
dataLocation: { name: 'North-America', location: 'Canada', country: 'CAN' }
} // */
let data : any = {"name": companyInfo.name, "autoAcceptUserInvitations" : false}; // !!! autoAcceptUserInvitations need superAdmin role.
_logger.log("debug", "MAIN - testgetAllCompaniesWithFilters - data : ", data);
let companyUpdatedResult : any = await rainbowSDK.admin.updateCompanyByObj(companyId, true, data);
_logger.log("debug", "MAIN - testgetAllCompaniesWithFilters - companyUpdatedResult : ", companyUpdatedResult);
companyInfo = await rainbowSDK.admin.getCompanyById(companyId);
_logger.log("debug", "MAIN - testgetAllCompaniesWithFilters - after update companyInfo : ", companyInfo);
}
}
//_logger.log("debug", "MAIN - testgetAllCompaniesWithFilters - companyId : ", companyId);
/*
let result = await rainbowSDK.admin.retrieveRainbowUserList(companyId, "csv", true);
_logger.log("debug", "MAIN - testgetAllCompaniesWithFilters - result : ", result);
// */
}
//endregion Company
//region Company Clean Afterbuild
async testCompanyCleanAfterbuild( deleteUsers : boolean = false, deleteCompanies : boolean =false) {
// To use with rford@westworld.com
let utc = new Date().toJSON().replace(/-/g, '_');
let companyName = "MyVberderCompany_" + utc;
let format: string = "small";
let sortField: string = "name";
let bpId: string = undefined;
let catalogId: string = undefined;
let offerId: string = undefined;
let offerCanBeSold: boolean = undefined;
let externalReference: string = undefined;
let externalReference2: string = undefined;
let salesforceAccountId: string = undefined;
let selectedAppCustomisationTemplate: string = undefined
let selectedThemeObj: boolean = undefined;
let offerGroupName: string = undefined;
let limit: number = 500;
let offset: number = 0;
let sortOrder: number = 1;
//let name: string = "Westworld_Guest_1583336606191";
// let name: string = "Westworld_Guest_";
let names: Array = ["Westworld_Guest_", "Westworld_Host_","Westworld Guest_", "Westworld Host_", "Afterbuild_NodeSDK_Westworld_", "Westworld Test SDK ("];
//let names: Array = ["Westworld_Host_1611262600870"];
let status: string = undefined;
let visibility: string = undefined;
let organisationId: string = undefined
let isBP: boolean = undefined;
let hasBP: boolean = undefined;
let bpType: string = undefined;
for (let name of names) {
_logger.log("debug", "MAIN - testCompanyCleanAfterbuild - name : ", name);
let allCompaniesResult: any = await rainbowSDK.admin.getAllCompanies(format, sortField, bpId, catalogId, offerId, offerCanBeSold, externalReference, externalReference2, salesforceAccountId, selectedAppCustomisationTemplate, selectedThemeObj, offerGroupName, limit, offset, sortOrder, name, status, visibility, organisationId, isBP, hasBP, bpType);
let allCompanies: Array = allCompaniesResult.data;
_logger.log("debug", "MAIN - testCompanyCleanAfterbuild - allCompanies : ", allCompanies.length);
await pause(2000);
for (let i = 0; i < allCompanies.length; i++) {
let companie = allCompanies[i];
/*
{
"settings": {
"singleSignOn": [],
"rainbowMfaPolicies": [],
"fileStorage": {}
},
"name": "Westworld_Guest_1583336606191",
"id": "5e5fccadfe3b6715b0f098f1"
}
// */
_logger.log("debug", "MAIN - testCompanyCleanAfterbuild - Companie : ", companie);
let allSubscriptionsOfCompany: any = await rainbowSDK.admin.retrieveAllSubscriptionsOfCompanyById( companie.id).catch(err => {
_logger.log("error", "MAIN - testCompanyCleanAfterbuild - retrieveAllSubscriptionsOfCompanyById() err : ", err);
});
for (let j = 0; j < allSubscriptionsOfCompany.length; j++) {
let subscriptionOfCompany = allSubscriptionsOfCompany[j];
_logger.log("debug", "MAIN - testCompanyCleanAfterbuild - subscriptionOfCompany : ", subscriptionOfCompany);
await rainbowSDK.admin.unSubscribeCompanyToSubscription(subscriptionOfCompany.id, companie.id).catch(err => {
_logger.log("error", "MAIN - testCompanyCleanAfterbuild - unSubscribeCompanyToSubscription() err : ", err);
});
}
// */
let format: string = "small", name: string = undefined, canBeSold: boolean = undefined, autoSubscribe: boolean = undefined, isExclusive: boolean = undefined, isPrepaid: boolean = undefined, profileId: boolean = undefined, offerReference: boolean = undefined, sapReference: boolean = undefined, limit: number = 1000, offset: number = 0, sortField: string = "name", sortOrder: number = 1;
let Offers = await rainbowSDK.admin.retrieveAllOffersOfCompanyById(companie.id, format, name, canBeSold, autoSubscribe, isExclusive, isPrepaid, profileId, offerReference, sapReference, limit, offset, sortField, sortOrder );
_logger.log("debug", "(testCompanyCleanAfterbuild) - Offers : ", Offers);
for (let offer of Offers) {
_logger.log("debug", "(testCompanyCleanAfterbuild) offer : ", offer);
await rainbowSDK.admin.unSubscribeCompanyToOfferById(offer.id, companie.id).catch(err => {
_logger.log("error", "MAIN - testCompanyCleanAfterbuild - unSubscribeCompanyToOfferById() err : ", err);
});
}
if (deleteUsers) {
let allUsersCompany: any = await rainbowSDK.admin.getAllUsersByCompanyId("small", 0, 100, undefined, companie.id).catch(err => {
_logger.log("error", "MAIN - testCompanyCleanAfterbuild - getAllUsersByCompanyId() err : ", err);
});
for (let j = 0; j < allUsersCompany.length; j++) {
let usersCompany = allUsersCompany[j];
_logger.log("debug", "MAIN - testCompanyCleanAfterbuild - usersCompany : ", usersCompany);
let userDeleted = await rainbowSDK.admin.deleteUser(usersCompany.id).catch(err => {
_logger.log("error", "MAIN - testCompanyCleanAfterbuild - deleteUser() err : ", err);
});
_logger.log("debug", "MAIN - testCompanyCleanAfterbuild - userDeleted : ", userDeleted);
}
}
if (deleteCompanies) {
let deletedCompany = await rainbowSDK.admin.removeCompany({"id": companie.id}).catch(err => {
_logger.log("error", "MAIN - testCompanyCleanAfterbuild - removeCompany() err : ", err);
});
_logger.log("debug", "MAIN - testCompanyCleanAfterbuild - deletedCompany : ", deletedCompany);
}
}
}
}
async testCompanyVBETESTOPENRAINBOWNETCleanAfterbuild() {
// To use with rford@westworld.com
let utc = new Date().toJSON().replace(/-/g, '_');
let format: string = "small";
let sortField: string = "name";
let bpId: string = undefined;
let catalogId: string = undefined;
let offerId: string = undefined;
let offerCanBeSold: boolean = undefined;
let externalReference: string = undefined;
let externalReference2: string = undefined;
let salesforceAccountId: string = undefined;
let selectedAppCustomisationTemplate: string = undefined
let selectedThemeObj: boolean = undefined;
let offerGroupName: string = undefined;
let limit: number = 500;
let offset: number = 0;
let sortOrder: number = 1;
//let name: string = "Westworld_Guest_1583336606191";
// let name: string = "Westworld_Guest_";
let names: Array = ["vbe.test.openrainbow.net"];
//let names: Array = ["Westworld_Host_1611262600870"];
let status: string = undefined;
let visibility: string = undefined;
let organisationId: string = undefined
let isBP: boolean = undefined;
let hasBP: boolean = undefined;
let bpType: string = undefined;
for (let name of names) {
_logger.log("debug", "MAIN - testCompanyCleanAfterbuildtestCompanyVBETESTOPENRAINBOWNETCleanAfterbuild - name : ", name);
let allCompaniesResult: any = await rainbowSDK.admin.getAllCompanies(format, sortField, bpId, catalogId, offerId, offerCanBeSold, externalReference, externalReference2, salesforceAccountId, selectedAppCustomisationTemplate, selectedThemeObj, offerGroupName, limit, offset, sortOrder, name, status, visibility, organisationId, isBP, hasBP, bpType);
let allCompanies: Array = allCompaniesResult.data;
_logger.log("debug", "MAIN - testCompanyCleanAfterbuildtestCompanyVBETESTOPENRAINBOWNETCleanAfterbuild - allCompanies : ", allCompanies.length);
await pause(2000);
for (let i = 0; i < allCompanies.length; i++) {
let companie = allCompanies[i];
/*
{
"settings": {
"singleSignOn": [],
"rainbowMfaPolicies": [],
"fileStorage": {}
},
"name": "Westworld_Guest_1583336606191",
"id": "5e5fccadfe3b6715b0f098f1"
}
// */
_logger.log("debug", "MAIN - testCompanyCleanAfterbuildtestCompanyVBETESTOPENRAINBOWNETCleanAfterbuild - Companie : ", companie);
let allUsersCompany: any = await rainbowSDK.admin.getAllUsersByCompanyId("small", 0, 100, undefined, companie.id).catch(err => {
_logger.log("error", "MAIN - testCompanyCleanAfterbuildtestCompanyVBETESTOPENRAINBOWNETCleanAfterbuild - getAllUsersByCompanyId() err : ", err);
});
/*
vincent++@vbe.test.openrainbow.net Berder++ Vincent++
vincent.berder.afterbuild@vbe.test.openrainbow.net Berder-Afterbuild VincentAF
vincentadmin00@vbe.test.openrainbow.net Berderadmin00 Vincentadmin00
vincent00@vbe.test.openrainbow.net berder00 vincent00
vincent03@vbe.test.openrainbow.net berder03 vincent03
vincent07@vbe.test.openrainbow.net berder07 vincent07
vincent09@vbe.test.openrainbow.net berder09 vincent09
vincent10@vbe.test.openrainbow.net berder10 vincent10
vincent11@vbe.test.openrainbow.net berder11 vincent11
vincentfree@vbe.test.openrainbow.net BerderFree VincentFree
vincent00_01@vbe.test.openrainbow.net
// */
let usersToKeep = ["vincent++@vbe.test.openrainbow.net",
"vincent.berder.afterbuild@vbe.test.openrainbow.net",
"vincentadmin00@vbe.test.openrainbow.net",
"vincent00@vbe.test.openrainbow.net",
"vincent03@vbe.test.openrainbow.net",
"vincent07@vbe.test.openrainbow.net",
"vincent09@vbe.test.openrainbow.net",
"vincent10@vbe.test.openrainbow.net",
"vincent11@vbe.test.openrainbow.net",
"vincentfree@vbe.test.openrainbow.net",
"vincent00_01@vbe.test.openrainbow.net"
];
let keepedUsers = [];
let deletedUsers = [];
const regex = /vincent/i; // 'i' pour insensible à la casse
for (let j = 0; j < allUsersCompany.length; j++) {
let userCompany = allUsersCompany[j];
//_logger.log("debug", "MAIN - testCompanyCleanAfterbuildtestCompanyVBETESTOPENRAINBOWNETCleanAfterbuild - treat userCompany : ", userCompany);
let ignoreTheUser : boolean = (usersToKeep.find((elt) => { return ( elt === userCompany.loginEmail || regex.test(userCompany.loginEmail) || regex.test(userCompany.firstName) || regex.test(userCompany.lastName)) } ) != undefined);
if (!ignoreTheUser) {
//_logger.log("debug", "MAIN - testCompanyCleanAfterbuildtestCompanyVBETESTOPENRAINBOWNETCleanAfterbuild - delete userDeleted.id : ", userCompany.id, ", userDeleted.loginEmail : ", userCompany.loginEmail);
deletedUsers.push(userCompany);
let userDeleted = await rainbowSDK.admin.deleteUser(userCompany.id).catch(err => {
_logger.log("error", "MAIN - testCompanyCleanAfterbuildtestCompanyVBETESTOPENRAINBOWNETCleanAfterbuild - deleteUser() err : ", err);
});
_logger.log("debug", "MAIN - testCompanyCleanAfterbuildtestCompanyVBETESTOPENRAINBOWNETCleanAfterbuild - userDeleted : ", userDeleted);
// */
} else {
//_logger.log("debug", "MAIN - testCompanyCleanAfterbuildtestCompanyVBETESTOPENRAINBOWNETCleanAfterbuild - Keep userDeleted.id : ", userCompany.id, ", userDeleted.loginEmail : ", userCompany.loginEmail);
keepedUsers.push(userCompany);
}
}
_logger.log("debug", "MAIN - testCompanyCleanAfterbuildtestCompanyVBETESTOPENRAINBOWNETCleanAfterbuild - Keeped users : ", keepedUsers.map(u => `${u.loginEmail} ${u.displayName} ${u.id}`).join('\n'));
_logger.log("debug", "MAIN - testCompanyCleanAfterbuildtestCompanyVBETESTOPENRAINBOWNETCleanAfterbuild - Deleted users : ", deletedUsers.map(u => `${u.loginEmail} ${u.displayName} ${u.id}`).join('\n'));
}
}
}
//endregion Company Clean Afterbuild
//region Custom Templates
async testgetCompanyServiceDescriptionFile() {
let myCompanyId = connectedUser.companyId;
let result = await rainbowSDK.admin.getCompanyServiceDescriptionFile(myCompanyId)
_logger.log("debug", "MAIN - getCompanyServiceDescriptionFile - result : ", result);
}
//endregion Custom Templates
//region Custom Templates
async testapplyCustomisationTemplates() {
let myCompanyId = connectedUser.companyId;
let contactEmailToSearch = "vincent00@vbe.test.openrainbow.net";
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
//let result : any= await rainbowSDK.admin.applyCustomisationTemplates("MyTemplateVBE2", myCompanyId, contact.id);
//let result : any= await rainbowSDK.admin.applyCustomisationTemplates("MyTemplateVBE2", contact.companyId, undefined);
let result: any = await rainbowSDK.admin.applyCustomisationTemplates("MyTemplateVBE2", myCompanyId, undefined);
// let result : any= await rainbowSDK.admin.applyCustomisationTemplates("MyTemplateVBE2", undefined, contact.id);
_logger.log("debug", "MAIN - testapplyCustomisationTemplates - result : ", result);
}
async testcreateCustomisationTemplate() {
// let visibleBy: [],
let instantMessagesCustomisation = 'enabled';
let useGifCustomisation = 'enabled';
let fileSharingCustomisation = 'enabled';
let fileStorageCustomisation = 'enabled';
let phoneMeetingCustomisation = 'enabled';
let useDialOutCustomisation = 'enabled';
let useChannelCustomisation = 'enabled';
let useRoomCustomisation = 'enabled';
let useWebRTCAudioCustomisation = 'enabled';
let useWebRTCVideoCustomisation = 'enabled';
let recordingConversationCustomisation = 'enabled';
let overridePresenceCustomisation = 'enabled';
let userProfileCustomisation = 'enabled';
let userTitleNameCustomisation = 'enabled';
let changeTelephonyCustomisation = 'enabled';
let changeSettingsCustomisation = 'enabled';
let fileCopyCustomisation = 'enabled';
let fileTransferCustomisation = 'enabled';
let forbidFileOwnerChangeCustomisation = 'enabled';
let useScreenSharingCustomisation = 'enabled';
let readReceiptsCustomisation = 'enabled';
let useSpeakingTimeStatistics = 'enabled';
let myCompanyId = connectedUser.companyId;
let name = 'MyTemplateVBE2';
let result: any = await rainbowSDK.admin.createCustomisationTemplate(name, myCompanyId, undefined, instantMessagesCustomisation, useGifCustomisation,
fileSharingCustomisation, fileStorageCustomisation, phoneMeetingCustomisation, useDialOutCustomisation, useChannelCustomisation, useRoomCustomisation,
useScreenSharingCustomisation, useWebRTCAudioCustomisation, useWebRTCVideoCustomisation, recordingConversationCustomisation, overridePresenceCustomisation,
userProfileCustomisation, userTitleNameCustomisation, changeTelephonyCustomisation, changeSettingsCustomisation, fileCopyCustomisation,
fileTransferCustomisation, forbidFileOwnerChangeCustomisation, readReceiptsCustomisation, useSpeakingTimeStatistics);
_logger.log("debug", "MAIN - testcreateCustomisationTemplate - result : ", result);
}
async testdeleteCustomisationTemplate() {
let that = this;
await that.testgetCompanyById();
let myCompanyId = connectedUser.companyId;
let result: any = await rainbowSDK.admin.getAllAvailableCustomisationTemplates(myCompanyId);
_logger.log("debug", "MAIN - testdeleteCustomisationTemplate - getAllAvailableCustomisationTemplates result : ", result);
for (const template of result.data) {
_logger.log("debug", "MAIN - testdeleteCustomisationTemplate - template : ", template);
let templateInfo = rainbowSDK.admin.getRequestedCustomisationTemplate(template.id);
_logger.log("debug", "MAIN - testdeleteCustomisationTemplate - getRequestedCustomisationTemplate templateInfo : ", templateInfo);
if (template.name=="MyTemplateVBE2") {
let result2: any = await rainbowSDK.admin.deleteCustomisationTemplate(template.id);
_logger.log("debug", "MAIN - testdeleteCustomisationTemplate - delete result2 : ", result2);
}
}
}
async testgetAllAvailableCustomisationTemplates() {
let that = this;
await that.testgetCompanyById();
let myCompanyId = connectedUser.companyId;
let result: any = await rainbowSDK.admin.getAllAvailableCustomisationTemplates(myCompanyId);
_logger.log("debug", "MAIN - testgetAllAvailableCustomisationTemplates - result : ", result);
for (const template of result.data) {
_logger.log("debug", "MAIN - testgetAllAvailableCustomisationTemplates - template : ", template);
let templateInfo = rainbowSDK.admin.getRequestedCustomisationTemplate(template.id);
_logger.log("debug", "MAIN - testgetAllAvailableCustomisationTemplates - templateInfo : ", templateInfo);
}
}
async testgetRequestedCustomisationTemplate() {
let that = this;
await that.testgetCompanyById();
let myCompanyId = connectedUser.companyId;
let result: any = await rainbowSDK.admin.getAllAvailableCustomisationTemplates(myCompanyId);
_logger.log("debug", "MAIN - testgetRequestedCustomisationTemplate - result : ", result);
for (const template of result.data) {
if (template.name=="MyTemplateVBE2") {
_logger.log("debug", "MAIN - testgetRequestedCustomisationTemplate - template : ", template);
let templateInfo = rainbowSDK.admin.getRequestedCustomisationTemplate(template.id);
_logger.log("debug", "MAIN - testgetRequestedCustomisationTemplate - templateInfo : ", templateInfo);
}
}
}
async testupdateCustomisationTemplate() {
let that = this;
await that.testgetCompanyById();
let myCompanyId = connectedUser.companyId;
let result: any = await rainbowSDK.admin.getAllAvailableCustomisationTemplates(myCompanyId);
_logger.log("debug", "MAIN - testupdateCustomisationTemplate - getAllAvailableCustomisationTemplates result : ", result);
for (const template of result.data) {
_logger.log("debug", "MAIN - testupdateCustomisationTemplate - template : ", template);
//let templateInfo = rainbowSDK.admin.getRequestedCustomisationTemplate(template.id);
//logger.log("debug", "MAIN - testupdateCustomisationTemplate - getRequestedCustomisationTemplate templateInfo : ", templateInfo);
if (template.name=="MyTemplateVBE2") {
let instantMessagesCustomisation = 'enabled';
let useGifCustomisation = 'enabled';
let fileSharingCustomisation = 'enabled';
let fileStorageCustomisation = 'enabled';
let phoneMeetingCustomisation = 'enabled';
let useDialOutCustomisation = 'enabled';
let useChannelCustomisation = 'enabled';
let useRoomCustomisation = 'enabled';
let useWebRTCAudioCustomisation = 'enabled';
let useWebRTCVideoCustomisation = 'enabled';
let recordingConversationCustomisation = 'enabled';
let overridePresenceCustomisation = 'enabled';
let userProfileCustomisation = 'enabled';
let userTitleNameCustomisation = 'enabled';
let changeTelephonyCustomisation = 'enabled';
let changeSettingsCustomisation = 'enabled';
let fileCopyCustomisation = 'enabled';
let fileTransferCustomisation = 'enabled';
let forbidFileOwnerChangeCustomisation = 'disabled';
let useScreenSharingCustomisation = 'enabled';
let readReceiptsCustomisation = 'enabled';
let useSpeakingTimeStatistics = 'enabled';
//let myCompanyId = connectedUser.companyId;
let name = 'MyTemplateVBE2';
let result2: any = await rainbowSDK.admin.updateCustomisationTemplate(template.id, name, undefined, instantMessagesCustomisation, useGifCustomisation,
fileSharingCustomisation, fileStorageCustomisation, phoneMeetingCustomisation, useDialOutCustomisation, useChannelCustomisation, useRoomCustomisation,
useScreenSharingCustomisation, useWebRTCAudioCustomisation, useWebRTCVideoCustomisation, recordingConversationCustomisation, overridePresenceCustomisation,
userProfileCustomisation, userTitleNameCustomisation, changeTelephonyCustomisation, changeSettingsCustomisation, fileCopyCustomisation,
fileTransferCustomisation, forbidFileOwnerChangeCustomisation, readReceiptsCustomisation, useSpeakingTimeStatistics);
_logger.log("debug", "MAIN - testupdateCustomisationTemplate - updateCustomisationTemplate result2 : ", result2);
}
}
}
//endregion Custom Templates
//region Directory
async testcreateDirectoryEntry() {
//let result = that.rainbowSDK.bubbles.getAllOwnedBubbles();
_logger.log("debug", "MAIN - testcreateDirectoryEntry. ");
let utc = new Date().toJSON().replace(/-/g, "_");
let utcEmail = new Date().toJSON().replace(/-|\.|:/g, "_");
_logger.log("debug", "MAIN - testcreateDirectoryEntry. utcEmail : ", utcEmail);
let companyId = connectedUser.companyId,
firstName = "firstname_" + utc,
lastName = "firstname_" + utc,
companyName = connectedUser.companyName,
department = "SBU",
street = "1 rte Albert Schweitzer",
city = "Illkirch",
state = null,
postalCode = "67115",
country: "France",
workPhoneNumbers = ["0011223344"],
mobilePhoneNumbers = [],
otherPhoneNumbers = [],
jobTitle = "Validation Engineer",
eMail = utcEmail + "_test@vbe.test.openrainbow.net",
tags = [],
custom1 = "",
custom2 = "";
let result = await rainbowSDK.admin.createDirectoryEntry(companyId, firstName, lastName, companyName, department, street, city, state, postalCode, country, workPhoneNumbers, mobilePhoneNumbers, otherPhoneNumbers, jobTitle, eMail, tags, custom1, custom2);
_logger.log("debug", "MAIN - testcreateDirectoryEntry - result : ", result);
// */
//});
}
async testexportDirectoryCsvFile() {
//let result = that.rainbowSDK.bubbles.getAllOwnedBubbles();
_logger.log("debug", "MAIN - testexportDirectoryCsvFile. ");
let companyId = connectedUser.companyId;
let result = await rainbowSDK.admin.exportDirectoryCsvFile(companyId, "c:\\temp\\");
_logger.log("debug", "MAIN - testexportDirectoryCsvFile - result : ", result);
}
async testImportDirectoryCsvFile() {
//let result = that.rainbowSDK.bubbles.getAllOwnedBubbles();
_logger.log("debug", "MAIN - testImportDirectoryCsvFile. ");
let companyId = connectedUser.companyId;
let result = await rainbowSDK.admin.ImportDirectoryCsvFile(companyId, "c:\\temp\\dirToImport.csv", "label1");
_logger.log("debug", "MAIN - testImportDirectoryCsvFile - result : ", result);
}
testgetCSVTemplate() {
// to use with bp-admin@pqa.test.openrainbow.net user on NET platform.
rainbowSDK.admin.getCSVTemplate("5f75a07c1db9464d67e3245e", "user", "test").then((res) => {
if (res) {
_logger.log("debug", "MAIN - [testgetCSVTemplate ] :: res : ", res);
}
}).catch((err) => {
_logger.log("error", "MAIN - [testgetCSVTemplate ] :: error : ", err);
});
}
testgetListDirectoryEntriesData() {
let emailToSearch = "Bouvet@vbe.test.openrainbow.net";
let companyId, organisationIds, name, search, type, companyName, phoneNumbers, fromUpdateDate, toUpdateDate,
tags, format, limit, offset, sortField, sortOrder, view = undefined;
search = "Bouvet";
//search = emailToSearch;
type = "user";
//search = emailToSearch;
rainbowSDK.admin.getListDirectoryEntriesData(companyId, organisationIds, name, search, type, companyName, phoneNumbers, fromUpdateDate, toUpdateDate, tags, format, limit, offset, sortField, sortOrder, view).then((res: any) => {
if (res) {
_logger.log("debug", "MAIN - [testgetListDirectoryEntriesData ] :: res : ", res);
if (res.data) {
for (let i = 0; i < res.data.length; i++) {
_logger.log("debug", "MAIN - [testgetListDirectoryEntriesData ] :: res[", i, "] : ", res.data[i]);
}
}
}
}).catch((err) => {
_logger.log("error", "MAIN - [testgetListDirectoryEntriesData ] :: error : ", err);
});
}
testgetDirectoryEntryData() {
let emailToSearch = "Bouvet@vbe.test.openrainbow.net";
let companyId, organisationIds, name, search, type, companyName, phoneNumbers, fromUpdateDate, toUpdateDate,
tags, format, limit, offset, sortField, sortOrder, view = undefined;
search = "Bouvet";
//search = emailToSearch;
type = "user";
//search = emailToSearch;
format = "full";
rainbowSDK.admin.getListDirectoryEntriesData(companyId, organisationIds, name, search, type, companyName, phoneNumbers, fromUpdateDate, toUpdateDate, tags, format, limit, offset, sortField, sortOrder, view).then((res: any) => {
if (res) {
_logger.log("debug", "MAIN - [testgetDirectoryEntryData ] :: res : ", res);
if (res.data) {
for (let i = 0; i < res.data.length; i++) {
_logger.log("debug", "MAIN - [testgetDirectoryEntryData ] :: res[", i, "] : ", res.data[i]);
if (res.data[i].companyName=="compa") {
rainbowSDK.admin.getDirectoryEntryData(res.data[i].id, "full").then((result) => {
_logger.log("debug", "MAIN - [testgetDirectoryEntryData ] :: res[", i, "] : ", res.data[i], ", result : ", result);
});
}
}
}
}
}).catch((err) => {
_logger.log("error", "MAIN - [testgetListDirectoryEntriesData ] :: error : ", err);
});
}
//endregion Directory
//region Personal Directory
async testcreatePersonalDirectoryEntry() {
//let result = that.rainbowSDK.bubbles.getAllOwnedBubbles();
_logger.log("debug", "MAIN - testcreatePersonalDirectoryEntry. ");
let utc = new Date().toJSON().replace(/-/g, "_");
let utcEmail = new Date().toJSON().replace(/-|\.|:/g, "_");
_logger.log("debug", "MAIN - testcreatePersonalDirectoryEntry. utcEmail : ", utcEmail);
let companyId = connectedUser.companyId,
firstName = "testPersonalDirectory_firstname_" + utc,
lastName = "testPersonalDirectory_firstname_" + utc,
companyName = connectedUser.companyName,
department = "SBU",
street = "1 rte Albert Schweitzer",
city = "Illkirch",
state = null,
postalCode = "67115",
country = "FRA",
workPhoneNumbers = ["0011223344"],
mobilePhoneNumbers = [],
otherPhoneNumbers = [],
jobTitle = "Validation Engineer",
eMail = utcEmail + "_test@vbe.test.openrainbow.net",
tags = [],
custom1 = "",
custom2 = "";
let result = await rainbowSDK.contacts.createPersonalDirectoryEntry(firstName, lastName, companyName, department, street, city, state, postalCode, country, workPhoneNumbers, mobilePhoneNumbers, otherPhoneNumbers, jobTitle, eMail, tags, custom1, custom2);
_logger.log("debug", "MAIN - testcreatePersonalDirectoryEntry - result : ", result);
// */
//});
}
async testgetListPersonalDirectoryEntriesData() {
let result = await rainbowSDK.contacts.getListPersonalDirectoryEntriesData("testPersonalDirectory", undefined, undefined, undefined, undefined, undefined, undefined, undefined);
_logger.log("debug", "MAIN - getListPersonalDirectoryEntriesData - result : ", result);
}
async testupdatePersonalDirectoryEntry() {
let personalDirectoryList: any = await rainbowSDK.contacts.getListPersonalDirectoryEntriesData("testPersonalDirectory", undefined, undefined, undefined, undefined, undefined, undefined, undefined);
_logger.log("debug", "MAIN - testupdatePersonalDirectoryEntry - personalDirectoryList : ", personalDirectoryList);
if (personalDirectoryList && personalDirectoryList.data && personalDirectoryList.total > 0) {
let result = await rainbowSDK.contacts.updatePersonalDirectoryEntry(personalDirectoryList.data[0].id, personalDirectoryList.data[0].firstName + "_updated");
_logger.log("debug", "MAIN - testupdatePersonalDirectoryEntry - updatePersonalDirectoryEntry result : ", result);
let personalDirectoryListUpdated: any = await rainbowSDK.contacts.getListPersonalDirectoryEntriesData("testPersonalDirectory", undefined, undefined, undefined, undefined, undefined, undefined, undefined);
_logger.log("debug", "MAIN - testupdatePersonalDirectoryEntry - personalDirectoryListUpdated : ", personalDirectoryListUpdated);
}
}
async testdeletePersonalDirectoryEntry() {
_logger.log("debug", "MAIN - testdeletePersonalDirectoryEntry. ");
let utc = new Date().toJSON().replace(/-/g, "_");
let utcEmail = new Date().toJSON().replace(/-|\.|:/g, "_");
_logger.log("debug", "MAIN - testdeletePersonalDirectoryEntry. utcEmail : ", utcEmail);
let companyId = connectedUser.companyId,
firstName = "testPersonalDirectory_firstname_" + utc,
lastName = "testPersonalDirectory_firstname_" + utc,
companyName = connectedUser.companyName,
department = "SBU",
street = "1 rte Albert Schweitzer",
city = "Illkirch",
state = null,
postalCode = "67115",
country = "FRA",
workPhoneNumbers = ["0011223344"],
mobilePhoneNumbers = [],
otherPhoneNumbers = [],
jobTitle = "Validation Engineer",
eMail = utcEmail + "_test@vbe.test.openrainbow.net",
tags = [],
custom1 = "",
custom2 = "";
let result = await rainbowSDK.contacts.createPersonalDirectoryEntry(firstName, lastName, companyName, department, street, city, state, postalCode, country, workPhoneNumbers, mobilePhoneNumbers, otherPhoneNumbers, jobTitle, eMail, tags, custom1, custom2);
_logger.log("debug", "MAIN - testdeletePersonalDirectoryEntry - createPersonalDirectoryEntry result : ", result);
let personalDirectoryList: any = await rainbowSDK.contacts.getListPersonalDirectoryEntriesData("testPersonalDirectory", undefined, undefined, undefined, undefined, undefined, undefined, undefined);
_logger.log("debug", "MAIN - testdeletePersonalDirectoryEntry - personalDirectoryList : ", personalDirectoryList);
if (personalDirectoryList && personalDirectoryList.data && personalDirectoryList.data.total > 0) {
let result = await rainbowSDK.contacts.deletePersonalDirectoryEntry(personalDirectoryList.data[0].id);
_logger.log("debug", "MAIN - testdeletePersonalDirectoryEntry - deletePersonalDirectoryEntry result : ", result);
let personalDirectoryListUpdated: any = await rainbowSDK.contacts.getListPersonalDirectoryEntriesData("testPersonalDirectory", undefined, undefined, undefined, undefined, undefined, undefined, undefined);
_logger.log("debug", "MAIN - testdeletePersonalDirectoryEntry - personalDirectoryListUpdated : ", personalDirectoryListUpdated);
}
}
//endregion Personal Directory
//region ldap
// testmockStanza("")
async testmockStanza(stanza: string = "") {
rainbowSDK._core._xmpp.mockStanza(stanza);
}
async testmockStanzaBubbleResume() {
let stanza: string = "- Room resumed
"
await this.testmockStanza(stanza);
}
async testmockStanzaBubbleStatus110() {
let stanza: string = " ";
await rainbowSDK._core._xmpp.mockStanza(stanza);
}
async testmockDiconnect() {
let stanza = "3ae059e2a91c40d9bdd7df0eedc911ca@openrainbow.com";
await rainbowSDK._core._xmpp.mockStanza(stanza);
}
async testmockUploadLdapAvatarPresence() {
let stanzaStr = " ";
let stanza = prettydata.xmlmin(stanzaStr);
_logger.log("debug", "MAIN - testmockUploadLdapAvatarPresence stanza : ", stanza);
await rainbowSDK._core._xmpp.mockStanza(stanza);
}
async testmockimportCSVdataForSynchronizeDirectoryResult() {
let stanzaStr = " ";
let stanza = prettydata.xmlmin(stanzaStr);
_logger.log("debug", "MAIN - testmockimportCSVdataForSynchronizeDirectoryResult stanza : ", stanza);
await rainbowSDK._core._xmpp.mockStanza(stanza);
}
async testmockMessageHistory() {
//"xmlns=\"jabber:client\" to=\"e7f6f82264264b94af88bf4230cde0d1@openrainbow.net\" from=\"openrainbow.net\" type=\"management\" id=\"151951223080941625\">\n" +
let stanzaConversation = "room" +
"66e9bb1f59debd61bf40879b" +
"room_53851c7c4a554cb79815209cc1dda5db@muc.openrainbow.net" +
"false" +
"false" +
"0" +
"0" +
"" +
"";
let stanzaMessageHistory = "" +
"" +
"" +
"" +
"" +
"" +
"- " +
"
" +
"" +
"" +
"" +
"" +
"" +
"" +
"" + rainbowSDK._core._xmpp.jid + "" +
"" +
"Hello Dolores from this bubble!" +
"helloDoloresSubject" +
"" +
"" +
"" +
"" +
"";
// await rainbowSDK._core._xmpp.mockStanza(stanzaConversation);
await rainbowSDK._core._xmpp.mockStanza(stanzaMessageHistory);
}
async testsynchronizeUsersAndDeviceswithCSV() {
// to be used with vincentbp@vbe.test.openrainbow.net on vberder AIO.
_logger.log("debug", "MAIN - testsynchronizeUsersAndDeviceswithCSV. ");
let allCompanies: any = await rainbowSDK.admin.getAllCompanies();
_logger.log("debug", "MAIN - testsynchronizeUsersAndDeviceswithCSV - allCompanies : ", allCompanies);
let companyId = connectedUser.companyId;
for (let company of allCompanies.data) {
//that._logger.log("debug", "(getSubscriptionsOfCompanyByOfferId) subscription : ", subscription);
if (company.name==="vbeCompanie") {
_logger.log("debug", "MAIN - testsynchronizeUsersAndDeviceswithCSV vbeCompanie found : ", company);
companyId = company.id;
}
}
_logger.log("debug", "MAIN - testsynchronizeUsersAndDeviceswithCSV - companyId : ", companyId);
fs.readFile('c:\\temp\\file.csv', 'utf8', async (err: any, data: any) => {
if (err) {
_logger.log("error", "MAIN - testsynchronizeUsersAndDeviceswithCSV syncCSV readFile error: ", err);
return;
}
let result = await rainbowSDK.admin.synchronizeUsersAndDeviceswithCSV(data, companyId, "test synchronise", true, false);
_logger.log("debug", "MAIN - testsynchronizeUsersAndDeviceswithCSV - result : ", result);
});
}
async testretrieveRainbowUserList() {
// to be used with vincentbp@vbe.test.openrainbow.net on vberder AIO.
_logger.log("debug", "MAIN - testretrieveRainbowUserList. ");
let allCompanies: any = await rainbowSDK.admin.getAllCompanies();
_logger.log("debug", "MAIN - testretrieveRainbowUserList - allCompanies : ", allCompanies);
let companyId = connectedUser.companyId;
for (let company of allCompanies.data) {
//that._logger.log("debug", "(getSubscriptionsOfCompanyByOfferId) subscription : ", subscription);
if (company.name==="vbeCompanie") {
_logger.log("debug", "MAIN - testretrieveRainbowUserList vbeCompanie found : ", company);
companyId = company.id;
}
}
_logger.log("debug", "MAIN - testretrieveRainbowUserList - companyId : ", companyId);
let result = await rainbowSDK.admin.retrieveRainbowUserList(companyId, "csv", true);
_logger.log("debug", "MAIN - testretrieveRainbowUserList - result : ", result);
}
async testretrieveRainbowEntriesList() {
// to be used with vincentbp@vbe.test.openrainbow.net on vberder AIO.
_logger.log("debug", "MAIN - testretrieveRainbowEntriesList. ");
let allCompanies: any = await rainbowSDK.admin.getAllCompanies();
_logger.log("debug", "MAIN - testretrieveRainbowEntriesList - allCompanies : ", allCompanies);
let companyId = connectedUser.companyId;
for (let company of allCompanies.data) {
//that._logger.log("debug", "(getSubscriptionsOfCompanyByOfferId) subscription : ", subscription);
if (company.name==="vbeCompanie") {
_logger.log("debug", "MAIN - testretrieveRainbowEntriesList vbeCompanie found : ", company);
companyId = company.id;
}
}
_logger.log("debug", "MAIN - testretrieveRainbowEntriesList - companyId : ", companyId);
//companyId? : string, format : string = "json", ldap_id : boolean = true
//let result = await rainbowSDK.admin.retrieveRainbowEntriesList(companyId, "json", true);
let result = await rainbowSDK.admin.retrieveRainbowEntriesList(null, "json", false);
_logger.log("debug", "MAIN - testretrieveRainbowEntriesList - result : ", result);
}
testundefined2() {
let result = undefined;
_logger.log("debug", "MAIN - testundefined2 - with undefined result : ", result?.id);
result = {"id": "423412345145325"};
_logger.log("debug", "MAIN - testundefined2 - with initialized result : ", result?.id);
}
testuploadLdapAvatar() {
let that = this;
let pathImg = "c:\\temp\\IMG_20131005_173918.jpg";
let fd = fs.openSync(pathImg, "r+");
let fileStats = fs.statSync(pathImg);
let sizeToRead = fileStats.size;
let buf = new Buffer(sizeToRead);
_logger.log("debug", "MAIN - testuploadLdapAvatar sizeToRead=", sizeToRead, ", buff.byteLength : ", buf.byteLength);
let promiseDeferred = new Deferred();
fs.readSync(fd, buf, 0, sizeToRead, null);
let fileType: any = undefined;
// @ts-ignore
if (mime.lookup) {
// @ts-ignore
fileType = mime.lookup(pathImg);
}
if (mime.getType) {
fileType = mime.getType(pathImg);
}
rainbowSDK.admin.uploadLdapAvatar(buf, fileType).then((result) => {
_logger.log("debug", "EngineVincent00 - uploadLdapAvatar - result : ", result);
});
}
//region RQRAINB-12269 [AD/LDAP] Synchronize CPE Exchange Calendar
async testnotifyCalendarProvider() {
let ids : Array = ["id1","id2","id3"];
await rainbowSDK.presence.notifyCalendarProvider(ids);
}
async testiq_get_events() {
/*
example :
2025-08-13T10:00:00Z
2025-08-13T11:30:00Z
*/
let stanzaStr = " \n" +
" 2025-08-13T10:00:00Z\n" +
" 2025-08-13T11:30:00Z\n" +
" ";
let stanza = prettydata.xmlmin(stanzaStr);
_logger.log("debug", "MAIN - testiq_get_events stanza : ", stanza);
await rainbowSDK._core._xmpp.mockStanza(stanza);
}
async testiq_get_events2() {
/*
example :
202...30Z
202...30Z
*/
let stanzaStr = "\n" +
" \n" +
" 202...30Z\n" +
" 202...30Z\n" +
" \n" +
"" ;
let stanza = prettydata.xmlmin(stanzaStr);
_logger.log("debug", "MAIN - testiq_get_events stanza : ", stanza);
await rainbowSDK._core._xmpp.mockStanza(stanza);
}
async testiq_get_eventsReal() {
/*
example :
202...35Z
202...35Z
*/
let stanzaStr = "\n" +
" \n" +
" 202...35Z\n" +
" 202...35Z\n" +
" \n" +
"";
// Transform the XML string into an XMPP element using @xmpp/xml so it works generically for any XML string
let stanza = parse(stanzaStr);
_logger.log("debug", "MAIN - testiq_get_events stanza (parsed): ", stanza.toString());
await rainbowSDK._core._xmpp.xmppClient.sendIq(stanza);
}
async testiq_get_autoreply() {
/*
example :
*/
let stanzaStr = " \n" +
" ";
let stanza = prettydata.xmlmin(stanzaStr);
_logger.log("debug", "MAIN - testiq_get_events stanza : ", stanza);
await rainbowSDK._core._xmpp.mockStanza(stanza);
}
async testiq_get_autoreplyReal() {
/*
example :
*/
let stanzaStr = " \n" +
" ";
//let stanza = prettydata.xmlmin(stanzaStr);
//_logger.log("debug", "MAIN - testiq_get_events stanza : ", stanza);
// Transform the XML string into an XMPP element using @xmpp/xml so it works generically for any XML string
let stanza = parse(stanzaStr);
_logger.log("debug", "MAIN - testiq_get_events stanza (parsed): ", stanza.toString());
await rainbowSDK._core._xmpp.xmppClient.sendIq(stanza);
}
//endregion RQRAINB-12269 [AD/LDAP] Synchronize CPE Exchange Calendar
//endregion ldap
//region Conference V2
async testConferenceV2() {
_logger.log("debug", "MAIN - (testConferenceV2). ");
let utc = new Date().toJSON().replace(/-/g, "/");
let loginEmail = "vincent02@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(async (contact: any) => {
if (contact) {
_logger.log("debug", "MAIN - (testConferenceV2) :: getContactByLoginEmail contact : ", contact);
rainbowSDK.bubbles.createBubble("testConferenceV2" + utc, "testConferenceV2" + utc, true).then((bubble: any) => {
_logger.log("debug", "MAIN - (testConferenceV2) :: createBubble request ok, bubble : ", bubble);
rainbowSDK.bubbles.inviteContactToBubble(contact, bubble, false, false, "").then(async () => {
rainbowSDK.bubbles.startConferenceOrWebinarInARoom(bubble.id).then(async (confStarted) => {
_logger.log("debug", "MAIN - (testConferenceV2) :: startConferenceOrWebinarInARoom request ok, confStarted : ", confStarted);
await setTimeoutPromised(3000)
rainbowSDK.bubbles.stopConferenceOrWebinar(bubble.id).then(async (confStarted) => {
_logger.log("debug", "MAIN - (testConferenceV2) :: stopConferenceOrWebinar request ok, confStarted : ", confStarted);
rainbowSDK.bubbles.closeAndDeleteBubble(bubble).then((confStopped) => {
_logger.log("debug", "MAIN - (testConferenceV2) :: closeAndDeleteBubble request ok, confStopped : ", confStopped);
});
});
});
});
});
}
});
}
async teststopConferenceV2() {
let bubbleId = "6213b94219fa5d0143a71e3c";
rainbowSDK.bubbles.stopConferenceOrWebinar(bubbleId).then(async (confStarted) => {
_logger.log("debug", "MAIN - (teststopConferenceV2) :: stopConferenceOrWebinar request ok, confStarted : ", confStarted);
}).catch(err => {
_logger.log("error", "MAIN - (teststopConferenceV2) :: stopConferenceOrWebinar request not ok, err : ", err);
});
}
async teststartConferenceOrWebinarInARoom() {
// To be used with vincent01 NET
let bubbleId = "62f503405e9a9be52522d2c4"; // "bubble1"
rainbowSDK.bubbles.startConferenceOrWebinarInARoom(bubbleId).then(async (confStarted) => {
_logger.log("debug", "MAIN - (teststartConferenceOrWebinarInARoom) :: startConferenceOrWebinarInARoom request ok, confStarted : ", confStarted);
}).catch(err => {
_logger.log("error", "MAIN - (teststartConferenceOrWebinarInARoom) :: startConferenceOrWebinarInARoom request not ok, err : ", err);
});
}
async testpromoteContactToModerator() {
// To be used with vincent01 NET
let bubbleId = "62f503405e9a9be52522d2c4"; // "bubble1"
let bubble = await rainbowSDK.bubbles.getBubbleById(bubbleId);
let contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent00@vbe.test.openrainbow.net");
rainbowSDK.bubbles.promoteContactToModerator(contact, bubble).then(async (result) => {
_logger.log("debug", "MAIN - (testpromoteContactToModerator) :: promoteContactToModerator request ok, result : ", result);
}).catch(err => {
_logger.log("error", "MAIN - (testpromoteContactToModerator) :: promoteContactToModerator request not ok, err : ", err);
});
}
async testjoinConferenceV2_vincent01() {
// To be used with vincent01 NET
let bubbleId = "62f503405e9a9be52522d2c4"; // "bubble1"
//let bubble = await rainbowSDK.bubbles.getBubbleById(bubbleId);
let contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent00@vbe.test.openrainbow.net");
rainbowSDK.bubbles.joinConferenceV2(bubbleId).then(async (result) => {
_logger.log("debug", "MAIN - (testjoinConferenceV2) :: joinConferenceV2 request ok, result : ", result);
}).catch(err => {
_logger.log("error", "MAIN - (testjoinConferenceV2) :: joinConferenceV2 request not ok, err : ", err);
});
}
async testjoinConferenceV2_vincent01_WithStart() {
// To be used with vincent01 NET
let bubbleId = "62f503405e9a9be52522d2c4"; // "bubble1"
// To be used with vincent.berder COM
//let bubbleId = '5e56968c6f18201dde44fa7c'; // name: 'Bulle_NodeSDK',
let bubble = await rainbowSDK.bubbles.getBubbleById(bubbleId);
_logger.log("debug", "MAIN - (testjoinConferenceV2_vincent01_WithStart) :: bubble : ", bubble);
let contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent00@vbe.test.openrainbow.net");
rainbowSDK.bubbles.startConferenceOrWebinarInARoom(bubbleId).then(async (confStarted) => {
_logger.log("debug", "MAIN - (testjoinConferenceV2_vincent01_WithStart) :: startConferenceOrWebinarInARoom request ok, confStarted : ", confStarted);
rainbowSDK.bubbles.joinConferenceV2(bubbleId, undefined, undefined, false, ["rdeu"], false, false, ["video"], undefined).then(async (result) => {
_logger.log("debug", "MAIN - (testjoinConferenceV2_vincent01_WithStart) :: joinConferenceV2 request ok, result : ", result);
rainbowSDK.bubbles.snapshotConference(bubbleId).then(async (result) => {
_logger.log("debug", "MAIN - (testjoinConferenceV2_vincent01_WithStart) :: snapshotConference request ok, result : ", result);
}).catch(err => {
_logger.log("error", "MAIN - (testjoinConferenceV2_vincent01_WithStart) :: snapshotConference request not ok, err : ", err);
});
}).catch(err => {
_logger.log("error", "MAIN - (testjoinConferenceV2_vincent01_WithStart) :: joinConferenceV2 request not ok, err : ", err);
});
}).catch(err => {
_logger.log("error", "MAIN - (testjoinConferenceV2_vincent01_WithStart) :: startConferenceOrWebinarInARoom request not ok, err : ", err);
});
}
async testjoinConferenceV2_CreateBubble_WithStart() {
// To be used with vincent01 NET
_logger.log("debug", "MAIN - (testjoinConferenceV2_CreateBubble_WithStart). ");
let utc = new Date().toJSON().replace(/-/g, "/");
let loginEmail = "vincent02@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(async (contact: any) => {
if (contact) {
_logger.log("debug", "MAIN - (testjoinConferenceV2_CreateBubble_WithStart) :: getContactByLoginEmail contact : ", contact);
rainbowSDK.bubbles.createBubble("testConferenceV2" + utc, "testConferenceV2" + utc, true).then((bubble: any) => {
_logger.log("debug", "MAIN - (testjoinConferenceV2_CreateBubble_WithStart) :: createBubble request ok, bubble : ", bubble);
let bubbleId = bubble.id;
rainbowSDK.bubbles.inviteContactToBubble(contact, bubble, false, false, "").then(async () => {
rainbowSDK.bubbles.startConferenceOrWebinarInARoom(bubbleId).then(async (confStarted) => {
_logger.log("debug", "MAIN - (testjoinConferenceV2_CreateBubble_WithStart) :: startConferenceOrWebinarInARoom request ok, confStarted : ", confStarted);
rainbowSDK.bubbles.joinConferenceV2(bubbleId, undefined, undefined, false, ["rdeu"], false, false, ["video"], undefined).then(async (result) => {
_logger.log("debug", "MAIN - (testjoinConferenceV2_CreateBubble_WithStart) :: joinConferenceV2 request ok, result : ", result);
rainbowSDK.bubbles.snapshotConference(bubbleId).then(async (result) => {
_logger.log("debug", "MAIN - (testjoinConferenceV2_CreateBubble_WithStart) :: snapshotConference request ok, result : ", result);
}).catch(err => {
_logger.log("error", "MAIN - (testjoinConferenceV2_CreateBubble_WithStart) :: snapshotConference request not ok, err : ", err);
});
}).catch(err => {
_logger.log("error", "MAIN - (testjoinConferenceV2_CreateBubble_WithStart) :: joinConferenceV2 request not ok, err : ", err);
});
}).catch(err => {
_logger.log("error", "MAIN - (testjoinConferenceV2_CreateBubble_WithStart) :: startConferenceOrWebinarInARoom request not ok, err : ", err);
});
});
});
}
});
}
async testdelegateConference() {
// To be used with vincent01 NET
let bubbleId = "62f503405e9a9be52522d2c4"; // "bubble1"
//let bubble = await rainbowSDK.bubbles.getBubbleById(bubbleId);
let contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent00@vbe.test.openrainbow.net");
rainbowSDK.bubbles.delegateConference(bubbleId, contact.id).then(async (result) => {
_logger.log("debug", "MAIN - (testpromoteContactToModerator) :: promoteContactToModerator request ok, result : ", result);
}).catch(err => {
_logger.log("error", "MAIN - (testpromoteContactToModerator) :: promoteContactToModerator request not ok, err : ", err);
});
}
async teststopConference() {
// To be used with vincent01 NET
let bubbleId = "62f503405e9a9be52522d2c4"; // "bubble1"
rainbowSDK.bubbles.stopConferenceOrWebinar(bubbleId).then(async (confStopped) => {
_logger.log("debug", "MAIN - (teststopConferenceV2) :: stopConferenceOrWebinar request ok, confStopped : ", confStopped);
}).catch(err => {
_logger.log("error", "MAIN - (teststopConferenceV2) :: stopConferenceOrWebinar request not ok, err : ", err);
});
}
async tesaskConferenceSnapshot() {
let confId = "60d5a4ee0eeee002d144e9bf";
/*rainbowSDK.bubbles.askConferenceSnapshot(confId).then(async (confStarted) => {
_logger.log("debug", "MAIN - (tesaskConferenceSnapshot) :: askConferenceSnapshot request ok, confStarted : ", confStarted);
}).catch (err => {
_logger.log("error", "MAIN - (tesaskConferenceSnapshot) :: askConferenceSnapshot request not ok, err : ", err);
}); // */
}
//endregion Conference V2
//region Webinar
async testgetWebinarsData() {
_logger.log("debug", "MAIN - (testgetWebinarsData). ");
let utc = new Date().toJSON().replace(/-/g, "/");
rainbowSDK.webinars.getWebinarsData("participant").then(async (result: any) => {
_logger.log("debug", "MAIN - [testgetWebinarsData ] :: getWebinarsData result : ", result);
});
}
async testcreateWebinar() {
_logger.log("debug", "MAIN - (testcreateWebinar). ");
let utc = new Date().toJSON().replace(/-/g, "/");
let nameWebinar = "nameWebinar_" + utc;
let subjectWebinar = "subjectWebinar_" + utc;
rainbowSDK.webinars.createWebinar(nameWebinar, subjectWebinar, null, null, null, null, null, null, null, null, null, null, null, null).then(async (result: any) => {
_logger.log("debug", "MAIN - (testcreateWebinar) :: create Webinar result : ", result);
rainbowSDK.webinars.getWebinarsData("participant").then(async (result: any) => {
_logger.log("debug", "MAIN - (testcreateWebinar) :: getWebinarsData result : ", result);
});
});
}
async testupdateWebinar() {
_logger.log("debug", "MAIN - (testupdateWebinar). ");
let utc = new Date().toJSON().replace(/-/g, "/");
rainbowSDK.webinars.getWebinarsData("participant").then(async (webinarsResult: any) => {
_logger.log("debug", "MAIN - (testupdateWebinar) :: getWebinarsData result : ", webinarsResult);
let webinar = webinarsResult.data[0];
rainbowSDK.webinars.updateWebinar(webinar.id, "updatedNameWebinar", webinar.subject, webinar.waitingRoomStartDate, webinar.webinarStartDate, webinar.webinarEndDate, webinar.reminderDates, webinar.timeZone, webinar.register, webinar.approvalRegistrationMethod, webinar.passwordNeeded, webinar.lockRegistration, webinar.waitingRoomMultimediaURL, webinar.stageBackground, webinar.chatOption).then(async (result: any) => {
_logger.log("debug", "MAIN - (testupdateWebinar) :: updateWebinar result : ", result);
}).catch(err => {
_logger.log("debug", "MAIN - (testupdateWebinar) :: error during upodate : ", err);
});
});
}
async testcreateAndDeleteWebinar() {
_logger.log("debug", "MAIN - (testcreateAndDeleteWebinar). ");
let utc = new Date().toJSON().replace(/-/g, "/");
let nameWebinar = "nameWebinar_" + utc;
let subjectWebinar = "subjectWebinar_" + utc;
rainbowSDK.webinars.createWebinar(nameWebinar, subjectWebinar, null, null, null, null, null, null, null, null, null, null, null, null).then(async (createresult: any) => {
_logger.log("debug", "MAIN - [testcreateAndDeleteWebinar ] :: create Webinar result : ", createresult);
await rainbowSDK.webinars.getWebinarsData("participant").then(async (result: any) => {
_logger.log("debug", "MAIN - [testcreateAndDeleteWebinar ] :: getWebinarsData result : ", result);
});
await rainbowSDK.webinars.deleteWebinar(createresult.id).then(async (deleteresult: any) => {
_logger.log("debug", "MAIN - [testcreateAndDeleteWebinar ] :: delete Webinar result : ", deleteresult);
});
});
}
async testDeleteAllWebinar() {
_logger.log("debug", "MAIN - (testDeleteAllWebinar). ");
let utc = new Date().toJSON().replace(/-/g, "/");
rainbowSDK.webinars.getWebinarsData("participant").then(async (result: any) => {
_logger.log("debug", "MAIN - [testDeleteAllWebinar ] :: getWebinarsData result : ", result);
for (let resultKey in result.data) {
rainbowSDK.webinars.deleteWebinar(result.data[resultKey].id).then(async (deleteresult: any) => {
_logger.log("debug", "MAIN - [testDeleteAllWebinar ] :: delete Webinar result : ", deleteresult);
});
}
});
}
//endregion Webinar
//region Clients Versions
async testgetAllClientsVersions() {
let that = this;
let res = await rainbowSDK.admin.getAllClientsVersions(null, null);
_logger.log("debug", "MAIN - testgetAllClientsVersions, res : ", res);
}
async testgetAllClientsVersionsBot() {
let that = this;
let res = await rainbowSDK.admin.getAllClientsVersions(null, "bot");
_logger.log("debug", "MAIN - testgetAllClientsVersions, res : ", res);
}
async testcreateAClientVersion() {
let that = this;
//let res = await rainbowSDK.admin.createAClientVersion(options.application.appID, "2.4.0");
let res = await rainbowSDK.admin.createAClientVersion(undefined, "2.5.0");
_logger.log("debug", "MAIN - testgetAllClientsVersions, res : ", res);
}
async testdeleteAClientVersion() {
let that = this;
//let res = await rainbowSDK.admin.createAClientVersion(options.application.appID, "2.4.0");
let res = await rainbowSDK.admin.deleteAClientVersion(options.application.appID);
_logger.log("debug", "MAIN - testdeleteAClientVersion, res : ", res);
}
//endregion Clients Versions
//region bubbles polls
async testcreateBubblePollAndDelete() {
let that = this;
//let res = await rainbowSDK.bubbles.createBubblePoll();
//logger.log("debug", "MAIN - testgetAllClientsVersions, res : ", res);
_logger.log("debug", "MAIN - (testcreateBubblePollAndDelete). ");
let utc = new Date().toJSON().replace(/-/g, "/");
let loginEmail = "vincent02@vbe.test.openrainbow.net";
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(async (contact: any) => {
if (contact) {
_logger.log("debug", "MAIN - (testcreateBubblePollAndDelete) :: getContactByLoginEmail contact : ", contact);
rainbowSDK.bubbles.createBubble("testcreateBubblePollAndDelete" + utc, "testcreateBubblePollAndDelete" + utc, true).then((bubble: any) => {
_logger.log("debug", "MAIN - (testcreateBubblePollAndDelete) :: createBubble request ok, bubble : ", bubble);
rainbowSDK.bubbles.inviteContactToBubble(contact, bubble, false, false, "").then(async () => {
let questions: Array<{
text: string,
multipleChoice: boolean,
answers: Array<{ text: string }>
}> = [
{
text: "Question 1",
multipleChoice: true,
answers: [{text: "oui"}, {text: "non"}]
}
];
rainbowSDK.bubbles.createBubblePoll(bubble.id, "My Poll", questions, false, 0).then(async (pollCreated: any) => {
_logger.log("debug", "MAIN - (testcreateBubblePollAndDelete) :: createBubblePoll request ok, pollCreated : ", pollCreated);
await setTimeoutPromised(3000);
let polls = await rainbowSDK.bubbles.getBubblePollsByBubble(bubble.id, "full", 100, 0);
_logger.log("debug", "MAIN - (testcreateBubblePollAndDelete) :: getBubblePollsByBubble request ok, result : ", polls);
let updatePollResult = await rainbowSDK.bubbles.updateBubblePoll(pollCreated.pollId, bubble.id, "My Poll updated", questions, false, 0);
_logger.log("debug", "MAIN - (testcreateBubblePollAndDelete) :: updateBubblePoll request ok, result : ", updatePollResult);
let pollsUpdated = await rainbowSDK.bubbles.getBubblePollsByBubble(bubble.id, "full", 100, 0);
_logger.log("debug", "MAIN - (testcreateBubblePollAndDelete) :: getBubblePollsByBubble updated request ok, result : ", pollsUpdated);
let pollPublishedResult = await rainbowSDK.bubbles.publishBubblePoll(pollCreated.pollId);
_logger.log("debug", "MAIN - (testcreateBubblePollAndDelete) :: publishBubblePoll request ok, result : ", pollPublishedResult);
let votesPollResult = await rainbowSDK.bubbles.votesForBubblePoll(pollCreated.pollId, [{
"question": 0,
"answers": [0]
}]);
_logger.log("debug", "MAIN - (testcreateBubblePollAndDelete) :: votesForBubblePoll request ok, result : ", votesPollResult);
let unpollPublishedResult = await rainbowSDK.bubbles.unpublishBubblePoll(pollCreated.pollId);
_logger.log("debug", "MAIN - (testcreateBubblePollAndDelete) :: unpublishBubblePoll request ok, result : ", unpollPublishedResult);
let pollPublishedResult2 = await rainbowSDK.bubbles.publishBubblePoll(pollCreated.pollId);
_logger.log("debug", "MAIN - (testcreateBubblePollAndDelete) :: publishBubblePoll request ok, result : ", pollPublishedResult2);
let terminatedBubblePollResult = await rainbowSDK.bubbles.terminateBubblePoll(pollCreated.pollId);
_logger.log("debug", "MAIN - (testcreateBubblePollAndDelete) :: terminateBubblePoll request ok, result : ", terminatedBubblePollResult);
rainbowSDK.bubbles.deleteBubblePoll(pollCreated.pollId).then(async (result) => {
_logger.log("debug", "MAIN - (testcreateBubblePollAndDelete) :: deleteBubblePoll request ok, polls : ", result);
rainbowSDK.bubbles.closeAndDeleteBubble(bubble).then((result) => {
_logger.log("debug", "MAIN - (testcreateBubblePollAndDelete) :: closeAndDeleteBubble request ok, result : ", result);
});
});
});
});
});
}
});
}
async testdeleteBubblePoll() {
let that = this;
//let res = await rainbowSDK.admin.createAClientVersion(options.application.appID, "2.4.0");
let res = await rainbowSDK.bubbles.deleteBubblePoll(undefined);
_logger.log("debug", "MAIN - testdeleteAClientVersion, res : ", res);
}
//endregion bubbles polls
// region Pondeuse
testPondeuse() {
let timeoutMilliSeconds = 10;
let date;
let jid_BotSender;
let jid_BotReceiver;
let time1, time2, time3, time4, time5, time6;
let index = 0;
// let time= new Date();
let botVNA = "646e00ba0b0a4eb58136d21204dd968d@openrainbow.com";
let loginEmail = "vincent02@vbe.test.openrainbow.net";
let botSender = rainbowSDK;
rainbowSDK.contacts.getContactByLoginEmail(loginEmail).then(async (contact: any) => {
if (contact) {
botVNA = contact.jid;
//botSender = new NodeSDK(botS);
// botSender.start().then((account) => {
//console.log("Rainbow Started Sent : ",account);
//console.log("JID Sent: ", account.loggedInUser.jid_im);
//jid_BotSender = account.loggedInUser.jid_im;
_logger.log("debug", "MAIN - (testPondeuse) :: start pondeuse.");
let idInterval = setInterval(function () {
if (botVNA) {
//console.log("-------------------------------");
date = new Date(); //Date.now();
index = index + 1;
botSender.im.sendMessageToJid("#ECHO " + index + " " + date.toLocaleDateString() + " " + date.toLocaleTimeString() + ":" + date.getMilliseconds() + " [" + date.valueOf() + "]", botVNA, "en", undefined, undefined, UrgencyType.STANDARD);
}
}, timeoutMilliSeconds);
setTimeout(() => {
_logger.log("debug", "MAIN - (testPondeuse) :: stop pondeuse.");
clearInterval(idInterval);
}, 10 * 1000);
botSender.events.on("rainbow_onmessagereceived", (message) => {
if (!message.content.includes("#")) {
let value = message.content.split(" ")[0];
let timeOriginal = message.content.split(" ")[1];
let timeReception = message.content.split(" ")[2];
let timeR = Date.now() - timeOriginal;
console.log(value + "," + timeReception + "," + timeR);
}
});
botSender.events.on("rainbow_onmessagereceiptreceived", (receipt) => {
time2 = Date.now() - date;
//console.log("SENDER RECIPT RECIEVER : "+receipt.event+" "+time2);
});
botSender.events.on("rainbow_onmessagereceiptreadreceived", (receipt) => {
time3 = Date.now() - date;
//console.log("SENDER RECIPT RECIEVER: "+receipt.event+" "+time3);
});
//});
}
});
}
// endregion Pondeuse
//region ChatGPT
async testpostUrlToChatGPT(urlToPost: string = "https://api.openai.com/v1/engines/gpt-3.5-turbo-instruct/completions") {
let alternateContent = null;
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
async function treatmentOfAdaptiveCardMessage(adaptiveResponse) {
// Treatment of returned data by the adptive card.
if (adaptiveResponse?.rainbow?.value?.response==="adaptiveCard_responseIntervention") {
let prompt = adaptiveResponse?.prompt;
_logger.log("debug", "MAIN - testpostUrlToChatGPT - ");
let headers = {
'Content-Type': 'application/json',
'user-agent': 'node/v14.17.2 (linux; x64) Rainbow Sdk/2.16.0-lts.0',
};
//let body = decodeURIComponent(JSON.stringify({
let body = JSON.stringify({
"prompt": prompt,
"max_tokens": 600,
"n": 1
});
try {
let res = await rainbowSDK._core._http.postUrlRaw(urlToPost, headers, body);
let bodyJson = JSON.parse(res?.body);
let text = "/code Prompt: " + prompt + "\nChatGPT:\n" + bodyJson?.choices[0].text;
_logger.log("debug", "MAIN - testpostUrlToChatGPT, text : ", text);
await rainbowSDK.im.sendMessageToConversation(conversation, text, "fr", undefined, "retour de ChatGPT").then(async message => {
_logger.log("debug", "MAIN - testpostUrlToChatGPT - search msgId : " + message.id);
_logger.log("debug", "MAIN - testpostUrlToChatGPT - msg.origin.conversation.id : " + conversation.id)
}, error => {
});
} catch (err) {
_logger.log("error", "MAIN - testpostUrlToChatGPT, error err : ", err);
}
} else {
// The card is not the result of an intervention.
}
}
// The Handle on the event should be only once. So in a prod program it should be outside of the initial send message of the adpative Card.
rainbowSDK.events.on("rainbow_onmessagereceived", (message) => {
_logger.log("debug", "MAIN - (rainbow_onmessagereceived) - rainbow event received. message", message);
let responseObjJson = "";
if (message.alternativeContent?.length > 0 && message.alternativeContent[0]?.message && message.alternativeContent[0]?.type) {
switch (message.alternativeContent[0].type) {
case "rainbow/json":
responseObjJson = JSON.parse(message.alternativeContent[0].message);
treatmentOfAdaptiveCardMessage(responseObjJson);
default:
}
}
});
const buildCard = (type) => {
let templateJson = {
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.4",
"body": [
{
"type": "TextBlock",
"text": "${titleCard}"
},
{
"type": "TextBlock",
"size": "Medium",
"weight": "Bolder",
"text": "${Survey.title}",
"horizontalAlignment": "Center",
"wrap": true,
"style": "heading"
},
{
"type": "Input.Text",
"id": "prompt",
"label": "${Survey.askPrompt}"
}
],
"actions": [
{
"type": "Action.Submit",
"title": "Valider",
"data": {
"rainbow": {
"text": "Send Prompt.",
"type": "messageBack",
"value": {
"response": "adaptiveCard_responseIntervention"
}
}
}
}
]
}; // */
let messageJson = {
"titleCard": "Welcome to Rainbow Bot ChatGPT.",
"Survey": {
"title": "Saisie du prompt ChatGPT.",
"askPrompt": "Votre prompt ?",
}
};
// Create a Template instance from the template payload
const template = new ACData.Template(templateJson);
const context = {
$root: messageJson
};
const card = template.expand(context);
return JSON.stringify(card);
}
alternateContent = {
type: 'form/json',
//message: serialize.configure(buildCard(""))
message: buildCard("")
};
_logger.log("debug", "MAIN - testpostUrlToChatGPT - alternateContent : ", alternateContent?.message);
await rainbowSDK.im.sendMessageToConversation(conversation, 'ok', "fr", alternateContent, "retour intervension").then(async message => {
_logger.log("debug", "MAIN - testpostUrlToChatGPT - search msgId : " + message.id);
_logger.log("debug", "MAIN - testpostUrlToChatGPT - msg.origin.conversation.id : " + conversation.id)
}, error => {
})
}
//endregion ChatGPT
//region Rainbow HTTPoverXMPP
async testpostUrl(urlToPost: string = "http://10.69.81.117:8091/management/api/onthemove/location/") {
let headers = {
'user-Id': 'ignoredWithPhone',
'user-Pin': 'ignoredWithPhone',
'user-Phone': '30100',
'Content-Type': 'application/json',
'Content-Length': '163',
'user-agent': 'node/v14.17.2 (linux; x64) Rainbow Sdk/2.16.0-lts.0'
};
//let body = decodeURIComponent(JSON.stringify({
let body = JSON.stringify({
"city": "new york",
"did": "8188784500",
"name": "3",
"psap": "911",
"state": "QC",
"streetName": "Quebec Rd",
"streetNumber": "4812",
"zipcode": "10010",
"country": "CA"
});
try {
let res = await rainbowSDK._core._http.postUrlRaw(urlToPost, headers, body);
_logger.log("debug", "MAIN - testpostUrl, res : ", res);
} catch (err) {
_logger.log("error", "MAIN - testpostUrl, error err : ", err);
}
}
async testsubscribePresence() {
let to = "29b4874d1a4b48c9be13c559da4efe3e@openrainbow.net"; // "vincent11@vbe.test.openrainbow.net";
let res = await rainbowSDK.presence.subscribePresence(to);
_logger.log("debug", "MAIN - testsubscribePresence, res : ", res);
}
async testgetHTTPoverXMPP(urlToGet: string = "https://moncompte.laposte.fr/") {
let that = this;
//let urlToGet = "https://xmpp.org/extensions/xep-0332.html";
//let urlToGet = "https://www.javatpoint.com/oprweb/test.jsp?filename=SimpleHTMLPages1";
let headers = {"dateOfRequest": new Date().toLocaleDateString()};
//let headers = {};
let res = await rainbowSDK.httpoverxmpp.get(urlToGet, headers);
_logger.log("debug", "MAIN - testgetHTTPoverXMPP, res : ", res);
}
async testgetHTTPoverXMPPVNA(urlToGet: string = "http://localhost:8091/management/api/onthemove/location/", jidServer: string = "vna_175703aa87b94d8d81f9b0bc45f8691b@david-all-in-one-rd-dev-1.opentouch.cloud/node_Dufz2bRl") {
let that = this;
//let urlToGet = "https://xmpp.org/extensions/xep-0332.html";
//let urlToGet = "https://www.javatpoint.com/oprweb/test.jsp?filename=SimpleHTMLPages1";
let headers = {
"dateOfRequest": new Date().toLocaleDateString(),
"user-Id": "ignoredWithPhone",
"user-Pin": "ignoredWithPhone",
"user-Phone": "31000"
};
//let headers = {};
let res: any = await rainbowSDK.httpoverxmpp.get(urlToGet, headers, jidServer);
_logger.log("debug", "MAIN - testgetHTTPoverXMPPVNA, res : ", res);
if (res && res.iq && res.iq.resp && res.iq.resp["$attrs"] && res.iq.resp["$attrs"].statusCode==200 && res.iq.resp.data) {
_logger.log("debug", "MAIN - testgetHTTPoverXMPPVNA, headers : ", res.iq.resp.headers);
//console.log("MAIN - testgetHTTPoverXMPPVNA, headers : ", res.iq.resp.headers);
let isJson = false;
for (const header of res.iq.resp.headers.header) {
if (header["$attrs"].name=="content-type" && header["$attrs"]._=="application/json") {
isJson = true;
}
}
let bodyStr = decodeURIComponent(res.iq.resp.data.text);
_logger.log("debug", "MAIN - testgetHTTPoverXMPPVNA, bodyStr : ", bodyStr);
if (isJson) {
_logger.log("debug", "MAIN - testgetHTTPoverXMPPVNA, body JSON : ", JSON.parse(bodyStr));
}
}
}
async testpostHTTPoverXMPPVNA(urlToPost: string = "http://localhost:8091/management/api/onthemove/location/", jidServer: string = "vna_175703aa87b94d8d81f9b0bc45f8691b@david-all-in-one-rd-dev-1.opentouch.cloud/node_vnagw") {
let that = this;
//let urlToGet = "https://xmpp.org/extensions/xep-0332.html";
//let urlToGet = "https://www.javatpoint.com/oprweb/test.jsp?filename=SimpleHTMLPages1";
let headers = {
"dateOfRequest": new Date().toLocaleDateString(),
"user-Id": "ignoredWithPhone",
"user-Pin": "ignoredWithPhone",
"user-Phone": "31000",
"Content-Type": "application/json"
};
//let headers = {};
let data = "{\n" +
"\"did\":\"8188784500\",\n" +
"\"city\": \"Agoura Hills\",\n" +
"\"country\": \"US\",\n" +
"\"name\": \"MyHouse\",\n" +
"\"nomadic\": false,\n" +
"\"psap\": \"911\",\n" +
"\"state\": \"CA\",\n" +
"\"streetName\": \"Québec Drive\",\n" +
"\"streetNumber\": \"27000\",\n" +
"\"zipcode\": \"91301\"\n" +
"}";
let res: any = await rainbowSDK.httpoverxmpp.post(urlToPost, headers, data, jidServer);
_logger.log("debug", "MAIN - testpostHTTPoverXMPPVNA, res : ", res);
if (res && res.iq && res.iq.resp && res.iq.resp["$attrs"] && res.iq.resp.data) {
_logger.log("debug", "MAIN - testgetHTTPoverXMPPVNA, headers : ", res.iq.resp.headers);
//console.log("MAIN - testgetHTTPoverXMPPVNA, headers : ", res.iq.resp.headers);
//if (res.iq.resp["$attrs"].statusCode==200) {
let isJson = false;
for (const header of res.iq.resp.headers.header) {
if (header["$attrs"].name=="content-type" && header["$attrs"]._=="application/json") {
isJson = true;
}
}
let bodyStr = decodeURIComponent(res.iq.resp.data.text);
_logger.log("debug", "MAIN - testgetHTTPoverXMPPVNA, bodyStr : ", bodyStr);
if (isJson) {
_logger.log("debug", "MAIN - testgetHTTPoverXMPPVNA, body JSON : ", JSON.parse(bodyStr));
}
/*} else {
let bodyStr = decodeURIComponent(res.iq.resp.data.text);
_logger.log("debug", "MAIN - testgetHTTPoverXMPPVNA, bodyStr : ", bodyStr);
} //*/
}
}
async testdeleteHTTPoverXMPPVNA(urlToPost: string = "http://localhost:8091/management/api/onthemove/location/", jidServer: string = "vna_175703aa87b94d8d81f9b0bc45f8691b@david-all-in-one-rd-dev-1.opentouch.cloud/node_Dufz2bRl") {
let that = this;
//let urlToGet = "https://xmpp.org/extensions/xep-0332.html";
//let urlToGet = "https://www.javatpoint.com/oprweb/test.jsp?filename=SimpleHTMLPages1";
let headers = {
"dateOfRequest": new Date().toLocaleDateString(),
"user-Id": "ignoredWithPhone",
"user-Pin": "ignoredWithPhone",
"user-Phone": "31000"
};
//let headers = {};
let data = "";
let res = await rainbowSDK.httpoverxmpp.delete(urlToPost, headers, data, jidServer);
_logger.log("debug", "MAIN - testdeleteHTTPoverXMPP, res : ", res);
}
async testdiscoverHTTPoverXMPP(jidHTTPoverXMPPBot: string = "vna_175703aa87b94d8d81f9b0bc45f8691b@david-all-in-one-rd-dev-1.opentouch.cloud", vincent01?: boolean) {
let that = this;
//let urlToGet = "https://xmpp.org/extensions/xep-0332.html";
//let urlToGet = "https://www.javatpoint.com/oprweb/test.jsp?filename=SimpleHTMLPages1";
let headers = {
"dateOfRequest": new Date().toLocaleDateString(),
"user-Id": "ignoredWithPhone",
"user-Pin": "ignoredWithPhone",
"user-Phone": "31000"
};
if (vincent01) {
let contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent01@vbe.test.openrainbow.net");
jidHTTPoverXMPPBot = contact.jid;
}
//let headers = {};
//let res : any = await rainbowSDK.httpoverxmpp.discoverHTTPoverXMPP( headers, jidServer);
let res: any = await rainbowSDK.httpoverxmpp.discoverHTTPoverXMPP(headers, jidHTTPoverXMPPBot);
_logger.log("debug", "MAIN - testgetHTTPoverXMPPVNA, res : ", res);
/*
if (res && res.iq && res.iq.resp && res.iq.resp["$attrs"] && res.iq.resp["$attrs"].statusCode == 200 && res.iq.resp.data) {
_logger.log("debug", "MAIN - testgetHTTPoverXMPPVNA, headers : ", res.iq.resp.headers);
//console.log("MAIN - testgetHTTPoverXMPPVNA, headers : ", res.iq.resp.headers);
let isJson = false;
for (const header of res.iq.resp.headers.header) {
if (header["$attrs"].name == "content-type" && header["$attrs"]._ == "application/json") {
isJson = true;
}
}
let bodyStr = decodeURIComponent(res.iq.resp.data.text);
_logger.log("debug", "MAIN - testgetHTTPoverXMPPVNA, bodyStr : ", bodyStr);
if (isJson) {
_logger.log("debug", "MAIN - testgetHTTPoverXMPPVNA, body JSON : ", JSON.parse(bodyStr));
}
}
*/
}
async testtraceHTTPoverXMPP(urlToGet: string = "https://moncompte.laposte.fr/", jidHTTPoverXMPPBot: string = "vna_175703aa87b94d8d81f9b0bc45f8691b@david-all-in-one-rd-dev-1.opentouch.cloud", vincent01?: boolean) {
let that = this;
//let urlToGet = "https://xmpp.org/extensions/xep-0332.html";
//let urlToGet = "https://www.javatpoint.com/oprweb/test.jsp?filename=SimpleHTMLPages1";
let headers = {"dateOfRequest": new Date().toLocaleDateString()};
//let headers = {};
if (vincent01) {
let contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent01@vbe.test.openrainbow.net");
jidHTTPoverXMPPBot = contact.jid + "/node_vnagw";
}
let res: any = await rainbowSDK.httpoverxmpp.trace(urlToGet, headers, jidHTTPoverXMPPBot);
_logger.log("debug", "MAIN - tracegetHTTPoverXMPP, res : ", res);
let resp = res.iq.resp;
if (resp.data) {
let bodyResult = decodeURIComponent(resp.data.text);
_logger.log("debug", "MAIN - testHTTPoverXMPP, getHTTPoverXMPP decoded bodyResult : ", bodyResult);
} else {
_logger.log("debug", "MAIN - testHTTPoverXMPP, getHTTPoverXMPP failed : ", resp);
}
}
async testheadHTTPoverXMPP(urlToGet: string = "https://moncompte.laposte.fr/hello") {
let that = this;
//let urlToGet = "https://xmpp.org/extensions/xep-0332.html";
//let urlToGet = "https://www.javatpoint.com/oprweb/test.jsp?filename=SimpleHTMLPages1";
let headers = {"dateOfRequest": new Date().toLocaleDateString()};
//let headers = {};
let res = await rainbowSDK.httpoverxmpp.head(urlToGet, headers);
_logger.log("debug", "MAIN - testheadHTTPoverXMPP, res : ", res);
}
async testpostHTTPoverXMPP(urlToPost: string = "https://example.org/sparql/?default-graph-uri=http%3A%2F%2Fexample.org%2Frdf/xep", jidHTTPoverXMPPBot: string = "vna_175703aa87b94d8d81f9b0bc45f8691b@david-all-in-one-rd-dev-1.opentouch.cloud", vincent01?: boolean) {
let that = this;
//let urlToGet = "https://xmpp.org/extensions/xep-0332.html";
//let urlToGet = "https://www.javatpoint.com/oprweb/test.jsp?filename=SimpleHTMLPages1";
let headers = {"dateOfRequest": new Date().toLocaleDateString()};
//let headers = {};
if (vincent01) {
let contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent01@vbe.test.openrainbow.net");
jidHTTPoverXMPPBot = contact.jid + "/node_vnagw";
}
let data = "PREFIXdc:BASESELECT?title?creator?publisherWHERE{?xdc:title?title.OPTIONAL{?xdc:creator?creator}.}";
let res = await rainbowSDK.httpoverxmpp.post(urlToPost, headers, data, jidHTTPoverXMPPBot);
_logger.log("debug", "MAIN - testpostHTTPoverXMPP, res : ", res);
}
async testputHTTPoverXMPP(urlToPut: string = "https://example.org/sparql/?default-graph-uri=http%3A%2F%2Fexample.org%2Frdf/xep") {
let that = this;
//let urlToGet = "https://xmpp.org/extensions/xep-0332.html";
//let urlToGet = "https://www.javatpoint.com/oprweb/test.jsp?filename=SimpleHTMLPages1";
let headers = {"dateOfRequest": new Date().toLocaleDateString()};
//let headers = {};
let data = "PREFIXdc:BASESELECT?title?creator?publisherWHERE{?xdc:title?title.OPTIONAL{?xdc:creator?creator}.}";
let res = await rainbowSDK.httpoverxmpp.put(urlToPut, headers, data);
_logger.log("debug", "MAIN - testputHTTPoverXMPP, res : ", res);
}
async testputHTTPoverXMPP_2(urlToPut: string = "https://reqbin.com/echo/put/json") {
let that = this;
//let urlToGet = "https://xmpp.org/extensions/xep-0332.html";
//let urlToGet = "https://www.javatpoint.com/oprweb/test.jsp?filename=SimpleHTMLPages1";
let headers = {
"dateOfRequest": new Date().toLocaleDateString(),
"Content-Type": "application/json"
};
//let headers = {};
let data = "{\n" +
" \"Id\": 12345,\n" +
" \"Customer\": \"John Smith\",\n" +
" \"Quantity\": 1,\n" +
" \"Price\": 10.00\n" +
"}";
let res = await rainbowSDK.httpoverxmpp.put(urlToPut, headers, data);
_logger.log("debug", "MAIN - testputHTTPoverXMPP, res : ", res);
}
async testdeleteHTTPoverXMPP(urlToPut: string = "https://example.org/sparql/?default-graph-uri=http%3A%2F%2Fexample.org%2Frdf/xep") {
let that = this;
//let urlToGet = "https://xmpp.org/extensions/xep-0332.html";
//let urlToGet = "https://www.javatpoint.com/oprweb/test.jsp?filename=SimpleHTMLPages1";
let headers = {"dateOfRequest": new Date().toLocaleDateString()};
//let headers = {};
let data = "PREFIXdc:BASESELECT?title?creator?publisherWHERE{?xdc:title?title.OPTIONAL{?xdc:creator?creator}.}";
let res = await rainbowSDK.httpoverxmpp.delete(urlToPut, headers, data);
_logger.log("debug", "MAIN - testdeleteHTTPoverXMPP, res : ", res);
}
async testHTTPoverXMPP() {
let that = this;
let utc = new Date().toJSON().replace(/-/g, "/");
//let urlToGet = "https://xmpp.org/extensions/xep-0332.html";
let headersPost = {
"dateOfRequest": new Date().toLocaleDateString()
};
Object.assign(headersPost, rainbowSDK._core.rest.getRequestHeader());
headersPost['Content-Type'] = "application/json";
let headersGet = {
"dateOfRequest": new Date().toLocaleDateString()
};
Object.assign(headersGet, rainbowSDK._core.rest.getRequestHeader());
let headersPut = {
"dateOfRequest": new Date().toLocaleDateString()
};
Object.assign(headersPut, rainbowSDK._core.rest.getRequestHeader());
headersPut['Content-Type'] = "application/json";
// *** Get directory entry ***
let urlToGet = "https://openrainbow.net:443/api/rainbow/directory/v1.0/entries?name=testPersonalDirectory&format=small&limit=100&offset=0&sortField=lastName&sortOrder=1&view=all"
//let res2 = await rainbowSDK.httpoverxmpp.getHTTPoverXMPP(urlToPost + "?name=testPersonalDirectory_lastname_", headers);
let res2: any = await rainbowSDK.httpoverxmpp.get(urlToGet, headersGet);
_logger.log("debug", "MAIN - testHTTPoverXMPP, getHTTPoverXMPP res2 : ", res2);
let resp = res2.iq.resp;
let bodyResult = decodeURIComponent(resp.data.text);
let resultOfHttp: any = bodyResult;
if (resp.$attrs.statusCode >= 200 && resp.$attrs.statusCode <= 206) {
for (let i = 0; i < resp.headers.header.length; i++) {
if (resp.headers.header[i].$attrs.name==="content-type" && (resp.headers.header[i]._.indexOf("json") > -1 || resp.headers.header[i]._.indexOf("csv") > -1)) {
resultOfHttp = JSON.parse(bodyResult);
}
}
} else {
_logger.warn("internal", "MAIN - testHTTPoverXMPP HTTP response.code != 200 , bodyjs : ", bodyResult);
}
_logger.log("debug", "MAIN - testHTTPoverXMPP, getHTTPoverXMPP decoded resultOfHttp : ", resultOfHttp);
// *** Delete directory entry ***
let urlToDelete = "https://openrainbow.net:443/api/rainbow/directory/v1.0/entries/"
for (let i = 0; i < resultOfHttp.data.length; i++) {
let resDelete: any = await rainbowSDK.httpoverxmpp.delete(urlToDelete + resultOfHttp.data[i].id, headersGet, undefined);
_logger.log("debug", "MAIN - testHTTPoverXMPP, deleteHTTPoverXMPP resDelete : ", resDelete);
let respDelete = resDelete.iq.resp;
let bodyResultDelete = decodeURIComponent(respDelete.data.text);
let resultOfHttpDelete: any = bodyResultDelete;
if (respDelete.$attrs.statusCode >= 200 && respDelete.$attrs.statusCode <= 206) {
for (let i = 0; i < respDelete.headers.header.length; i++) {
if (respDelete.headers.header[i].$attrs.name==="content-type" && (respDelete.headers.header[i]._.indexOf("json") > -1 || respDelete.headers.header[i]._.indexOf("csv") > -1)) {
resultOfHttpDelete = JSON.parse(bodyResultDelete);
}
}
} else {
_logger.warn("internal", "MAIN - testHTTPoverXMPP, deleteHTTPoverXMPP HTTP response.code != 200 , bodyjs : ", bodyResultDelete);
}
_logger.log("debug", "MAIN - testHTTPoverXMPP, deleteHTTPoverXMPP decoded resultOfHttpDelete : ", resultOfHttpDelete);
// */
}
// *** Create directory entry ***
let urlToPost = "https://openrainbow.net:443/api/rainbow/directory/v1.0/entries"; // https://openrainbow.net:443/api/rainbow/directory/v1.0/entries
//headers["Content-Type"] = "application/json";
//let headers = {};
let utcEmail = new Date().toJSON().replace(/-|\.|:/g, "_");
let data: any = {
firstName: "testPersonalDirectory_firstname_" + utc,
lastName: "testPersonalDirectory_lastname_" + utc,
companyName: connectedUser.companyName,
department: "SBU",
street: "1 rte Albert Schweitzer",
city: "Illkirch",
state: null,
postalCode: "67115",
country: "FRA",
workPhoneNumbers: ["0011223344"],
mobilePhoneNumbers: [],
otherPhoneNumbers: [],
jobTitle: "Validation Engineer",
eMail: utcEmail + "_test@vbe.test.openrainbow.net",
tags: [],
custom1: "",
custom2: ""
};
let body = JSON.stringify(data);
let res: any = await rainbowSDK.httpoverxmpp.post(urlToPost, headersPost, body);
_logger.log("debug", "MAIN - testHTTPoverXMPP, postHTTPoverXMPP res : ", res);
resp = res.iq.resp;
bodyResult = decodeURIComponent(resp.data.text);
resultOfHttp = bodyResult;
/*if (resp.$attrs.statusCode >= 200 && resp.$attrs.statusCode <= 206) {
for (let i = 0; i < resp.headers.header.length; i++) {
if (resp.headers.header[i].$attrs.name==="content-type" && (resp.headers.header[i]._.indexOf("json") > -1 || resp.headers.header[i]._.indexOf("csv") > -1)) {
resultOfHttp = JSON.parse(bodyResult);
}
}
} else {
_logger.warn("internal", "MAIN - testHTTPoverXMPP, postHTTPoverXMPP HTTP response.code != 200 , bodyjs : ", bodyResult);
} // */
_logger.log("debug", "MAIN - testHTTPoverXMPP, postHTTPoverXMPP decoded resultOfHttp : ", resultOfHttp);
// *** Get directory entry ***
urlToGet = "https://openrainbow.net:443/api/rainbow/directory/v1.0/entries?name=testPersonalDirectory&format=small&limit=100&offset=0&sortField=lastName&sortOrder=1&view=all"
//let res2 = await rainbowSDK.httpoverxmpp.getHTTPoverXMPP(urlToPost + "?name=testPersonalDirectory_lastname_", headers);
res2 = await rainbowSDK.httpoverxmpp.get(urlToGet, headersGet);
_logger.log("debug", "MAIN - testHTTPoverXMPP, getHTTPoverXMPP res2 : ", res2);
resp = res2.iq.resp;
bodyResult = decodeURIComponent(resp.data.text);
resultOfHttp = bodyResult;
if (resp.$attrs.statusCode >= 200 && resp.$attrs.statusCode <= 206) {
for (let i = 0; i < resp.headers.header.length; i++) {
if (resp.headers.header[i].$attrs.name==="content-type" && (resp.headers.header[i]._.indexOf("json") > -1 || resp.headers.header[i]._.indexOf("csv") > -1)) {
resultOfHttp = JSON.parse(bodyResult);
}
}
} else {
_logger.warn("internal", "MAIN - testHTTPoverXMPP, getHTTPoverXMPP HTTP response.code != 200 , bodyjs : ", bodyResult);
}
_logger.log("debug", "MAIN - testHTTPoverXMPP, getHTTPoverXMPP decoded resultOfHttp : ", resultOfHttp);
// *** Update directory entry ***
data = {
lastName: "testPersonalDirectory_lastname_" + utc + "_updated",
};
body = JSON.stringify(data);
let urlToPut = "https://openrainbow.net:443/api/rainbow/directory/v1.0/entries/" + resultOfHttp.data[0].id;
res = await rainbowSDK.httpoverxmpp.put(urlToPut, headersPut, body);
_logger.log("debug", "MAIN - testHTTPoverXMPP, putHTTPoverXMPP res : ", res);
resp = res.iq.resp;
bodyResult = decodeURIComponent(resp.data.text);
resultOfHttp = bodyResult;
if (resp.$attrs.statusCode >= 200 && resp.$attrs.statusCode <= 206) {
for (let i = 0; i < resp.headers.header.length; i++) {
if (resp.headers.header[i].$attrs.name==="content-type" && (resp.headers.header[i]._.indexOf("json") > -1 || resp.headers.header[i]._.indexOf("csv") > -1)) {
resultOfHttp = JSON.parse(bodyResult);
}
}
} else {
_logger.warn("internal", "MAIN - testHTTPoverXMPP, getHTTPoverXMPP HTTP response.code != 200 , bodyjs : ", bodyResult);
}
_logger.log("debug", "MAIN - testHTTPoverXMPP, getHTTPoverXMPP decoded updated resultOfHttp : ", resultOfHttp);
// *** Get directory entry ***
urlToGet = "https://openrainbow.net:443/api/rainbow/directory/v1.0/entries?name=testPersonalDirectory&format=small&limit=100&offset=0&sortField=lastName&sortOrder=1&view=all"
//let res2 = await rainbowSDK.httpoverxmpp.getHTTPoverXMPP(urlToPost + "?name=testPersonalDirectory_lastname_", headers);
res2 = await rainbowSDK.httpoverxmpp.get(urlToGet, headersGet);
_logger.log("debug", "MAIN - testHTTPoverXMPP, getHTTPoverXMPP res2 : ", res2);
resp = res2.iq.resp;
bodyResult = decodeURIComponent(resp.data.text);
resultOfHttp = bodyResult;
if (resp.$attrs.statusCode >= 200 && resp.$attrs.statusCode <= 206) {
for (let i = 0; i < resp.headers.header.length; i++) {
if (resp.headers.header[i].$attrs.name==="content-type" && (resp.headers.header[i]._.indexOf("json") > -1 || resp.headers.header[i]._.indexOf("csv") > -1)) {
resultOfHttp = JSON.parse(bodyResult);
}
}
} else {
_logger.warn("internal", "MAIN - testHTTPoverXMPP, getHTTPoverXMPP HTTP response.code != 200 , bodyjs : ", bodyResult);
}
_logger.log("debug", "MAIN - testHTTPoverXMPP, getHTTPoverXMPP decoded updated resultOfHttp : ", resultOfHttp);
// *** Delete directory entry ***
urlToDelete = "https://openrainbow.net:443/api/rainbow/directory/v1.0/entries/"
for (let i = 0; i < resultOfHttp.data.length; i++) {
let resDelete: any = await rainbowSDK.httpoverxmpp.delete(urlToDelete + resultOfHttp.data[i].id, headersGet, undefined);
_logger.log("debug", "MAIN - testHTTPoverXMPP, deleteHTTPoverXMPP resDelete : ", resDelete);
let respDelete = resDelete.iq.resp;
let bodyResultDelete = decodeURIComponent(respDelete.data.text);
let resultOfHttpDelete: any = bodyResultDelete;
if (respDelete.$attrs.statusCode >= 200 && respDelete.$attrs.statusCode <= 206) {
for (let i = 0; i < respDelete.headers.header.length; i++) {
if (respDelete.headers.header[i].$attrs.name==="content-type" && (respDelete.headers.header[i]._.indexOf("json") > -1 || respDelete.headers.header[i]._.indexOf("csv") > -1)) {
resultOfHttpDelete = JSON.parse(bodyResultDelete);
}
}
} else {
_logger.warn("internal", "MAIN - testHTTPoverXMPP, deleteHTTPoverXMPP HTTP response.code != 200 , bodyjs : ", bodyResultDelete);
}
_logger.log("debug", "MAIN - testHTTPoverXMPP, deleteHTTPoverXMPP decoded resultOfHttpDelete : ", resultOfHttpDelete);
// */
}
/*
let personalDirectoryList : any = await rainbowSDK.contacts.getListPersonalDirectoryEntriesData("testPersonalDirectory", undefined, undefined, undefined, undefined, undefined, undefined, undefined );
_logger.log("debug", "MAIN - testdeletePersonalDirectoryEntry - personalDirectoryList : ", personalDirectoryList);
if (personalDirectoryList &&personalDirectoryList.data && personalDirectoryList.total > 0) {
let result = await rainbowSDK.contacts.updatePersonalDirectoryEntry(personalDirectoryList.data[0].id, personalDirectoryList.data[0].firstName + "_updated");
let result = await rainbowSDK.contacts.deletePersonalDirectoryEntry(personalDirectoryList.data[0].id);
_logger.log("debug", "MAIN - testdeletePersonalDirectoryEntry - deletePersonalDirectoryEntry result : ", result);
let personalDirectoryListUpdated : any = await rainbowSDK.contacts.getListPersonalDirectoryEntriesData("testPersonalDirectory", undefined, undefined, undefined, undefined, undefined, undefined, undefined );
_logger.log("debug", "MAIN - testdeletePersonalDirectoryEntry - personalDirectoryListUpdated : ", personalDirectoryListUpdated);
}
// */
}
async testdiscover() {
let that = this;
let res = await rainbowSDK.httpoverxmpp.discover();
_logger.log("debug", "MAIN - testdiscover, res : ", res);
}
//endregion Rainbow HTTPoverXMPP
//region Presence
async testgetMyPresenceInformation() {
let res = await rainbowSDK.presence.getMyPresenceInformation();
_logger.log("debug", "MAIN - testgetMyPresenceInformation, res : ", res);
}
async testsendIqGetMyPresenceInformation() {
/* The API server send to xmpp server the following request.
*
*
*/
let that = this;
let contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent01@vbe.test.openrainbow.net");
let promiseList = []
_logger.log("debug", "MAIN - (testsendIq) : START iter.");
//await rainbowSDK._core._rest.getContactInformationByJID(contact.jid).then((_contactFromServer: any) => {
//_logger.log("debug", "MAIN - (testsendPing) getContactInformationByJID result : ", _contactFromServer);
let id = xmppUtils.getUniqueMessageId();
let stanza = xml("iq", {
"from": rainbowSDK._core._xmpp.fullJid,
"type": "get",
// "to": rainbowSDK._core._xmpp.fullJid,
"to": connectedUser.jid,
"id": id
},
xml("user-presences", {"user" : connectedUser.jid, "xmlns": 'jabber:iq:configuration'})
);
_logger.log("debug", "MAIN - (testsendIq) send - 'stanza'", stanza.root().toString());
let sendIqResult = await rainbowSDK._core._xmpp.xmppClient.sendIq(stanza);
_logger.log("debug", "MAIN - (testsendIq) sendIq result : ", sendIqResult);
let prettyStanza = stanza.root ? prettydata.xml(stanza.root().toString()) : stanza;
_logger.log("debug", "MAIN - (testsendIq) sendIq result prettyStanza : ", prettyStanza);
let xmlNodeStr = stanza ? stanza.toString():"";
let jsonStanza = await getJsonFromXML(xmlNodeStr);
_logger.log("debug", "MAIN - (testsendIq) sendIq result jsonStanza : ", jsonStanza);
_logger.log("debug", "MAIN - (testsendIq) sendIq result jsonStanza.iq.query.identity : ", jsonStanza.iq.query.identity);
_logger.log("debug", "MAIN - (testsendIq) sendIq result jsonStanza.iq.query.feature : ", jsonStanza.iq.query.feature);
//}).catch((error) => {
// _logger.log("error", "MAIN - CATCH Error !!! promise to getContactInfo failed result : ", error);
//});
}
async testsetPresenceTo() {
let presenceStr : PresenceLevel = PresenceLevel.Away; //"away"; // 'dnd', 'away', 'invisible' ('xa' on server side) or 'online'
let setAway = true;
setInterval(async () => {
if (setAway) {
presenceStr = PresenceLevel.Away; // "away";
setAway = false;
} else {
presenceStr = PresenceLevel.Online; //"online";
setAway = true;
}
let res = await rainbowSDK.presence.setPresenceTo(presenceStr);
_logger.log("debug", "MAIN - testsetPresenceTo, set presence res : ", res);
}, 20000);
}
async testsendIsTypingStateInConversation(state : boolean = true) {
//let that = this;
let contactEmailToSearch = "vincent01@vbe.test.openrainbow.net";
// Retrieve a contact by its id
let contact = await rainbowSDK.contacts.getContactByLoginEmail(contactEmailToSearch);
// Retrieve the associated conversation
let conversation = await rainbowSDK.conversations.openConversationForContact(contact);
// let now = new Date().getTime();
// Send message
let msgSent = await rainbowSDK.im.sendIsTypingStateInConversation(conversation, state);
_logger.log("debug", "MAIN - sendIsTypingStateInConversation - result : ", msgSent);
//_logger.log("debug", "MAIN - sendIsTypingStateInConversation - conversation : ", conversation);
}
//endregion Presence
//region voicemail
async testsendVoicemailTranscriptionMessage() {
/*
const message = $iq({ id: this.xmppService.connection.getUniqueId(), from: this.xmppService.jid, to: this.xmppService.fullJid, type: 'set' });
message.c('voiceMail', {
xmlns: 'jabber:iq:voicemailTranscription',
jid: this.xmppService.jid,
date: new Date().toISOString(),
duration: 145,
url:'http://url',
transcript: 'Une chouette transcription de mon message'
});
// await this.xmppService.sendIQ(message);
// */
//const xml = require("@xmpp/xml");
//import {XMPPUTils} from "../lib/common/XMPPUtils";
//const xmppUtils = XMPPUTils.getXMPPUtils();
/*
let stanza = xml("iq", {
"from": rainbowSDK._core._xmpp.jid,
"type": "set",
"to": rainbowSDK._core._xmpp.jid,
//"to": rainbowSDK._core._xmpp.fullJid,
"id": id
}, xml("voiceMail", {
xmlns: 'jabber:iq:voicemailTranscription',
jid: rainbowSDK._core._xmpp.jid,
date: new Date().toISOString(),
duration: 145,
url:'http://url',
transcript: 'Une chouette transcription de mon message'
},
)
);
_logger.log("debug", "MAIN - (testsendVoicemailTranscriptionMessage) send - 'stanza'", stanza.root().toString());
let sendIqResult = await rainbowSDK._core._xmpp.xmppClient.sendIq(stanza);
// */
/*
let id = xmppUtils.getUniqueMessageId();
const stanza = xml("message", {
"from": rainbowSDK._core._xmpp.jid,
"type": "set",
"to": rainbowSDK._core._xmpp.jid,
//"to": rainbowSDK._core._xmpp.fullJid,
"id": id
}, xml("voiceMail", {
xmlns: 'jabber:iq:voicemailTranscription',
jid: rainbowSDK._core._xmpp.jid,
date: new Date().toISOString(),
duration: 145,
url: 'http://url',
transcript: 'Une chouette transcription de mon message'
},
)
);
_logger.log("debug", "MAIN - (testsendVoicemailTranscriptionMessage) send - 'stanza'", stanza.root().toString());
let sendIqResult = await rainbowSDK._core._xmpp.xmppClient.send(stanza);
// */
let transcriptInfo : { jid : string, date : string, duration : number, fileDescId: string, fromNumber: string, transcript : string} = { jid : rainbowSDK._core._xmpp.jid, date : new Date().toISOString(), duration : 145, fileDescId: "fileid1234", fromNumber: "from", transcript : 'Une chouette transcription de mon message'};
let sendIqResult = await rainbowSDK.im.sendVoicemailTranscriptionMessage( rainbowSDK._core._xmpp.jid, transcriptInfo, undefined);
_logger.log("debug", "MAIN - (testsendVoicemailTranscriptionMessage) sendIqResult : ", sendIqResult);
}
async testsendVoicemailTranscriptionMessage_mock() {
let stanzamocked = "";
await rainbowSDK._core._xmpp.mockStanza(stanzamocked);
}
//endregion voicemail
// region Telephony Voice Messages
async testdeleteAllMyVoiceMessagesFromPbx() {
// DELETE /api/rainbow/telephony/v1.0/voicemessages/all
// API https://api.openrainbow.org/telephony/#api-telephony-Voice_all_user's_messages_delete
let that = this;
let res = await rainbowSDK.telephony.deleteAllMyVoiceMessagesFromPbx();
_logger.log("debug", "MAIN - testdeleteAllMyVoiceMessagesFromPbx, res : ", res);
}
async testdeleteAVoiceMessageFromPbx() {
// DELETE /api/rainbow/telephony/v1.0/voicemessages/:messageId
// API https://api.openrainbow.org/telephony/#api-telephony-Voice_message_delete
let that = this;
let messageId = "";
let res = await rainbowSDK.telephony.deleteAVoiceMessageFromPbx(messageId);
_logger.log("debug", "MAIN - testdeleteAVoiceMessageFromPbx, res : ", res);
}
async testgetAVoiceMessageFromPbx() {
// API https://api.openrainbow.org/telephony/#api-telephony-Voice_message_read
// GET /api/rainbow/telephony/v1.0/voicemessages/:messageId
let that = this;
let messageId: string, messageDate: string, messageFrom: string;
let res = await rainbowSDK.telephony.getAVoiceMessageFromPbx(messageId, messageDate, messageFrom);
_logger.log("debug", "MAIN - testgetAVoiceMessageFromPbx, res : ", res);
}
async testgetDetailedListOfVoiceMessages() {
// API https://api.openrainbow.org/telephony/#api-telephony-Voice_messages_list
// GET /api/rainbow/telephony/v1.0/voicemessages
let that = this;
try {
let res = await rainbowSDK.telephony.getDetailedListOfVoiceMessages();
_logger.log("debug", "MAIN - testgetDetailedListOfVoiceMessages, res : ", res);
} catch (err) {
_logger.log("error", "MAIN - testgetDetailedListOfVoiceMessages, error : ", err);
}
}
async testgetNumbersOfVoiceMessages() {
// API https://api.openrainbow.org/telephony/#api-telephony-Voice_messages_counters
// GET /api/rainbow/telephony/v1.0/voicemessages/counters
let that = this;
let res = await rainbowSDK.telephony.getNumbersOfVoiceMessages();
_logger.log("debug", "MAIN - testgetNumbersOfVoiceMessages, res : ", res);
}
// endregion Telephony Voice Messages
// region Bots
async testgetRainbowSupportBotService() {
let that = this;
let res = await rainbowSDK.admin.getRainbowSupportBotService();
_logger.log("debug", "MAIN - testgetRainbowSupportBotService, res : ", res);
}
async testgetABotServiceData() {
let that = this;
let res = await rainbowSDK.admin.getRainbowSupportBotService();
_logger.log("debug", "MAIN - testgetABotServiceData, getRainbowSupportBotService res : ", res);
let res2 = await rainbowSDK.admin.getABotServiceData(res.id);
_logger.log("debug", "MAIN - testgetABotServiceData, getABotServiceData res2 : ", res2);
}
async testgetAllBotServices() {
let that = this;
let res = await rainbowSDK.admin.getAllBotServices();
_logger.log("debug", "MAIN - testgetAllBotServices, res : ", res);
}
// endregion Bots
//region PBXS
async testgetAllPbxs() {
let that = this;
let res = await rainbowSDK.admin.getAllPbxs();
_logger.log("debug", "MAIN - testgetAllPbxs, res : ", res);
}
//endregion PBXS
//region RPC
async testiq_query_rpc_methodlist() {
/*
system.listMethods
*/
let stanzaStr = "\n" +
" \n" +
" \n" +
" system.listMethods\n" +
" \n" +
" \n" +
" \n" +
"";
let stanza = prettydata.xmlmin(stanzaStr);
_logger.log("debug", "MAIN - testiq_query_rpc_methodlist stanza : ", stanza);
await rainbowSDK._core._xmpp.mockStanza(stanza);
}
async testiq_query_rpc_methodCall() {
/*
botRpcMethod
callerPhoneNumber
81000000
localUserEmail
caroliaw@jmr.test.openrainbow.net<;/value>
*/
let resultOfAdd = await rainbowSDK.rpcoverxmpp.addRPCMethod("botRpcMethod", (arg1) => {
_logger.log("debug", "MAIN - botRpcMethod, arg1 : ", arg1);
let result = {
arg1
};
return result;
}, "botRpcMethod description", "botRpcMethod help");
_logger.log("debug", "MAIN - testiq_query_rpc_methodCall, resultOfAdd : ", resultOfAdd);
let stanzaStr = "" +
"" +
"" +
"botRpcMethod" +
"" +
"" +
"" +
"" +
"" +
"callerPhoneNumber" +
"81000000" +
"" +
"" +
"localUserEmail" +
"caroliaw@jmr.test.openrainbow.net" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"";
let stanza = prettydata.xmlmin(stanzaStr);
_logger.log("debug", "MAIN - testiq_query_rpc_methodCall stanza : ", stanza);
await rainbowSDK._core._xmpp.mockStanza(stanza);
}
testFunctionName() {
let fn1 = function (arg1) {
return arg1;
}
_logger.log("debug", "MAIN - testcallRPCMethod_system, function name of fn1 : ", functionName(fn1));
let fn2 = function fn2(arg1) {
return arg1;
}
_logger.log("debug", "MAIN - testcallRPCMethod_system, function name of fn2 : ", functionName(fn2));
let fn3 = (arg1) => {
return arg1;
}
_logger.log("debug", "MAIN - testcallRPCMethod_system, function name of fn3 : ", functionName(fn3));
}
async testcallRPCMethod_system() {
let that = this;
let methodNames: any = await rainbowSDK.rpcoverxmpp.callRPCMethod(); // Call system.listMethods (default
_logger.log("debug", "MAIN - testcallRPCMethod_system, methodNames : ", methodNames);
for (const methodName of methodNames) {
_logger.log("debug", "MAIN - testcallRPCMethod_system, methodName : ", methodName);
let methodHelp: any = await rainbowSDK.rpcoverxmpp.callRPCMethod(undefined, "system.methodHelp", [methodName]);
_logger.log("debug", "MAIN - testcallRPCMethod_system, methodName : ", methodName, ", methodHelp : ", methodHelp);
let methodSignature: any = await rainbowSDK.rpcoverxmpp.callRPCMethod(undefined, "system.methodSignature", [methodName]);
_logger.log("debug", "MAIN - testcallRPCMethod_system, methodName : ", methodName, ", methodSignature : ", methodSignature);
}
}
async testaddRPCMethod() {
let that = this;
let resultOfAdd = await rainbowSDK.rpcoverxmpp.addRPCMethod("example.trace", (arg1, arg2, arg3, arg4, arg5) => {
_logger.log("debug", "MAIN - example.trace, arg1 : ", arg1);
_logger.log("debug", "MAIN - example.trace, arg2 : ", arg2);
_logger.log("debug", "MAIN - example.trace, arg3 : ", arg3);
_logger.log("debug", "MAIN - example.trace, arg4 : ", arg4);
_logger.log("debug", "MAIN - example.trace, arg5 : ", arg5);
let result = {
arg1,
arg2,
arg3,
arg4,
arg5
}
return result;
}, "example.trace description", "example.trace help");
_logger.log("debug", "MAIN - testaddRPCMethod, resultOfAdd : ", resultOfAdd);
}
async testcallRPCMethod_withParams() {
let that = this;
let param = [];
await rainbowSDK.rpcoverxmpp.addRPCMethod("example.trace", (arg1, arg2, arg3, arg4, arg5, arg6, arg7) => {
_logger.log("debug", "MAIN - example.trace, arg1 : ", arg1);
_logger.log("debug", "MAIN - example.trace, arg2 : ", arg2);
_logger.log("debug", "MAIN - example.trace, arg3 : ", arg3);
_logger.log("debug", "MAIN - example.trace, arg4 : ", arg4);
_logger.log("debug", "MAIN - example.trace, arg5 : ", arg5);
_logger.log("debug", "MAIN - example.trace, arg6 : ", arg6);
_logger.log("debug", "MAIN - example.trace, arg7 : ", arg7);
let result = {
arg1,
arg2,
arg3,
arg4,
arg5,
arg6,
arg7
}
return result;
}, "example.trace description", "example.trace help");
let obj = {
"firstName": "vincent",
"lastName": "berder",
"age": 20,
"isEmployed": true,
};
param.push("hello array of number and array of string");
param.push([1, 2, ["arg1", "arg2", {
"propertyOfObjInTab1": "mypropertyOfObjInTab1",
"propertyOfObjInTab2": "mypropertyOfObjInTab2"
}]]);
// param.push([1,2,["arg1", "arg2"]]);
param.push("param3");
param.push(undefined);
param.push(obj);
param.push({"propertyOne": "valueproperty"});
param.push(["valArrayOne"]);
let res = await rainbowSDK.rpcoverxmpp.callRPCMethod(undefined, "example.trace", param);
_logger.log("debug", "MAIN - testcallRPCMethod_withParams, res : ", res);
}
//endregion RPC
//region Customer Care
async testsendCustomerCareReport() {
let logId: string, filesPath: Array = [], occurrenceDate: string, occurrenceDateTimezone: string,
description: string, externalRef: string, device: string, version: string, deviceDetails: any;
try {
logId = "1234";
filesPath.push("c:\\temp\\test.txt");
filesPath.push("c:\\temp\\test2.txt");
occurrenceDate = new Date().toLocaleString();
occurrenceDateTimezone = "Europe/Paris";
description = "test of log return by node SDK";
externalRef = undefined;
device = "web";
version = "2.24.1";
deviceDetails = undefined;
let res = await rainbowSDK.admin.sendCustomerCareReport(logId, filesPath, occurrenceDate, occurrenceDateTimezone,
description, externalRef, device, version, deviceDetails);
_logger.log("debug", "MAIN - testcallRPCMethod_withParams, res : ", res);
} catch (err) {
_logger.log("error", "MAIN - CATCH error.");
_logger.log("internalerror", "MAIN - CATCH error !!! : ", err);
}
}
//endregion Customer Care
//region XMPP
async testsendPing() {
/*
*/
let that = this;
let contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent01@vbe.test.openrainbow.net");
let promiseList = []
_logger.log("debug", "MAIN - (testsendPing) : START contact : ", contact.displayName);
//await rainbowSDK._core._rest.getContactInformationByJID(contact.jid).then((_contactFromServer: any) => {
//_logger.log("debug", "MAIN - (testsendPing) getContactInformationByJID result : ", _contactFromServer);
let pingResult = rainbowSDK._core._xmpp.sendPing(contact.jid);
_logger.log("debug", "MAIN - (testsendPing) sendPing result : ", pingResult);
//}).catch((error) => {
// _logger.log("error", "MAIN - CATCH Error !!! promise to getContactInfo failed result : ", error);
//});
}
async testsendIq() {
/*
*/
let that = this;
let contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent01@vbe.test.openrainbow.net");
let promiseList = []
_logger.log("debug", "MAIN - (testsendIq) : START iter.");
//await rainbowSDK._core._rest.getContactInformationByJID(contact.jid).then((_contactFromServer: any) => {
//_logger.log("debug", "MAIN - (testsendPing) getContactInformationByJID result : ", _contactFromServer);
let id = xmppUtils.getUniqueMessageId();
let stanza = xml("iq", {
"from": rainbowSDK._core._xmpp.fullJid,
"type": "result",
"to": rainbowSDK._core._xmpp.fullJid,
"id": id
}, xml("query", {xmlns: 'http://jabber.org/protocol/disco#info'},
xml("identity", {category: 'client'}),
xml("feature", {var: 'jabber:iq:time'}),
xml("feature", {var: 'jabber:iq:version'})
)
);
_logger.log("debug", "MAIN - (testsendIq) send - 'stanza'", stanza.root().toString());
let sendIqResult = await rainbowSDK._core._xmpp.xmppClient.sendIq(stanza);
_logger.log("debug", "MAIN - (testsendIq) sendIq result : ", sendIqResult);
let prettyStanza = stanza.root ? prettydata.xml(stanza.root().toString()) : stanza;
_logger.log("debug", "MAIN - (testsendIq) sendIq result prettyStanza : ", prettyStanza);
let xmlNodeStr = stanza ? stanza.toString():"";
let jsonStanza = await getJsonFromXML(xmlNodeStr);
_logger.log("debug", "MAIN - (testsendIq) sendIq result jsonStanza : ", jsonStanza);
_logger.log("debug", "MAIN - (testsendIq) sendIq result jsonStanza.iq.query.identity : ", jsonStanza.iq.query.identity);
_logger.log("debug", "MAIN - (testsendIq) sendIq result jsonStanza.iq.query.feature : ", jsonStanza.iq.query.feature);
//}).catch((error) => {
// _logger.log("error", "MAIN - CATCH Error !!! promise to getContactInfo failed result : ", error);
//});
}
//endregion XMPP
//region XMPP Mock tests
async testmockUserSessionNotFound() {
let stanzaStr = `
User session not found
`;
let stanza = prettydata.xmlmin(stanzaStr);
rainbowSDK.events.on("rainbow_onsendmessagefailed", (data) => {
// do something when the SDK has been started
_logger.log("debug", "MAIN - (rainbow_onsendmessagefailed) - event's data : ", data);
});
_logger.log("debug", "MAIN - testmockUserSessionNotFound stanza : ", stanza);
await rainbowSDK._core._xmpp.mockStanza(stanza);
}
//endregion XMPP Mock tests
// region TimeOutManager
async testtimeOutManagersetTimeout() {
if (rainbowSDK.state==="ready") {
await rainbowSDK.stop();
}
let timeOutManager = new TimeOutManager(_logger);
function fn(id) {
return () => {
_logger.log("debug", "MAIN - testtimeOutManagersetTimeout, id : ", id, " done at : ", new Date().toTimeString());
}
}
_logger.log("debug", "MAIN - testtimeOutManagersetTimeout, start at : ", new Date().toTimeString());
timeOutManager.setTimeout(fn("1"), 20000, "timer a 20 secondes");
timeOutManager.setTimeout(fn("2"), 10000, "timer a 10 secondes");
timeOutManager.listEveryTimeout();
//setTimeout(timeOutManager.cleanNotInProgressTimeoutCache.bind(timeOutManager), 5000);
//setTimeout(timeOutManager.cleanNotInProgressTimeoutCache.bind(timeOutManager), 15000);
//setTimeout(timeOutManager.cleanNotInProgressTimeoutCache.bind(timeOutManager), 25000);
setTimeout(timeOutManager.listEveryTimeout.bind(timeOutManager), 5000);
setTimeout(timeOutManager.listEveryTimeout.bind(timeOutManager), 15000);
setTimeout(timeOutManager.listEveryTimeout.bind(timeOutManager), 30000);
/*
timeOutManager.clearEveryTimeout();
setTimeout(timeOutManager.clearEveryTimeout.bind(timeOutManager), 5000);
setTimeout(timeOutManager.clearEveryTimeout.bind(timeOutManager), 15000);
setTimeout(timeOutManager.clearEveryTimeout.bind(timeOutManager), 20000);
setTimeout(timeOutManager.clearEveryTimeout.bind(timeOutManager), 25000);
// */
}
async testtimeOutManagersetTimeoutPromised() {
if (rainbowSDK.state==="ready") {
await rainbowSDK.stop();
}
let timeOutManager = new TimeOutManager(_logger);
function fn(id) {
return () => {
_logger.log("debug", "MAIN - testtimeOutManagersetTimeoutPromised, id : ", id, " done at : ", new Date().toTimeString());
}
}
_logger.log("debug", "MAIN - testtimeOutManagersetTimeoutPromised, start at : ", new Date().toTimeString());
timeOutManager.setTimeoutPromised(fn("1"), 20000, "timer a 20 secondes").then(() => {
_logger.log("debug", "MAIN - testtimeOutManagersetTimeoutPromised, After setTimeoutPromised done at : ", new Date().toTimeString());
}).catch((err) => {
_logger.log("error", "MAIN - testtimeOutManagersetTimeoutPromised, Catch setTimeoutPromised done at : ", new Date().toTimeString(), ", error : ", err);
});
//timeOutManager.setTimeout(fn("2"), 10000, "timer a 10 secondes") ;
timeOutManager.listEveryTimeout();
/*setTimeout(timeOutManager.cleanNotInProgressTimeoutCache.bind(timeOutManager), 5000);
setTimeout(timeOutManager.cleanNotInProgressTimeoutCache.bind(timeOutManager), 15000);
setTimeout(timeOutManager.cleanNotInProgressTimeoutCache.bind(timeOutManager), 25000);
// */
setTimeout(timeOutManager.listEveryTimeout.bind(timeOutManager), 30000);
timeOutManager.clearEveryTimeout();
/*
setTimeout(timeOutManager.clearEveryTimeout.bind(timeOutManager), 5000);
setTimeout(timeOutManager.clearEveryTimeout.bind(timeOutManager), 15000);
setTimeout(timeOutManager.clearEveryTimeout.bind(timeOutManager), 20000);
setTimeout(timeOutManager.clearEveryTimeout.bind(timeOutManager), 25000);
// */
}
// endregion TimeOutManager
testgetRandomInt() {
for (let i = 0; i < 1000; i++) {
let test = false;
let intRandom = getRandomInt(2);
if (intRandom==1 || !test) {
console.log("getRandomInt(2)", intRandom);
}
}
}
testundefined() {
try {
// @ts-ignore
_logger.log("debug", "MAIN - testundefined, start at : ", undefined.settings);
} catch (err) {
_logger.log("debug", "MAIN - testundefined, CATCH Error !!! : ", err);
}
}
testresolveDns(url: string = 'www.amagicshop.com.tw') {
Utils.resolveDns(url).then((result) => {
_logger.log("debug", "MAIN - testresolveDns, result : ", result);
}).catch((err) => {
_logger.log("debug", "MAIN - testresolveDns, error : ", err);
})
}
testGetEventsList() {
let eventsTab = rainbowSDK.events.sdkPublicEventsName;
for (const event in eventsTab) {
_logger.log("debug", "MAIN - testGetEventsList, eventTab : ", eventsTab[event]);
}
}
// testMultiPromise(500)
async testMultiPromise(nb = 100) {
let that = this;
let contact = await rainbowSDK.contacts.getContactByLoginEmail("vincent.berder@al-enterprise.com");
let nbRequestToSend = nb;
let nbRequestSent = 0;
let promiseList = []
_logger.log("debug", "MAIN - (testMultiPromise) : START iter.");
for (let i = 0; i < nbRequestToSend; i++) {
//setTimeoutPromised(100).then(() => {
let prom = rainbowSDK._core._rest.getContactInformationByJID(contact.jid).then((_contactFromServer: any) => {
nbRequestSent++;
_logger.log("debug", "MAIN - promise iter : ", _logger.colors.green(i), " : nb request sent ", nbRequestSent, "/", nbRequestToSend, " needed, result : contact : ", _contactFromServer.displayName);
}).catch((error) => {
_logger.log("error", "MAIN - CATCH Error !!! promise to getContactInfo failed result : ", error);
});
promiseList.push(prom);
//});
}
_logger.log("debug", "MAIN - (testMultiPromise) : STOP iter.");
Promise.all(promiseList).then(() => {
_logger.log("debug", "MAIN - (testMultiPromise) : ALL Promises done.");
})
}
//region Start / Stop
async testStartWithToken() {
await rainbowSDK.stop();
//let token = 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb3VudFJlbmV3ZWQiOjAsIm1heFRva2VuUmVuZXciOjcsInVzZXIiOnsiaWQiOiI1YmJkYzMzNzJjZjQ5NmMwN2RkODkxMjEiLCJsb2dpbkVtYWlsIjoidmluY2VudDAwQHZiZS50ZXN0Lm9wZW5yYWluYm93Lm5ldCJ9LCJhcHAiOnsiaWQiOiIyNzAzM2IxMDAxYmQxMWU4ODQzZDZmMDAxMzRlNTE4OSIsIm5hbWUiOiJSYWluYm93IG9mZmljaWFsIFdlYiBhcHBsaWNhdGlvbiJ9LCJpYXQiOjE1NzU0NjIyOTMsImV4cCI6MTU3Njc1ODI5M30.MA71vA1SDjf-PqYtrBnpEsPai1G4LvVFHFqolsQ6Dv3NukRpbHusEgyICvtBt0t9vJ3iuzupN-ltbrj1feSBR7VnGUf2i0QNXWRCSbOgHugQAKyRZTKt9lKphaYtEEJMjHrl7k8XO6E7E1nFLFWIgJw8pNbKSmJ84rCP-wyH6kh5N7ev10XBaZsC0kdDSgFH8M2T72xgc4gtLua5BIK8Oj6qdbpHSODaLptI7ehYdbU-Mw8ECZ_VFj8Cs6lfbQWOYKgHojkoLHakDf_6oVA40YarJZunYEasuuHKL5qiZJHGkgXHBxBUBGJbbDXu_DOkTognKMPSkAXjfnLmbk0kxw';
//let token = 'sdfsqfsqfsdfsdfgdf';
let token = undefined;
//token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoiNWY3NWEwZGQxZGI5NDY0ZDY3ZTMyNDYzIiwibG9naW5FbWFpbCI6ImxkYXAuY29ubmVjdG9yLmFkbWluMUBjbWEudGVzdC5vcGVucmFpbmJvdy5jb20ifSwiYXBwIjp7ImlkIjoiMDczMGY2ZTBhMGUwMTFlYjhlNjE3YjhlMWVkZTcwYjEiLCJuYW1lIjoiTERBUCAgY29ubmVjdG9yIn0sIm9hdXRoIjp7InRva2VuSWQiOiItZW1zcXpIa3F2IiwidHlwZSI6ImFjY2Vzc190b2tlbiIsInNjb3BlIjoiYWxsIiwiZ3JhbnQiOiJpbXBsaWNpdCJ9LCJlbnZpcm9ubWVudCI6eyJlbnZpcm9ubWVudE5hbWUiOiJwcmVwcm9kdWN0aW9uIiwiZW52aXJvbm1lbnRBcGlVcmwiOiJodHRwczovL29wZW5yYWluYm93Lm5ldCJ9LCJpYXQiOjE2MjkxOTE1ODAsImV4cCI6MTYyOTE5MTg4MH0.p-GJWuIbJzb7eeY9Bi-4oq_t3PUxEr_E-0IrAad0LJbgXVprmIMiieBJamB4SXZhVSN2yqz68_I6yS7veFoLvcVU8coi4L_TebO8R5mnKB8Ocs66SqhjotggmXZNsWmaMNOGNCZRpaCJF9eHz04ux9BZTv7UJmfXpbg7xhce9GXDxT4OAoJYN7XYglymerueWZ8CArQ1Vtc_ahWdeOjp7dQYQ3DMKowmPO1_LdJTmcmAlwVZTG6RGZJNHckPyb4aGTesUYObJIyf_CHwZaIhyk-qcISCAPxzKG-x3qDZ_kCqzNGB3ojP9YkrBy1X5nTmDrt7UfV85gMaW5ew1AIFHQ";
//token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoiNWMzZGY5Mzc3NmYzNTE4OTc4YzFkMDhhIn0sImFwcCI6eyJpZCI6IjIzNWFjNjAwMDk4MzExZWNiN2I4NGQ2OTk4MjVkNmQzIiwibmFtZSI6InZiZXJkZXItb2F1dGgtYXBwIn0sIm9hdXRoIjp7InRva2VuSWQiOiJMU19qV1VvcmpKIiwicmVmcmVzaFRva2VuSWQiOiI2MTJlNjhjMThkZDU3MTc4NTdmZTU1ZjIiLCJ0eXBlIjoiYWNjZXNzX3Rva2VuIiwic2NvcGUiOiJhbGwiLCJncmFudCI6ImF1dGhvcml6YXRpb25fY29kZSJ9LCJlbnZpcm9ubWVudCI6eyJlbnZpcm9ubWVudE5hbWUiOiJwcmVwcm9kdWN0aW9uIiwiZW52aXJvbm1lbnRBcGlVcmwiOiJodHRwczovL29wZW5yYWluYm93Lm5ldCJ9LCJpYXQiOjE2MzA0MzE0MjUsImV4cCI6MTYzMDQzMTcyNX0.DeWye85KexHllKsMwvJMfnC5ajl_NBXLzzE7DHaDuisrN3g3WA27C3Z1Saa7cGAQGixI5zK1DZScJPQaCC6Bv-gR3MJAfuyidF_HA5pjp7oHV40Dt6791NaMCQQDHhlpzbabDWL0pw9gqrO55y4bgtJ07EXg4j-H34nue6SxKfupXqmgx3A_4IM_rIn_HMMpNgooFOv2ktQIPNmRkXL8nUwyiyNIeIhCWtO8KQ4j23zXdgPP30jfS14vSEpRS19dlbCZ3dcdckj42cV8lPm_XEspk-F_x5DcjwGhtfvjrCcqWMn8mQ6x50lcnk_gfqB6K8lIrwWPZXw5PKdruHB40g";
_logger.log("debug", "MAIN - (testStartWithToken) rainbow SDK token : ", _logger.colors.green(token)); //logger.colors.green(JSON.stringify(result)));
token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb3VudFJlbmV3ZWQiOjAsIm1heFRva2VuUmVuZXciOjcsInVzZXIiOnsiaWQiOiI1NzMxZmU0Zjc4MjQwOTFiMzVmNWUyYjciLCJsb2dpbkVtYWlsIjoidmluY2VudC5iZXJkZXJAYWwtZW50ZXJwcmlzZS5jb20ifSwiZW52aXJvbm1lbnQiOnsiZW52aXJvbm1lbnROYW1lIjoib2ZmaWNpYWwiLCJlbnZpcm9ubWVudEFwaVVybCI6Imh0dHBzOi8vb3BlbnJhaW5ib3cuY29tIn0sImFwcCI6eyJpZCI6ImEyZjg5MDMwMDBmMDExZTg4NmQ5YjViYmQzMjYwNzkyIiwibmFtZSI6IlJhaW5ib3cgb2ZmaWNpYWwgV2ViIGFwcGxpY2F0aW9uIn0sInNhbWwiOnsibmFtZUlkIjoidmluY2VudC5iZXJkZXJAYWwtZW50ZXJwcmlzZS5jb20iLCJzZXNzaW9uSWR4IjoiXzZhZmM4Y2ZmLTg3OTEtNDZhNy1iZWEyLTAzODgwMGI4OGIwMCJ9LCJpYXQiOjE2MjkyMTEzMDQsImV4cCI6MTYzMDUwNzMwNH0.aP4LC9HX-QO1s9gf68-R08goe4472YQYEOErRc7_piaVRRPYchD6Fo3u3CXJNmwep5MJjnypuJKlttQ4mtMRHG5np3b_1peARj0qqMpePag4JiQZWV9ne9DwcwNRhxD8uTmYEDOezGH8hhpIvkqUfuHpR4ZW7Anff5SeVOHPWzwcJ5EUJQKQKKR3sEfEC_2PHd7fywEw0BDOxCIXFQjC1jG3_JbIgnIGOqTwOFdH9-ZaurDjj9mU2JL4l9GKPn_afi1YiBjoAm3Er7hM-x6XwHHdJBvl49SY-4p7uzhqFIFNnrZ-73Cihbo8RTyb0hnCdOB36p6HfiVytL6UwZHQCw";
_logger.log("debug", "MAIN - (testStartWithToken) rainbow SDK token : ", _logger.colors.green(token)); //logger.colors.green(JSON.stringify(result)));
try {
_logger.log("debug", "MAIN - rainbow SDK token decoded : ", jwtDecode(token));
} catch (err) {
_logger.log("error", "MAIN - rainbow SDK token decoded error : ", token);
}
await rainbowSDK.start(token).then(async (result2) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - (testStartWithToken) rainbow SDK started with token result 2: ", _logger.colors.green(result2)); //logger.colors.green(JSON.stringify(result)));
});
await rainbowSDK.stop();
}
async testTokenJwtDecode() {
//let token = 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb3VudFJlbmV3ZWQiOjAsIm1heFRva2VuUmVuZXciOjcsInVzZXIiOnsiaWQiOiI1YmJkYzMzNzJjZjQ5NmMwN2RkODkxMjEiLCJsb2dpbkVtYWlsIjoidmluY2VudDAwQHZiZS50ZXN0Lm9wZW5yYWluYm93Lm5ldCJ9LCJhcHAiOnsiaWQiOiIyNzAzM2IxMDAxYmQxMWU4ODQzZDZmMDAxMzRlNTE4OSIsIm5hbWUiOiJSYWluYm93IG9mZmljaWFsIFdlYiBhcHBsaWNhdGlvbiJ9LCJpYXQiOjE1NzU0NjIyOTMsImV4cCI6MTU3Njc1ODI5M30.MA71vA1SDjf-PqYtrBnpEsPai1G4LvVFHFqolsQ6Dv3NukRpbHusEgyICvtBt0t9vJ3iuzupN-ltbrj1feSBR7VnGUf2i0QNXWRCSbOgHugQAKyRZTKt9lKphaYtEEJMjHrl7k8XO6E7E1nFLFWIgJw8pNbKSmJ84rCP-wyH6kh5N7ev10XBaZsC0kdDSgFH8M2T72xgc4gtLua5BIK8Oj6qdbpHSODaLptI7ehYdbU-Mw8ECZ_VFj8Cs6lfbQWOYKgHojkoLHakDf_6oVA40YarJZunYEasuuHKL5qiZJHGkgXHBxBUBGJbbDXu_DOkTognKMPSkAXjfnLmbk0kxw';
//let token = 'sdfsqfsqfsdfsdfgdf';
let token = undefined;
//token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoiNWY3NWEwZGQxZGI5NDY0ZDY3ZTMyNDYzIiwibG9naW5FbWFpbCI6ImxkYXAuY29ubmVjdG9yLmFkbWluMUBjbWEudGVzdC5vcGVucmFpbmJvdy5jb20ifSwiYXBwIjp7ImlkIjoiMDczMGY2ZTBhMGUwMTFlYjhlNjE3YjhlMWVkZTcwYjEiLCJuYW1lIjoiTERBUCAgY29ubmVjdG9yIn0sIm9hdXRoIjp7InRva2VuSWQiOiItZW1zcXpIa3F2IiwidHlwZSI6ImFjY2Vzc190b2tlbiIsInNjb3BlIjoiYWxsIiwiZ3JhbnQiOiJpbXBsaWNpdCJ9LCJlbnZpcm9ubWVudCI6eyJlbnZpcm9ubWVudE5hbWUiOiJwcmVwcm9kdWN0aW9uIiwiZW52aXJvbm1lbnRBcGlVcmwiOiJodHRwczovL29wZW5yYWluYm93Lm5ldCJ9LCJpYXQiOjE2MjkxOTE1ODAsImV4cCI6MTYyOTE5MTg4MH0.p-GJWuIbJzb7eeY9Bi-4oq_t3PUxEr_E-0IrAad0LJbgXVprmIMiieBJamB4SXZhVSN2yqz68_I6yS7veFoLvcVU8coi4L_TebO8R5mnKB8Ocs66SqhjotggmXZNsWmaMNOGNCZRpaCJF9eHz04ux9BZTv7UJmfXpbg7xhce9GXDxT4OAoJYN7XYglymerueWZ8CArQ1Vtc_ahWdeOjp7dQYQ3DMKowmPO1_LdJTmcmAlwVZTG6RGZJNHckPyb4aGTesUYObJIyf_CHwZaIhyk-qcISCAPxzKG-x3qDZ_kCqzNGB3ojP9YkrBy1X5nTmDrt7UfV85gMaW5ew1AIFHQ";
//token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoiNWMzZGY5Mzc3NmYzNTE4OTc4YzFkMDhhIn0sImFwcCI6eyJpZCI6IjIzNWFjNjAwMDk4MzExZWNiN2I4NGQ2OTk4MjVkNmQzIiwibmFtZSI6InZiZXJkZXItb2F1dGgtYXBwIn0sIm9hdXRoIjp7InRva2VuSWQiOiJMU19qV1VvcmpKIiwicmVmcmVzaFRva2VuSWQiOiI2MTJlNjhjMThkZDU3MTc4NTdmZTU1ZjIiLCJ0eXBlIjoiYWNjZXNzX3Rva2VuIiwic2NvcGUiOiJhbGwiLCJncmFudCI6ImF1dGhvcml6YXRpb25fY29kZSJ9LCJlbnZpcm9ubWVudCI6eyJlbnZpcm9ubWVudE5hbWUiOiJwcmVwcm9kdWN0aW9uIiwiZW52aXJvbm1lbnRBcGlVcmwiOiJodHRwczovL29wZW5yYWluYm93Lm5ldCJ9LCJpYXQiOjE2MzA0MzE0MjUsImV4cCI6MTYzMDQzMTcyNX0.DeWye85KexHllKsMwvJMfnC5ajl_NBXLzzE7DHaDuisrN3g3WA27C3Z1Saa7cGAQGixI5zK1DZScJPQaCC6Bv-gR3MJAfuyidF_HA5pjp7oHV40Dt6791NaMCQQDHhlpzbabDWL0pw9gqrO55y4bgtJ07EXg4j-H34nue6SxKfupXqmgx3A_4IM_rIn_HMMpNgooFOv2ktQIPNmRkXL8nUwyiyNIeIhCWtO8KQ4j23zXdgPP30jfS14vSEpRS19dlbCZ3dcdckj42cV8lPm_XEspk-F_x5DcjwGhtfvjrCcqWMn8mQ6x50lcnk_gfqB6K8lIrwWPZXw5PKdruHB40g";
_logger.log("debug", "MAIN - (testTokenJwtDecode) rainbow SDK token : ", _logger.colors.green(token)); //logger.colors.green(JSON.stringify(result)));
token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb3VudFJlbmV3ZWQiOjAsIm1heFRva2VuUmVuZXciOjcsInVzZXIiOnsiaWQiOiI1NzMxZmU0Zjc4MjQwOTFiMzVmNWUyYjciLCJsb2dpbkVtYWlsIjoidmluY2VudC5iZXJkZXJAYWwtZW50ZXJwcmlzZS5jb20ifSwiZW52aXJvbm1lbnQiOnsiZW52aXJvbm1lbnROYW1lIjoib2ZmaWNpYWwiLCJlbnZpcm9ubWVudEFwaVVybCI6Imh0dHBzOi8vb3BlbnJhaW5ib3cuY29tIn0sImFwcCI6eyJpZCI6ImEyZjg5MDMwMDBmMDExZTg4NmQ5YjViYmQzMjYwNzkyIiwibmFtZSI6IlJhaW5ib3cgb2ZmaWNpYWwgV2ViIGFwcGxpY2F0aW9uIn0sInNhbWwiOnsibmFtZUlkIjoidmluY2VudC5iZXJkZXJAYWwtZW50ZXJwcmlzZS5jb20iLCJzZXNzaW9uSWR4IjoiXzZhZmM4Y2ZmLTg3OTEtNDZhNy1iZWEyLTAzODgwMGI4OGIwMCJ9LCJpYXQiOjE2MjkyMTEzMDQsImV4cCI6MTYzMDUwNzMwNH0.aP4LC9HX-QO1s9gf68-R08goe4472YQYEOErRc7_piaVRRPYchD6Fo3u3CXJNmwep5MJjnypuJKlttQ4mtMRHG5np3b_1peARj0qqMpePag4JiQZWV9ne9DwcwNRhxD8uTmYEDOezGH8hhpIvkqUfuHpR4ZW7Anff5SeVOHPWzwcJ5EUJQKQKKR3sEfEC_2PHd7fywEw0BDOxCIXFQjC1jG3_JbIgnIGOqTwOFdH9-ZaurDjj9mU2JL4l9GKPn_afi1YiBjoAm3Er7hM-x6XwHHdJBvl49SY-4p7uzhqFIFNnrZ-73Cihbo8RTyb0hnCdOB36p6HfiVytL6UwZHQCw";
_logger.log("debug", "MAIN - (testTokenJwtDecode) rainbow SDK token : ", _logger.colors.green(token)); //logger.colors.green(JSON.stringify(result)));
try {
let decodedToken = jwtDecode(token);
_logger.log("debug", "MAIN - (testTokenJwtDecode) token decodedToken : ", decodedToken);
_logger.log("debug", "MAIN - (testTokenJwtDecode) token full duration : ", msToTime((decodedToken.exp - decodedToken.iat) * 1000));
// 1 jours = 86400000, 1 heure = 3600000, 1 min = 60000, 1 seconde = 1000
let timToTest = 86400000 * 15 + 3600000 * 6 + 60000 * 24 + 1000 * 3;
_logger.log("debug", "MAIN - (testTokenJwtDecode) timToTest full duration : ", msToTime(timToTest));
/* await rainbowSDK._core._rest.getContactByToken(token).then(async (result2) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - (testStartWithToken) rainbow SDK started with token result 2: ",_logger.colors.green(result2)); //logger.colors.green(JSON.stringify(result)));
}); // */
} catch (err) {
_logger.log("error", "MAIN - (testTokenJwtDecode) token decoded error : ", token);
}
}
// */
async testStopAndStart() {
let result = await this.start();
_logger.log("debug", "MAIN - (testStopAndStart) rainbow SDK started first time : ", _logger.colors.green(result));
await rainbowSDK.stop();
let token = undefined;
_logger.log("debug", "MAIN - (testStopAndStart) rainbow SDK stopped.");
await rainbowSDK.start(token).then(async (result2) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - (testStopAndStart) rainbow SDK started second time : ", _logger.colors.green(result2)); //logger.colors.green(JSON.stringify(result)));
});
await rainbowSDK.stop();
}
async testsend429Appid() {
_logger.log("debug", "MAIN - (testsend429Appid) rainbow SDK stopped.");
let headers = rainbowSDK._core._rest.getLoginHeader();
headers["x-rainbow-client-id"] = "098b3333e3f254ddbce01e2311edb8dec";
await rainbowSDK._core._rest.http.get("/api/rainbow/authentication/v1.0/login", headers, undefined).then(
async (result) => {
_logger.log("debug", "MAIN - (testsend429Appid) rainbow get result : ", _logger.colors.green(result));
}
).catch(async error => {
_logger.log("error", "MAIN - (testsend429Appid) CATCH Error !!! : ", _logger.colors.green(error));
let res = await rainbowSDK.admin.getAllBotServices().then(() => {
_logger.log("debug", "MAIN - (testsend429Appid), getAllBotServices res : ", res);
}).catch((error2) => {
_logger.log("error", "MAIN - (testsend429Appid), getAllBotServices error2 : ", error2);
});
let connectionStatus = await rainbowSDK.getConnectionStatus().catch(err => {
return err;
});
_logger.log("debug", "MAIN - [testgetConnectionStatus ] :: connectionStatus : ", connectionStatus);
});
}
async testsendMultiHttpRequest() {
_logger.log("debug", "MAIN - (testsendMultiHttpRequest) .");
let headers = rainbowSDK._core._rest.getRequestHeader();
for (let i = 0; i < 102; i++) {
rainbowSDK._core._rest.http.get("/api/rainbow/enduser/v1.0/users/jids/209c7d9cf1fe4b818ae4004899cbd03c@openrainbow.com", headers, undefined).then(
async (result) => {
_logger.log("debug", "MAIN - (testsendMultiHttpRequest) rainbow get result : ", _logger.colors.green(result));
}
).catch(async error => {
_logger.log("error", "MAIN - (testsendMultiHttpRequest) CATCH Error !!! : ", _logger.colors.green(error));
let connectionStatus = await rainbowSDK.getConnectionStatus().catch(err => {
return err;
});
_logger.log("debug", "MAIN - [testsendMultiHttpRequest ] :: connectionStatus : ", connectionStatus);
});
}
}
async testGotRequest() {
/* import * as nock from 'nock'
let url = "/api/rainbow/enduser/v1.0/settings/apis";
// Mock API response
//nock("https://some.api").get(url).reply(200, { "data": {"stuff": "happened" }});
//notok nock("https://some.api").get(url).reply(500, { "code": 500, "error":"error", "data": {"stuff": "happened", "errorDetails":500, "errorDetailsCode": "error details code." }});
//notok nock("https://some.api").get(url).replyWithError({code: 'ETIMEDOUT', "errorDetails":500, "errorDetailsCode": "error details code."});
//nock("https://some.api").get(url).replyWithError({code: 'ETIMEDOUT'});
//notok nock("https://some.api").get(/.* /).delayConnection(500).replyWithError({code: 'ETIMEDOUT'});
//nock("https://some.api").get(url).delayConnection(500).replyWithError({code: 'ETIMEDOUT', "errorMessage":"ETIMEDOUT"});
//nock("https://some.api").get(url).delayConnection(500).replyWithError({code: 'ETIMEDOUT', "errorMessage":"ETIMEDOUT"});
//nock("https://some.api").get(url).delayConnection(500).replyWithError({code: 'ETIMEDOUT', "errorMessage":"ETIMEDOUT"});
//nock("https://some.api").get(url).delayConnection(500).reply(429,{code: 429, "errorMessage":'Too Many Requests (HAP429).\n'});
nock("https://some.api").get(url).delayConnection(500).reply(429,{code: 429, "errorMessage":'Too Many Requests (HAP429).\n'});
//nock("https://some.api").get(url).delayConnection(500).reply(429,{code: 429, "errorMessage":'Too Many Requests (HAP429).\n'});
//nock("https://some.api").get(url).delayConnection(500).reply(501,{code: 501, "errorMessage":'Internal Error Server 501.\n'});
nock("https://some.api").get(url).reply(200, { "data": {"stuff": "happened" }});
//notok nock("https://some.api").get(url).delayConnection(500).reply(200, {"code": 'ETIMEDOUT'});
_logger.log("info", "MAIN - (testGotRequest) - nock.activeMocks() : ", nock.activeMocks());
rainbowSDK._core._http.serverURL = "https://some.api:443";
await rainbowSDK._core._http.start() ;
let urlParamsTab: string[] = [];
urlParamsTab.push(url);
//addParamToUrl(urlParamsTab, "callerNumber", callerNumber );
url = urlParamsTab[0];
_logger.log("info", "MAIN - (testGotRequest) (getApisSettings) REST url : ", url);
let headers = rainbowSDK._core._rest.getRequestHeader();
let nbTryBeforeFailed:number = 0, timeBetweenRetry :number=1000;
let res = await rainbowSDK._core._http.get(url, headers, undefined,"", nbTryBeforeFailed, timeBetweenRetry).then((json) => {
_logger.log("info", "MAIN - (testGotRequest) (getApisSettings) successfull");
_logger.log("info", "MAIN - (testGotRequest) (getApisSettings) REST result : ", json);
return (json?.data);
}).catch(function (err) {
_logger.log("error", "MAIN - (testGotRequest) (getApisSettings) error");
_logger.log("error", "MAIN - (testGotRequest) (getApisSettings) error : ", err);
return (err);
});
_logger.log("info", "MAIN - (testGotRequest) - res : ", _logger.stripStringForLogs(res));
nock.cleanAll();
nock.restore();
// */
}
async testGetRequestOnServer() {
// To be use with the "serverweb" project started and listenning on port 8443.
let url = "/request";
_logger.log("info", "MAIN - (testGetRequestOnServer) - url : ", url);
let serverURLSaved = rainbowSDK._core._http.serverURL;
rainbowSDK._core._http.serverURL = "https://localhost:8443";
/*
await rainbowSDK._core._http.start() ;
let urlParamsTab: string[] = [];
urlParamsTab.push(url);
// addParamToUrl(urlParamsTab, "callerNumber", callerNumber );
url = urlParamsTab[0];
// */
_logger.log("info", "MAIN - (testGetRequestOnServer) (get) REST url : ", url);
let headers = rainbowSDK._core._rest.getRequestHeader();
let param = {"code":403,"message":"Forbidden"};
let nbTryBeforeFailed:number = 0, timeBetweenRetry :number=1000;
let res = await rainbowSDK._core._http.get(url, headers, param, 'application/json', nbTryBeforeFailed, timeBetweenRetry).then((json) => {
_logger.log("info", "MAIN - (testGetRequestOnServer) (get) successfull");
_logger.log("info", "MAIN - (testGetRequestOnServer) (get) REST result : ", json);
//return (json?.data);
rainbowSDK._core._http.serverURL = serverURLSaved;
}).catch(function (err) {
_logger.log("error", "MAIN - (testGetRequestOnServer) (get) error");
_logger.log("error", "MAIN - (testGetRequestOnServer) (get) error : ", err);
//return (err);
rainbowSDK._core._http.serverURL = serverURLSaved;
});
_logger.log("info", "MAIN - (testGetRequestOnServer) - res : ", _logger.stripStringForLogs(res));
}
async testUserAppDataPath() {
let userAPPDATAPath = process.env.APPDATA || (process.platform == 'darwin' ? process.env.HOME + '/Library/Preferences' : process.env.HOME + "/.local/share") ;
_logger.log("debug", "MAIN - (testUserAppDataPath) - userAPPDATAPath : ", userAPPDATAPath, ", process.env.HOME : ", process.env.HOME);
function loadConfigFromIniFile(userHomePath) {
let config :any = {};
try {
let readResult = fs.readFileSync(userHomePath + '/config.ini', 'utf-8');
config = ini.parse(readResult);
_logger.log("debug", "MAIN - (testUserAppDataPath) loadConfigFromIniFile - config : ", config, ", config.XMPP.xmppRessourceName : ", config?.XMPP?.xmppRessourceName);
} catch (err) {
_logger.log("warn", "MAIN - (testUserAppDataPath) loadConfigFromIniFile - err : ", err);
if (err.code === 'ENOENT') {
let generatedRandomId = xmppUtils.generateRandomID();
config["xmppRessourceName"] = generatedRandomId;
fs.writeFileSync(userHomePath + '/config.ini', ini.stringify(config, {section: 'XMPP'}));
}
}
return config;
}
try {
if (userAPPDATAPath) {
userAPPDATAPath += "/Rainbow/RainbowNodeSdkDir";
_logger.log("debug", "MAIN - (testUserAppDataPath) - userAPPDATAPath : ", userAPPDATAPath);
if (!fs.existsSync(userAPPDATAPath)) {
_logger.log("debug", "MAIN - (testUserAppDataPath) - does not exists and can not be created, so can do the treatment.");
if (fs.mkdirSync(userAPPDATAPath, {recursive: true})) {
_logger.log("debug", "MAIN - (testUserAppDataPath) - mkdirSync succeed, so can do the treatment.");
loadConfigFromIniFile(userAPPDATAPath);
} else {
_logger.log("error", "MAIN - (testUserAppDataPath) - mkdirSync failed and can not be created, so can do the treatment.");
}
} else {
_logger.log("debug", "MAIN - (testUserAppDataPath) - exists, so can do the treatment.");
loadConfigFromIniFile(userAPPDATAPath);
}
} else {
}
} catch (err) {
if (err.code !== 'EEXIST') throw err
}
}
testgetStoreStanzaValue() {
let storeStanzaValue = getStoreStanzaValue(true, undefined, undefined);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, undefined, undefined) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, undefined, DataStoreType.NoStore);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, undefined, DataStoreType.NoStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, undefined, DataStoreType.NoPermanentStore);
if (storeStanzaValue != DataStoreType.NoPermanentStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, undefined, DataStoreType.NoPermanentStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, undefined, DataStoreType.StoreTwinSide);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, undefined, DataStoreType.StoreTwinSide) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, undefined, DataStoreType.UsestoreMessagesField);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, undefined, DataStoreType.UsestoreMessagesField) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.NoStore, undefined);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.NoStore, undefined) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.NoStore, DataStoreType.NoStore);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.NoStore, DataStoreType.NoStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.NoStore, DataStoreType.NoPermanentStore);
if (storeStanzaValue != DataStoreType.NoPermanentStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.NoStore, DataStoreType.NoPermanentStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.NoStore, DataStoreType.StoreTwinSide);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.NoStore, DataStoreType.StoreTwinSide) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.NoStore, DataStoreType.UsestoreMessagesField);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.NoStore, DataStoreType.UsestoreMessagesField) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.NoPermanentStore, undefined);
if (storeStanzaValue != DataStoreType.NoPermanentStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.NoPermanentStore, undefined) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.NoPermanentStore, DataStoreType.NoStore);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.NoPermanentStore, DataStoreType.NoStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.NoPermanentStore, DataStoreType.NoPermanentStore);
if (storeStanzaValue != DataStoreType.NoPermanentStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.NoPermanentStore, DataStoreType.NoPermanentStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.NoPermanentStore, DataStoreType.StoreTwinSide);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.NoPermanentStore, DataStoreType.StoreTwinSide) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.NoPermanentStore, DataStoreType.UsestoreMessagesField);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.NoPermanentStore, DataStoreType.UsestoreMessagesField) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.StoreTwinSide, undefined);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.StoreTwinSide, undefined) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.StoreTwinSide, DataStoreType.NoStore);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.StoreTwinSide, DataStoreType.NoStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.StoreTwinSide, DataStoreType.NoPermanentStore);
if (storeStanzaValue != DataStoreType.NoPermanentStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.StoreTwinSide, DataStoreType.NoPermanentStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.StoreTwinSide, DataStoreType.StoreTwinSide);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.StoreTwinSide, DataStoreType.StoreTwinSide) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.StoreTwinSide, DataStoreType.UsestoreMessagesField);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.StoreTwinSide, DataStoreType.UsestoreMessagesField) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.UsestoreMessagesField, undefined);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.UsestoreMessagesField, undefined) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.UsestoreMessagesField, DataStoreType.NoStore);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.UsestoreMessagesField, DataStoreType.NoStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.UsestoreMessagesField, DataStoreType.NoPermanentStore);
if (storeStanzaValue != DataStoreType.NoPermanentStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.UsestoreMessagesField, DataStoreType.NoPermanentStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.UsestoreMessagesField, DataStoreType.StoreTwinSide);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.UsestoreMessagesField, DataStoreType.StoreTwinSide) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(true, DataStoreType.UsestoreMessagesField, DataStoreType.UsestoreMessagesField);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, DataStoreType.UsestoreMessagesField, DataStoreType.UsestoreMessagesField) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, undefined, undefined);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(true, undefined, undefined) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, undefined, DataStoreType.NoStore);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, undefined, DataStoreType.NoStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, undefined, DataStoreType.NoPermanentStore);
if (storeStanzaValue != DataStoreType.NoPermanentStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, undefined, DataStoreType.NoPermanentStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, undefined, DataStoreType.StoreTwinSide);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, undefined, DataStoreType.StoreTwinSide) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, undefined, DataStoreType.UsestoreMessagesField);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, undefined, DataStoreType.UsestoreMessagesField) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.NoStore, undefined);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.NoStore, undefined) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.NoStore, DataStoreType.NoStore);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.NoStore, DataStoreType.NoStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.NoStore, DataStoreType.NoPermanentStore);
if (storeStanzaValue != DataStoreType.NoPermanentStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.NoStore, DataStoreType.NoPermanentStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.NoStore, DataStoreType.StoreTwinSide);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.NoStore, DataStoreType.StoreTwinSide) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.NoStore, DataStoreType.UsestoreMessagesField);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.NoStore, DataStoreType.UsestoreMessagesField) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.NoPermanentStore, undefined);
if (storeStanzaValue != DataStoreType.NoPermanentStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.NoPermanentStore, undefined) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.NoPermanentStore, DataStoreType.NoStore);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.NoPermanentStore, DataStoreType.NoStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.NoPermanentStore, DataStoreType.NoPermanentStore);
if (storeStanzaValue != DataStoreType.NoPermanentStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.NoPermanentStore, DataStoreType.NoPermanentStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.NoPermanentStore, DataStoreType.StoreTwinSide);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.NoPermanentStore, DataStoreType.StoreTwinSide) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.NoPermanentStore, DataStoreType.UsestoreMessagesField);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.NoPermanentStore, DataStoreType.UsestoreMessagesField) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.StoreTwinSide, undefined);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.StoreTwinSide, undefined) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.StoreTwinSide, DataStoreType.NoStore);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.StoreTwinSide, DataStoreType.NoStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.StoreTwinSide, DataStoreType.NoPermanentStore);
if (storeStanzaValue != DataStoreType.NoPermanentStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.StoreTwinSide, DataStoreType.NoPermanentStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.StoreTwinSide, DataStoreType.StoreTwinSide);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.StoreTwinSide, DataStoreType.StoreTwinSide) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.StoreTwinSide, DataStoreType.UsestoreMessagesField);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.StoreTwinSide, DataStoreType.UsestoreMessagesField) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.UsestoreMessagesField, undefined);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.UsestoreMessagesField, undefined) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.UsestoreMessagesField, DataStoreType.NoStore);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.UsestoreMessagesField, DataStoreType.NoStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.UsestoreMessagesField, DataStoreType.NoPermanentStore);
if (storeStanzaValue != DataStoreType.NoPermanentStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.UsestoreMessagesField, DataStoreType.NoPermanentStore) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.UsestoreMessagesField, DataStoreType.StoreTwinSide);
if (storeStanzaValue != DataStoreType.StoreTwinSide) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.UsestoreMessagesField, DataStoreType.StoreTwinSide) wrong value!");
}
storeStanzaValue = getStoreStanzaValue(false, DataStoreType.UsestoreMessagesField, DataStoreType.UsestoreMessagesField);
if (storeStanzaValue != DataStoreType.NoStore) {
_logger.log("error", "MAIN - (testgetStoreStanzaValue) - storeStanzaValue : " + storeStanzaValue + ", getStoreStanzaValue(false, DataStoreType.UsestoreMessagesField, DataStoreType.UsestoreMessagesField) wrong value!");
}
}
async test5Start() {
_logger.log("debug", "MAIN - (test5Start) __ begin __.");
let options1: any = {};
let options2: any = {};
let options3: any = {};
let options4: any = {};
Object.assign(options1, options);
options1.logs.customLabel = options1.credentials.login + "_1";
options1.logs.file.customFileName = "R-SDK-Node-" + options1.credentials.login + "_1";
let rainbowSDK1 = new RainbowSDK(options1);
rainbowSDK1.events.on("rainbow_onconnectionerror", () => {
// do something when the SDK has been started
_logger.log("debug", "MAIN - (rainbow_onconnectionerror) - rainbow failed to start.");
});
rainbowSDK1.events.on("rainbow_onerror", (data) => {
_logger.log("debug", "MAIN - (rainbow_onerror) - rainbow event received. data", data, " destroy and recreate the SDK.");
rainbowSDK1 = undefined;
});
Object.assign(options2, options);
options2.logs.customLabel = options2.credentials.login + "_2";
options2.logs.file.customFileName = "R-SDK-Node-" + options2.credentials.login + "_2";
let rainbowSDK2 = new RainbowSDK(options2);
rainbowSDK2.events.on("rainbow_onconnectionerror", () => {
// do something when the SDK has been started
_logger.log("debug", "MAIN - (rainbow_onconnectionerror) - rainbow failed to start.");
});
rainbowSDK2.events.on("rainbow_onerror", (data) => {
_logger.log("debug", "MAIN - (rainbow_onerror) - rainbow event received. data", data, " destroy and recreate the SDK.");
rainbowSDK2 = undefined;
});
Object.assign(options3, options);
options3.logs.customLabel = options3.credentials.login + "_3";
options3.logs.file.customFileName = "R-SDK-Node-" + options3.credentials.login + "_3";
let rainbowSDK3 = new RainbowSDK(options3);
rainbowSDK3.events.on("rainbow_onconnectionerror", () => {
// do something when the SDK has been started
_logger.log("debug", "MAIN - (rainbow_onconnectionerror) - rainbow failed to start.");
});
rainbowSDK3.events.on("rainbow_onerror", (data) => {
_logger.log("debug", "MAIN - (rainbow_onerror) - rainbow event received. data", data, " destroy and recreate the SDK.");
rainbowSDK3 = undefined;
});
Object.assign(options4, options);
options4.logs.customLabel = options4.credentials.login + "_4";
options4.logs.file.customFileName = "R-SDK-Node-" + options4.credentials.login + "_4";
let rainbowSDK4 = new RainbowSDK(options4);
rainbowSDK4.events.on("rainbow_onconnectionerror", () => {
// do something when the SDK has been started
_logger.log("debug", "MAIN - (rainbow_onconnectionerror) - rainbow failed to start.");
});
rainbowSDK4.events.on("rainbow_onerror", (data) => {
_logger.log("debug", "MAIN - (rainbow_onerror) - rainbow event received. data", data, " destroy and recreate the SDK.");
rainbowSDK4 = undefined;
});
// */
await rainbowSDK.start(token).then(async (result2) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - (test5Start) rainbow SDK started : ", _logger.colors.green(result2)); //logger.colors.green(JSON.stringify(result)));
});
await rainbowSDK1.start(token).then(async (result2) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - (test5Start) rainbow SDK 1 started : ", _logger.colors.green(result2)); //logger.colors.green(JSON.stringify(result)));
});
// */
await rainbowSDK2.start(token).then(async (result2) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - (test5Start) rainbow SDK 2 started : ", _logger.colors.green(result2)); //logger.colors.green(JSON.stringify(result)));
});
await rainbowSDK3.start(token).then(async (result2) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - (test5Start) rainbow SDK 3 started : ", _logger.colors.green(result2)); //logger.colors.green(JSON.stringify(result)));
});
await rainbowSDK4.start(token).then(async (result2) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - (test5Start) rainbow SDK 4 started : ", _logger.colors.green(result2)); //logger.colors.green(JSON.stringify(result)));
});
// */
// await rainbowSDK.stop();
}
startWSOnly() {
rainbowSDK.start(token).then(async (result: any) => {
//Promise.resolve({}).then(async(result: any) => {
try {
// Do something when the SDK is started
connectedUser = result.loggedInUser;
token = result.token;
_logger.log("debug", "MAIN - rainbow SDK started with result 1 : ", result); //logger.colors.green(JSON.stringify(result)));
console.log("MAIN - rainbow SDK started with result 1 : " + inspect(result, false, 4, true)); //logger.colors.green(JSON.stringify(result)));
_logger.log("debug", "MAIN - rainbow SDK started with credentials result 1 : ", _logger.colors.green(connectedUser)); //logger.colors.green(JSON.stringify(result)));
//let startDuration = Math.round(new Date() - startDate);
let startDuration = result.startDuration;
// that.stats.push({ service: "telephonyService", startDuration: startDuration });
_logger.log("info", "MAIN === STARTED (" + startDuration + " ms) ===");
console.log("MAIN === STARTED (" + startDuration + " ms) ===");
rainbowSDK.stop().then(() => {
_logger.log("debug", "MAIN - rainbow SDK startedand stopped, now we start WS Only : token : ", token, ", connectedUser : ", JSON.stringify(connectedUser)); //logger.colors.green(JSON.stringify(result)));
rainbowSDK.startWSOnly(token, connectedUser).then((result) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - rainbow SDK started WS Only result : ", JSON.stringify(result)); //logger.colors.green(JSON.stringify(result)));
})
;
}); // */
} catch (err) {
console.log("MAIN - Error during starting : ", inspect(err));
}
});
}
startMockXMPP() {
let options1: any = {};
Object.assign(options1, options);
options1.logs.customLabel = options1.credentials.login + "_1";
options1.logs.file.customFileName = "R-SDK-Node-" + options1.credentials.login + "_1";
let rainbowSDK1 = new RainbowSDK(options1);
// XMPP WebSocket Server
_logger.log("debug", "MAIN - (startMockXMPP) going to MockServer : " + "wss://openrainbow.net:443/websocket");
class XmppWebSocket extends WS {
constructor(address, protocols) {
super(address, protocols);
}
}
// @ts-ignore
global.WebSocket = XmppWebSocket;
let isAuthenticated = false;
let resource = "";
let alice = {loggedInUser: {jid_im: "98091bcde14d4eadac763d9cc0851719@openrainbow.net"}};
//alice.loggedInUser.jid_im
const mockServer = new MockServer("wss://openrainbow.net:443/websocket");
mockServer.on("connection", (socket) => {
_logger.log("debug", "MAIN - (startMockXMPP) (on) MockServer.connection : " + "socket : " + socket);
socket.on('message', (message: string) => {
_logger.log("debug", "MAIN - (startMockXMPP) (on) we have intercepted the message and can assert on it " + "socket : " + socket);
// t.is(data, 'test message from app', 'we have intercepted the message and can assert on it');
//socket.send('test message from mock server');
if (message.startsWith("");
if (!isAuthenticated) {
socket.send("PLAINDIGEST-MD5SCRAM-SHA-1" +
"mechanism>");
} else {
socket.send("");
}
}
if (message.startsWith("cj1kNDFkOGNkOThmMDBiMjA0ZTk4" +
"MDA5OThlY2Y4NDI3ZS93UzdkNlNDYmsyUXRFM0VUd251V0E9PSxzPU52NERxZ1dmb09ESG5YUlJCeWpE" +
"REE9PSxpPTQwOTY=");
socket.send("");
}
if (message.startsWith("dj1KM3d3dTc2WWU4THVEM1FOWVNWZj" +
"dTNUlHS3c9");
isAuthenticated = true;
}
if (message.startsWith(" -1) {
let resource = message.match(/(.*)<\/resource>/);
socket.send("" + alice.loggedInUser.jid_im + "/" + resource[1] + "");
} else if (message.indexOf("session") > -1) {
socket.send("");
} else if (message.indexOf("carbon") > -1) {
socket.send("")
}
}
if (message.startsWith("5");
}
});
// */
});
/*
// read XMPP flow
const data = readFileSync('./config.json');
console.log(JSON.parse(String(data)));
// */
mockServer.on("message", message => {
_logger.log("debug", "MAIN - (startMockXMPP) (on) message : ", message);
});
rainbowSDK1.events.on("rainbow_onconnectionerror", () => {
// do something when the SDK has been started
_logger.log("debug", "MAIN - (rainbow_onconnectionerror) - rainbow failed to start.");
});
rainbowSDK1.events.on("rainbow_onerror", (data) => {
_logger.log("debug", "MAIN - (rainbow_onerror) - rainbow event received. data", data, " destroy and recreate the SDK.");
rainbowSDK1 = undefined;
});
const path = './xmpp.txt';
writeFileSync(path, "", "utf8");
rainbowSDK1.events.on("rainbow_onxmmpeventreceived", (data) => {
_logger.log("debug", "MAIN - (rainbow_onxmmpeventreceived) - rainbow failed to start.");
try {
appendFileSync(path, "in:" + data + "\n");
console.log('Data successfully saved to disk');
} catch (error) {
console.log('An error has occurred ', error);
}
});
rainbowSDK1.events.on("rainbow_onxmmprequestsent", (data) => {
_logger.log("debug", "MAIN - (rainbow_onxmmprequestsent) - rainbow failed to start.");
try {
appendFileSync(path, "out:" + data + "\n");
console.log('Data successfully saved to disk');
} catch (error) {
console.log('An error has occurred ', error);
}
});
rainbowSDK1.start(token).then(async (result: any) => {
//Promise.resolve({}).then(async(result: any) => {
try {
// Do something when the SDK is started
connectedUser = result.loggedInUser;
token = result.token;
_logger.log("debug", "MAIN - rainbow SDK started with result 1 : ", result); //logger.colors.green(JSON.stringify(result)));
console.log("MAIN - rainbow SDK started with result 1 : ", inspect(result)); //logger.colors.green(JSON.stringify(result)));
_logger.log("debug", "MAIN - rainbow SDK started with credentials result 1 : ", _logger.colors.green(connectedUser)); //logger.colors.green(JSON.stringify(result)));
//let startDuration = Math.round(new Date() - startDate);
let startDuration = result.startDuration;
// that.stats.push({ service: "telephonyService", startDuration: startDuration });
_logger.log("info", "MAIN === STARTED (" + startDuration + " ms) ===");
console.log("MAIN === STARTED (" + startDuration + " ms) ===");
} catch (err) {
console.log("MAIN - Error during starting : ", inspect(err));
}
}).catch((err) => {
console.log("MAIN - Error during starting : ", inspect(err));
}); // */
}
testsetCredentialPassword() {
rainbowSDK.setCredentialPassword("Password_123");
}
start() {
rainbowSDK.start(token).then(async (result: any) => {
//Promise.resolve({}).then(async(result: any) => {
try {
// Do something when the SDK is started
connectedUser = result.loggedInUser;
token = result.token;
_logger.log("info", "MAIN - rainbow SDK started with result 1 : ", result); //logger.colors.green(JSON.stringify(result)));
console.log("MAIN - rainbow SDK started with result 1 : ", inspect(result)); //logger.colors.green(JSON.stringify(result)));
_logger.log("info", "MAIN - rainbow SDK started with credentials result 1 : ", _logger.colors.green(connectedUser)); //logger.colors.green(JSON.stringify(result)));
/*
let companyInfo = await rainbowSDK.contacts.getCompanyInfos().catch((err) => {
_logger.log("warn", "MAIN - failed to retrieve company infos :" , err);
});
_logger.log("debug", "MAIN - company infos :" , companyInfo);
// */
/*
await rainbowSDK.stop().then((result)=>{
_logger.log("debug", "MAIN - rainbow SDK stop : ", result); //logger.colors.green(JSON.stringify(result)));
});
await rainbowSDK.start(token).then(async(result2) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - rainbow SDK started result 2: ",_logger.colors.green(result2)); //logger.colors.green(JSON.stringify(result)));
await rainbowSDK.stop().then((result)=>{
_logger.log("debug", "MAIN - rainbow SDK stop : ", result); //logger.colors.green(JSON.stringify(result)));
});
await rainbowSDK.start(token).then(async (result3) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - rainbow SDK started result 3 : ",_logger.colors.green(result3)); //logger.colors.green(JSON.stringify(result)));
await rainbowSDK.stop().then((result)=>{
_logger.log("debug", "MAIN - rainbow SDK stop : ", result); //logger.colors.green(JSON.stringify(result)));
});
await rainbowSDK.start(token).then(async (result4) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - rainbow SDK started result 4 : ",_logger.colors.green(result4)); //logger.colors.green(JSON.stringify(result)));
await rainbowSDK.stop().then((result)=>{
_logger.log("debug", "MAIN - rainbow SDK stop : ", result); //logger.colors.green(JSON.stringify(result)));
});
await rainbowSDK.start(token).then(async (result5) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - rainbow SDK started result 5 : ",_logger.colors.green(result5)); //logger.colors.green(JSON.stringify(result)));
await rainbowSDK.stop().then((result)=>{
_logger.log("debug", "MAIN - rainbow SDK stop : ", result); //logger.colors.green(JSON.stringify(result)));
});
await rainbowSDK.start(token).then(async (result6) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - rainbow SDK started result 6 : ",_logger.colors.green(result6)); //logger.colors.green(JSON.stringify(result)));
await rainbowSDK.stop().then((result)=>{
_logger.log("debug", "MAIN - rainbow SDK stop : ", result); //logger.colors.green(JSON.stringify(result)));
});
await rainbowSDK.start(token).then(async (result7) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - rainbow SDK started result 7 : ",_logger.colors.green(result7)); //logger.colors.green(JSON.stringify(result)));
await rainbowSDK.stop().then((result)=>{
_logger.log("debug", "MAIN - rainbow SDK stop : ", result); //logger.colors.green(JSON.stringify(result)));
});
await rainbowSDK.start(token).then(async (result8) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - rainbow SDK started result 8 : ",_logger.colors.green(result8)); //logger.colors.green(JSON.stringify(result)));
await rainbowSDK.stop().then((result)=>{
_logger.log("debug", "MAIN - rainbow SDK stop : ", result); //logger.colors.green(JSON.stringify(result)));
});
await rainbowSDK.start(token).then(async (result9) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - rainbow SDK started result 9 : ",_logger.colors.green(result9)); //logger.colors.green(JSON.stringify(result)));
await rainbowSDK.stop().then((result)=>{
_logger.log("debug", "MAIN - rainbow SDK stop : ", result); //logger.colors.green(JSON.stringify(result)));
});
await rainbowSDK.start(token).then(async (result10) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - rainbow SDK started result 10 : ",_logger.colors.green(result10)); //logger.colors.green(JSON.stringify(result)));
await rainbowSDK.stop().then((result)=>{
_logger.log("debug", "MAIN - rainbow SDK stop : ", result); //logger.colors.green(JSON.stringify(result)));
});
await rainbowSDK.start(token).then(async (result11) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - rainbow SDK started result 11 : ",_logger.colors.green(result11)); //logger.colors.green(JSON.stringify(result)));
await rainbowSDK.stop().then((result)=>{
_logger.log("debug", "MAIN - rainbow SDK stop : ", result); //logger.colors.green(JSON.stringify(result)));
});
await rainbowSDK.start(token).then(async (result12) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - rainbow SDK started result 12 : ",_logger.colors.green(result12)); //logger.colors.green(JSON.stringify(result)));
});
});
});
});
});
});
});
});
});
});
});
// */
//logger.log("debug", "MAIN - rainbow SDK started result : ", JSON.stringify(result)); //logger.colors.green(JSON.stringify(result)));
/*
let list = rainbowSDK.contacts.getAll();
if (list) {
list.forEach(function (contact) {
_logger.log("debug", "MAIN - [start ] :: contact : ", contact);
});
} else {
_logger.log("debug", "MAIN - [start ] :: contacts list empty");
}
// */
/*let roster = await rainbowSDK.contacts.getRosters();
_logger.log("debug", "MAIN - getRosters - roster : ", roster);
*/
class Dog {
private name: any;
constructor(name) {
this.name = name;
}
toString() {
return "vvv" + this.name;
}
}
/*Dog.prototype.toString = function dogToString() {
return 'vvv' + this.name;
}; */
let dog1 = new Dog("Gabby");
_logger.log("debug", "MAIN - dog1", dog1);
//let startDuration = Math.round(new Date() - startDate);
let startDuration = result.startDuration;
// that.stats.push({ service: "telephonyService", startDuration: startDuration });
_logger.log("info", "MAIN === STARTED (" + startDuration + " ms) ===");
console.log("MAIN === STARTED (" + startDuration + " ms) ===");
/*
let nbc = 1;
for (let i = 0 ; i < 8000 ; i++) {
console.log("MAIN iter : ", i , ", nbc : ", nbc);
nbc = nbc * 3;
} // */
// process.exit(1);
/*
await rainbowSDK2.start();
await rainbowSDK3.start();
await rainbowSDK4.start();
await rainbowSDK5.start();
//await rainbowSDK6.start();
// */
// rainbowSDK.stop().then(() => { process.exit(0); }); // testCreate50BubblesAndArchiveThem()
//commandLineInteraction();
/* while (true) {
readline.question("Command>", cmd => {
//console.log(`run ${cmd}!`);
_logger.log("debug", "MAIN - run : ", cmd); //logger.colors.green(JSON.stringify(result)));
try {
if (cmd === "by") {
process.exit(0);
}
eval(cmd);
} catch (e) {
_logger.log("debug", "MAIN - CATCH Error : ", e); //logger.colors.green(JSON.stringify(result)));
}
readline.close();
});
} // */
/*
setInterval(()=> {
//let bubbles = rainbowSDK.bubbles.getAllActiveBubbles();
let bubbles = rainbowSDK.bubbles.getAll();
let bubblesCount = bubbles.length;
//logger.log("debug", "MAIN - Bubbles count = ", bubblesCount, " : ", bubbles);
let conversationBubblePromises=[];
let bubblesWithLastModificationDate=[];
if(bubblesCount>0) {
let bubblesInfos = "";
for (let bubble of bubbles) {
bubblesInfos += "\n{ id : " + bubble.id + ", name : " + bubble.name + " },";
if (bubble.id == "5da6d969e6ca5a023da44edd") {
_logger.log("debug", "MAIN - Bubble 5da6d969e6ca5a023da44edd : ", bubble);
}
}
_logger.log("debug", "MAIN - Bubbles count = ", bubblesCount, " bubblesInfos : ", bubblesInfos);
}
}, 20000);
// */
// expected output: "Gabby"
//await testSendMessageToJidOfMySelf();
// await testgetAllUsers();
//testgetContactByLoginEmail();
//testUploadFileToConversationByPath();
//testmakeCallByPhoneNumber();
//testmakeCallByPhoneNumberProd();
//testgetServerFavorites();
//testgetContactInfos();
//testupdateContactInfos();
//testaddToContactsList();
//testjoinContacts_AddContactToRoster();
//testUploadFileToBubble();
//testDeleteServerConversation();
//testsendMessageToConversation_html();
//testSendMessageToJid();
//testUploadFileToConversation();
//testRetrieveOneFileDescriptor();
//testSetBubbleCustomData();
//testDeleteAllCallLogs();
//testmarkAllCallsLogsAsRead();
//testDeleteCallLogsForContact();
//testmarkCallLogAsRead();
//testDeleteOneCallLog();
//rainbowSDK.stop();
// testremoveAllMessages();
//testsendCorrectedChatMessageForBubbleInExistingConversation();
//testsendCorrectedChatMessageForBubble();
//testsendCorrectedChatMessage();
// testBubblesArchived();
// testgetContactByLoginEmail_UnknownUser();
//testsendMessageToConversation();
// testCreateBubbles();
//testChannelupdateChannelDescription();
//downloadFile();
//testChannelDeleteMessage();
//testPublishChannel();
//testReconnection();
//testChannelImage();
//testcreateChannel();
//testChannelDeleteMessage();
//rainbowSDK.stop();
//process.exit(0);
/* rainbowSDK.contacts.getContactByLoginEmail(physician.loginEmail).then(contact => {
if (contact) {
physician.name = contact.title + " " + contact.firstname + " " + contact.lastname
physician.contact = contact;
rainbowSDK.bubbles.createBubble(physician.appointmentRoom, physician.appointmentRoom).then(function (bubble) {
rainbowSDK.bubbles.inviteContactToBubble(contact, bubble, false, false).then(function (updatedBubble) {
rainbowSDK.contacts.getContactByLoginEmail(botappointment).then(contactbot => {
rainbowSDK.bubbles.inviteContactToBubble(contactbot, bubble, false, false).then(function (updatedBubble) {
setTimeout(() => { rainbowSDK.bubbles.promoteContactInBubble(contactbot, bubble).then(function (updatedBubble) {
rainbowSDK.conversations.getBubbleConversation/*openConversationForBubble // */
/*(updatedBubble).then(conversation => {
_logger.log("debug", "MAIN - [start ] :: getBubbleConversation request ok");
});
})} , 2000);
});
});
});
});
}
}); // */
// let utc = new Date().toJSON().replace(/-/g, '/');
/*
rainbowSDK.telephony.makeCallByPhoneNumber("23026").then((data)=>{
_logger.log("debug", "MAIN - [makeCallByPhoneNumber] ", data);
}).catch((error) => {
_logger.log("debug", "MAIN - [makeCallByPhoneNumber] error ", error);
});
setTimeout(() => {
calls.forEach((c) => {
rainbowSDK.telephony.releaseCall(c);
});
}, 5000);
// */
// */
//rainbowSDK.im.sendMessageToJid("test sample node : ° ✈ :airplane::airplane: ) : " + utc , "6a2010ca31864df79b958113785492ae@vberder-all-in-one-dev-1.opentouch.cloud", "fr", "", "im");
/* rainbowSDK.admin.getAllCompanies().then((restresult) => {
console.log("getAllCompanies companies", restresult);
}); //*/
/* rainbowSDK.im.sendMessageToJid("😔😎😜😋👀😁😁🐣🐦🐷🐴🐮🦋🐗🙊🐧🐔🐻💿⏱⏱🎞🖨📻🇧🇴🇦🇱🇧🇼✡💔🚖🚗🚘🚜🛫🚔🚲🛫🛬\ntest sample node : ° ✈ :airplane::airplane: ) : " + utc + ", randow : " + Math.random() * 10,
"ca648c9e335f481d9b732dd99990b789@vberder-all-in-one-dev-1.opentouch.cloud", "fr", "", "im")
/* then((msg) => {
"6a2010ca31864df79b958113785492ae@vberder-all-in-one-dev-1.opentouch.cloud", "fr", "", "im"
)// */
/* .then((msg) => {
//console.log("message sent", msg);
_logger.log("debug", "MAIN - sendMessageToJid.then() message sent", msg);
}).catch((err) => {
console.log("Error while sending message ", err);
}); // */
/*
rainbowSDK.admin.getAllCompanies().then((restresult) => {
//console.log("getAllCompanies companies", restresult);
let companies = restresult.data;
for (let company of companies) {
//Object.keys(company).forEach( (companyKey) => {
if (company.name && (company.name.indexOf("WestworldGuest_") !== -1 || company.name.indexOf("WestworldHost_") !== -1)) { //
console.log("WestworldXXXXX_ found : ", company);
rainbowSDK.admin.removeCompany(company).then((data) => {
console.log("deleteCompany data", data);
//process.exit(-1);
}).catch((err) => {
if (err.code === 403) {
let strToFind = "still linked to user(s) : ";
let indexOf = err.details.indexOf(strToFind);
let userstoDelete = err.details.substring(indexOf + strToFind.length, err.details.length - 1);
//console.log ('delete user', strToFind, userstoDelete);
let usersIdTab = userstoDelete.split(',');
let removeUsers = [];
usersIdTab.forEach((id) => {
console.log('delete user', id);
removeUsers.push(rainbowSDK.admin.deleteUser(id));
});
Promise.all(removeUsers).then(
() => {
rainbowSDK.admin.removeCompany(company).then((data) => {
console.log("deleteCompany data", data);
//process.exit(-1);
}).catch((err2) => {
console.log("deleteCompany after user delete, error", err2);
}
);
});
} else {
console.log("error during deleting company : ", err);
}
//process.exit(-1);
}
);
//break;
}
//});
}
}).catch((err) => {
console.log("error during get all companies : ", err);
//process.exit(-1);
}); // */
/*rainbowSDK.admin.deleteCompany().then((companies) => {
console.log("deleteCompany companies", companies);
}); //*/
/* rainbowSDK.stop().then(() => {
rainbowSDK.start().then((result) => {
// Do something when the SDK is started
_logger.log("debug", "MAIN - rainbow SDK started result : ", JSON.stringify(result)); //logger.colors.green(JSON.stringify(result)));
let list = rainbowSDK.contacts.getAll();
if (list) {
list.forEach(function (contact) {
_logger.log("debug", "MAIN - [start ] :: contact : ", contact);
});
} else {
_logger.log("debug", "MAIN - [start ] :: contacts list empty");
}
})
;
}); // */
/*
rainbowSDK.stop().then((result)=>{
_logger.log("debug", "MAIN - rainbow SDK stop : ", result); //logger.colors.green(JSON.stringify(result)));
});
// */
/*.then(()=>{
rainbowSDK.start().then(()=>{
_logger.log("debug", "MAIN - rainbow SDK started step_2 result : ", JSON.stringify(result)); //logger.colors.green(JSON.stringify(result)));
let list = rainbowSDK.contacts.getAll();
if (list) {
list.forEach(function (contact) {
_logger.log("debug", "MAIN - [start step_2] :: contact : ", contact);
});
} else {
_logger.log("debug", "MAIN - [start step_2] :: contacts list empty");
}
rainbowSDK.stop();
});
}); // */
//# sourceMappingURL=index.js.map
} catch (err) {
console.log("MAIN - Error during starting : ", inspect(err));
}
}).catch((err) => {
console.log("MAIN - Error during starting : ", inspect(err));
}); // */
}
startstop() {
rainbowSDK.start(token).then(async (result: any) => {
try {
// Do something when the SDK is started
connectedUser = result.loggedInUser;
token = result.token;
_logger.log("info", "MAIN - rainbow SDK started with result 1 : ", result); //logger.colors.green(JSON.stringify(result)));
console.log("MAIN - rainbow SDK started with result 1 : ", inspect(result)); //logger.colors.green(JSON.stringify(result)));
_logger.log("info", "MAIN - rainbow SDK started with credentials result 1 : ", _logger.colors.green(connectedUser)); //logger.colors.green(JSON.stringify(result)));
//let startDuration = Math.round(new Date() - startDate);
let startDuration = result.startDuration;
_logger.log("info", "MAIN === STARTED (" + startDuration + " ms) ===");
console.log("MAIN === STARTED (" + startDuration + " ms) ===");
rainbowSDK.stop();
} catch (err) {
console.log("MAIN - Error during starting : ", inspect(err));
}
}).catch((err) => {
console.log("MAIN - Error during starting : ", inspect(err));
}); // */
}
stop() {
rainbowSDK.stop();
}
//endregion Start / Stop
//region Logguer
testDecrypt(strEncoded="f583b6c352801523822f4f02699005ad279ffbecbdf440c033ed2b3c39551ec558cbcb91fc97f9d604546db2cf90ee108eb5c3eecece0f8995d096d5cf0d16ed233c2076ba5bac6d232099139abf9348da5ffbbd3a86f367ed04f4c70cd513fb10f6034e4571ad791fe9a801429531122a5dfd8e46018b4a797449b529a7558d184698f1912468d2ac08e10428b9a5b0ef536db1146a2af8d559a4eaada3bd39398d6e87163dfaf045166e48bdb6bc1666f30f45682f47e1ce45435e0a7b0a5d410bc0ef6167618d6c240e01e6154e110b3f4a9c88d7b2b3503437bad2369f270b6dd53d00") {
_logger.log("info", "MAIN - str strEncoded : ", strEncoded);
let decrypted = _logger.decrypt(strEncoded);
_logger.log("info", "MAIN - str Decrypted : ", decrypted);
}
testTypes() {
let num : number = 12;
_logger.log("info", "MAIN - type of num : ", typeof num, ", num : ", num);
let str : string = "myStr";
_logger.log("info", "MAIN - type of str : ", typeof str, ", str : ", str);
let json : any = {"az":2,"by":"DD"} ;
_logger.log("info", "MAIN - type of json : ", typeof json, ", json : ", json);
let json2 : any = {"az":2,"by":"DD", "cx":undefined} ;
_logger.log("info", "MAIN - type of json : ", typeof json2, ", json : ", json2);
json2.cx=json2;
_logger.log("info", "MAIN - with circular type of json : ", typeof json2, ", json : ", json2);
_logger.log("info", "MAIN - with circular type of json : ", typeof json2, ", inspect json : ", inspect(json2));
let levelLogs : LevelLogs = new LevelLogs();
_logger.log("info", "MAIN - type of object : ", typeof levelLogs, ", levelLogs : ", levelLogs);
}
testJsonFunction() {
let json : any = {"az":2,"by":"DD"} ;
_logger.log("info", "MAIN - isPlainObject(json) : ", isPlainObject(json), ", json : ", json);
_logger.log("info", "MAIN - isInstanceOfClass(json) : ", isInstanceOfClass(json), ", json : ", json);
_logger.log("info", "MAIN - isJsonObject(json) : ", isJsonObject(json), ", json : ", json);
let json2 : any = {"az":2,"by":"DD", "cx":undefined} ;
_logger.log("info", "MAIN - isPlainObject(json2) : ", isPlainObject(json2), ", json2 : ", json2);
_logger.log("info", "MAIN - isInstanceOfClass(json2) : ", isInstanceOfClass(json2), ", json2 : ", json2);
_logger.log("info", "MAIN - isJsonObject(json2) : ", isJsonObject(json2), ", json2 : ", json2);
json2.cx=json2;
_logger.log("info", "MAIN - with circular isPlainObject(json2) : ", isPlainObject(json2), ", json2 : ", json2);
_logger.log("info", "MAIN - with circular isInstanceOfClass(json2) : ", isInstanceOfClass(json2), ", json2 : ", json2);
_logger.log("info", "MAIN - with circular isJsonObject(json2) : ", isJsonObject(json2), ", json2 : ", json2);
//_logger.log("info", "MAIN - with circular json2 : ", typeof json2, ", inspect json : ", inspect(json2));
let levelLogs : LevelLogs = new LevelLogs();
_logger.log("info", "MAIN - isPlainObject(levelLogs) : ", isPlainObject(levelLogs), ", levelLogs : ", levelLogs);
_logger.log("info", "MAIN - isInstanceOfClass(levelLogs) : ", isInstanceOfClass(levelLogs), ", levelLogs : ", levelLogs);
_logger.log("info", "MAIN - isJsonObject(levelLogs) : ", isJsonObject(levelLogs), ", levelLogs : ", levelLogs);
}
//endregion Logguer
}
function commandLineInteraction() {
let tests = new Tests();
let testsFunctions = findTests(tests);
//testsFunctions.unshift(["testsFunction", "exit", "by", "stop", "start", "help"]);
testsFunctions.unshift(["exit"]);
testsFunctions.unshift(["quit"]);
testsFunctions.unshift(["by"]);
testsFunctions.unshift(["eval:"]);
testsFunctions.unshift(["stop"]);
testsFunctions.unshift(["history"]);
testsFunctions.unshift(["search"]);
testsFunctions.unshift(["start"]);
testsFunctions.unshift(["help"]);
// */
_logger.log("info", "MAIN - findTests : ", testsFunctions);
_logger.log("info", "MAIN - NodeJS process memory : ", v8.getHeapStatistics().heap_size_limit/(1024*1024));
let questions : any = [
{
type: "autocomplete",
name: "cmd",
message: "Command> ",
choices: testsFunctions,
source: async (input) => {
//console.log("input : ", util.inspect(input, false, 4, true));
if (!input) {
//console.log("input empty, return empty Array.");
return [];
}
//const filteredCountries = await searchCountries(input)
return testsFunctions.map(testFunction => {
return {
value: `${testFunction}`,
description: `${testFunction} is a a tes function.`
}
});
},
suggestOnly: true,
// default:"start",
pageSize:10,
validate: function (val) {
if (!val) {
return 'Please provide a key'
}
return true
}
}
];
// */
/*
let questions = [
{
type: "input",
name: "cmd",
message: "Command> ",
choices: testsFunctions,
}
];
// */
let searchQuestion : any =
{
message: "Search> ",
choices: testsFunctions,
source: async (input, { signal }) => {
if (!input) {
//console.log("input empty, return empty Array.");
return [];
}
//console.log("input : ", util.inspect(input, false, 4, true));
//const filteredCountries = await searchCountries(input)
return testsFunctions.filter((functionName) => {
// console.log("filter input : " + input + " in functionName : " + functionName);
return (functionName.indexOf(input) != -1);
} ).map(testFunction => {
return {
//value: testFunction + "()",
value: testFunction,
description: `${testFunction} is a test function.\n`
}
});
},
pageSize:10,
theme:{
icon: {
cursor: figures.pointerSmall
},
style: {
disabled: (text: string) => chalk.dim(`- ${text}`),
searchTerm: (text: string) => chalk.cyan(text),
description: (text: string) => chalk.yellowBright(text)
},
helpMode: 'auto'
}
}; // */
let historyFound : Array = loadHistory();
let historyQuestion : any = [
{
type: "autocomplete",
name: "historyCmd",
message: "History> ",
choices: historyFound,
source: async (input) => {
//console.log("input : ", util.inspect(input, false, 4, true));
if (!input) {
//console.log("input empty, return empty Array.");
return [];
}
//const filteredCountries = await searchCountries(input)
return historyFound.map(testFunction => {
return {
value: `${testFunction}`,
description: `${testFunction} is a a tes function.`
}
});
},
suggestOnly: true,
// default:"start",
pageSize:10
}]; // */
inquirer.registerPrompt('autocomplete', inquirerPrompt);
function enterCmd() {
_logger.log("info", "MAIN - commandLineInteraction (help, start, stop, by, quit, exit, search, history), enter a command to eval : "); //logger.colors.green(JSON.stringify(result)));
// _logger.log("info", "MAIN - test Array : ", [1,"2",{"11":"22"}], " JSON : ", {1:2,"2":[1]});
//let result = search(searchQuestion).then(answers => {
inquirer.prompt(questions).then(async answers => {
//console.log(`Hi ${cmd}!`);
let cmd = Array.isArray(answers)?answers[0]:answers?.cmd;
//let cmd = answers.cmd;
_logger.log("info", "MAIN - answers entered : ", util.inspect(answers, false, 4, true)); //logger.colors.green(JSON.stringify(result)));
_logger.log("info", "MAIN - cmd entered : ", cmd); //logger.colors.green(JSON.stringify(result)));
try {
switch (cmd) {
case "exit":
case "quit":
case "by":
_logger.log("info", "MAIN - exit."); //logger.colors.green(JSON.stringify(result)));
writeHistory(historyFound);
if (rainbowSDK) {
rainbowSDK.stop().then(() => {
process.exit(0);
}).catch((err) => {
_logger.log("warn", "MAIN - RainbowSDK stop failed : ", err, ", but even stop the process."); //logger.colors.green(JSON.stringify(result)));
process.exit(0);
});
} else {
process.exit(0);
}
break;
case "help":
_logger.log("info", "MAIN - help."); //logger.colors.green(JSON.stringify(result)));
for (const testsFunction of testsFunctions) {
_logger.log("info", "MAIN - testsFunction : tests.", testsFunction); //logger.colors.green(JSON.stringify(result)));
}
enterCmd();
break;
case "start":
addStringToHistoryMemory(historyFound, cmd);
_logger.log("info", "MAIN - run cmd : tests.start()"); //logger.colors.green(JSON.stringify(result)));
eval("tests.start()");
enterCmd();
break;
case "cls":
case "clear":
//addStringToHistoryMemory(historyFound, cmd);
_logger.log("info", "MAIN - run cmd : clear"); //logger.colors.green(JSON.stringify(result)));
console.clear();
enterCmd();
break;
case "search":
//addStringToHistoryMemory(historyFound, cmd);
_logger.log("info", "MAIN - run cmd : search"); //logger.colors.green(JSON.stringify(result)));
await search(searchQuestion).then(answers => {
_logger.log("info", "MAIN - search : answers : ", _logger.colors.warn(answers)); //logger.colors.green(JSON.stringify(result)));
questions[0].default=answers;
});
enterCmd();
break;
case "history":
_logger.log("info", "MAIN - run cmd : history"); //logger.colors.green(JSON.stringify(result)));
await inquirer.prompt(historyQuestion).then(async answers => {
// await search(historyQuestion).then(answers => {
_logger.log("info", "MAIN - history : answers?.historyCmd : ", _logger.colors.warn(answers?.historyCmd)); //logger.colors.green(JSON.stringify(result)));
questions[0].default=answers?.historyCmd;
});
enterCmd();
break;
case "startstop":
//addStringToHistoryMemory(historyFound, cmd);
_logger.log("info", "MAIN - run cmd : tests.startstop()"); //logger.colors.green(JSON.stringify(result)));
eval("tests.startstop()");
enterCmd();
break;
case "stop":
//addStringToHistoryMemory(historyFound, cmd);
_logger.log("info", "MAIN - run cmd : tests.stop()"); //logger.colors.green(JSON.stringify(result)));
eval("tests.stop()");
enterCmd();
break;
default:
questions[0].default=cmd;
addStringToHistoryMemory(historyFound, cmd);
_logger.log("info", "MAIN - run cmd : ", cmd); //logger.colors.green(JSON.stringify(result)));
if (cmd) {
if (cmd?.indexOf("eval:")===0) {
let cmdStr = cmd.substring("eval:".length);
_logger.log("info", "MAIN - run eval cmdStr : ", cmd); //logger.colors.green(JSON.stringify(result)));
eval(cmdStr);
} else {
let cmdStr = (cmd + "").indexOf("tests.")===0 ? cmd:"tests." + cmd
_logger.log("info", "MAIN - run cmdStr : ", cmd); //logger.colors.green(JSON.stringify(result)));
eval(cmdStr);
}
}
enterCmd();
break;
}
/*
if (cmd==="by") {
_logger.log("debug", "MAIN - exit."); //logger.colors.green(JSON.stringify(result)));
rainbowSDK.stop().then(() => {
process.exit(0);
});
} else {
_logger.log("debug", "MAIN - run cmd : ", cmd); //logger.colors.green(JSON.stringify(result)));
eval(cmd);
enterCmd();
}
// */
} catch (e) {
_logger.log("debug", "MAIN - CATCH Error : ", e); //logger.colors.green(JSON.stringify(result)));
console.log("debug", "MAIN - CATCH Error : ", e); //logger.colors.green(JSON.stringify(result)));
enterCmd();
}
});
}
enterCmd();
}
//let startDate = new Date();
let token = undefined;
let connectedUser: any = {};
function findTests(obj) {
let propertiestoIgnore = [];
let privateAPI = [];
let depth = 0
let MAXDEPTH = 3;
let tests = [];
if (!obj) return [];
let props = Object.getPrototypeOf(obj);
Object.getOwnPropertyNames(props).forEach(function (property) {
//that._logger.log("debug", logService + "[iterateAPI] getPrototypeOf property : " + property);
try {
if ((propertiestoIgnore.indexOf(property)== -1) && depth < MAXDEPTH) {
//that._logger.log("debug",logService + "[iterateAPI] iter properties of obj " + typeof obj[property] + ", current propertie : " + property + "()");
if (props.hasOwnProperty(property)) {
if (typeof obj[property]==="object") {
//that._logger.log("debug", logService + "[iterateAPI] found a child object : " + currentStack + "->" + property);
/*if (property === "_contacts" || property === "_core") {
that._logger.log("debug",logService + "[iterateAPI] contacts found a child object : " + currentStack + "." + property);
iterateAPI(obj[property], currentStack + "." + property, list);
} // */
// iterateAPI(obj[property], currentStack + "." + property, list);
} else {
if (typeof props[property]==="function") {
//that._logger.log("debug", logService + "[iterateAPI] found a child function : " + property + "()");
if (!(property in privateAPI)) {
_logger.log("info", "MAIN - (findTests) found in props a test function : tests." + property + "()");
/*servicesList[currentStack] = currentStack;
var item = {
"serviceName": currentStack,
"methodName": currentStack + "." + property,
"called": 0
};
list[item.methodName] = item;
// */
tests.push(property+"()");
}
}
}
}
}
} catch (err) {
// that._logger.log("debug",logService + "[iterateAPI] !!! CATCH ERROR : " + err.message);
}
});
Object.getOwnPropertyNames(obj)
//for (var property in obj) {
.forEach(function (property) {
//Object.getOwnPropertyNames(obj).forEach(function (property) {
try {
if ((propertiestoIgnore.indexOf(property)== -1) && depth < MAXDEPTH) {
//that._logger.log("debug",logService + "[iterateAPI] iter properties of obj " + typeof obj[property] + ", current propertie : " + property + "()");
if (obj.hasOwnProperty(property)) {
if (typeof obj[property]==="object") {
//that._logger.log("debug",logService + "[iterateAPI] found a child object : " + currentStack + "->" + property);
if (property==="_contacts" || property==="_core") {
// that._logger.log("debug",logService + "[iterateAPI] contacts found a child object : " + currentStack + "." + property );
// iterateAPI(obj[property], currentStack + "." + property, list);
}
//that._logger.log("debug", logService + "[iterateAPI] contacts found a child object : " + currentStack + "." + property);
// iterateAPI(obj[property], currentStack + "." + property, list, servicesList, depth + 1 );
} else {
if (typeof obj[property]==="function") {
//that._logger.log("debug", logService + "[iterateAPI] found a child function : " + property + "()");
if (!(property in privateAPI)) {
_logger.log("info", "MAIN - (findTests) found in propreties a test function : tests." + property + "()");
/*
servicesList[currentStack] = currentStack;
var item = {
"serviceName": currentStack,
"methodName": currentStack + "." + property,
"called": 0
};
list[item.methodName] = item;
// */
tests.push(property+"()");
}
}
}
}
}
} catch (err) {
// that._logger.log("debug",logService + "[iterateAPI] !!! CATCH ERROR : " + err.message);
}
});
return tests;
}
function addStringToHistoryMemory(arr:Array, str) {
if (Array.isArray(arr) && !arr.includes(str)) {
arr.push(str);
//console.log(`Added: ${str}`);
} else {
//console.log(`String "${str}" already exists in the array.`);
}
}
function loadHistory(){
let userAPPDATAPath = process.env.APPDATA || (process.platform == 'darwin' ? process.env.HOME + '/Library/Preferences' : process.env.HOME + "/.local/share") ;
_logger.log("debug", "MAIN - (loadHistory) - userAPPDATAPath : ", userAPPDATAPath, ", process.env.HOME : ", process.env.HOME);
let historyResult = [];
function loadHistoryFromFile(userHomePath) {
let history :any = [];
try {
//let readResult = fs.readFileSync(userHomePath + '/history.ini', 'utf-8');
//history = ini.parse(readResult);
history = readArrayFromFile(userHomePath + '/history.txt')
_logger.log("debug", "MAIN - (loadHistory) loadHistoryFromFile - history : ", history);
} catch (err) {
_logger.log("warn", "MAIN - (loadHistory) loadHistoryFromFile - err : ", err);
/* if (err.code === 'ENOENT') {
let generatedRandomId = xmppUtils.generateRandomID();
history["xmppRessourceName"] = generatedRandomId;
fs.writeFileSync(userHomePath + '/history.ini', ini.stringify(history, {section: 'HISTORY'}));
}*/
}
return history;
}
try {
if (userAPPDATAPath) {
userAPPDATAPath += "/Rainbow/RainbowNodeSdkDir";
_logger.log("debug", "MAIN - (loadHistory) - userAPPDATAPath : ", userAPPDATAPath);
if (!fs.existsSync(userAPPDATAPath)) {
_logger.log("debug", "MAIN - (loadHistory) - does not exists and can not be created, so can do the treatment.");
if (fs.mkdirSync(userAPPDATAPath, {recursive: true})) {
_logger.log("debug", "MAIN - (loadHistory) - mkdirSync succeed, so can do the treatment.");
historyResult = loadHistoryFromFile(userAPPDATAPath);
} else {
_logger.log("error", "MAIN - (loadHistory) - mkdirSync failed and can not be created, so can do the treatment.");
}
} else {
_logger.log("debug", "MAIN - (loadHistory) - exists, so can do the treatment.");
historyResult = loadHistoryFromFile(userAPPDATAPath);
}
} else {
}
return historyResult;
} catch (err) {
if (err.code !== 'EEXIST') throw err
}
}
function writeHistory(history){
let userAPPDATAPath = process.env.APPDATA || (process.platform == 'darwin' ? process.env.HOME + '/Library/Preferences' : process.env.HOME + "/.local/share") ;
_logger.log("debug", "MAIN - (writeHistory) - userAPPDATAPath : ", userAPPDATAPath, ", process.env.HOME : ", process.env.HOME);
function writeHistoryInFile(userHomePath : any) {
try {
writeArrayToFile(history, userHomePath + '/history.txt');
_logger.log("debug", "MAIN - (writeHistory) writeHistoryInFile - history : ", history);
} catch (err) {
_logger.log("warn", "MAIN - (writeHistory) writeHistoryInFile - err : ", err);
/* if (err.code === 'ENOENT') {
let generatedRandomId = xmppUtils.generateRandomID();
history["xmppRessourceName"] = generatedRandomId;
fs.writeFileSync(userHomePath + '/history.ini', ini.stringify(history, {section: 'HISTORY'}));
}*/
}
return history;
}
try {
if (userAPPDATAPath) {
userAPPDATAPath += "/Rainbow/RainbowNodeSdkDir";
_logger.log("debug", "MAIN - (writeHistory) - userAPPDATAPath : ", userAPPDATAPath);
if (!fs.existsSync(userAPPDATAPath)) {
_logger.log("debug", "MAIN - (writeHistory) - does not exists and can not be created, so can do the treatment.");
if (fs.mkdirSync(userAPPDATAPath, {recursive: true})) {
_logger.log("debug", "MAIN - (writeHistory) - mkdirSync succeed, so can do the treatment.");
writeHistoryInFile(userAPPDATAPath);
} else {
_logger.log("error", "MAIN - (writeHistory) - mkdirSync failed and can not be created, so can do the treatment.");
}
} else {
_logger.log("debug", "MAIN - (writeHistory) - exists, so can do the treatment.");
writeHistoryInFile(userAPPDATAPath);
}
} else {
}
} catch (err) {
if (err.code !== 'EEXIST') throw err
}
}
commandLineInteraction();
})();