1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-02-15 14:03:22 +02:00

VKT: Перевод и конвертация

This commit is contained in:
Anton Titovets 2024-08-09 15:12:49 +03:00
parent aaacd4869e
commit 0d38b205f5
65 changed files with 5749 additions and 4502 deletions

View File

@ -1099,9 +1099,54 @@ jobs:
key: logs-Bitrix24
path: ./docs/ru/results/Bitrix24
Testing-VkTeams:
runs-on: ubuntu-latest
needs: [Decode, Build]
steps:
- uses: actions/checkout@v2
- uses: otymko/setup-onescript@v1.4
with:
version: 1.9.0
- name: Получить тестовые данные из кэша
uses: actions/cache/restore@v3
with:
key: test-data
path: ./data.json
- name: Установить asserts и 1testrunner
run: |
opm install asserts
opm install 1testrunner
- name: Установить OInt
run: |
cd ./src/ru/OInt
opm build
opm install *.ospx
- name: Общие методы
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os "ВКТ_ОбщиеМетоды"
- name: Отправка сообщений
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os "ВКТ_ОтправкаСообщений"
- name: Записать логи
if: ${{ cancelled() }} == false
uses: actions/cache/save@v3
with:
key: logs-VkTeams
path: ./docs/ru/results/VkTeams
Encode:
runs-on: ubuntu-latest
needs: [Testing-Telegram,Testing-VK,Testing-Viber,Testing-Twitter,Testing-YandexDisk,Testing-GoogleWorkspace,Testing-GoogleCalendar,Testing-GoogleDrive,Testing-GoogleSheets,Testing-Notion,Testing-Slack,Testing-Airtable,Testing-Dropbox,Testing-Bitrix24]
needs: [Testing-Telegram,Testing-VK,Testing-Viber,Testing-Twitter,Testing-YandexDisk,Testing-GoogleWorkspace,Testing-GoogleCalendar,Testing-GoogleDrive,Testing-GoogleSheets,Testing-Notion,Testing-Slack,Testing-Airtable,Testing-Dropbox,Testing-Bitrix24,Testing-VkTeams]
if: ${{ always() }}
permissions:
contents: write
@ -1353,6 +1398,22 @@ jobs:
-H "X-GitHub-Api-Version: 2022-11-28" \
"https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=logs-Bitrix24"
- name: Получить логи VkTeams
uses: actions/cache/restore@v3
with:
key: logs-VkTeams
path: ./docs/ru/results/VkTeams
- name: Очистка логов VkTeams
run: |
curl -L \
-X DELETE \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.TOKEN }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=logs-VkTeams"
- name: Записать данные
uses: stefanzweifel/git-auto-commit-action@v5
@ -1365,7 +1426,7 @@ jobs:
Clear-Cache:
runs-on: ubuntu-latest
needs: [Testing-Telegram, Testing-VK, Testing-Viber, Testing-Twitter, Testing-YandexDisk, Testing-GoogleWorkspace, Testing-GoogleCalendar, Testing-GoogleDrive, Testing-GoogleSheets, Testing-Notion, Testing-Slack, Testing-Airtable, Testing-Dropbox, Testing-Bitrix24, Encode]
needs: [Testing-Telegram, Testing-VK, Testing-Viber, Testing-Twitter, Testing-YandexDisk, Testing-GoogleWorkspace, Testing-GoogleCalendar, Testing-GoogleDrive, Testing-GoogleSheets, Testing-Notion, Testing-Slack, Testing-Airtable, Testing-Dropbox, Testing-Bitrix24, Testing-VkTeams, Encode]
if: ${{ always() }}
steps:
- name: Очистка основного кэша

View File

@ -1,11 +1,14 @@
#Использовать "./internal"
Перем МассивСимволов;
Перем ЕстьНовыеСлова;
#Область СлужебныйПрограммныйИнтерфейс
Процедура СоздатьНаборСловарей(Знач ФайлыМодулей, Знач Языки, Знач КаталогСловарей) Экспорт
Функция СоздатьНаборСловарей(Знач ФайлыМодулей, Знач Языки, Знач КаталогСловарей) Экспорт
ЕстьНовыеСлова = Ложь;
Для Каждого Язык Из Языки Цикл
ПутьСловаря = КаталогСловарей + Язык + ".json";
@ -17,7 +20,9 @@
КонецЦикла;
КонецПроцедуры
Возврат ЕстьНовыеСлова;
КонецФункции
Процедура СоздатьСловарь(Знач ФайлыМодулей, Знач ПутьСловаря) Экспорт
@ -39,6 +44,7 @@
Если Не ЗначениеЗаполнено(СуществующийПеревод) Тогда
СоответствиеСловаря.Вставить(СловоОригинал, "");
ЕстьНовыеСлова = Истина;
КонецЕсли;
КонецЦикла;

View File

@ -54,17 +54,25 @@
МетодыВерсионирования.ОбновитьНомераВерсий(ПутьPackagedef, Версия);
МетодыВерсионирования.ОбновитьLibConfig(СоответствиеМодулей, ПутьПакета);
МетодыКонвертации.ПортироватьНабор(СоответствиеМодулей, СоответствиеЗамен);
МетодыСловарей.СоздатьНаборСловарей(ФайлыРазбораСловаря, Языки, КаталогСловарей);
МетодыПеревода.ПеревестиПроект(КаталогСловарей, Корень, ОсновнойЯзык, Языки, ФайлыПеревода);
ЕстьНовыеСлова = МетодыСловарей.СоздатьНаборСловарей(ФайлыРазбораСловаря, Языки, КаталогСловарей);
ФайлыФорматирования = ОпределитьНаборФайловФорматирования();
Если Не ЕстьНовыеСлова Тогда
МетодыФорматирования.ОтформатироватьНабор(ФайлыФорматирования);
МетодыПеревода.ПеревестиПроект(КаталогСловарей, Корень, ОсновнойЯзык, Языки, ФайлыПеревода);
Языки.Добавить(ОсновнойЯзык);
ФайлыФорматирования = ОпределитьНаборФайловФорматирования();
МетодыCLI.СформироватьCLI(Корень, Языки);
МетодыФормированияТестовGA.СоздатьНаборWorkflow(Языки, КаталогПараметровЛок, КаталогWorkflow);
МетодыФорматирования.ОтформатироватьНабор(ФайлыФорматирования);
Языки.Добавить(ОсновнойЯзык);
МетодыCLI.СформироватьCLI(Корень, Языки);
МетодыФормированияТестовGA.СоздатьНаборWorkflow(Языки, КаталогПараметровЛок, КаталогWorkflow);
Иначе
Сообщить("В словарях есть новые слова без перевода. Перевод и создание CLI не выполнено!");
КонецЕсли;
КонецПроцедуры

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
{
"version": "1.11.1",
"version": "1.12.0",
"root": "./src/",
"mainLang": "ru",
"packageSrc": "OInt/",

View File

@ -0,0 +1,156 @@
// OneScript: ./OInt/core/Modules/OPI_VKTeams.os
// Lib: VKTeams
// CLI: vkteams
// MIT License
// Copyright (c) 2023 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
// Uncomment if OneScript is executed
#Use "../../tools"
#Region Public
#Region CommonMethods
// Check token
// Checks if the bot token is functional
//
// Note
// Method at API documentation: [GET /self/get](@teams.vk.com/botapi/#/self/get_self_get)
//
// Parameters:
// Token - String - Bot token - token
//
// Returns:
// Map Of KeyAndValue - Serialized JSON response from VK Teams
Function CheckToken(Val Token) Export
URL = "/self/get";
Parameters = NormalizeMain(URL, Token);
Response = OPI_Tools.Get(URL, Parameters);
Return Response;
EndFunction
// Get events
// Receives bot events in Polling mode
//
// Note
// Method at API documentation: [GET /events/get](@teams.vk.com/botapi/#/events/get_events_get)
//
// Parameters:
// Token - String - Bot token - token
// LastID - String, Number - ID of the last event processed before this event - last
// Timeout - String, Number - Connection hold time for Long Polling - timeout
//
// Returns:
// Map Of KeyAndValue - Serialized JSON response from VK Teams
Function GetEvents(Val Token, Val LastID, Val Timeout = 0) Export
URL = "/events/get";
Parameters = NormalizeMain(URL, Token);
LastID = OPI_Tools.NumberToString(LastID);
OPI_Tools.AddField("lastEventId", LastID , "String", Parameters);
OPI_Tools.AddField("pollTime" , Timeout , "String", Parameters);
Response = OPI_Tools.Get(URL, Parameters);
Return Response;
EndFunction
#EndRegion
#Region MessageSending
// Send text message
// Sends a text message to a chat
//
// Note
// You can mention a user by appending their userId to the text in the following format @[userId]
// Method at API documentation: [GET /messages/sendText](@teams.vk.com/botapi/#/messages/get_messages_sendText)
//
// Parameters:
// Token - String - Bot token - token
// ChatID - String, Number - Chat ID for message sending - chatid
// Text - String - Message text - text
// ReplyID - String, Number - Replying message id if necessary - reply
// Keyboard - Array Of String - Buttons to the message if necessary - keyboard
// Markup - String - Markup type for message text: MarkdownV2 or HTML - parsemod
//
// Returns:
// Map Of KeyAndValue - Serialized JSON response from VK Teams
Function SendTextMessage(Val Token
, Val ChatID
, Val Text
, Val ReplyID = 0
, Val Keyboard = ""
, Val Markup = "MarkdownV2") Export
URL = "/messages/sendText";
Parameters = NormalizeMain(URL, Token);
OPI_Tools.AddField("chatId" , ChatID , "String" , Parameters);
OPI_Tools.AddField("text" , Text , "String" , Parameters);
OPI_Tools.AddField("replyMsgId" , ReplyID , "String" , Parameters);
OPI_Tools.AddField("inlineKeyboardMarkup", Keyboard , "Collection", Parameters);
OPI_Tools.AddField("parseMode" , Markup , "String" , Parameters);
Response = OPI_Tools.Get(URL, Parameters);
Return Response;
EndFunction
#EndRegion
#EndRegion
#Region Private
Function NormalizeMain(URL, Val Token)
URL = "https://myteam.mail.ru/bot/v1" + URL;
Parameters = New Structure;
OPI_Tools.AddField("token", Token, "String", Parameters);
Return Parameters;
EndFunction
#EndRegion

View File

@ -1,21 +1,22 @@
<package-def>
<module name="OPI_YandexDisk" file="core/Modules/OPI_YandexDisk.os"/>
<module name="OPI_Tools" file="tools/Modules/internal/Modules/OPI_Tools.os"/>
<module name="OPI_VK" file="core/Modules/OPI_VK.os"/>
<module name="OPI_Airtable" file="core/Modules/OPI_Airtable.os"/>
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
<module name="OPI_Viber" file="core/Modules/OPI_Viber.os"/>
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
<module name="OPI_Bitrix24" file="core/Modules/OPI_Bitrix24.os"/>
<module name="OPI_Dropbox" file="core/Modules/OPI_Dropbox.os"/>
<module name="OPI_TypeConversion" file="tools/Modules/OPI_TypeConversion.os"/>
<module name="OPI_Cryptography" file="tools/Modules/internal/Modules/OPI_Cryptography.os"/>
<module name="OPI_Twitter" file="core/Modules/OPI_Twitter.os"/>
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
<module name="OPI_YandexID" file="core/Modules/OPI_YandexID.os"/>
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
<module name="OPI_GoogleDrive" file="core/Modules/OPI_GoogleDrive.os"/>
<module name="OPI_GoogleCalendar" file="core/Modules/OPI_GoogleCalendar.os"/>
<module name="OPI_GoogleDrive" file="core/Modules/OPI_GoogleDrive.os"/>
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
<module name="OPI_Twitter" file="core/Modules/OPI_Twitter.os"/>
<module name="OPI_Viber" file="core/Modules/OPI_Viber.os"/>
<module name="OPI_VK" file="core/Modules/OPI_VK.os"/>
<module name="OPI_VKTeams" file="core/Modules/OPI_VKTeams.os"/>
<module name="OPI_YandexDisk" file="core/Modules/OPI_YandexDisk.os"/>
<module name="OPI_YandexID" file="core/Modules/OPI_YandexID.os"/>
<module name="OPI_Tools" file="tools/Modules/internal/Modules/OPI_Tools.os"/>
<module name="OPI_Cryptography" file="tools/Modules/internal/Modules/OPI_Cryptography.os"/>
<module name="OPI_TestDataRetrieval" file="tools/Modules/OPI_TestDataRetrieval.os"/>
<module name="OPI_TypeConversion" file="tools/Modules/OPI_TypeConversion.os"/>
</package-def>

View File

@ -1,5 +1,5 @@
Описание.Имя("oint")
.Версия("1.11.1")
.Версия("1.12.0")
.Автор("bayselonarrend")
.АдресАвтора("bayselonarrend@gmail.com")
.Описание("Открытый пакет интеграций с популярными API")

View File

@ -3227,6 +3227,30 @@ EndProcedure
#EndRegion
#Region VkTeams
Procedure VKT_CommonMethods() Export
TestParameters = New Structure;
OPI_TestDataRetrieval.ParameterToCollection("VkTeams_Token", TestParameters);
VkTeams_CheckToken(TestParameters);
VkTeams_GetEvents(TestParameters);
EndProcedure
Procedure VKT_MessagesSending() Export
TestParameters = New Structure;
OPI_TestDataRetrieval.ParameterToCollection("VkTeams_Token" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("VkTeams_ChatID", TestParameters);
VkTeams_SendTextMessage(TestParameters);
EndProcedure
#EndRegion
#EndRegion
#EndRegion
@ -3915,6 +3939,27 @@ Procedure Check_BitrixTimekeepingSettings(Val Result)
EndProcedure
Procedure Check_VKTUser(Val Result)
OPI_TestDataRetrieval.ExpectsThat(Result["ok"]).Равно(True);
OPI_TestDataRetrieval.ExpectsThat(Result["userId"]).Заполнено();
EndProcedure
Procedure Check_VKTEvents(Val Result)
OPI_TestDataRetrieval.ExpectsThat(Result["ok"]).Равно(True);
OPI_TestDataRetrieval.ExpectsThat(Result["events"]).ИмеетТип("Array");
EndProcedure
Procedure Check_VKTMessage(Val Result)
OPI_TestDataRetrieval.ExpectsThat(Result["ok"]).Равно(True);
OPI_TestDataRetrieval.ExpectsThat(Result["msgId"]).Заполнено();
EndProcedure
#EndRegion
#Region AtomicTests
@ -10182,6 +10227,82 @@ EndProcedure
#EndRegion
#Region VkTeams
Procedure VkTeams_CheckToken(FunctionParameters)
Token = FunctionParameters["VkTeams_Token"];
Result = OPI_VKTeams.CheckToken(Token);
// END
OPI_TestDataRetrieval.WriteLog(Result, "CheckToken", "VkTeams");
Check_VKTUser(Result);
OPI_Tools.Pause(5);
EndProcedure
Procedure VkTeams_GetEvents(FunctionParameters)
Token = FunctionParameters["VkTeams_Token"];
LastID = 0;
For N = 1 To 5 Do // In real work - endless цandtoл
Result = OPI_VKTeams.GetEvents(Token, LastID, 3);
OPI_TestDataRetrieval.WriteLog(Result, "GetEvents", "VkTeams");
Check_VKTEvents(Result); // SKIP
Events = Result["events"];
// Event handling...
If Not Events.Count() = 0 Then
LastID = Events[Events.UBound()]["eventId"];
EndIf;
EndDo;
// END
OPI_Tools.Pause(3);
EndProcedure
Procedure VkTeams_SendTextMessage(FunctionParameters)
Token = FunctionParameters["VkTeams_Token"];
ChatID = FunctionParameters["VkTeams_ChatID"];
Text = "Message text";
Result = OPI_VKTeams.SendTextMessage(Token, ChatID, Text);
OPI_TestDataRetrieval.WriteLog(Result, "SendTextMessage)", "VkTeams");
Check_VKTMessage(Result); // SKIP
Text = "<b>Bold text</b>";
ReplyID = Result["msgId"];
Markup = "HTML";
Result = OPI_VKTeams.SendTextMessage(Token, ChatID, Text, ReplyID, , Markup);
// END
OPI_TestDataRetrieval.WriteLog(Result, "SendTextMessage", "VkTeams");
Check_VKTMessage(Result);
OPI_Tools.Pause(5);
EndProcedure
#EndRegion
#EndRegion
#EndRegion

View File

@ -65,6 +65,7 @@ Function GetTestingSectionMapping() Export
Sections.Insert("Airtable" , StandardDependencies);
Sections.Insert("Dropbox" , StandardDependencies);
Sections.Insert("Bitrix24" , StandardDependencies);
Sections.Insert("VkTeams" , StandardDependencies);
Return Sections;
@ -86,6 +87,7 @@ Function GetTestTable() Export
AirT = "Airtable";
Dropbox = "Dropbox";
Bitrix = "Bitrix24";
VKT = "VkTeams";
TestTable = New ValueTable;
TestTable.Columns.Add("Method");
@ -235,6 +237,9 @@ Function GetTestTable() Export
NewTest(TestTable, "B24_DepartmentsManagment" , "Departments managment" , Bitrix);
NewTest(TestTable, "B2_UsersManagment" , "Users managment" , Bitrix);
NewTest(TestTable, "VKT_CommonMethods" , "Common methods" , VKT);
NewTest(TestTable, "VKT_MessagesSending" , "Messages sending" , VKT);
Return TestTable;
EndFunction

View File

@ -5,6 +5,10 @@
<key></key>
<value>OPI airtable</value>
</synonym>
<synonym>
<key>en</key>
<value>Airtable (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>
<clientOrdinaryApplication>true</clientOrdinaryApplication>

View File

@ -3,7 +3,7 @@
<name>OPI_Bitrix24</name>
<synonym>
<key>en</key>
<value>Bitrix24 (OPI)</value>
<value>Bitrix24 (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>

View File

@ -3,7 +3,7 @@
<name>OPI_Cryptography</name>
<synonym>
<key>en</key>
<value>Cryptography (OPI)</value>
<value>Cryptography (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>

View File

@ -7,7 +7,7 @@
</synonym>
<synonym>
<key>en</key>
<value>Drop box</value>
<value>Dropbox (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>

View File

@ -5,6 +5,10 @@
<key></key>
<value>OPI google calendar</value>
</synonym>
<synonym>
<key>en</key>
<value>Google Calendar (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>
<clientOrdinaryApplication>true</clientOrdinaryApplication>

View File

@ -5,6 +5,10 @@
<key></key>
<value>OPI google drive</value>
</synonym>
<synonym>
<key>en</key>
<value>Google Drive (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>
<clientOrdinaryApplication>true</clientOrdinaryApplication>

View File

@ -5,6 +5,10 @@
<key></key>
<value>OPI google sheets</value>
</synonym>
<synonym>
<key>en</key>
<value>Google Sheets (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>
<clientOrdinaryApplication>true</clientOrdinaryApplication>

View File

@ -5,6 +5,10 @@
<key></key>
<value>OPI google workspace</value>
</synonym>
<synonym>
<key>en</key>
<value>Google Workspace (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>
<clientOrdinaryApplication>true</clientOrdinaryApplication>

View File

@ -3,7 +3,7 @@
<name>OPI_Notion</name>
<synonym>
<key>en</key>
<value>Notion methods (OPI)</value>
<value>Notion (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>

View File

@ -3,7 +3,7 @@
<name>OPI_Slack</name>
<synonym>
<key>en</key>
<value>Slack</value>
<value>Slack (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>

View File

@ -3,7 +3,7 @@
<name>OPI_Telegram</name>
<synonym>
<key>en</key>
<value>Telegram integration methods (OPI)</value>
<value>Telegram (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>

View File

@ -65,6 +65,7 @@ Function GetTestingSectionMapping() Export
Sections.Insert("Airtable" , StandardDependencies);
Sections.Insert("Dropbox" , StandardDependencies);
Sections.Insert("Bitrix24" , StandardDependencies);
Sections.Insert("VkTeams" , StandardDependencies);
Return Sections;
@ -86,6 +87,7 @@ Function GetTestTable() Export
AirT = "Airtable";
Dropbox = "Dropbox";
Bitrix = "Bitrix24";
VKT = "VkTeams";
TestTable = New ValueTable;
TestTable.Columns.Add("Method");
@ -235,6 +237,9 @@ Function GetTestTable() Export
NewTest(TestTable, "B24_DepartmentsManagment" , "Departments managment" , Bitrix);
NewTest(TestTable, "B2_UsersManagment" , "Users managment" , Bitrix);
NewTest(TestTable, "VKT_CommonMethods" , "Common methods" , VKT);
NewTest(TestTable, "VKT_MessagesSending" , "Messages sending" , VKT);
Return TestTable;
EndFunction

View File

@ -3227,6 +3227,30 @@ EndProcedure
#EndRegion
#Region VkTeams
Procedure VKT_CommonMethods() Export
TestParameters = New Structure;
OPI_TestDataRetrieval.ParameterToCollection("VkTeams_Token", TestParameters);
VkTeams_CheckToken(TestParameters);
VkTeams_GetEvents(TestParameters);
EndProcedure
Procedure VKT_MessagesSending() Export
TestParameters = New Structure;
OPI_TestDataRetrieval.ParameterToCollection("VkTeams_Token" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("VkTeams_ChatID", TestParameters);
VkTeams_SendTextMessage(TestParameters);
EndProcedure
#EndRegion
#EndRegion
#EndRegion
@ -3915,6 +3939,27 @@ Procedure Check_BitrixTimekeepingSettings(Val Result)
EndProcedure
Procedure Check_VKTUser(Val Result)
OPI_TestDataRetrieval.ExpectsThat(Result["ok"]).Равно(True);
OPI_TestDataRetrieval.ExpectsThat(Result["userId"]).Заполнено();
EndProcedure
Procedure Check_VKTEvents(Val Result)
OPI_TestDataRetrieval.ExpectsThat(Result["ok"]).Равно(True);
OPI_TestDataRetrieval.ExpectsThat(Result["events"]).ИмеетТип("Array");
EndProcedure
Procedure Check_VKTMessage(Val Result)
OPI_TestDataRetrieval.ExpectsThat(Result["ok"]).Равно(True);
OPI_TestDataRetrieval.ExpectsThat(Result["msgId"]).Заполнено();
EndProcedure
#EndRegion
#Region AtomicTests
@ -10182,6 +10227,82 @@ EndProcedure
#EndRegion
#Region VkTeams
Procedure VkTeams_CheckToken(FunctionParameters)
Token = FunctionParameters["VkTeams_Token"];
Result = OPI_VKTeams.CheckToken(Token);
// END
// !OInt OPI_TestDataRetrieval.WriteLog(Result, "CheckToken", "VkTeams");
Check_VKTUser(Result);
OPI_Tools.Pause(5);
EndProcedure
Procedure VkTeams_GetEvents(FunctionParameters)
Token = FunctionParameters["VkTeams_Token"];
LastID = 0;
For N = 1 To 5 Do // In real work - endless цandtoл
Result = OPI_VKTeams.GetEvents(Token, LastID, 3);
// !OInt OPI_TestDataRetrieval.WriteLog(Result, "GetEvents", "VkTeams");
Check_VKTEvents(Result); // SKIP
Events = Result["events"];
// Event handling...
If Not Events.Count() = 0 Then
LastID = Events[Events.UBound()]["eventId"];
EndIf;
EndDo;
// END
OPI_Tools.Pause(3);
EndProcedure
Procedure VkTeams_SendTextMessage(FunctionParameters)
Token = FunctionParameters["VkTeams_Token"];
ChatID = FunctionParameters["VkTeams_ChatID"];
Text = "Message text";
Result = OPI_VKTeams.SendTextMessage(Token, ChatID, Text);
// !OInt OPI_TestDataRetrieval.WriteLog(Result, "SendTextMessage (проwithтое)", "VkTeams");
Check_VKTMessage(Result); // SKIP
Text = "<b>Bold text</b>";
ReplyID = Result["msgId"];
Markup = "HTML";
Result = OPI_VKTeams.SendTextMessage(Token, ChatID, Text, ReplyID, , Markup);
// END
// !OInt OPI_TestDataRetrieval.WriteLog(Result, "SendTextMessage", "VkTeams");
Check_VKTMessage(Result);
OPI_Tools.Pause(5);
EndProcedure
#EndRegion
#EndRegion
#EndRegion

View File

@ -3,7 +3,7 @@
<name>OPI_Tools</name>
<synonym>
<key>en</key>
<value>OPI tools</value>
<value>Tools (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>

View File

@ -3,7 +3,7 @@
<name>OPI_Twitter</name>
<synonym>
<key>en</key>
<value>Twitter methods (OPI)</value>
<value>Twitter (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>

View File

@ -3,7 +3,7 @@
<name>OPI_TypeConversion</name>
<synonym>
<key>en</key>
<value>Type conversion (OPI)</value>
<value>Type conversion (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>

View File

@ -3,7 +3,7 @@
<name>OPI_VK</name>
<synonym>
<key>en</key>
<value>VK integration methods (OPI)</value>
<value>VK (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>

View File

@ -0,0 +1,156 @@
// OneScript: ./OInt/core/Modules/OPI_VKTeams.os
// Lib: VKTeams
// CLI: vkteams
// MIT License
// Copyright (c) 2023 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
// Uncomment if OneScript is executed
// #Use "../../tools"
#Region Public
#Region CommonMethods
// Check token
// Checks if the bot token is functional
//
// Note
// Method at API documentation: [GET /self/get](@teams.vk.com/botapi/#/self/get_self_get)
//
// Parameters:
// Token - String - Bot token - token
//
// Returns:
// Map Of KeyAndValue - Serialized JSON response from VK Teams
Function CheckToken(Val Token) Export
URL = "/self/get";
Parameters = NormalizeMain(URL, Token);
Response = OPI_Tools.Get(URL, Parameters);
Return Response;
EndFunction
// Get events
// Receives bot events in Polling mode
//
// Note
// Method at API documentation: [GET /events/get](@teams.vk.com/botapi/#/events/get_events_get)
//
// Parameters:
// Token - String - Bot token - token
// LastID - String, Number - ID of the last event processed before this event - last
// Timeout - String, Number - Connection hold time for Long Polling - timeout
//
// Returns:
// Map Of KeyAndValue - Serialized JSON response from VK Teams
Function GetEvents(Val Token, Val LastID, Val Timeout = 0) Export
URL = "/events/get";
Parameters = NormalizeMain(URL, Token);
LastID = OPI_Tools.NumberToString(LastID);
OPI_Tools.AddField("lastEventId", LastID , "String", Parameters);
OPI_Tools.AddField("pollTime" , Timeout , "String", Parameters);
Response = OPI_Tools.Get(URL, Parameters);
Return Response;
EndFunction
#EndRegion
#Region MessageSending
// Send text message
// Sends a text message to a chat
//
// Note
// You can mention a user by appending their userId to the text in the following format @[userId]
// Method at API documentation: [GET /messages/sendText](@teams.vk.com/botapi/#/messages/get_messages_sendText)
//
// Parameters:
// Token - String - Bot token - token
// ChatID - String, Number - Chat ID for message sending - chatid
// Text - String - Message text - text
// ReplyID - String, Number - Replying message id if necessary - reply
// Keyboard - Array Of String - Buttons to the message if necessary - keyboard
// Markup - String - Markup type for message text: MarkdownV2 or HTML - parsemod
//
// Returns:
// Map Of KeyAndValue - Serialized JSON response from VK Teams
Function SendTextMessage(Val Token
, Val ChatID
, Val Text
, Val ReplyID = 0
, Val Keyboard = ""
, Val Markup = "MarkdownV2") Export
URL = "/messages/sendText";
Parameters = NormalizeMain(URL, Token);
OPI_Tools.AddField("chatId" , ChatID , "String" , Parameters);
OPI_Tools.AddField("text" , Text , "String" , Parameters);
OPI_Tools.AddField("replyMsgId" , ReplyID , "String" , Parameters);
OPI_Tools.AddField("inlineKeyboardMarkup", Keyboard , "Collection", Parameters);
OPI_Tools.AddField("parseMode" , Markup , "String" , Parameters);
Response = OPI_Tools.Get(URL, Parameters);
Return Response;
EndFunction
#EndRegion
#EndRegion
#Region Private
Function NormalizeMain(URL, Val Token)
URL = "https://myteam.mail.ru/bot/v1" + URL;
Parameters = New Structure;
OPI_Tools.AddField("token", Token, "String", Parameters);
Return Parameters;
EndFunction
#EndRegion

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="cba61dc6-38eb-4bff-83cd-34dbc233f294">
<name>OPI_VKTeams</name>
<synonym>
<key>en</key>
<value>VK Teams (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -3,7 +3,7 @@
<name>OPI_Viber</name>
<synonym>
<key>en</key>
<value>Viber integration methods (OPI)</value>
<value>Viber (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>

View File

@ -3,7 +3,7 @@
<name>OPI_YandexDisk</name>
<synonym>
<key>en</key>
<value>Yandex Disk methods (OPI)</value>
<value>Yandex.Disk (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>

View File

@ -3,7 +3,7 @@
<name>OPI_YandexID</name>
<synonym>
<key>en</key>
<value>Yandex ID methods (OPI)</value>
<value>YandexID (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>

View File

@ -26,7 +26,7 @@
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>English</scriptVariant>
<vendor>Bayselonarrend</vendor>
<version>1.11.1</version>
<version>1.12.0</version>
<detailedInformation>
<key>en</key>
<value>The Open Integration Package is a set of libraries for integrating with some popular APIs for 1C:Enterprise. It consists of common modules, each responsible for its own API, as well as several shared tool modules..</value>
@ -58,6 +58,7 @@
<commonModules>CommonModule.OPI_Airtable</commonModules>
<commonModules>CommonModule.OPI_Dropbox</commonModules>
<commonModules>CommonModule.OPI_Bitrix24</commonModules>
<commonModules>CommonModule.OPI_VKTeams</commonModules>
<commonModules>CommonModule.OPI_Tests</commonModules>
<commonModules>CommonModule.OPI_TestDataRetrieval</commonModules>
</mdclass:Configuration>

View File

@ -171,7 +171,7 @@
NewLine.Метод = "CreatePost";
NewLine.МетодПоиска = "CREATEPOST";
NewLine.Параметр = "--important";
NewLine.Описание = "Mark post as important (optional, def. val. - False)";
NewLine.Описание = "Mark post as important (optional, def. val. - No)";
NewLine.Область = "Feed posts managment";
@ -1323,7 +1323,7 @@
NewLine.Метод = "GetTasksFilterStructure";
NewLine.МетодПоиска = "GETTASKSFILTERSTRUCTURE";
NewLine.Параметр = "--empty";
NewLine.Описание = "True > structure with empty valuse, False > field descriptions at values (optional, def. val. - False)";
NewLine.Описание = "True > structure with empty valuse, False > field descriptions at values (optional, def. val. - No)";
NewLine.Область = "Tasks managment";
NewLine.ОписаниеМетода = "Return filter structure for GetTasksList";
@ -1580,7 +1580,7 @@
NewLine.Метод = "AddTasksChecklistElement";
NewLine.МетодПоиска = "ADDTASKSCHECKLISTELEMENT";
NewLine.Параметр = "--complete";
NewLine.Описание = "Mark as completed (optional, def. val. - False)";
NewLine.Описание = "Mark as completed (optional, def. val. - No)";
NewLine.Область = "Tasks checklists managment";
@ -2144,7 +2144,7 @@
NewLine.Метод = "GetCommentStructure";
NewLine.МетодПоиска = "GETCOMMENTSTRUCTURE";
NewLine.Параметр = "--empty";
NewLine.Описание = "True > structure with empty valuse, False > field descriptions at values (optional, def. val. - False)";
NewLine.Описание = "True > structure with empty valuse, False > field descriptions at values (optional, def. val. - No)";
NewLine.Область = "Comments and results managment";
NewLine.ОписаниеМетода = "Get comment fields structure";
@ -2206,7 +2206,7 @@
NewLine.Метод = "AddKanbanStage";
NewLine.МетодПоиска = "ADDKANBANSTAGE";
NewLine.Параметр = "--admin";
NewLine.Описание = "Allows you to add stages without checking permissions (for administrators) (optional, def. val. - False)";
NewLine.Описание = "Allows you to add stages without checking permissions (for administrators) (optional, def. val. - No)";
NewLine.Область = "Kanban";
@ -2277,7 +2277,7 @@
NewLine.Метод = "UpdateKanbansStage";
NewLine.МетодПоиска = "UPDATEKANBANSSTAGE";
NewLine.Параметр = "--admin";
NewLine.Описание = "Allows you to add stages without checking permissions (for administrators) (optional, def. val. - False)";
NewLine.Описание = "Allows you to add stages without checking permissions (for administrators) (optional, def. val. - No)";
NewLine.Область = "Kanban";
@ -2318,7 +2318,7 @@
NewLine.Метод = "DeleteKanbanStage";
NewLine.МетодПоиска = "DELETEKANBANSTAGE";
NewLine.Параметр = "--admin";
NewLine.Описание = "Allows you to add stages without checking permissions (for administrators) (optional, def. val. - False)";
NewLine.Описание = "Allows you to add stages without checking permissions (for administrators) (optional, def. val. - No)";
NewLine.Область = "Kanban";
@ -2359,7 +2359,7 @@
NewLine.Метод = "GetKanbanStages";
NewLine.МетодПоиска = "GETKANBANSTAGES";
NewLine.Параметр = "--admin";
NewLine.Описание = "Allows you to get stages without checking permissions (for administrators) (optional, def. val. - False)";
NewLine.Описание = "Allows you to get stages without checking permissions (for administrators) (optional, def. val. - No)";
NewLine.Область = "Kanban";
@ -3447,7 +3447,7 @@
NewLine.Метод = "GetFolderFilterStructure";
NewLine.МетодПоиска = "GETFOLDERFILTERSTRUCTURE";
NewLine.Параметр = "--empty";
NewLine.Описание = "True > structure with empty values, False > field types at values (optional, def. val. - False)";
NewLine.Описание = "True > structure with empty values, False > field types at values (optional, def. val. - No)";
NewLine.Область = "Catalogs managment";
@ -4012,7 +4012,7 @@
NewLine.Метод = "AddUsersToChat";
NewLine.МетодПоиска = "ADDUSERSTOCHAT";
NewLine.Параметр = "--hide";
NewLine.Описание = "Hide old messages from new members (optional, def. val. - False)";
NewLine.Описание = "Hide old messages from new members (optional, def. val. - No)";
NewLine.Область = "Chats and dialogs managment";
@ -4547,7 +4547,7 @@
NewLine.Метод = "GetChatStructure";
NewLine.МетодПоиска = "GETCHATSTRUCTURE";
NewLine.Параметр = "--empty";
NewLine.Описание = "True > structure with empty values, False > field types at values (optional, def. val. - False)";
NewLine.Описание = "True > structure with empty values, False > field types at values (optional, def. val. - No)";
NewLine.Область = "Chats and dialogs managment";
NewLine.ОписаниеМетода = "Get chat fields structure";
@ -5399,7 +5399,7 @@
NewLine.Метод = "ChangeUserStatus";
NewLine.МетодПоиска = "CHANGEUSERSTATUS";
NewLine.Параметр = "--fire";
NewLine.Описание = "True > Deactivation, False > Activation (optional, def. val. - True)";
NewLine.Описание = "True > Deactivation, False > Activation (optional, def. val. - Yes)";
NewLine.Область = "Users managment";
@ -5471,7 +5471,7 @@
NewLine.Метод = "GetUserFilterStructure";
NewLine.МетодПоиска = "GETUSERFILTERSTRUCTURE";
NewLine.Параметр = "--empty";
NewLine.Описание = "True > structure with empty valuse, False > field descriptions at values (optional, def. val. - False)";
NewLine.Описание = "True > structure with empty valuse, False > field descriptions at values (optional, def. val. - No)";
NewLine.Область = "Users managment";
NewLine.ОписаниеМетода = "Returns the field structure for filtering users in the FindUsers method";

View File

@ -142,7 +142,7 @@
NewLine.Метод = "GetObjectInformation";
NewLine.МетодПоиска = "GETOBJECTINFORMATION";
NewLine.Параметр = "--detail";
NewLine.Описание = "Add information fields for mediafiles (optional, def. val. - False)";
NewLine.Описание = "Add information fields for mediafiles (optional, def. val. - No)";
NewLine.Область = "File and directory management";
@ -173,7 +173,7 @@
NewLine.Метод = "GetListOfFolderFiles";
NewLine.МетодПоиска = "GETLISTOFFOLDERFILES";
NewLine.Параметр = "--detail";
NewLine.Описание = "Add information fields for mediafiles (optional, def. val. - False)";
NewLine.Описание = "Add information fields for mediafiles (optional, def. val. - No)";
NewLine.Область = "File and directory management";
@ -245,7 +245,7 @@
NewLine.Метод = "UploadFile";
NewLine.МетодПоиска = "UPLOADFILE";
NewLine.Параметр = "--overwrite";
NewLine.Описание = "Overwrite file in case of path conflicts (optional, def. val. - False)";
NewLine.Описание = "Overwrite file in case of path conflicts (optional, def. val. - No)";
NewLine.Область = "File and directory management";
@ -328,7 +328,7 @@
NewLine.Метод = "DeleteObject";
NewLine.МетодПоиска = "DELETEOBJECT";
NewLine.Параметр = "--permanently";
NewLine.Описание = "Delete object without the possibility of recovery (optional, def. val. - False)";
NewLine.Описание = "Delete object without the possibility of recovery (optional, def. val. - No)";
NewLine.Область = "File and directory management";
@ -681,7 +681,7 @@
NewLine.Метод = "AddUsersToFile";
NewLine.МетодПоиска = "ADDUSERSTOFILE";
NewLine.Параметр = "--readonly";
NewLine.Описание = "Prohibits file editing for the external user (optional, def. val. - True)";
NewLine.Описание = "Prohibits file editing for the external user (optional, def. val. - Yes)";
NewLine.Область = "Shared access settings";
@ -722,7 +722,7 @@
NewLine.Метод = "AddUsersToFolder";
NewLine.МетодПоиска = "ADDUSERSTOFOLDER";
NewLine.Параметр = "--readonly";
NewLine.Описание = "Prohibits file editing for the external user (optional, def. val. - True)";
NewLine.Описание = "Prohibits file editing for the external user (optional, def. val. - Yes)";
NewLine.Область = "Shared access settings";

View File

@ -246,7 +246,7 @@
NewLine.Метод = "EditListCalendar";
NewLine.МетодПоиска = "EDITLISTCALENDAR";
NewLine.Параметр = "--hidden";
NewLine.Описание = "Hidden calendar (optional, def. val. - False)";
NewLine.Описание = "Hidden calendar (optional, def. val. - No)";
NewLine.Область = "Calendar list management";

View File

@ -58,7 +58,7 @@
NewLine.Метод = "GetDirectoriesList";
NewLine.МетодПоиска = "GETDIRECTORIESLIST";
NewLine.Параметр = "--depth";
NewLine.Описание = "Adds a list of files to the directory fields (optional, def. val. - False)";
NewLine.Описание = "Adds a list of files to the directory fields (optional, def. val. - No)";
NewLine.Область = "File and directory management";

View File

@ -27,7 +27,7 @@
NewLine.Метод = "FormCodeRetrievalLink";
NewLine.МетодПоиска = "FORMCODERETRIEVALLINK";
NewLine.Параметр = "--calendar";
NewLine.Описание = "Calendar methods permission (optional, def. val. - True)";
NewLine.Описание = "Calendar methods permission (optional, def. val. - Yes)";
NewLine.Область = "Public";
@ -37,7 +37,7 @@
NewLine.Метод = "FormCodeRetrievalLink";
NewLine.МетодПоиска = "FORMCODERETRIEVALLINK";
NewLine.Параметр = "--drive";
NewLine.Описание = "Drive methods permission (optional, def. val. - True)";
NewLine.Описание = "Drive methods permission (optional, def. val. - Yes)";
NewLine.Область = "Public";
@ -47,7 +47,7 @@
NewLine.Метод = "FormCodeRetrievalLink";
NewLine.МетодПоиска = "FORMCODERETRIEVALLINK";
NewLine.Параметр = "--sheets";
NewLine.Описание = "Sheets methods permission (optional, def. val. - True)";
NewLine.Описание = "Sheets methods permission (optional, def. val. - Yes)";
NewLine.Область = "Public";

View File

@ -166,7 +166,7 @@
NewLine.Метод = "EditPageProperties";
NewLine.МетодПоиска = "EDITPAGEPROPERTIES";
NewLine.Параметр = "--archive";
NewLine.Описание = "Archive page or not (boolean) (optional, def. val. - False)";
NewLine.Описание = "Archive page or not (boolean) (optional, def. val. - No)";
NewLine.Область = "Page management";
@ -383,7 +383,7 @@
NewLine.Метод = "ReturnBlock";
NewLine.МетодПоиска = "RETURNBLOCK";
NewLine.Параметр = "--core";
NewLine.Описание = "True > service fields are deleted, only the block itself remains (optional, def. val. - True)";
NewLine.Описание = "True > service fields are deleted, only the block itself remains (optional, def. val. - Yes)";
NewLine.Область = "Blocks managment";

View File

@ -254,7 +254,7 @@
NewLine.Метод = "DeleteMessage";
NewLine.МетодПоиска = "DELETEMESSAGE";
NewLine.Параметр = "--issheduled";
NewLine.Описание = "Indicator of deleting a delayed message (optional, def. val. - False)";
NewLine.Описание = "Indicator of deleting a delayed message (optional, def. val. - No)";
NewLine.Область = "Message management";
@ -378,7 +378,7 @@
NewLine.Метод = "GetChannelList";
NewLine.МетодПоиска = "GETCHANNELLIST";
NewLine.Параметр = "--notarchived";
NewLine.Описание = "Indicator of excluding archived channels (optional, def. val. - False)";
NewLine.Описание = "Indicator of excluding archived channels (optional, def. val. - No)";
NewLine.Область = "Channel management";
@ -450,7 +450,7 @@
NewLine.Метод = "CreateChannel";
NewLine.МетодПоиска = "CREATECHANNEL";
NewLine.Параметр = "--private";
NewLine.Описание = "Create channel as private (optional, def. val. - False)";
NewLine.Описание = "Create channel as private (optional, def. val. - No)";
NewLine.Область = "Channel management";

View File

@ -709,7 +709,7 @@
NewLine.Метод = "SendPoll";
NewLine.МетодПоиска = "SENDPOLL";
NewLine.Параметр = "--anonymous";
NewLine.Описание = "Poll anonymity (optional, def. val. - True)";
NewLine.Описание = "Poll anonymity (optional, def. val. - Yes)";
NewLine.Область = "Data sending";
@ -771,7 +771,7 @@
NewLine.Метод = "FormKeyboardFromButtonArray";
NewLine.МетодПоиска = "FORMKEYBOARDFROMBUTTONARRAY";
NewLine.Параметр = "--under";
NewLine.Описание = "Keyboard under the message or on the bottom panel (optional, def. val. - False)";
NewLine.Описание = "Keyboard under the message or on the bottom panel (optional, def. val. - No)";
NewLine.Область = "Data sending";
@ -781,7 +781,7 @@
NewLine.Метод = "FormKeyboardFromButtonArray";
NewLine.МетодПоиска = "FORMKEYBOARDFROMBUTTONARRAY";
NewLine.Параметр = "--column";
NewLine.Описание = "True > buttons are displayed in a column, False > in a row (optional, def. val. - True)";
NewLine.Описание = "True > buttons are displayed in a column, False > in a row (optional, def. val. - Yes)";
NewLine.Область = "Data sending";

View File

@ -58,7 +58,7 @@
NewLine.Метод = "CreatePost";
NewLine.МетодПоиска = "CREATEPOST";
NewLine.Параметр = "--ad";
NewLine.Описание = "Sign ""This is an ad"" (optional, def. val. - False)";
NewLine.Описание = "Sign ""This is an ad"" (optional, def. val. - No)";
NewLine.Область = "Community managment";
@ -118,7 +118,7 @@
NewLine.Метод = "CreateCompositePost";
NewLine.МетодПоиска = "CREATECOMPOSITEPOST";
NewLine.Параметр = "--ad";
NewLine.Описание = "Sign ""This is an ad"" (optional, def. val. - False)";
NewLine.Описание = "Sign ""This is an ad"" (optional, def. val. - No)";
NewLine.Область = "Community managment";
@ -578,7 +578,7 @@
NewLine.Метод = "CloseDiscussion";
NewLine.МетодПоиска = "CLOSEDISCUSSION";
NewLine.Параметр = "--remove";
NewLine.Описание = "Delete completely (True) or close (optional, def. val. - False)";
NewLine.Описание = "Delete completely (True) or close (optional, def. val. - No)";
NewLine.Область = "Discussion management";
@ -748,7 +748,7 @@
NewLine.Метод = "MakeRepost";
NewLine.МетодПоиска = "MAKEREPOST";
NewLine.Параметр = "--ad";
NewLine.Описание = "Sign of an advertising post (optional, def. val. - False)";
NewLine.Описание = "Sign of an advertising post (optional, def. val. - No)";
NewLine.Область = "Interactive actions";
@ -1510,7 +1510,7 @@
NewLine.Метод = "CreateProductCollection";
NewLine.МетодПоиска = "CREATEPRODUCTCOLLECTION";
NewLine.Параметр = "--main";
NewLine.Описание = "Main (optional, def. val. - False)";
NewLine.Описание = "Main (optional, def. val. - No)";
NewLine.Область = "Product selection management";
@ -1520,7 +1520,7 @@
NewLine.Метод = "CreateProductCollection";
NewLine.МетодПоиска = "CREATEPRODUCTCOLLECTION";
NewLine.Параметр = "--hidden";
NewLine.Описание = "Hidden (optional, def. val. - False)";
NewLine.Описание = "Hidden (optional, def. val. - No)";
NewLine.Область = "Product selection management";
@ -1580,7 +1580,7 @@
NewLine.Метод = "EditProductCollection";
NewLine.МетодПоиска = "EDITPRODUCTCOLLECTION";
NewLine.Параметр = "--main";
NewLine.Описание = "Main (optional, def. val. - False)";
NewLine.Описание = "Main (optional, def. val. - No)";
NewLine.Область = "Product selection management";
@ -1590,7 +1590,7 @@
NewLine.Метод = "EditProductCollection";
NewLine.МетодПоиска = "EDITPRODUCTCOLLECTION";
NewLine.Параметр = "--hidden";
NewLine.Описание = "Hidden (optional, def. val. - False)";
NewLine.Описание = "Hidden (optional, def. val. - No)";
NewLine.Область = "Product selection management";

View File

@ -0,0 +1,117 @@
Function ПолучитьСостав() Export
CompositionTable = New ValueTable();
CompositionTable.Columns.Add("Библиотека");
CompositionTable.Columns.Add("Модуль");
CompositionTable.Columns.Add("Метод");
CompositionTable.Columns.Add("МетодПоиска");
CompositionTable.Columns.Add("Параметр");
CompositionTable.Columns.Add("Описание");
CompositionTable.Columns.Add("ОписаниеМетода");
CompositionTable.Columns.Add("Область");
NewLine = CompositionTable.Add();
NewLine.Библиотека = "vkteams";
NewLine.Модуль = "OPI_VKTeams";
NewLine.Метод = "CheckToken";
NewLine.МетодПоиска = "CHECKTOKEN";
NewLine.Параметр = "--token";
NewLine.Описание = "Bot token";
NewLine.Область = "Common methods";
NewLine.ОписаниеМетода = "Checks if the bot token is functional";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "vkteams";
NewLine.Модуль = "OPI_VKTeams";
NewLine.Метод = "GetEvents";
NewLine.МетодПоиска = "GETEVENTS";
NewLine.Параметр = "--token";
NewLine.Описание = "Bot token";
NewLine.Область = "Common methods";
NewLine.ОписаниеМетода = "Receives bot events in Polling mode";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "vkteams";
NewLine.Модуль = "OPI_VKTeams";
NewLine.Метод = "GetEvents";
NewLine.МетодПоиска = "GETEVENTS";
NewLine.Параметр = "--last";
NewLine.Описание = "ID of the last event processed before this event";
NewLine.Область = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "vkteams";
NewLine.Модуль = "OPI_VKTeams";
NewLine.Метод = "GetEvents";
NewLine.МетодПоиска = "GETEVENTS";
NewLine.Параметр = "--timeout";
NewLine.Описание = "Connection hold time for Long Polling (optional, def. val. - Empty value)";
NewLine.Область = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "vkteams";
NewLine.Модуль = "OPI_VKTeams";
NewLine.Метод = "SendTextMessage";
NewLine.МетодПоиска = "SENDTEXTMESSAGE";
NewLine.Параметр = "--token";
NewLine.Описание = "Bot token";
NewLine.Область = "Message sending";
NewLine.ОписаниеМетода = "Sends a text message to a chat";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "vkteams";
NewLine.Модуль = "OPI_VKTeams";
NewLine.Метод = "SendTextMessage";
NewLine.МетодПоиска = "SENDTEXTMESSAGE";
NewLine.Параметр = "--chatid";
NewLine.Описание = "Chat ID for message sending";
NewLine.Область = "Message sending";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "vkteams";
NewLine.Модуль = "OPI_VKTeams";
NewLine.Метод = "SendTextMessage";
NewLine.МетодПоиска = "SENDTEXTMESSAGE";
NewLine.Параметр = "--text";
NewLine.Описание = "Message text";
NewLine.Область = "Message sending";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "vkteams";
NewLine.Модуль = "OPI_VKTeams";
NewLine.Метод = "SendTextMessage";
NewLine.МетодПоиска = "SENDTEXTMESSAGE";
NewLine.Параметр = "--reply";
NewLine.Описание = "Replying message id if necessary (optional, def. val. - Empty value)";
NewLine.Область = "Message sending";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "vkteams";
NewLine.Модуль = "OPI_VKTeams";
NewLine.Метод = "SendTextMessage";
NewLine.МетодПоиска = "SENDTEXTMESSAGE";
NewLine.Параметр = "--keyboard";
NewLine.Описание = "Buttons to the message if necessary (optional, def. val. - Empty value)";
NewLine.Область = "Message sending";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "vkteams";
NewLine.Модуль = "OPI_VKTeams";
NewLine.Метод = "SendTextMessage";
NewLine.МетодПоиска = "SENDTEXTMESSAGE";
NewLine.Параметр = "--parsemod";
NewLine.Описание = "Markup type for message text: MarkdownV2 or HTML (optional, def. val. - MarkdownV2)";
NewLine.Область = "Message sending";
Return CompositionTable;
EndFunction

View File

@ -90,7 +90,7 @@
NewLine.Метод = "DeleteObject";
NewLine.МетодПоиска = "DELETEOBJECT";
NewLine.Параметр = "--can";
NewLine.Описание = "To cart (optional, def. val. - True)";
NewLine.Описание = "To cart (optional, def. val. - Yes)";
NewLine.Область = "File and folder management";
@ -131,7 +131,7 @@
NewLine.Метод = "CreateObjectCopy";
NewLine.МетодПоиска = "CREATEOBJECTCOPY";
NewLine.Параметр = "--rewrite";
NewLine.Описание = "Overwrite if a file with the same name already exists (optional, def. val. - False)";
NewLine.Описание = "Overwrite if a file with the same name already exists (optional, def. val. - No)";
NewLine.Область = "File and folder management";
@ -237,7 +237,7 @@
NewLine.Метод = "GetFilesList";
NewLine.МетодПоиска = "GETFILESLIST";
NewLine.Параметр = "--datesort";
NewLine.Описание = "True > sort by date, False > alphabetically (optional, def. val. - False)";
NewLine.Описание = "True > sort by date, False > alphabetically (optional, def. val. - No)";
NewLine.Область = "File and folder management";
@ -278,7 +278,7 @@
NewLine.Метод = "MoveObject";
NewLine.МетодПоиска = "MOVEOBJECT";
NewLine.Параметр = "--rewrite";
NewLine.Описание = "Overwrite if a file with the same name already exists (optional, def. val. - False)";
NewLine.Описание = "Overwrite if a file with the same name already exists (optional, def. val. - No)";
NewLine.Область = "File and folder management";
@ -319,7 +319,7 @@
NewLine.Метод = "UploadFile";
NewLine.МетодПоиска = "UPLOADFILE";
NewLine.Параметр = "--rewrite";
NewLine.Описание = "Overwrite if a file with the same name already exists (optional, def. val. - False)";
NewLine.Описание = "Overwrite if a file with the same name already exists (optional, def. val. - No)";
NewLine.Область = "File and folder management";

View File

@ -1,27 +1,28 @@
#Использовать "./internal"
Функция ПолучитьВерсию() Экспорт
Возврат "1.11.1";
Возврат "1.12.0";
КонецФункции
Функция ПолучитьСоответствиеКомандМодулей() Экспорт
СоответствиеКомандМодулей = Новый Соответствие();
СоответствиеКомандМодулей.Вставить("tools", "Утилиты");
СоответствиеКомандМодулей.Вставить("dropbox", "OPI_Dropbox");
СоответствиеКомандМодулей.Вставить("twitter", "OPI_Twitter");
СоответствиеКомандМодулей.Вставить("bitrix24", "OPI_Bitrix24");
СоответствиеКомандМодулей.Вставить("yadisk", "OPI_YandexDisk");
СоответствиеКомандМодулей.Вставить("google", "OPI_GoogleWorkspace");
СоответствиеКомандМодулей.Вставить("telegram", "OPI_Telegram");
СоответствиеКомандМодулей.Вставить("airtable", "OPI_Airtable");
СоответствиеКомандМодулей.Вставить("gdrive", "OPI_GoogleDrive");
СоответствиеКомандМодулей.Вставить("bitrix24", "OPI_Bitrix24");
СоответствиеКомандМодулей.Вставить("dropbox", "OPI_Dropbox");
СоответствиеКомандМодулей.Вставить("gcalendar", "OPI_GoogleCalendar");
СоответствиеКомандМодулей.Вставить("notion", "OPI_Notion");
СоответствиеКомандМодулей.Вставить("viber", "OPI_Viber");
СоответствиеКомандМодулей.Вставить("yandex", "OPI_YandexID");
СоответствиеКомандМодулей.Вставить("gdrive", "OPI_GoogleDrive");
СоответствиеКомандМодулей.Вставить("gsheets", "OPI_GoogleSheets");
СоответствиеКомандМодулей.Вставить("vk", "OPI_VK");
СоответствиеКомандМодулей.Вставить("google", "OPI_GoogleWorkspace");
СоответствиеКомандМодулей.Вставить("notion", "OPI_Notion");
СоответствиеКомандМодулей.Вставить("slack", "OPI_Slack");
СоответствиеКомандМодулей.Вставить("telegram", "OPI_Telegram");
СоответствиеКомандМодулей.Вставить("twitter", "OPI_Twitter");
СоответствиеКомандМодулей.Вставить("viber", "OPI_Viber");
СоответствиеКомандМодулей.Вставить("vk", "OPI_VK");
СоответствиеКомандМодулей.Вставить("vkteams", "OPI_VKTeams");
СоответствиеКомандМодулей.Вставить("yadisk", "OPI_YandexDisk");
СоответствиеКомандМодулей.Вставить("yandex", "OPI_YandexID");
Возврат СоответствиеКомандМодулей;
КонецФункции

View File

@ -0,0 +1,156 @@
// OneScript: ./OInt/core/Modules/OPI_VKTeams.os
// Lib: VKTeams
// CLI: vkteams
// MIT License
// Copyright (c) 2023 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
// Раскомментировать, если выполняется OneScript
#Использовать "../../tools"
#Область ПрограммныйИнтерфейс
#Область ОбщиеМетоды
// Проверить токен
// Проверяет работоспособность токена бота
//
// Примечание:
// Метод в документации API: [GET /self/get](@teams.vk.com/botapi/#/self/get_self_get)
//
// Параметры:
// Токен - Строка - Токен бота - token
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Teams
Функция ПроверитьТокен(Знач Токен) Экспорт
URL = "/self/get";
Параметры = НормализоватьОснову(URL, Токен);
Ответ = OPI_Инструменты.Get(URL, Параметры);
Возврат Ответ;
КонецФункции
// Получить события
// Получает события бота в Polling режиме
//
// Примечание:
// Метод в документации API: [GET /events/get](@teams.vk.com/botapi/#/events/get_events_get)
//
// Параметры:
// Токен - Строка - Токен бота - token
// IDПоследнего - Строка, Число - ID последнего обработанного до этого события - last
// Таймаут - Строка, Число - Время удержания соединения для Long Polling - timeout
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Teams
Функция ПолучитьСобытия(Знач Токен, Знач IDПоследнего, Знач Таймаут = 0) Экспорт
URL = "/events/get";
Параметры = НормализоватьОснову(URL, Токен);
IDПоследнего = OPI_Инструменты.ЧислоВСтроку(IDПоследнего);
OPI_Инструменты.ДобавитьПоле("lastEventId", IDПоследнего, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("pollTime" , Таймаут , "Строка", Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры);
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область ОтправкаСообщений
// Отправить текстовое сообщение
// Отправляет текстовое сообщение в чат
//
// Примечание:
// Можно упомянуть пользователя, добавив в текст его userId в следующем формате @[userId]
// Метод в документации API: [GET /messages/sendText](@teams.vk.com/botapi/#/messages/get_messages_sendText)
//
// Параметры:
// Токен - Строка - Токен бота - token
// IDЧата - Строка, Число - ID чата для отправки сообщения - chatid
// Текст - Строка - Текст сообщения - text
// IDЦитируемого - Строка, Число - ID цитируемого сообщения, если необходимо - reply
// Клавиатура - Массив Из Строка - Кнопки к сообщению, если необходимо - keyboard
// Разметка - Строка - Вид разметки для текста сообщения: MarkdownV2 или HTML - parsemod
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Teams
Функция ОтправитьТекстовоеСообщение(Знач Токен
, Знач IDЧата
, Знач Текст
, Знач IDЦитируемого = 0
, Знач Клавиатура = ""
, Знач Разметка = "MarkdownV2") Экспорт
URL = "/messages/sendText";
Параметры = НормализоватьОснову(URL, Токен);
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("text" , Текст , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("replyMsgId" , IDЦитируемого, "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("inlineKeyboardMarkup", Клавиатура , "Коллекция", Параметры);
OPI_Инструменты.ДобавитьПоле("parseMode" , Разметка , "Строка" , Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры);
Возврат Ответ;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция НормализоватьОснову(URL, Знач Токен)
URL = "https://myteam.mail.ru/bot/v1" + URL;
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("token", Токен, "Строка", Параметры);
Возврат Параметры;
КонецФункции
#КонецОбласти

View File

@ -1,21 +1,22 @@
<package-def>
<module name="OPI_YandexDisk" file="core/Modules/OPI_YandexDisk.os"/>
<module name="OPI_Инструменты" file="tools/Modules/internal/Modules/OPI_Инструменты.os"/>
<module name="OPI_VK" file="core/Modules/OPI_VK.os"/>
<module name="OPI_Airtable" file="core/Modules/OPI_Airtable.os"/>
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
<module name="OPI_Viber" file="core/Modules/OPI_Viber.os"/>
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
<module name="OPI_Bitrix24" file="core/Modules/OPI_Bitrix24.os"/>
<module name="OPI_Dropbox" file="core/Modules/OPI_Dropbox.os"/>
<module name="OPI_ПреобразованиеТипов" file="tools/Modules/OPI_ПреобразованиеТипов.os"/>
<module name="OPI_Криптография" file="tools/Modules/internal/Modules/OPI_Криптография.os"/>
<module name="OPI_Twitter" file="core/Modules/OPI_Twitter.os"/>
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
<module name="OPI_YandexID" file="core/Modules/OPI_YandexID.os"/>
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
<module name="OPI_GoogleDrive" file="core/Modules/OPI_GoogleDrive.os"/>
<module name="OPI_GoogleCalendar" file="core/Modules/OPI_GoogleCalendar.os"/>
<module name="OPI_GoogleDrive" file="core/Modules/OPI_GoogleDrive.os"/>
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
<module name="OPI_Twitter" file="core/Modules/OPI_Twitter.os"/>
<module name="OPI_Viber" file="core/Modules/OPI_Viber.os"/>
<module name="OPI_VK" file="core/Modules/OPI_VK.os"/>
<module name="OPI_VKTeams" file="core/Modules/OPI_VKTeams.os"/>
<module name="OPI_YandexDisk" file="core/Modules/OPI_YandexDisk.os"/>
<module name="OPI_YandexID" file="core/Modules/OPI_YandexID.os"/>
<module name="OPI_Инструменты" file="tools/Modules/internal/Modules/OPI_Инструменты.os"/>
<module name="OPI_Криптография" file="tools/Modules/internal/Modules/OPI_Криптография.os"/>
<module name="OPI_ПолучениеДанныхТестов" file="tools/Modules/OPI_ПолучениеДанныхТестов.os"/>
<module name="OPI_ПреобразованиеТипов" file="tools/Modules/OPI_ПреобразованиеТипов.os"/>
</package-def>

View File

@ -1,5 +1,5 @@
Описание.Имя("oint")
.Версия("1.11.1")
.Версия("1.12.0")
.Автор("bayselonarrend")
.АдресАвтора("bayselonarrend@gmail.com")
.Описание("Открытый пакет интеграций с популярными API")

View File

@ -3227,6 +3227,30 @@
#КонецОбласти
#Область VkTeams
Процедура ВКТ_ОбщиеМетоды() Экспорт
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token", ПараметрыТеста);
VkTeams_ПроверитьТокен(ПараметрыТеста);
VkTeams_ПолучитьСобытия(ПараметрыТеста);
КонецПроцедуры
Процедура ВКТ_ОтправкаСообщений() Экспорт
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID", ПараметрыТеста);
VkTeams_ОтправитьТекстовоеСообщение(ПараметрыТеста);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти
@ -3915,6 +3939,27 @@
КонецПроцедуры
Процедура Проверка_ВКТПользователь(Знач Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["userId"]).Заполнено();
КонецПроцедуры
Процедура Проверка_ВКТСобытия(Знач Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["events"]).ИмеетТип("Массив");
КонецПроцедуры
Процедура Проверка_ВКТСообщение(Знач Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["msgId"]).Заполнено();
КонецПроцедуры
#КонецОбласти
#Область АтомарныеТесты
@ -10182,6 +10227,82 @@
#КонецОбласти
#Область VkTeams
Процедура VkTeams_ПроверитьТокен(ПараметрыФункции)
Токен = ПараметрыФункции["VkTeams_Token"];
Результат = OPI_VKTeams.ПроверитьТокен(Токен);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПроверитьТокен", "VkTeams");
Проверка_ВКТПользователь(Результат);
OPI_Инструменты.Пауза(5);
КонецПроцедуры
Процедура VkTeams_ПолучитьСобытия(ПараметрыФункции)
Токен = ПараметрыФункции["VkTeams_Token"];
IDПоследнего = 0;
Для Н = 1 По 5 Цикл // В реальной работе - бесконечный цикл
Результат = OPI_VKTeams.ПолучитьСобытия(Токен, IDПоследнего, 3);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСобытия", "VkTeams");
Проверка_ВКТСобытия(Результат); // SKIP
События = Результат["events"];
// Обработка событий...
Если Не События.Количество() = 0 Тогда
IDПоследнего = События[События.ВГраница()]["eventId"];
КонецЕсли;
КонецЦикла;
// END
OPI_Инструменты.Пауза(3);
КонецПроцедуры
Процедура VkTeams_ОтправитьТекстовоеСообщение(ПараметрыФункции)
Токен = ПараметрыФункции["VkTeams_Token"];
IDЧата = ПараметрыФункции["VkTeams_ChatID"];
Текст = "Текст сообщения";
Результат = OPI_VKTeams.ОтправитьТекстовоеСообщение(Токен, IDЧата, Текст);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение (простое)", "VkTeams");
Проверка_ВКТСообщение(Результат); // SKIP
Текст = "<b>Полужирный текст сообщения</b>";
IDЦитируемого = Результат["msgId"];
Разметка = "HTML";
Результат = OPI_VKTeams.ОтправитьТекстовоеСообщение(Токен, IDЧата, Текст, IDЦитируемого, , Разметка);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение", "VkTeams");
Проверка_ВКТСообщение(Результат);
OPI_Инструменты.Пауза(5);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти

View File

@ -65,6 +65,7 @@
Разделы.Вставить("Airtable" , СтандартныеЗависимости);
Разделы.Вставить("Dropbox" , СтандартныеЗависимости);
Разделы.Вставить("Bitrix24" , СтандартныеЗависимости);
Разделы.Вставить("VkTeams" , СтандартныеЗависимости);
Возврат Разделы;
@ -86,6 +87,7 @@
АирТ = "Airtable";
ДропБокс = "Dropbox";
Битрикс = "Bitrix24";
ВКТ = "VkTeams";
ТаблицаТестов = Новый ТаблицаЗначений;
ТаблицаТестов.Колонки.Добавить("Метод");
@ -235,6 +237,9 @@
НовыйТест(ТаблицаТестов, "Б24_УправлениеПодразделениями" , "Управление подразделениями" , Битрикс);
НовыйТест(ТаблицаТестов, "Б24_УправлениеПользователями" , "Управление пользователями" , Битрикс);
НовыйТест(ТаблицаТестов, "ВКТ_ОбщиеМетоды" , "Общие методы" , ВКТ);
НовыйТест(ТаблицаТестов, "ВКТ_ОтправкаСообщений" , "Отправка сообщений" , ВКТ);
Возврат ТаблицаТестов;
КонецФункции

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_VKTeams.os
// OneScript: ./OInt/core/Modules/OPI_VKTeams.os
// Lib: VKTeams
// CLI: vkteams
@ -49,49 +49,49 @@
//
// Примечание:
// Метод в документации API: [GET /self/get](@teams.vk.com/botapi/#/self/get_self_get)
//
//
// Параметры:
// Токен - Строка - Токен бота - token
//
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Teams
Функция ПроверитьТокен(Знач Токен) Экспорт
URL = "/self/get";
Параметры = НормализоватьОснову(URL, Токен);
URL = "/self/get";
Параметры = НормализоватьОснову(URL, Токен);
Ответ = OPI_Инструменты.Get(URL, Параметры);
Возврат Ответ;
КонецФункции
// Получить события
// Получает события бота в Polling режиме
//
//
// Примечание:
// Метод в документации API: [GET /events/get](@teams.vk.com/botapi/#/events/get_events_get)
//
//
// Параметры:
// Токен - Строка - Токен бота - token
// IDПоследнего - Строка, Число - ID последнего обработанного до этого события - last
// Таймаут - Строка, Число - Время удержания соединения для Long Polling - timeout
//
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Teams
Функция ПолучитьСобытия(Знач Токен, Знач IDПоследнего, Знач Таймаут = 0) Экспорт
URL = "/events/get";
Параметры = НормализоватьОснову(URL, Токен);
URL = "/events/get";
Параметры = НормализоватьОснову(URL, Токен);
IDПоследнего = OPI_Инструменты.ЧислоВСтроку(IDПоследнего);
OPI_Инструменты.ДобавитьПоле("lastEventId", IDПоследнего, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("pollTime" , Таймаут , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("lastEventId", IDПоследнего, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("pollTime" , Таймаут , "Строка", Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры);
Возврат Ответ;
КонецФункции
#КонецОбласти
@ -100,11 +100,11 @@
// Отправить текстовое сообщение
// Отправляет текстовое сообщение в чат
//
//
// Примечание:
// Можно упомянуть пользователя, добавив в текст его userId в следующем формате @[userId]
// Метод в документации API: [GET /messages/sendText](@teams.vk.com/botapi/#/messages/get_messages_sendText)
//
//
// Параметры:
// Токен - Строка - Токен бота - token
// IDЧата - Строка, Число - ID чата для отправки сообщения - chatid
@ -112,29 +112,29 @@
// IDЦитируемого - Строка, Число - ID цитируемого сообщения, если необходимо - reply
// Клавиатура - Массив Из Строка - Кнопки к сообщению, если необходимо - keyboard
// Разметка - Строка - Вид разметки для текста сообщения: MarkdownV2 или HTML - parsemod
//
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK Teams
Функция ОтправитьТекстовоеСообщение(Знач Токен
, Знач IDЧата
, Знач Текст
, Знач IDЦитируемого = 0
, Знач Клавиатура = ""
, Знач Разметка = "MarkdownV2") Экспорт
URL = "/messages/sendText";
Параметры = НормализоватьОснову(URL, Токен);
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("text" , Текст , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("replyMsgId" , IDЦитируемого, "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("inlineKeyboardMarkup", Клавиатура , "Коллекция", Параметры);
OPI_Инструменты.ДобавитьПоле("parseMode" , Разметка , "Строка" , Параметры);
, Знач IDЧата
, Знач Текст
, Знач IDЦитируемого = 0
, Знач Клавиатура = ""
, Знач Разметка = "MarkdownV2") Экспорт
URL = "/messages/sendText";
Параметры = НормализоватьОснову(URL, Токен);
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("text" , Текст , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("replyMsgId" , IDЦитируемого, "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("inlineKeyboardMarkup", Клавиатура , "Коллекция", Параметры);
OPI_Инструменты.ДобавитьПоле("parseMode" , Разметка , "Строка" , Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры);
Возврат Ответ;
КонецФункции
#КонецОбласти
@ -144,13 +144,13 @@
#Область СлужебныеПроцедурыИФункции
Функция НормализоватьОснову(URL, Знач Токен)
URL = "https://myteam.mail.ru/bot/v1" + URL;
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("token", Токен, "Строка", Параметры);
Возврат Параметры;
URL = "https://myteam.mail.ru/bot/v1" + URL;
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("token", Токен, "Строка", Параметры);
Возврат Параметры;
КонецФункции
#КонецОбласти
#КонецОбласти

View File

@ -236,9 +236,9 @@
НовыйТест(ТаблицаТестов, "Б24_РаботаСПолямиЗадач" , "Работа с польз. полями задач" , Битрикс);
НовыйТест(ТаблицаТестов, "Б24_УправлениеПодразделениями" , "Управление подразделениями" , Битрикс);
НовыйТест(ТаблицаТестов, "Б24_УправлениеПользователями" , "Управление пользователями" , Битрикс);
НовыйТест(ТаблицаТестов, "ВКТ_ОбщиеМетоды" , "Общие методы" , ВКТ);
НовыйТест(ТаблицаТестов, "ВКТ_ОтправкаСообщений" , "Отправка сообщений" , ВКТ);
НовыйТест(ТаблицаТестов, "ВКТ_ОтправкаСообщений" , "Отправка сообщений" , ВКТ);
Возврат ТаблицаТестов;

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
// MIT License
@ -3230,23 +3230,23 @@
#Область VkTeams
Процедура ВКТ_ОбщиеМетоды() Экспорт
ПараметрыТеста = Новый Структура;
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token", ПараметрыТеста);
VkTeams_ПроверитьТокен(ПараметрыТеста);
VkTeams_ПолучитьСобытия(ПараметрыТеста);
КонецПроцедуры
Процедура ВКТ_ОтправкаСообщений() Экспорт
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token", ПараметрыТеста);
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID", ПараметрыТеста);
VkTeams_ОтправитьТекстовоеСообщение(ПараметрыТеста);
VkTeams_ОтправитьТекстовоеСообщение(ПараметрыТеста);
КонецПроцедуры
#КонецОбласти
@ -3940,24 +3940,24 @@
КонецПроцедуры
Процедура Проверка_ВКТПользователь(Знач Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["userId"]).Заполнено();
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["userId"]).Заполнено();
КонецПроцедуры
Процедура Проверка_ВКТСобытия(Знач Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["events"]).ИмеетТип("Массив");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["events"]).ИмеетТип("Массив");
КонецПроцедуры
Процедура Проверка_ВКТСообщение(Знач Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["msgId"]).Заполнено();
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["msgId"]).Заполнено();
КонецПроцедуры
#КонецОбласти
@ -10230,8 +10230,8 @@
#Область VkTeams
Процедура VkTeams_ПроверитьТокен(ПараметрыФункции)
Токен = ПараметрыФункции["VkTeams_Token"];
Токен = ПараметрыФункции["VkTeams_Token"];
Результат = OPI_VKTeams.ПроверитьТокен(Токен);
// END
@ -10241,54 +10241,54 @@
Проверка_ВКТПользователь(Результат);
OPI_Инструменты.Пауза(5);
КонецПроцедуры
Процедура VkTeams_ПолучитьСобытия(ПараметрыФункции)
Токен = ПараметрыФункции["VkTeams_Token"];
IDПоследнего = 0;
Для Н = 1 По 5 Цикл // В реальной работе - бесконечный цикл
Результат = OPI_VKTeams.ПолучитьСобытия(Токен, IDПоследнего, 3);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСобытия", "VkTeams");
Проверка_ВКТСобытия(Результат); // SKIP
События = Результат["events"];
// Обработка событий...
Если Не События.Количество() = 0 Тогда
IDПоследнего = События[События.ВГраница()]["eventId"];
КонецЕсли;
Токен = ПараметрыФункции["VkTeams_Token"];
IDПоследнего = 0;
Для Н = 1 По 5 Цикл // В реальной работе - бесконечный цикл
Результат = OPI_VKTeams.ПолучитьСобытия(Токен, IDПоследнего, 3);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСобытия", "VkTeams");
Проверка_ВКТСобытия(Результат); // SKIP
События = Результат["events"];
// Обработка событий...
Если Не События.Количество() = 0 Тогда
IDПоследнего = События[События.ВГраница()]["eventId"];
КонецЕсли;
КонецЦикла;
// END
OPI_Инструменты.Пауза(3);
КонецПроцедуры
Процедура VkTeams_ОтправитьТекстовоеСообщение(ПараметрыФункции)
Токен = ПараметрыФункции["VkTeams_Token"];
IDЧата = ПараметрыФункции["VkTeams_ChatID"];
Текст = "Текст сообщения";
Токен = ПараметрыФункции["VkTeams_Token"];
IDЧата = ПараметрыФункции["VkTeams_ChatID"];
Текст = "Текст сообщения";
Результат = OPI_VKTeams.ОтправитьТекстовоеСообщение(Токен, IDЧата, Текст);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение (простое)", "VkTeams");
Проверка_ВКТСообщение(Результат); // SKIP
Текст = "<b>Полужирный текст сообщения</b>";
IDЦитируемого = Результат["msgId"];
Разметка = "HTML";
Результат = OPI_VKTeams.ОтправитьТекстовоеСообщение(Токен, IDЧата, Текст, IDЦитируемого, , Разметка);
// END
@ -10298,7 +10298,7 @@
Проверка_ВКТСообщение(Результат);
OPI_Инструменты.Пауза(5);
КонецПроцедуры
#КонецОбласти

View File

@ -171,7 +171,7 @@
НоваяСтрока.Метод = "СоздатьНовость";
НоваяСтрока.МетодПоиска = "СОЗДАТЬНОВОСТЬ";
НоваяСтрока.Параметр = "--important";
НоваяСтрока.Описание = "Помечает новость как важную (необяз. по ум. - False)";
НоваяСтрока.Описание = "Помечает новость как важную (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с живой лентой";
@ -1327,7 +1327,7 @@
НоваяСтрока.Метод = "ПолучитьСтруктуруФильтраЗадач";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТРУКТУРУФИЛЬТРАЗАДАЧ";
НоваяСтрока.Параметр = "--empty";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей (необяз. по ум. - False)";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с задачами";
НоваяСтрока.ОписаниеМетода = "Возвращает структуру полей для фильтрации задач в методе ПолучитьСписокЗадач";
@ -1584,7 +1584,7 @@
НоваяСтрока.Метод = "ДобавитьЭлементЧеклистаЗадачи";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬЭЛЕМЕНТЧЕКЛИСТАЗАДАЧИ";
НоваяСтрока.Параметр = "--complete";
НоваяСтрока.Описание = "Отметить пункт как выполненный (необяз. по ум. - False)";
НоваяСтрока.Описание = "Отметить пункт как выполненный (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с чеклистами задач";
@ -2148,7 +2148,7 @@
НоваяСтрока.Метод = "ПолучитьСтруктуруКомментария";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТРУКТУРУКОММЕНТАРИЯ";
НоваяСтрока.Параметр = "--empty";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей (необяз. по ум. - False)";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с комментариями и результатами задач";
НоваяСтрока.ОписаниеМетода = "Получает структуру полей комментария";
@ -2210,7 +2210,7 @@
НоваяСтрока.Метод = "ДобавитьСтадиюКанбана";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬСТАДИЮКАНБАНА";
НоваяСтрока.Параметр = "--admin";
НоваяСтрока.Описание = "Позволяет добавлять стадии без проверки прав (для администраторов) (необяз. по ум. - False)";
НоваяСтрока.Описание = "Позволяет добавлять стадии без проверки прав (для администраторов) (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Канбан";
@ -2281,7 +2281,7 @@
НоваяСтрока.Метод = "ИзменитьСтадиюКанбана";
НоваяСтрока.МетодПоиска = "ИЗМЕНИТЬСТАДИЮКАНБАНА";
НоваяСтрока.Параметр = "--admin";
НоваяСтрока.Описание = "Позволяет добавлять стадии без проверки прав (для администраторов) (необяз. по ум. - False)";
НоваяСтрока.Описание = "Позволяет добавлять стадии без проверки прав (для администраторов) (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Канбан";
@ -2322,7 +2322,7 @@
НоваяСтрока.Метод = "УдалитьСтадиюКанбана";
НоваяСтрока.МетодПоиска = "УДАЛИТЬСТАДИЮКАНБАНА";
НоваяСтрока.Параметр = "--admin";
НоваяСтрока.Описание = "Позволяет добавлять стадии без проверки прав (для администраторов) (необяз. по ум. - False)";
НоваяСтрока.Описание = "Позволяет добавлять стадии без проверки прав (для администраторов) (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Канбан";
@ -2363,7 +2363,7 @@
НоваяСтрока.Метод = "ПолучитьСтадииКанбана";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТАДИИКАНБАНА";
НоваяСтрока.Параметр = "--admin";
НоваяСтрока.Описание = "Позволяет получать стадии без проверки прав (для администраторов) (необяз. по ум. - False)";
НоваяСтрока.Описание = "Позволяет получать стадии без проверки прав (для администраторов) (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Канбан";
@ -3463,7 +3463,7 @@
НоваяСтрока.Метод = "ПолучитьСтруктуруФильтраКаталога";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТРУКТУРУФИЛЬТРАКАТАЛОГА";
НоваяСтрока.Параметр = "--empty";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания типов полей (необяз. по ум. - False)";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания типов полей (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с каталогами";
@ -4036,7 +4036,7 @@
НоваяСтрока.Метод = "ДобавитьПользователейВЧат";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬПОЛЬЗОВАТЕЛЕЙВЧАТ";
НоваяСтрока.Параметр = "--hide";
НоваяСтрока.Описание = "Скрыть старые сообщения от новых пользователей (необяз. по ум. - False)";
НоваяСтрока.Описание = "Скрыть старые сообщения от новых пользователей (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с чатами и диалогами";
@ -4571,7 +4571,7 @@
НоваяСтрока.Метод = "ПолучитьСтруктуруЧата";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТРУКТУРУЧАТА";
НоваяСтрока.Параметр = "--empty";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания типов полей (необяз. по ум. - False)";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания типов полей (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с чатами и диалогами";
НоваяСтрока.ОписаниеМетода = "Получает структуру полей чата";
@ -5439,7 +5439,7 @@
НоваяСтрока.Метод = "ИзменитьСтатусПользователя";
НоваяСтрока.МетодПоиска = "ИЗМЕНИТЬСТАТУСПОЛЬЗОВАТЕЛЯ";
НоваяСтрока.Параметр = "--fire";
НоваяСтрока.Описание = "Истина > Деактивация, Ложь > Активация (необяз. по ум. - True)";
НоваяСтрока.Описание = "Истина > Деактивация, Ложь > Активация (необяз. по ум. - Да)";
НоваяСтрока.Область = "Управление пользователями";
@ -5511,7 +5511,7 @@
НоваяСтрока.Метод = "ПолучитьСтруктуруФильтраПользователей";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТРУКТУРУФИЛЬТРАПОЛЬЗОВАТЕЛЕЙ";
НоваяСтрока.Параметр = "--empty";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей (необяз. по ум. - False)";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Управление пользователями";
НоваяСтрока.ОписаниеМетода = "Возвращает структуру полей для фильтрации пользователей в методе НайтиПользователей";

View File

@ -142,7 +142,7 @@
НоваяСтрока.Метод = "ПолучитьИнформациюОбОбъекте";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬИНФОРМАЦИЮОБОБЪЕКТЕ";
НоваяСтрока.Параметр = "--detail";
НоваяСтрока.Описание = "Добавляет дополнительные поля информации для медиафайлов (необяз. по ум. - False)";
НоваяСтрока.Описание = "Добавляет дополнительные поля информации для медиафайлов (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с файлами и каталогами";
@ -173,7 +173,7 @@
НоваяСтрока.Метод = "ПолучитьСписокФайловПапки";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСПИСОКФАЙЛОВПАПКИ";
НоваяСтрока.Параметр = "--detail";
НоваяСтрока.Описание = "Добавляет дополнительные поля информации для медиафайлов (необяз. по ум. - False)";
НоваяСтрока.Описание = "Добавляет дополнительные поля информации для медиафайлов (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с файлами и каталогами";
@ -245,7 +245,7 @@
НоваяСтрока.Метод = "ЗагрузитьФайл";
НоваяСтрока.МетодПоиска = "ЗАГРУЗИТЬФАЙЛ";
НоваяСтрока.Параметр = "--overwrite";
НоваяСтрока.Описание = "Перезаписывать файл при конфликте путей (необяз. по ум. - False)";
НоваяСтрока.Описание = "Перезаписывать файл при конфликте путей (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с файлами и каталогами";
@ -689,7 +689,7 @@
НоваяСтрока.Метод = "ДобавитьПользователейКФайлу";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬПОЛЬЗОВАТЕЛЕЙКФАЙЛУ";
НоваяСтрока.Параметр = "--readonly";
НоваяСтрока.Описание = "Запрещает редактирование файла для стороннего пользователя (необяз. по ум. - True)";
НоваяСтрока.Описание = "Запрещает редактирование файла для стороннего пользователя (необяз. по ум. - Да)";
НоваяСтрока.Область = "Настройки совместного доступа";
@ -734,7 +734,7 @@
НоваяСтрока.Метод = "ДобавитьПользователейКПапке";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬПОЛЬЗОВАТЕЛЕЙКПАПКЕ";
НоваяСтрока.Параметр = "--readonly";
НоваяСтрока.Описание = "Запрещает редактирование файла для стороннего пользователя (необяз. по ум. - True)";
НоваяСтрока.Описание = "Запрещает редактирование файла для стороннего пользователя (необяз. по ум. - Да)";
НоваяСтрока.Область = "Настройки совместного доступа";

View File

@ -246,7 +246,7 @@
НоваяСтрока.Метод = "ИзменитьКалендарьСписка";
НоваяСтрока.МетодПоиска = "ИЗМЕНИТЬКАЛЕНДАРЬСПИСКА";
НоваяСтрока.Параметр = "--hidden";
НоваяСтрока.Описание = "Скрытый календарь (необяз. по ум. - False)";
НоваяСтрока.Описание = "Скрытый календарь (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа со списком календарей";

View File

@ -58,7 +58,7 @@
НоваяСтрока.Метод = "ПолучитьСписокКаталогов";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСПИСОККАТАЛОГОВ";
НоваяСтрока.Параметр = "--depth";
НоваяСтрока.Описание = "Добавляет список файлов к полям каталога (необяз. по ум. - False)";
НоваяСтрока.Описание = "Добавляет список файлов к полям каталога (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с файлами и каталогами";

View File

@ -27,7 +27,7 @@
НоваяСтрока.Метод = "СформироватьСсылкуПолученияКода";
НоваяСтрока.МетодПоиска = "СФОРМИРОВАТЬССЫЛКУПОЛУЧЕНИЯКОДА";
НоваяСтрока.Параметр = "--calendar";
НоваяСтрока.Описание = "разрешение на методы Calendar (необяз. по ум. - True)";
НоваяСтрока.Описание = "разрешение на методы Calendar (необяз. по ум. - Да)";
НоваяСтрока.Область = "Программный интерфейс";
@ -37,7 +37,7 @@
НоваяСтрока.Метод = "СформироватьСсылкуПолученияКода";
НоваяСтрока.МетодПоиска = "СФОРМИРОВАТЬССЫЛКУПОЛУЧЕНИЯКОДА";
НоваяСтрока.Параметр = "--drive";
НоваяСтрока.Описание = "разрешение на методы Drive (необяз. по ум. - True)";
НоваяСтрока.Описание = "разрешение на методы Drive (необяз. по ум. - Да)";
НоваяСтрока.Область = "Программный интерфейс";
@ -47,7 +47,7 @@
НоваяСтрока.Метод = "СформироватьСсылкуПолученияКода";
НоваяСтрока.МетодПоиска = "СФОРМИРОВАТЬССЫЛКУПОЛУЧЕНИЯКОДА";
НоваяСтрока.Параметр = "--sheets";
НоваяСтрока.Описание = "разрешение на методы Sheets (необяз. по ум. - True)";
НоваяСтрока.Описание = "разрешение на методы Sheets (необяз. по ум. - Да)";
НоваяСтрока.Область = "Программный интерфейс";

View File

@ -166,7 +166,7 @@
НоваяСтрока.Метод = "ИзменитьСвойстваСтраницы";
НоваяСтрока.МетодПоиска = "ИЗМЕНИТЬСВОЙСТВАСТРАНИЦЫ";
НоваяСтрока.Параметр = "--archive";
НоваяСтрока.Описание = "Архивировать страницу или нет (булево) (необяз. по ум. - False)";
НоваяСтрока.Описание = "Архивировать страницу или нет (булево) (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа со страницами";
@ -383,7 +383,7 @@
НоваяСтрока.Метод = "ВернутьБлок";
НоваяСтрока.МетодПоиска = "ВЕРНУТЬБЛОК";
НоваяСтрока.Параметр = "--core";
НоваяСтрока.Описание = "Истина > служебные поля удаляются, остается только сам блок (необяз. по ум. - True)";
НоваяСтрока.Описание = "Истина > служебные поля удаляются, остается только сам блок (необяз. по ум. - Да)";
НоваяСтрока.Область = "Работа с блоками";

View File

@ -272,7 +272,7 @@
НоваяСтрока.Метод = "УдалитьСообщение";
НоваяСтрока.МетодПоиска = "УДАЛИТЬСООБЩЕНИЕ";
НоваяСтрока.Параметр = "--issheduled";
НоваяСтрока.Описание = "Признак удаления отложенного сообщения (необяз. по ум. - False)";
НоваяСтрока.Описание = "Признак удаления отложенного сообщения (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с сообщениями";
@ -396,7 +396,7 @@
НоваяСтрока.Метод = "ПолучитьСписокКаналов";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСПИСОККАНАЛОВ";
НоваяСтрока.Параметр = "--notarchived";
НоваяСтрока.Описание = "Признак исключения архивированных каналов (необяз. по ум. - False)";
НоваяСтрока.Описание = "Признак исключения архивированных каналов (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с каналами";
@ -468,7 +468,7 @@
НоваяСтрока.Метод = "СоздатьКанал";
НоваяСтрока.МетодПоиска = "СОЗДАТЬКАНАЛ";
НоваяСтрока.Параметр = "--private";
НоваяСтрока.Описание = "Создать канал приватным (необяз. по ум. - False)";
НоваяСтрока.Описание = "Создать канал приватным (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с каналами";

View File

@ -713,7 +713,7 @@
НоваяСтрока.Метод = "ОтправитьОпрос";
НоваяСтрока.МетодПоиска = "ОТПРАВИТЬОПРОС";
НоваяСтрока.Параметр = "--anonymous";
НоваяСтрока.Описание = "Анонимность опроса (необяз. по ум. - True)";
НоваяСтрока.Описание = "Анонимность опроса (необяз. по ум. - Да)";
НоваяСтрока.Область = "Отправка данных";
@ -779,7 +779,7 @@
НоваяСтрока.Метод = "СформироватьКлавиатуруПоМассивуКнопок";
НоваяСтрока.МетодПоиска = "СФОРМИРОВАТЬКЛАВИАТУРУПОМАССИВУКНОПОК";
НоваяСтрока.Параметр = "--under";
НоваяСтрока.Описание = "Клавиатура под сообщением или на нижней панели (необяз. по ум. - False)";
НоваяСтрока.Описание = "Клавиатура под сообщением или на нижней панели (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Отправка данных";
@ -789,7 +789,7 @@
НоваяСтрока.Метод = "СформироватьКлавиатуруПоМассивуКнопок";
НоваяСтрока.МетодПоиска = "СФОРМИРОВАТЬКЛАВИАТУРУПОМАССИВУКНОПОК";
НоваяСтрока.Параметр = "--column";
НоваяСтрока.Описание = "Истина > кнопки выводятся в столбик, Ложь > в строку (необяз. по ум. - True)";
НоваяСтрока.Описание = "Истина > кнопки выводятся в столбик, Ложь > в строку (необяз. по ум. - Да)";
НоваяСтрока.Область = "Отправка данных";

View File

@ -62,7 +62,7 @@
НоваяСтрока.Метод = "СоздатьПост";
НоваяСтрока.МетодПоиска = "СОЗДАТЬПОСТ";
НоваяСтрока.Параметр = "--ad";
НоваяСтрока.Описание = "Признак ""Это реклама"" (необяз. по ум. - False)";
НоваяСтрока.Описание = "Признак ""Это реклама"" (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с группой";
@ -126,7 +126,7 @@
НоваяСтрока.Метод = "СоздатьСоставнойПост";
НоваяСтрока.МетодПоиска = "СОЗДАТЬСОСТАВНОЙПОСТ";
НоваяСтрока.Параметр = "--ad";
НоваяСтрока.Описание = "Признак ""Это реклама"" (необяз. по ум. - False)";
НоваяСтрока.Описание = "Признак ""Это реклама"" (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с группой";
@ -590,7 +590,7 @@
НоваяСтрока.Метод = "ЗакрытьОбсуждение";
НоваяСтрока.МетодПоиска = "ЗАКРЫТЬОБСУЖДЕНИЕ";
НоваяСтрока.Параметр = "--remove";
НоваяСтрока.Описание = "Удалить полностью (Истина) или закрыть (необяз. по ум. - False)";
НоваяСтрока.Описание = "Удалить полностью (Истина) или закрыть (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с обсуждениями";
@ -760,7 +760,7 @@
НоваяСтрока.Метод = "СделатьРепост";
НоваяСтрока.МетодПоиска = "СДЕЛАТЬРЕПОСТ";
НоваяСтрока.Параметр = "--ad";
НоваяСтрока.Описание = "Признак рекламного поста (необяз. по ум. - False)";
НоваяСтрока.Описание = "Признак рекламного поста (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Интерактивные действия";
@ -1544,7 +1544,7 @@
НоваяСтрока.Метод = "СоздатьПодборкуТоваров";
НоваяСтрока.МетодПоиска = "СОЗДАТЬПОДБОРКУТОВАРОВ";
НоваяСтрока.Параметр = "--main";
НоваяСтрока.Описание = "Основная (необяз. по ум. - False)";
НоваяСтрока.Описание = "Основная (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с подборками товаров";
@ -1554,7 +1554,7 @@
НоваяСтрока.Метод = "СоздатьПодборкуТоваров";
НоваяСтрока.МетодПоиска = "СОЗДАТЬПОДБОРКУТОВАРОВ";
НоваяСтрока.Параметр = "--hidden";
НоваяСтрока.Описание = "Скрытая (необяз. по ум. - False)";
НоваяСтрока.Описание = "Скрытая (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с подборками товаров";
@ -1614,7 +1614,7 @@
НоваяСтрока.Метод = "ИзменитьПодборкуТоваров";
НоваяСтрока.МетодПоиска = "ИЗМЕНИТЬПОДБОРКУТОВАРОВ";
НоваяСтрока.Параметр = "--main";
НоваяСтрока.Описание = "Основная (необяз. по ум. - False)";
НоваяСтрока.Описание = "Основная (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с подборками товаров";
@ -1624,7 +1624,7 @@
НоваяСтрока.Метод = "ИзменитьПодборкуТоваров";
НоваяСтрока.МетодПоиска = "ИЗМЕНИТЬПОДБОРКУТОВАРОВ";
НоваяСтрока.Параметр = "--hidden";
НоваяСтрока.Описание = "Скрытая (необяз. по ум. - False)";
НоваяСтрока.Описание = "Скрытая (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с подборками товаров";

View File

@ -0,0 +1,121 @@
Функция ПолучитьСостав() Экспорт
ТаблицаСостава = Новый ТаблицаЗначений();
ТаблицаСостава.Колонки.Добавить("Библиотека");
ТаблицаСостава.Колонки.Добавить("Модуль");
ТаблицаСостава.Колонки.Добавить("Метод");
ТаблицаСостава.Колонки.Добавить("МетодПоиска");
ТаблицаСостава.Колонки.Добавить("Параметр");
ТаблицаСостава.Колонки.Добавить("Описание");
ТаблицаСостава.Колонки.Добавить("ОписаниеМетода");
ТаблицаСостава.Колонки.Добавить("Область");
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "vkteams";
НоваяСтрока.Модуль = "OPI_VKTeams";
НоваяСтрока.Метод = "ПроверитьТокен";
НоваяСтрока.МетодПоиска = "ПРОВЕРИТЬТОКЕН";
НоваяСтрока.Параметр = "--token";
НоваяСтрока.Описание = "Токен бота";
НоваяСтрока.Область = "Общие методы";
НоваяСтрока.ОписаниеМетода = "Проверяет работоспособность токена бота";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "vkteams";
НоваяСтрока.Модуль = "OPI_VKTeams";
НоваяСтрока.Метод = "ПолучитьСобытия";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСОБЫТИЯ";
НоваяСтрока.Параметр = "--token";
НоваяСтрока.Описание = "Токен бота";
НоваяСтрока.Область = "Общие методы";
НоваяСтрока.ОписаниеМетода = "Получает события бота в Polling режиме";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "vkteams";
НоваяСтрока.Модуль = "OPI_VKTeams";
НоваяСтрока.Метод = "ПолучитьСобытия";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСОБЫТИЯ";
НоваяСтрока.Параметр = "--last";
НоваяСтрока.Описание = "ID последнего обработанного до этого события";
НоваяСтрока.Область = "Общие методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "vkteams";
НоваяСтрока.Модуль = "OPI_VKTeams";
НоваяСтрока.Метод = "ПолучитьСобытия";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСОБЫТИЯ";
НоваяСтрока.Параметр = "--timeout";
НоваяСтрока.Описание = "Время удержания соединения для Long Polling (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Общие методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "vkteams";
НоваяСтрока.Модуль = "OPI_VKTeams";
НоваяСтрока.Метод = "ОтправитьТекстовоеСообщение";
НоваяСтрока.МетодПоиска = "ОТПРАВИТЬТЕКСТОВОЕСООБЩЕНИЕ";
НоваяСтрока.Параметр = "--token";
НоваяСтрока.Описание = "Токен бота";
НоваяСтрока.Область = "Отправка сообщений";
НоваяСтрока.ОписаниеМетода = "Отправляет текстовое сообщение в чат
|
| Пример указания параметра типа массив:
| --param ""['Val1','Val2','Val3']""
|";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "vkteams";
НоваяСтрока.Модуль = "OPI_VKTeams";
НоваяСтрока.Метод = "ОтправитьТекстовоеСообщение";
НоваяСтрока.МетодПоиска = "ОТПРАВИТЬТЕКСТОВОЕСООБЩЕНИЕ";
НоваяСтрока.Параметр = "--chatid";
НоваяСтрока.Описание = "ID чата для отправки сообщения";
НоваяСтрока.Область = "Отправка сообщений";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "vkteams";
НоваяСтрока.Модуль = "OPI_VKTeams";
НоваяСтрока.Метод = "ОтправитьТекстовоеСообщение";
НоваяСтрока.МетодПоиска = "ОТПРАВИТЬТЕКСТОВОЕСООБЩЕНИЕ";
НоваяСтрока.Параметр = "--text";
НоваяСтрока.Описание = "Текст сообщения";
НоваяСтрока.Область = "Отправка сообщений";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "vkteams";
НоваяСтрока.Модуль = "OPI_VKTeams";
НоваяСтрока.Метод = "ОтправитьТекстовоеСообщение";
НоваяСтрока.МетодПоиска = "ОТПРАВИТЬТЕКСТОВОЕСООБЩЕНИЕ";
НоваяСтрока.Параметр = "--reply";
НоваяСтрока.Описание = "ID цитируемого сообщения, если необходимо (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Отправка сообщений";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "vkteams";
НоваяСтрока.Модуль = "OPI_VKTeams";
НоваяСтрока.Метод = "ОтправитьТекстовоеСообщение";
НоваяСтрока.МетодПоиска = "ОТПРАВИТЬТЕКСТОВОЕСООБЩЕНИЕ";
НоваяСтрока.Параметр = "--keyboard";
НоваяСтрока.Описание = "Кнопки к сообщению, если необходимо (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Отправка сообщений";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "vkteams";
НоваяСтрока.Модуль = "OPI_VKTeams";
НоваяСтрока.Метод = "ОтправитьТекстовоеСообщение";
НоваяСтрока.МетодПоиска = "ОТПРАВИТЬТЕКСТОВОЕСООБЩЕНИЕ";
НоваяСтрока.Параметр = "--parsemod";
НоваяСтрока.Описание = "Вид разметки для текста сообщения: MarkdownV2 или HTML (необяз. по ум. - MarkdownV2)";
НоваяСтрока.Область = "Отправка сообщений";
Возврат ТаблицаСостава;
КонецФункции

View File

@ -90,7 +90,7 @@
НоваяСтрока.Метод = "УдалитьОбъект";
НоваяСтрока.МетодПоиска = "УДАЛИТЬОБЪЕКТ";
НоваяСтрока.Параметр = "--can";
НоваяСтрока.Описание = "В корзину (необяз. по ум. - True)";
НоваяСтрока.Описание = "В корзину (необяз. по ум. - Да)";
НоваяСтрока.Область = "Работа с файлами и папками";
@ -131,7 +131,7 @@
НоваяСтрока.Метод = "СоздатьКопиюОбъекта";
НоваяСтрока.МетодПоиска = "СОЗДАТЬКОПИЮОБЪЕКТА";
НоваяСтрока.Параметр = "--rewrite";
НоваяСтрока.Описание = "Перезаписывать если файл с таким именем уже существует (необяз. по ум. - False)";
НоваяСтрока.Описание = "Перезаписывать если файл с таким именем уже существует (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с файлами и папками";
@ -237,7 +237,7 @@
НоваяСтрока.Метод = "ПолучитьСписокФайлов";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСПИСОКФАЙЛОВ";
НоваяСтрока.Параметр = "--datesort";
НоваяСтрока.Описание = "Истина > сортировать по дате, Ложь > по алфавиту (необяз. по ум. - False)";
НоваяСтрока.Описание = "Истина > сортировать по дате, Ложь > по алфавиту (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с файлами и папками";
@ -278,7 +278,7 @@
НоваяСтрока.Метод = "ПереместитьОбъект";
НоваяСтрока.МетодПоиска = "ПЕРЕМЕСТИТЬОБЪЕКТ";
НоваяСтрока.Параметр = "--rewrite";
НоваяСтрока.Описание = "Перезаписывать если файл с таким именем уже существует (необяз. по ум. - False)";
НоваяСтрока.Описание = "Перезаписывать если файл с таким именем уже существует (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с файлами и папками";
@ -319,7 +319,7 @@
НоваяСтрока.Метод = "ЗагрузитьФайл";
НоваяСтрока.МетодПоиска = "ЗАГРУЗИТЬФАЙЛ";
НоваяСтрока.Параметр = "--rewrite";
НоваяСтрока.Описание = "Перезаписывать, если файл с таким именем уже существует (необяз. по ум. - False)";
НоваяСтрока.Описание = "Перезаписывать, если файл с таким именем уже существует (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Работа с файлами и папками";

View File

@ -1,27 +1,28 @@
#Использовать "./internal"
Функция ПолучитьВерсию() Экспорт
Возврат "1.11.1";
Возврат "1.12.0";
КонецФункции
Функция ПолучитьСоответствиеКомандМодулей() Экспорт
СоответствиеКомандМодулей = Новый Соответствие();
СоответствиеКомандМодулей.Вставить("tools", "Утилиты");
СоответствиеКомандМодулей.Вставить("dropbox", "OPI_Dropbox");
СоответствиеКомандМодулей.Вставить("twitter", "OPI_Twitter");
СоответствиеКомандМодулей.Вставить("bitrix24", "OPI_Bitrix24");
СоответствиеКомандМодулей.Вставить("yadisk", "OPI_YandexDisk");
СоответствиеКомандМодулей.Вставить("google", "OPI_GoogleWorkspace");
СоответствиеКомандМодулей.Вставить("telegram", "OPI_Telegram");
СоответствиеКомандМодулей.Вставить("airtable", "OPI_Airtable");
СоответствиеКомандМодулей.Вставить("gdrive", "OPI_GoogleDrive");
СоответствиеКомандМодулей.Вставить("bitrix24", "OPI_Bitrix24");
СоответствиеКомандМодулей.Вставить("dropbox", "OPI_Dropbox");
СоответствиеКомандМодулей.Вставить("gcalendar", "OPI_GoogleCalendar");
СоответствиеКомандМодулей.Вставить("notion", "OPI_Notion");
СоответствиеКомандМодулей.Вставить("viber", "OPI_Viber");
СоответствиеКомандМодулей.Вставить("yandex", "OPI_YandexID");
СоответствиеКомандМодулей.Вставить("gdrive", "OPI_GoogleDrive");
СоответствиеКомандМодулей.Вставить("gsheets", "OPI_GoogleSheets");
СоответствиеКомандМодулей.Вставить("vk", "OPI_VK");
СоответствиеКомандМодулей.Вставить("google", "OPI_GoogleWorkspace");
СоответствиеКомандМодулей.Вставить("notion", "OPI_Notion");
СоответствиеКомандМодулей.Вставить("slack", "OPI_Slack");
СоответствиеКомандМодулей.Вставить("telegram", "OPI_Telegram");
СоответствиеКомандМодулей.Вставить("twitter", "OPI_Twitter");
СоответствиеКомандМодулей.Вставить("viber", "OPI_Viber");
СоответствиеКомандМодулей.Вставить("vk", "OPI_VK");
СоответствиеКомандМодулей.Вставить("vkteams", "OPI_VKTeams");
СоответствиеКомандМодулей.Вставить("yadisk", "OPI_YandexDisk");
СоответствиеКомандМодулей.Вставить("yandex", "OPI_YandexID");
Возврат СоответствиеКомандМодулей;
КонецФункции