You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-24 19:49:22 +02:00
GAPI: Журналы
This commit is contained in:
13418
service/dictionaries/en.json
vendored
13418
service/dictionaries/en.json
vendored
File diff suppressed because it is too large
Load Diff
32
src/addins/rcon/Cargo.lock
generated
Normal file
32
src/addins/rcon/Cargo.lock
generated
Normal file
@@ -0,0 +1,32 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "OPI_TCPClient"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"addin1c",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "addin1c"
|
||||
version = "0.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ef34e8b7ff4c43e87491a4cc30a4779a9f67c50db43378a36362c7a56246e05b"
|
||||
dependencies = [
|
||||
"smallvec",
|
||||
"utf16_lit",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "smallvec"
|
||||
version = "1.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
|
||||
|
||||
[[package]]
|
||||
name = "utf16_lit"
|
||||
version = "2.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "14706d2a800ee8ff38c1d3edb873cd616971ea59eb7c0d046bb44ef59b06a1ae"
|
16
src/addins/rcon/Cargo.toml
Normal file
16
src/addins/rcon/Cargo.toml
Normal file
@@ -0,0 +1,16 @@
|
||||
[package]
|
||||
name = "OPI_TCPClient"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[lib]
|
||||
crate-type = ["cdylib"]
|
||||
|
||||
[profile.release]
|
||||
lto = true # Enable Link Time Optimization
|
||||
codegen-units = 1 # Reduce number of codegen units to increase optimizations.
|
||||
panic = "abort" # Abort on panic
|
||||
strip = true # Automatically strip symbols from the binary.
|
||||
|
||||
[dependencies]
|
||||
addin1c = "0.5.0"
|
7
src/addins/rcon/MANIFEST.XML
Normal file
7
src/addins/rcon/MANIFEST.XML
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<bundle xmlns='http://v8.1c.ru/8.2/addin/bundle' name='OPIADDIN'>
|
||||
<component os='Windows' path='AddIn_x86_windows.dll' type='native' arch='i386' />
|
||||
<component os='Windows' path='AddIn_x64_windows.dll' type='native' arch='x86_64' />
|
||||
<component os='Linux' path='AddIn_x86_linux.so' type='native' arch='i386' />
|
||||
<component os='Linux' path='AddIn_x64_linux.so' type='native' arch='x86_64' />
|
||||
</bundle>
|
68
src/addins/rcon/release.bat
vendored
Normal file
68
src/addins/rcon/release.bat
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
@echo off
|
||||
|
||||
:: Установить переменную
|
||||
set LIB_NAME=OPI_RCON
|
||||
set OPENSSL_DIR=C:\msys64\mingw64
|
||||
set OPENSSL_LIB_DIR=%OPENSSL_DIR%\lib
|
||||
set OPENSSL_INCLUDE_DIR=%OPENSSL_DIR%\include
|
||||
|
||||
|
||||
:: Перейти в директорию проекта
|
||||
cd /d "%~dp0"
|
||||
|
||||
:: Создать папку для артефактов
|
||||
set OUTPUT_DIR=artifacts
|
||||
if not exist "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%"
|
||||
|
||||
:: Сборка для x86_64-pc-windows-msvc
|
||||
cargo build --release --target x86_64-pc-windows-msvc
|
||||
if errorlevel 1 goto :error
|
||||
|
||||
:: Сборка для x86_64-unknown-linux-gnu
|
||||
cargo zigbuild --release --target x86_64-unknown-linux-gnu
|
||||
if errorlevel 1 goto :error
|
||||
|
||||
:: Сборка для i686-pc-windows-msvc
|
||||
cargo build --release --target i686-pc-windows-msvc
|
||||
if errorlevel 1 goto :error
|
||||
|
||||
:: Сборка для i686-unknown-linux-gnu
|
||||
cargo zigbuild --release --target i686-unknown-linux-gnu
|
||||
if errorlevel 1 goto :error
|
||||
|
||||
:: Копирование файлов .dll и .so
|
||||
copy /y target\x86_64-pc-windows-msvc\release\%LIB_NAME%.dll "%OUTPUT_DIR%\AddIn_x64_windows.dll"
|
||||
if errorlevel 1 goto :error
|
||||
|
||||
copy /y target\i686-pc-windows-msvc\release\%LIB_NAME%.dll "%OUTPUT_DIR%\AddIn_x86_windows.dll"
|
||||
if errorlevel 1 goto :error
|
||||
|
||||
copy /y target\x86_64-unknown-linux-gnu\release\lib%LIB_NAME%.so "%OUTPUT_DIR%\AddIn_x64_linux.so"
|
||||
if errorlevel 1 goto :error
|
||||
|
||||
copy /y target\i686-unknown-linux-gnu\release\lib%LIB_NAME%.so "%OUTPUT_DIR%\AddIn_x86_linux.so"
|
||||
if errorlevel 1 goto :error
|
||||
|
||||
copy /y MANIFEST.XML "%OUTPUT_DIR%\MANIFEST.XML"
|
||||
if errorlevel 1 goto :error
|
||||
|
||||
:: Архивация
|
||||
powershell -Command "Compress-Archive -Path '%OUTPUT_DIR%\*' -Force -DestinationPath '%LIB_NAME%.zip'"
|
||||
if errorlevel 1 goto :error
|
||||
|
||||
copy /y "%LIB_NAME%.zip" "../../ru/OInt/addins/%LIB_NAME%.zip"
|
||||
copy /y "%LIB_NAME%.zip" "../../en/OInt/addins/%LIB_NAME%.zip"
|
||||
|
||||
copy /y "%LIB_NAME%.zip" "../../ru/OPI/src/CommonTemplates/%LIB_NAME%/Template.addin"
|
||||
copy /y "%LIB_NAME%.zip" "../../en/OPI/src/CommonTemplates/%LIB_NAME%/Template.addin"
|
||||
|
||||
if exist "%OUTPUT_DIR%" (
|
||||
rmdir /S /Q "%OUTPUT_DIR%"
|
||||
)
|
||||
|
||||
@echo Build and packaging completed successfully.
|
||||
exit /b 0
|
||||
|
||||
:error
|
||||
@echo An error occurred during the build or packaging process.
|
||||
exit /b 1
|
78
src/addins/rcon/src/component/methods.rs
Normal file
78
src/addins/rcon/src/component/methods.rs
Normal file
@@ -0,0 +1,78 @@
|
||||
use std::io::{Read, Write};
|
||||
use std::net::{Shutdown, TcpStream};
|
||||
use std::time::{Duration, Instant};
|
||||
|
||||
/// Отправляет данные
|
||||
pub fn send(connection: &mut TcpStream, data: Vec<u8>, timeout_ms: i32) -> bool {
|
||||
|
||||
if timeout_ms > 0 {
|
||||
let timeout = Duration::from_millis(timeout_ms as u64);
|
||||
connection.set_write_timeout(Some(timeout)).ok();
|
||||
};
|
||||
|
||||
match connection.write(&data) {
|
||||
Ok(_) => connection.flush().is_ok(),
|
||||
Err(_) => false, // Ошибка при отправке данных
|
||||
}
|
||||
}
|
||||
|
||||
/// Считывает данные
|
||||
pub fn receive(
|
||||
connection: &mut TcpStream,
|
||||
max_data_size: i32,
|
||||
end_marker: Vec<u8>,
|
||||
timeout_ms: i32
|
||||
) -> Vec<u8> {
|
||||
const BUFFER_SIZE: usize = 1024; // Размер временного буфера
|
||||
const MIN_READ_TIMEOUT_MS: u64 = 200; // Минимальный таймаут для чтения
|
||||
|
||||
let mut result = Vec::new();
|
||||
let mut buffer = vec![0u8; BUFFER_SIZE];
|
||||
|
||||
// Устанавливаем общее время ожидания
|
||||
let total_timeout = Duration::from_millis(timeout_ms as u64);
|
||||
let start_time = Instant::now(); // Время начала работы функции
|
||||
let min_read_timeout = Duration::from_millis(MIN_READ_TIMEOUT_MS);
|
||||
let marker_exists = !end_marker.is_empty();
|
||||
|
||||
connection.set_read_timeout(Some(min_read_timeout)).ok();
|
||||
|
||||
loop {
|
||||
// Проверяем общее время выполнения
|
||||
if start_time.elapsed() >= total_timeout {
|
||||
break; // Прерываем, если общее время истекло
|
||||
}
|
||||
|
||||
// Завершаем цикл, если превышен лимит данных
|
||||
if max_data_size > 0 && result.len() >= max_data_size as usize {
|
||||
break;
|
||||
}
|
||||
|
||||
match connection.read(&mut buffer) {
|
||||
Ok(0) => break, // EOF — конец данных
|
||||
Ok(size) => {
|
||||
result.extend_from_slice(&buffer[..size]);
|
||||
|
||||
// Завершаем цикл, если получен конец сообщения (если end_marker задан)
|
||||
if marker_exists && result.ends_with(&end_marker) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
Err(ref e) if e.kind() == std::io::ErrorKind::WouldBlock => continue,
|
||||
Err(_) => break, // Любая другая ошибка завершает чтение
|
||||
}
|
||||
}
|
||||
|
||||
result
|
||||
}
|
||||
|
||||
/// Закрывает соединение
|
||||
pub fn disconnect(add_in: &mut crate::component::AddIn) -> bool {
|
||||
add_in.connection = None;
|
||||
true
|
||||
}
|
||||
|
||||
/// Закрытие потока записи
|
||||
pub fn close_output(connection: &mut TcpStream) -> bool {
|
||||
connection.shutdown(Shutdown::Write).is_ok()
|
||||
}
|
127
src/addins/rcon/src/component/mod.rs
Normal file
127
src/addins/rcon/src/component/mod.rs
Normal file
@@ -0,0 +1,127 @@
|
||||
mod methods;
|
||||
|
||||
use addin1c::{name, Variant};
|
||||
use crate::core::getset;
|
||||
use std::net::TcpStream;
|
||||
use crate::component::methods::disconnect;
|
||||
|
||||
// МЕТОДЫ КОМПОНЕНТЫ -------------------------------------------------------------------------------
|
||||
|
||||
// Синонимы
|
||||
pub const METHODS: &[&[u16]] = &[
|
||||
name!("Connect"), // 0
|
||||
name!("Disconnect"), // 1
|
||||
name!("Read"), // 2
|
||||
name!("Send"), // 3
|
||||
name!("CloseOutput") // 4
|
||||
];
|
||||
|
||||
// Число параметров функций компоненты
|
||||
pub fn get_params_amount(num: usize) -> usize {
|
||||
match num {
|
||||
0 => 0,
|
||||
1 => 0,
|
||||
2 => 3,
|
||||
3 => 2,
|
||||
4 => 0,
|
||||
_ => 0,
|
||||
}
|
||||
}
|
||||
|
||||
// Соответствие функций Rust функциям компоненты
|
||||
// Вызовы должны быть обернуты в Box::new
|
||||
pub fn cal_func(obj: &mut AddIn, num: usize, params: &mut [Variant]) -> Box<dyn getset::ValueType> {
|
||||
|
||||
let empty_array: [u8; 0] = [];
|
||||
|
||||
match num {
|
||||
|
||||
0 => Box::new(obj.connect()),
|
||||
1 => {
|
||||
disconnect(obj);
|
||||
Box::new(true) // Возвращаем true для обозначения успешного выполнения
|
||||
},
|
||||
2 => {
|
||||
|
||||
let maxsize = params[0].get_i32().unwrap_or(0);
|
||||
let marker = params[1].get_blob().unwrap_or(&empty_array);
|
||||
let timeout = params[2].get_i32().unwrap_or(0);
|
||||
|
||||
if let Some(ref mut connection) = obj.connection {
|
||||
Box::new(methods::receive(connection, maxsize, marker.to_vec(), timeout))
|
||||
} else {
|
||||
Box::new("OPI: Connection closed".as_bytes().to_vec())
|
||||
}
|
||||
},
|
||||
3 => {
|
||||
|
||||
let data = params[0].get_blob().unwrap_or(&empty_array);
|
||||
let timeout = params[1].get_i32().unwrap_or(0);
|
||||
|
||||
if let Some(ref mut connection) = obj.connection {
|
||||
Box::new(methods::send(connection, data.to_vec(), timeout))
|
||||
} else {
|
||||
Box::new(false) // Если соединения нет, возвращаем false
|
||||
}
|
||||
},
|
||||
4 =>{
|
||||
if let Some(ref mut connection) = obj.connection {
|
||||
Box::new(methods::close_output(connection))
|
||||
} else {
|
||||
Box::new(false)
|
||||
}
|
||||
}
|
||||
_ => Box::new(false), // Неверный номер команды
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------------------------
|
||||
|
||||
// ПОЛЯ КОМПОНЕНТЫ ---------------------------------------------------------------------------------
|
||||
|
||||
// Синонимы
|
||||
pub const PROPS: &[&[u16]] = &[
|
||||
name!("Address")
|
||||
];
|
||||
|
||||
|
||||
pub struct AddIn {
|
||||
pub address: String,
|
||||
connection: Option<TcpStream>,
|
||||
}
|
||||
|
||||
impl AddIn {
|
||||
/// Создает новый объект
|
||||
pub fn new() -> Self {
|
||||
AddIn {
|
||||
address: String::new(),
|
||||
connection: None,
|
||||
}
|
||||
}
|
||||
|
||||
/// Подключается к серверу
|
||||
pub fn connect(&mut self) -> bool {
|
||||
|
||||
if self.address.is_empty() {
|
||||
return false; // Ошибка: пустой адрес
|
||||
}
|
||||
|
||||
match TcpStream::connect(&self.address) {
|
||||
Ok(tcp_stream) => {
|
||||
self.connection = Some(tcp_stream);
|
||||
true
|
||||
}
|
||||
Err(_) => false, // Ошибка при подключении
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_field_ptr(&self, index: usize) -> *const dyn getset::ValueType {
|
||||
match index {
|
||||
0 => &self.address as &dyn getset::ValueType as *const _,
|
||||
_ => panic!("Index out of bounds"),
|
||||
}
|
||||
}
|
||||
pub fn get_field_ptr_mut(&mut self, index: usize) -> *mut dyn getset::ValueType { self.get_field_ptr(index) as *mut _ }
|
||||
}
|
||||
// -------------------------------------------------------------------------------------------------
|
78
src/addins/rcon/src/core/getset.rs
Normal file
78
src/addins/rcon/src/core/getset.rs
Normal file
@@ -0,0 +1,78 @@
|
||||
use addin1c::{Variant, Tm};
|
||||
|
||||
|
||||
pub trait ValueType {
|
||||
fn get_value(&self, val: &mut Variant) -> bool;
|
||||
fn set_value(&mut self, val: &Variant);
|
||||
}
|
||||
|
||||
// Реализация для i32
|
||||
impl ValueType for i32 {
|
||||
fn get_value(&self, val: &mut Variant) -> bool {
|
||||
val.set_i32(*self);
|
||||
true
|
||||
}
|
||||
|
||||
fn set_value(&mut self, val: &Variant) {
|
||||
*self = val.get_i32().unwrap_or(0);
|
||||
}
|
||||
}
|
||||
|
||||
// Реализация для f64
|
||||
impl ValueType for f64 {
|
||||
fn get_value(&self, val: &mut Variant) -> bool {
|
||||
val.set_f64(*self);
|
||||
true
|
||||
}
|
||||
|
||||
fn set_value(&mut self, val: &Variant) {
|
||||
*self = val.get_f64().unwrap_or(0.0);
|
||||
}
|
||||
}
|
||||
|
||||
// Реализация для bool
|
||||
impl ValueType for bool {
|
||||
fn get_value(&self, val: &mut Variant) -> bool {
|
||||
val.set_bool(*self);
|
||||
true
|
||||
}
|
||||
|
||||
fn set_value(&mut self, val: &Variant) {
|
||||
*self = val.get_bool().unwrap_or(false);
|
||||
}
|
||||
}
|
||||
|
||||
// Реализация для tm
|
||||
impl ValueType for Tm {
|
||||
fn get_value(&self, val: &mut Variant) -> bool {
|
||||
val.set_date(*self);
|
||||
true
|
||||
}
|
||||
|
||||
fn set_value(&mut self, val: &Variant) {
|
||||
*self = val.get_date().unwrap_or(Tm::default());
|
||||
}
|
||||
}
|
||||
|
||||
// Реализация для String
|
||||
impl ValueType for String {
|
||||
fn get_value(&self, val: &mut Variant) -> bool {
|
||||
let s: Vec<u16> = self.encode_utf16().collect();
|
||||
val.set_str1c(s.as_slice()).is_ok()
|
||||
}
|
||||
|
||||
fn set_value(&mut self, val: &Variant) {
|
||||
*self = val.get_string().unwrap_or("".to_string());
|
||||
}
|
||||
}
|
||||
|
||||
// Реализация для Vec<u8>
|
||||
impl ValueType for Vec<u8> {
|
||||
fn get_value(&self, val: &mut Variant) -> bool {
|
||||
val.set_blob(self.as_slice()).is_ok()
|
||||
}
|
||||
|
||||
fn set_value(&mut self, val: &Variant) {
|
||||
*self = val.get_blob().unwrap_or(&[]).to_vec()
|
||||
}
|
||||
}
|
59
src/addins/rcon/src/core/mod.rs
Normal file
59
src/addins/rcon/src/core/mod.rs
Normal file
@@ -0,0 +1,59 @@
|
||||
pub mod getset;
|
||||
|
||||
use addin1c::{name, RawAddin, Variant};
|
||||
|
||||
use crate::component::METHODS;
|
||||
use crate::component::PROPS;
|
||||
use crate::component::get_params_amount;
|
||||
use crate::component::cal_func;
|
||||
use crate::component::AddIn;
|
||||
|
||||
|
||||
// Обработка удаления объекта
|
||||
impl Drop for AddIn {
|
||||
fn drop(&mut self) {}
|
||||
}
|
||||
|
||||
// Определение класса
|
||||
impl RawAddin for AddIn {
|
||||
|
||||
fn register_extension_as(&mut self) -> &'static [u16] {
|
||||
name!("Main")
|
||||
}
|
||||
fn get_n_props(&mut self) -> usize {
|
||||
PROPS.len()
|
||||
}
|
||||
fn find_prop(&mut self, name: &[u16]) -> Option<usize> {
|
||||
PROPS.iter().position(|&x| x == name)
|
||||
}
|
||||
fn get_prop_name(&mut self, num: usize, _alias: usize) -> Option<&'static [u16]> { PROPS.get(num).copied() }
|
||||
fn get_prop_val(&mut self, num: usize, val: &mut Variant) -> bool {let field: &dyn getset::ValueType = &self[num]; field.get_value(val) }
|
||||
fn set_prop_val(&mut self, num: usize, val: &Variant) -> bool {let field: &mut dyn getset::ValueType = &mut self[num]; field.set_value(val); true }
|
||||
fn is_prop_readable(&mut self, _num: usize) -> bool { true }
|
||||
fn is_prop_writable(&mut self, num: usize) -> bool { true }
|
||||
fn get_n_methods(&mut self) -> usize { METHODS.len() }
|
||||
fn find_method(&mut self, name: &[u16]) -> Option<usize> { METHODS.iter().position(|&x| x == name) }
|
||||
fn get_method_name(&mut self, num: usize, _alias: usize) -> Option<&'static [u16]> { METHODS.get(num).copied() }
|
||||
fn get_n_params(&mut self, num: usize) -> usize { get_params_amount(num) }
|
||||
fn get_param_def_value(&mut self, _method_num: usize, _param_num: usize, _value: Variant, ) -> bool { true }
|
||||
fn has_ret_val(&mut self, num: usize) -> bool { true }
|
||||
fn call_as_proc(&mut self, _num: usize, _params: &mut [Variant]) -> bool { false }
|
||||
fn call_as_func(&mut self, num: usize, params: &mut [Variant], ret_value: &mut Variant, ) -> bool { cal_func(self, num, params).get_value(ret_value) }
|
||||
|
||||
}
|
||||
|
||||
impl std::ops::Index<usize> for AddIn {
|
||||
type Output = dyn getset::ValueType;
|
||||
|
||||
fn index(&self, index: usize) -> &Self::Output {
|
||||
unsafe { &*self.get_field_ptr(index) }
|
||||
}
|
||||
}
|
||||
|
||||
impl std::ops::IndexMut<usize> for AddIn {
|
||||
fn index_mut(&mut self, index: usize) -> &mut Self::Output {
|
||||
unsafe { &mut *self.get_field_ptr_mut(index) }
|
||||
}
|
||||
}
|
||||
|
||||
|
48
src/addins/rcon/src/lib.rs
Normal file
48
src/addins/rcon/src/lib.rs
Normal file
@@ -0,0 +1,48 @@
|
||||
pub mod component;
|
||||
mod core;
|
||||
|
||||
|
||||
use std::{
|
||||
ffi::{c_int, c_long, c_void},
|
||||
sync::atomic::{AtomicI32, Ordering},
|
||||
};
|
||||
|
||||
use component::AddIn;
|
||||
use addin1c::{create_component, destroy_component, name, AttachType};
|
||||
|
||||
pub static mut PLATFORM_CAPABILITIES: AtomicI32 = AtomicI32::new(-1);
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn GetClassObject(name: *const u16, component: *mut *mut c_void) -> c_long {
|
||||
|
||||
let addin = AddIn::new();
|
||||
create_component(component, addin)
|
||||
|
||||
}
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn DestroyObject(component: *mut *mut c_void) -> c_long {
|
||||
destroy_component(component)
|
||||
}
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
#[no_mangle]
|
||||
pub extern "C" fn GetClassNames() -> *const u16 {
|
||||
// small strings for performance
|
||||
name!("Main").as_ptr()
|
||||
}
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn SetPlatformCapabilities(capabilities: c_int) -> c_int {
|
||||
PLATFORM_CAPABILITIES.store(capabilities, Ordering::Relaxed);
|
||||
3
|
||||
}
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
#[no_mangle]
|
||||
pub extern "C" fn GetAttachType() -> AttachType {
|
||||
AttachType::Any
|
||||
}
|
50
src/ru/OInt/core/Modules/OPI_GreenAPI.os
vendored
50
src/ru/OInt/core/Modules/OPI_GreenAPI.os
vendored
@@ -1062,6 +1062,56 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить журнал входящих сообщений
|
||||
// Получает список входящих сообщений инстанса за указанный интервал
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации API: [LastIncomingMessages](@green-api.com/docs/api/journals/LastIncomingMessages/)
|
||||
//
|
||||
// Параметры:
|
||||
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
|
||||
// Период - Число - Время в минутах, за которое требуется показать сообщения - period
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
|
||||
Функция ПолучитьЖурналВходящихСообщений(Знач ПараметрыДоступа, Знач Период = 1440) Экспорт
|
||||
|
||||
Параметры = Новый Структура;
|
||||
|
||||
OPI_Инструменты.ДобавитьПоле("minutes", Период, "Число" , Параметры);
|
||||
|
||||
URL = СформироватьОсновнойURL(ПараметрыДоступа, "lastIncomingMessages");
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить журнал исходящих сообщений
|
||||
// Получает список исходящих сообщений инстанса за указанный интервал
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации API: [LastOutgoingMessages](@green-api.com/docs/api/journals/LastOutgoingMessages/)
|
||||
//
|
||||
// Параметры:
|
||||
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
|
||||
// Период - Число - Время в минутах, за которое требуется показать сообщения - period
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
|
||||
Функция ПолучитьЖурналИсходящихСообщений(Знач ПараметрыДоступа, Знач Период = 1440) Экспорт
|
||||
|
||||
Параметры = Новый Структура;
|
||||
|
||||
OPI_Инструменты.ДобавитьПоле("minutes", Период, "Число" , Параметры);
|
||||
|
||||
URL = СформироватьОсновнойURL(ПараметрыДоступа, "lastOutgoingMessages");
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
36
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
36
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
@@ -2498,6 +2498,8 @@
|
||||
|
||||
GreenAPI_ПолучитьИсториюЧата(ПараметрыТеста);
|
||||
GreenAPI_ПолучитьСообщение(ПараметрыТеста);
|
||||
GreenAPI_ПолучитьЖурналВходящихСообщений(ПараметрыТеста);
|
||||
GreenAPI_ПолучитьЖурналИсходящихСообщений(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -19257,6 +19259,40 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура GreenAPI_ПолучитьЖурналВходящихСообщений(ПараметрыФункции)
|
||||
|
||||
ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"];
|
||||
MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"];
|
||||
IdInstance = ПараметрыФункции["GreenAPI_IdInstance"];
|
||||
ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"];
|
||||
|
||||
ПараметрыДоступа = OPI_GreenAPI.СформироватьПараметрыДоступа(ApiUrl, MediaUrl, IdInstance, ApiTokenInstance);
|
||||
Результат = OPI_GreenAPI.ПолучитьЖурналВходящихСообщений(ПараметрыДоступа);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЖурналВходящихСообщений", "GreenAPI");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура GreenAPI_ПолучитьЖурналИсходящихСообщений(ПараметрыФункции)
|
||||
|
||||
ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"];
|
||||
MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"];
|
||||
IdInstance = ПараметрыФункции["GreenAPI_IdInstance"];
|
||||
ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"];
|
||||
|
||||
ПараметрыДоступа = OPI_GreenAPI.СформироватьПараметрыДоступа(ApiUrl, MediaUrl, IdInstance, ApiTokenInstance);
|
||||
Результат = OPI_GreenAPI.ПолучитьЖурналИсходящихСообщений(ПараметрыДоступа);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЖурналИсходящихСообщений", "GreenAPI");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
116
src/ru/OInt/tests/Modules/internal/OPI_ТестыCLI.os
vendored
116
src/ru/OInt/tests/Modules/internal/OPI_ТестыCLI.os
vendored
@@ -2428,6 +2428,19 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_GAPI_ОчередьСообщений() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста);
|
||||
|
||||
CLI_GreenAPI_ПолучитьОчередьСообщений(ПараметрыТеста);
|
||||
CLI_GreenAPI_ОчиститьОчередьСообщений(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_GAPI_ЖурналыСообщений() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
@@ -2440,6 +2453,8 @@
|
||||
|
||||
CLI_GreenAPI_ПолучитьИсториюЧата(ПараметрыТеста);
|
||||
CLI_GreenAPI_ПолучитьСообщение(ПараметрыТеста);
|
||||
CLI_GreenAPI_ПолучитьЖурналВходящихСообщений(ПараметрыТеста);
|
||||
CLI_GreenAPI_ПолучитьЖурналИсходящихСообщений(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -21521,6 +21536,56 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_GreenAPI_ПолучитьОчередьСообщений(ПараметрыФункции)
|
||||
|
||||
ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"];
|
||||
MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"];
|
||||
IdInstance = ПараметрыФункции["GreenAPI_IdInstance"];
|
||||
ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"];
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("api" , ApiUrl);
|
||||
Опции.Вставить("media", MediaUrl);
|
||||
Опции.Вставить("id" , IdInstance);
|
||||
Опции.Вставить("token", ApiTokenInstance);
|
||||
|
||||
ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции);
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("access" , ПараметрыДоступа);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОчередьСообщений", Опции);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОчередьСообщений", "GreenAPI");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_GreenAPI_ОчиститьОчередьСообщений(ПараметрыФункции)
|
||||
|
||||
ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"];
|
||||
MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"];
|
||||
IdInstance = ПараметрыФункции["GreenAPI_IdInstance"];
|
||||
ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"];
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("api" , ApiUrl);
|
||||
Опции.Вставить("media", MediaUrl);
|
||||
Опции.Вставить("id" , IdInstance);
|
||||
Опции.Вставить("token", ApiTokenInstance);
|
||||
|
||||
ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции);
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("access" , ПараметрыДоступа);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОчиститьОчередьСообщений", Опции);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьОчередьСообщений", "GreenAPI");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_ГринОчисткаОчереди(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_GreenAPI_ПолучитьИсториюЧата(ПараметрыФункции)
|
||||
|
||||
ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"];
|
||||
@@ -21554,7 +21619,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
Процедура CLI_GreenAPI_ПолучитьСообщение(ПараметрыФункции)
|
||||
|
||||
ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"];
|
||||
@@ -21585,6 +21649,56 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_GreenAPI_ПолучитьЖурналВходящихСообщений(ПараметрыФункции)
|
||||
|
||||
ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"];
|
||||
MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"];
|
||||
IdInstance = ПараметрыФункции["GreenAPI_IdInstance"];
|
||||
ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"];
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("api" , ApiUrl);
|
||||
Опции.Вставить("media", MediaUrl);
|
||||
Опции.Вставить("id" , IdInstance);
|
||||
Опции.Вставить("token", ApiTokenInstance);
|
||||
|
||||
ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции);
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("access" , ПараметрыДоступа);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьЖурналВходящихСообщений", Опции);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЖурналВходящихСообщений", "GreenAPI");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_GreenAPI_ПолучитьЖурналИсходящихСообщений(ПараметрыФункции)
|
||||
|
||||
ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"];
|
||||
MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"];
|
||||
IdInstance = ПараметрыФункции["GreenAPI_IdInstance"];
|
||||
ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"];
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("api" , ApiUrl);
|
||||
Опции.Вставить("media", MediaUrl);
|
||||
Опции.Вставить("id" , IdInstance);
|
||||
Опции.Вставить("token", ApiTokenInstance);
|
||||
|
||||
ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции);
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("access" , ПараметрыДоступа);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьЖурналИсходящихСообщений", Опции);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЖурналИсходящихСообщений", "GreenAPI");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@@ -2321,9 +2321,9 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||
|
||||
|
||||
Модуль = Вычислить(Имя);
|
||||
|
||||
|
||||
Возврат Модуль;
|
||||
КонецФункции
|
||||
|
||||
|
@@ -1062,6 +1062,56 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить журнал входящих сообщений
|
||||
// Получает список входящих сообщений инстанса за указанный интервал
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации API: [LastIncomingMessages](@green-api.com/docs/api/journals/LastIncomingMessages/)
|
||||
//
|
||||
// Параметры:
|
||||
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
|
||||
// Период - Число - Время в минутах, за которое требуется показать сообщения - period
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
|
||||
Функция ПолучитьЖурналВходящихСообщений(Знач ПараметрыДоступа, Знач Период = 1440) Экспорт
|
||||
|
||||
Параметры = Новый Структура;
|
||||
|
||||
OPI_Инструменты.ДобавитьПоле("minutes", Период, "Число" , Параметры);
|
||||
|
||||
URL = СформироватьОсновнойURL(ПараметрыДоступа, "lastIncomingMessages");
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить журнал исходящих сообщений
|
||||
// Получает список исходящих сообщений инстанса за указанный интервал
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации API: [LastOutgoingMessages](@green-api.com/docs/api/journals/LastOutgoingMessages/)
|
||||
//
|
||||
// Параметры:
|
||||
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
|
||||
// Период - Число - Время в минутах, за которое требуется показать сообщения - period
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
|
||||
Функция ПолучитьЖурналИсходящихСообщений(Знач ПараметрыДоступа, Знач Период = 1440) Экспорт
|
||||
|
||||
Параметры = Новый Структура;
|
||||
|
||||
OPI_Инструменты.ДобавитьПоле("minutes", Период, "Число" , Параметры);
|
||||
|
||||
URL = СформироватьОсновнойURL(ПараметрыДоступа, "lastOutgoingMessages");
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@@ -2498,6 +2498,8 @@
|
||||
|
||||
GreenAPI_ПолучитьИсториюЧата(ПараметрыТеста);
|
||||
GreenAPI_ПолучитьСообщение(ПараметрыТеста);
|
||||
GreenAPI_ПолучитьЖурналВходящихСообщений(ПараметрыТеста);
|
||||
GreenAPI_ПолучитьЖурналИсходящихСообщений(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -19257,6 +19259,40 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура GreenAPI_ПолучитьЖурналВходящихСообщений(ПараметрыФункции)
|
||||
|
||||
ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"];
|
||||
MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"];
|
||||
IdInstance = ПараметрыФункции["GreenAPI_IdInstance"];
|
||||
ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"];
|
||||
|
||||
ПараметрыДоступа = OPI_GreenAPI.СформироватьПараметрыДоступа(ApiUrl, MediaUrl, IdInstance, ApiTokenInstance);
|
||||
Результат = OPI_GreenAPI.ПолучитьЖурналВходящихСообщений(ПараметрыДоступа);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЖурналВходящихСообщений", "GreenAPI");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура GreenAPI_ПолучитьЖурналИсходящихСообщений(ПараметрыФункции)
|
||||
|
||||
ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"];
|
||||
MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"];
|
||||
IdInstance = ПараметрыФункции["GreenAPI_IdInstance"];
|
||||
ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"];
|
||||
|
||||
ПараметрыДоступа = OPI_GreenAPI.СформироватьПараметрыДоступа(ApiUrl, MediaUrl, IdInstance, ApiTokenInstance);
|
||||
Результат = OPI_GreenAPI.ПолучитьЖурналИсходящихСообщений(ПараметрыДоступа);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЖурналИсходящихСообщений", "GreenAPI");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
116
src/ru/OPI/src/CommonModules/OPI_ТестыCLI/Module.bsl
vendored
116
src/ru/OPI/src/CommonModules/OPI_ТестыCLI/Module.bsl
vendored
@@ -2428,6 +2428,19 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_GAPI_ОчередьСообщений() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста);
|
||||
|
||||
CLI_GreenAPI_ПолучитьОчередьСообщений(ПараметрыТеста);
|
||||
CLI_GreenAPI_ОчиститьОчередьСообщений(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_GAPI_ЖурналыСообщений() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
@@ -2440,6 +2453,8 @@
|
||||
|
||||
CLI_GreenAPI_ПолучитьИсториюЧата(ПараметрыТеста);
|
||||
CLI_GreenAPI_ПолучитьСообщение(ПараметрыТеста);
|
||||
CLI_GreenAPI_ПолучитьЖурналВходящихСообщений(ПараметрыТеста);
|
||||
CLI_GreenAPI_ПолучитьЖурналИсходящихСообщений(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -21521,6 +21536,56 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_GreenAPI_ПолучитьОчередьСообщений(ПараметрыФункции)
|
||||
|
||||
ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"];
|
||||
MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"];
|
||||
IdInstance = ПараметрыФункции["GreenAPI_IdInstance"];
|
||||
ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"];
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("api" , ApiUrl);
|
||||
Опции.Вставить("media", MediaUrl);
|
||||
Опции.Вставить("id" , IdInstance);
|
||||
Опции.Вставить("token", ApiTokenInstance);
|
||||
|
||||
ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции);
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("access" , ПараметрыДоступа);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОчередьСообщений", Опции);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьОчередьСообщений", "GreenAPI");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_GreenAPI_ОчиститьОчередьСообщений(ПараметрыФункции)
|
||||
|
||||
ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"];
|
||||
MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"];
|
||||
IdInstance = ПараметрыФункции["GreenAPI_IdInstance"];
|
||||
ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"];
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("api" , ApiUrl);
|
||||
Опции.Вставить("media", MediaUrl);
|
||||
Опции.Вставить("id" , IdInstance);
|
||||
Опции.Вставить("token", ApiTokenInstance);
|
||||
|
||||
ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции);
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("access" , ПараметрыДоступа);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОчиститьОчередьСообщений", Опции);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ОчиститьОчередьСообщений", "GreenAPI");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_ГринОчисткаОчереди(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_GreenAPI_ПолучитьИсториюЧата(ПараметрыФункции)
|
||||
|
||||
ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"];
|
||||
@@ -21554,7 +21619,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
Процедура CLI_GreenAPI_ПолучитьСообщение(ПараметрыФункции)
|
||||
|
||||
ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"];
|
||||
@@ -21585,6 +21649,56 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_GreenAPI_ПолучитьЖурналВходящихСообщений(ПараметрыФункции)
|
||||
|
||||
ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"];
|
||||
MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"];
|
||||
IdInstance = ПараметрыФункции["GreenAPI_IdInstance"];
|
||||
ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"];
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("api" , ApiUrl);
|
||||
Опции.Вставить("media", MediaUrl);
|
||||
Опции.Вставить("id" , IdInstance);
|
||||
Опции.Вставить("token", ApiTokenInstance);
|
||||
|
||||
ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции);
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("access" , ПараметрыДоступа);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьЖурналВходящихСообщений", Опции);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЖурналВходящихСообщений", "GreenAPI");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_GreenAPI_ПолучитьЖурналИсходящихСообщений(ПараметрыФункции)
|
||||
|
||||
ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"];
|
||||
MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"];
|
||||
IdInstance = ПараметрыФункции["GreenAPI_IdInstance"];
|
||||
ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"];
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("api" , ApiUrl);
|
||||
Опции.Вставить("media", MediaUrl);
|
||||
Опции.Вставить("id" , IdInstance);
|
||||
Опции.Вставить("token", ApiTokenInstance);
|
||||
|
||||
ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции);
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("access" , ПараметрыДоступа);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьЖурналИсходящихСообщений", Опции);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьЖурналИсходящихСообщений", "GreenAPI");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
9
src/ru/OPI/src/CommonTemplates/OPI_RCON/OPI_RCON.mdo
Normal file
9
src/ru/OPI/src/CommonTemplates/OPI_RCON/OPI_RCON.mdo
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonTemplate xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c1c646c9-fb98-4cc6-bb51-237c9107e2ea">
|
||||
<name>OPI_RCON</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>RCON</value>
|
||||
</synonym>
|
||||
<templateType>AddIn</templateType>
|
||||
</mdclass:CommonTemplate>
|
BIN
src/ru/OPI/src/CommonTemplates/OPI_RCON/Template.addin
Normal file
BIN
src/ru/OPI/src/CommonTemplates/OPI_RCON/Template.addin
Normal file
Binary file not shown.
@@ -42,6 +42,7 @@
|
||||
<commonTemplates>CommonTemplate.OPI_TCPClient</commonTemplates>
|
||||
<commonTemplates>CommonTemplate.OPI_SQLite</commonTemplates>
|
||||
<commonTemplates>CommonTemplate.OPI_PostgreSQL</commonTemplates>
|
||||
<commonTemplates>CommonTemplate.OPI_RCON</commonTemplates>
|
||||
<commonModules>CommonModule.OPI_Airtable</commonModules>
|
||||
<commonModules>CommonModule.OPI_Bitrix24</commonModules>
|
||||
<commonModules>CommonModule.OPI_CDEK</commonModules>
|
||||
|
Reference in New Issue
Block a user