NotesWhat is notes.io?

Notes brand slogan

Notes - notes.io

Попытка

Если ЗначениеЗаполнено(ВыборкаСообщение.reply_to_message_ИДЧата) и ЗначениеЗаполнено(ВыборкаСообщение.reply_to_message_id) Тогда
//пересылка собщения в исходный чат с пользователем
СтруктураИсходногоЗапроса = СтруктураПараметрыПересланногоСообщения(ВыборкаСообщение.ТокенБота, ВыборкаСообщение.reply_to_message_ИДЧата, ВыборкаСообщение.reply_to_message_id);
Если ЗначениеЗаполнено(СтруктураИсходногоЗапроса.ТокенБотаИсходный)
и ЗначениеЗаполнено(СтруктураИсходногоЗапроса.ИдЧатаИсходный)
и ЗначениеЗаполнено(СтруктураИсходногоЗапроса.message_idИсходный)
Тогда
СтруктураСообщения = ПолучитьСтруктуруСообщения();
СтруктураСообщения.ТокенБота = СтруктураИсходногоЗапроса.ТокенБотаИсходный;
СтруктураСообщения.ИдЧата = СтруктураИсходногоЗапроса.ИдЧатаИсходный;

СтруктураЗаписисЗапроса = ПолучитьСтруктуруЗаписисЗапросаБОТ_ЧатСГенеральнымДиректоромЗапросы(СтруктураИсходногоЗапроса.ТокенБотаИсходный,СтруктураИсходногоЗапроса.ИдЧатаИсходный,СтруктураИсходногоЗапроса.message_idИсходный);

МенеджерРС = ПолучитьСтруктуруБОТ_ЧатСГенеральнымДиректоромЗапросы();
ЗаполнитьЗначенияСвойств(МенеджерРС, ВыборкаСообщение);
МенеджерРС.ОбособленноеПодразделение = СтруктураЗаписисЗапроса.ОбособленноеПодразделение;
МенеджерРС.ТокенБота = СтруктураИсходногоЗапроса.ТокенБотаИсходный;
МенеджерРС.ИдЧата = СтруктураИсходногоЗапроса.ИдЧатаИсходный;
МенеджерРС.message_id = СтруктураИсходногоЗапроса.message_idИсходный;
МенеджерРС.ДатаСоздания = ТекущаяДата();
МенеджерРС.ИДКтоОтветил = ВыборкаСообщение.ИДОтправителя;
МенеджерРС.ПредставлениеКтоОтветил = ВыборкаСообщение.ПубличноеИмяКонтакта;
Если ВыборкаСообщение.ВидЗапроса = "Сообщение" Тогда
МенеджерРС.Описание = ВыборкаСообщение.ТекстСообщения;
ИначеЕсли (ВыборкаСообщение.ВидЗапроса = "Фото" или ВыборкаСообщение.ВидЗапроса = "Видео")
и ЗначениеЗаполнено(ВыборкаСообщение.ХранилищеФайлаСтрока) Тогда
СтруктураФайла = ЗначениеИзСтрокиВнутр(ВыборкаСообщение.ХранилищеФайлаСтрока);
МассивФайлов = новый Массив;

Если ТипЗнч(СтруктураФайла) = Тип("Структура") Тогда
Попытка
Если ЗначениеЗаполнено(СтруктураФайла.ПутьКФайлу) Тогда
//переместим в отдельную папку
Попытка
файлРасш = новый Файл(СтруктураФайла.ПутьКФайлу);
НовыйКаталог = файлРасш.Путь + ?(Прав(файлРасш.Путь, 1) = "", "", "") + "ChatGD";
СоздатьКаталог(НовыйКаталог);
НовыйПуть = НовыйКаталог + файлРасш.Имя;
НовыйПуть = ПроверитьИмяФайла(НовыйПуть);
ПереместитьФайл(СтруктураФайла.ПутьКФайлу, НовыйПуть);
Исключение
НовыйПуть = СтруктураФайла.ПутьКФайлу;
КонецПопытки;

ДДФайла = новый ДвоичныеДанные(НовыйПуть);
СтруктураСообщения.ХранилищеФайла = Новый ХранилищеЗначения(ДДФайла);
СтруктураСообщения.ОтправитьФайл = Истина;
СтруктураСообщения.ИмяФайла = СтруктураФайла.ИмяФайла;
МассивФайлов.Добавить(НовыйПуть);
КонецЕсли;
Исключение
ВызватьИсключение "Ошибка при пересылке файла в чат с сотрудником";
КонецПопытки;
КонецЕсли;
МенеджерРС.МассивПутейФайлов = новый ХранилищеЗначения(МассивФайлов, Новый СжатиеДанных(9));
МенеджерРС.КоличествоФайлов = МассивФайлов.Количество();
Иначе
ВызватьИсключение "Не известный тип пересылаемого сообщения";
КонецЕсли;
МенеджерРС.ТипЗаписи = "Ответ";
МенеджерРС.УИДЗаписи = ""+новый УникальныйИдентификатор;
МенеджерРС.ЗапросПеренаправленВГруппы = Ложь;
ДобавитьБОТ_ЧатСГенеральнымДиректоромЗапросы(МенеджерРС);

ТекстСообщения = "Ответ на Ваше обращение в сообщении: " + Символы.ПС + ВыборкаСообщение.ТекстСообщения;
СтруктураСообщения.ТекстСообщения = ТекстСообщения;

МассивКнопок = новый Массив;
ТекстИнлайнКнопки = "Есть еще вопрос";
ИДКнопки = "ЧатГД_Еще_"+СтруктураЗаписисЗапроса.УИДЗаписи;
МассивКнопок.Добавить(Новый Структура("text, callback_data", ТекстИнлайнКнопки, ИДКнопки));

ТекстИнлайнКнопки = "Спасибо";
ИДКнопки = "ЧатГД_Все_"+СтруктураЗаписисЗапроса.УИДЗаписи;
МассивКнопок.Добавить(Новый Структура("text, callback_data", ТекстИнлайнКнопки, ИДКнопки));

ТекстКнопок = СформироватьМассивКомандКлавиатуры_inline(МассивКнопок,2);

ПараметрыЗапросаОтправки = "&parse_mode=HTML";
ПараметрыЗапросаОтправки = ПараметрыЗапросаОтправки
+ "&reply_markup="+ТекстКнопок;
Если ЗначениеЗаполнено(СтруктураЗаписисЗапроса.ИДДляОтветаПриУточнении) Тогда
ПараметрыЗапросаОтправки = ПараметрыЗапросаОтправки + "&reply_to_message_id="+СтруктураЗаписисЗапроса.ИДДляОтветаПриУточнении+ "&allow_sending_without_reply=true";
ИначеЕсли ЗначениеЗаполнено(СтруктураИсходногоЗапроса.message_idИсходный) Тогда
ПараметрыЗапросаОтправки = ПараметрыЗапросаОтправки + "&reply_to_message_id="+СтруктураИсходногоЗапроса.message_idИсходный+ "&allow_sending_without_reply=true";
ИначеЕсли ЗначениеЗаполнено(СтруктураЗаписисЗапроса.message_id) Тогда
ПараметрыЗапросаОтправки = ПараметрыЗапросаОтправки + "&reply_to_message_id="+СтруктураЗаписисЗапроса.message_id+ "&allow_sending_without_reply=true";
КонецЕсли;
СтруктураСообщения.ПараметрыЗапросаОтправки = ПараметрыЗапросаОтправки;
ДобавитьСообщениеДляОтправки(СтруктураСообщения);
ДобавитьВходящееСообщениеВРегистр(ВыборкаСообщение, Истина);

//обновим данные
МенеджерРС.ЗапросПеренаправленВГруппы = Истина;
ДобавитьБОТ_ЧатСГенеральнымДиректоромЗапросы(МенеджерРС);

//перешлем ответ в остальные группы
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| БОТ_ПересланныеМеждуЧатамиСообщения.ТокенБотаПересланный КАК ТокенБотаПересланный,
| БОТ_ПересланныеМеждуЧатамиСообщения.ИдЧатаПересланный КАК ИдЧатаПересланный,
| БОТ_ПересланныеМеждуЧатамиСообщения.message_idПересланный КАК message_idПересланный,
| БОТ_ПересланныеМеждуЧатамиСообщения.ТокенБотаИсходный КАК ТокенБотаИсходный,
| БОТ_ПересланныеМеждуЧатамиСообщения.ИдЧатаИсходный КАК ИдЧатаИсходный,
| БОТ_ПересланныеМеждуЧатамиСообщения.message_idИсходный КАК message_idИсходный,
| БОТ_ПересланныеМеждуЧатамиСообщения.ДатаЗаписи КАК ДатаЗаписи,
| БОТ_ПересланныеМеждуЧатамиСообщения.УИДЗаписи КАК УИДЗаписи
|ПОМЕСТИТЬ ВТВсеЗаписи
|ИЗ
| РегистрСведений.БОТ_ПересланныеМеждуЧатамиСообщения КАК БОТ_ПересланныеМеждуЧатамиСообщения
|ГДЕ
| БОТ_ПересланныеМеждуЧатамиСообщения.ТокенБотаИсходный = &ТокенБотаИсходный
| И БОТ_ПересланныеМеждуЧатамиСообщения.ИдЧатаИсходный = &ИдЧатаИсходный
| И БОТ_ПересланныеМеждуЧатамиСообщения.message_idИсходный = &message_idИсходный
| И БОТ_ПересланныеМеждуЧатамиСообщения.ИдЧатаПересланный <> &ИдЧатаПересланный
| И БОТ_ПересланныеМеждуЧатамиСообщения.message_idПересланный <> &message_idПересланный
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТВсеЗаписи.ТокенБотаПересланный КАК ТокенБотаПересланный,
| ВТВсеЗаписи.ИдЧатаПересланный КАК ИдЧатаПересланный,
| ВТВсеЗаписи.ТокенБотаИсходный КАК ТокенБотаИсходный,
| ВТВсеЗаписи.ИдЧатаИсходный КАК ИдЧатаИсходный,
| ВТВсеЗаписи.message_idИсходный КАК message_idИсходный,
| МИНИМУМ(ВТВсеЗаписи.ДатаЗаписи) КАК ДатаЗаписи
|ПОМЕСТИТЬ ВТПервыйСообещние
|ИЗ
| ВТВсеЗаписи КАК ВТВсеЗаписи
|
|СГРУППИРОВАТЬ ПО
| ВТВсеЗаписи.ТокенБотаИсходный,
| ВТВсеЗаписи.message_idИсходный,
| ВТВсеЗаписи.ИдЧатаИсходный,
| ВТВсеЗаписи.ТокенБотаПересланный,
| ВТВсеЗаписи.ИдЧатаПересланный
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТВсеЗаписи.ТокенБотаПересланный КАК ТокенБотаПересланный,
| ВТВсеЗаписи.ИдЧатаПересланный КАК ИдЧатаПересланный,
| ВТВсеЗаписи.message_idПересланный КАК message_idПересланный,
| ВТВсеЗаписи.ТокенБотаИсходный КАК ТокенБотаИсходный,
| ВТВсеЗаписи.ИдЧатаИсходный КАК ИдЧатаИсходный,
| ВТВсеЗаписи.message_idИсходный КАК message_idИсходный,
| ВТВсеЗаписи.ДатаЗаписи КАК ДатаЗаписи,
| ВТВсеЗаписи.УИДЗаписи КАК УИДЗаписи
|ИЗ
| ВТПервыйСообещние КАК ВТПервыйСообещние
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТВсеЗаписи КАК ВТВсеЗаписи
| ПО ВТПервыйСообещние.ТокенБотаПересланный = ВТВсеЗаписи.ТокенБотаПересланный
| И ВТПервыйСообещние.ИдЧатаПересланный = ВТВсеЗаписи.ИдЧатаПересланный
| И ВТПервыйСообещние.ТокенБотаИсходный = ВТВсеЗаписи.ТокенБотаИсходный
| И ВТПервыйСообещние.ИдЧатаИсходный = ВТВсеЗаписи.ИдЧатаИсходный
| И ВТПервыйСообещние.message_idИсходный = ВТВсеЗаписи.message_idИсходный
| И ВТПервыйСообещние.ДатаЗаписи = ВТВсеЗаписи.ДатаЗаписи";

Запрос.УстановитьПараметр("ТокенБотаИсходный", СтруктураИсходногоЗапроса.ТокенБотаИсходный);
Запрос.УстановитьПараметр("ИдЧатаИсходный", СтруктураИсходногоЗапроса.ИдЧатаИсходный);
Запрос.УстановитьПараметр("message_idИсходный", СтруктураИсходногоЗапроса.message_idИсходный);
Запрос.УстановитьПараметр("message_idПересланный", ВыборкаСообщение.reply_to_message_id);
Запрос.УстановитьПараметр("ИдЧатаПересланный", ВыборкаСообщение.reply_to_message_ИДЧата);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СтруктураСообщенияПересылкаОтвета = ПолучитьСтруктуруСообщения();
СтруктураСообщенияПересылкаОтвета.ТокенБота = ВыборкаДетальныеЗаписи.ТокенБотаПересланный;
СтруктураСообщенияПересылкаОтвета.ИдЧата = ВыборкаДетальныеЗаписи.ИдЧатаПересланный;

СтруктураСообщенияПересылкаОтвета.ХранилищеФайла = СтруктураСообщения.ХранилищеФайла;
СтруктураСообщенияПересылкаОтвета.ОтправитьФайл = СтруктураСообщения.ОтправитьФайл;
СтруктураСообщенияПересылкаОтвета.ИмяФайла = СтруктураСообщения.ИмяФайла;
СтруктураСообщенияПересылкаОтвета.ТекстСообщения = "Ответ на обращение в другой группе: " + Символы.ПС + ВыборкаСообщение.ТекстСообщения;

ПараметрыЗапросаОтправки = "&parse_mode=HTML";
//ПараметрыЗапросаОтправки = ПараметрыЗапросаОтправки
//+ "&reply_markup="+ТекстКнопок;
ПараметрыЗапросаОтправки = ПараметрыЗапросаОтправки + "&reply_to_message_id="+ВыборкаДетальныеЗаписи.message_idПересланный+ "&allow_sending_without_reply=true";
СтруктураСообщенияПересылкаОтвета.ПараметрыЗапросаОтправки = ПараметрыЗапросаОтправки;
ДобавитьСообщениеДляОтправки(СтруктураСообщенияПересылкаОтвета);
КонецЦикла;

Иначе
СтруктураСообщения = ПолучитьСтруктуруСообщения();
СтруктураСообщения.ТокенБота = ВыборкаСообщение.ТокенБота;
СтруктураСообщения.ИдЧата = ВыборкаСообщение.ИдЧата;

ТекстСообщения = "Ошибка при поиске исходного сообщения для пересылки в чат с сотрудником. Возможно выбрано не то сообщение для ответа.";
СтруктураСообщения.ТекстСообщения = ТекстСообщения;
ПараметрыЗапросаОтправки = "&parse_mode=HTML";
ПараметрыЗапросаОтправки = ПараметрыЗапросаОтправки
//+ "&reply_markup="+ТекстКнопок
+ "&reply_to_message_id="+ВыборкаСообщение.message_id+ "&allow_sending_without_reply=true";
СтруктураСообщения.ПараметрыЗапросаОтправки = ПараметрыЗапросаОтправки;
ДобавитьСообщениеДляОтправки(СтруктураСообщения);
ДобавитьВходящееСообщениеВРегистр(ВыборкаСообщение, Истина);
КонецЕсли;

Иначе
СтруктураСообщения = ПолучитьСтруктуруСообщения();
СтруктураСообщения.ТокенБота = ВыборкаСообщение.ТокенБота;
СтруктураСообщения.ИдЧата = ВыборкаСообщение.ИдЧата;

ТекстСообщения = "Сообщение не является ответом, оно не будет переслано в чат с сотрудником.";
СтруктураСообщения.ТекстСообщения = ТекстСообщения;
ПараметрыЗапросаОтправки = "&parse_mode=HTML";

ТекстКнопок = ПолучитьТекстКнопокВсехКомандГруппы(, ВыборкаСообщение.ИдЧата);
Если ЗначениеЗаполнено(ТекстКнопок) Тогда
ПараметрыЗапросаОтправки = ПараметрыЗапросаОтправки + "&reply_markup="+ТекстКнопок;
КонецЕсли;
//ПараметрыЗапросаОтправки = ПараметрыЗапросаОтправки + "&reply_to_message_id="+ВыборкаСообщение.message_id+ "&allow_sending_without_reply=true";
СтруктураСообщения.ПараметрыЗапросаОтправки = ПараметрыЗапросаОтправки;
ДобавитьСообщениеДляОтправки(СтруктураСообщения);
ДобавитьВходящееСообщениеВРегистр(ВыборкаСообщение, Истина);
КонецЕсли;

Исключение
СтруктураСообщения = ПолучитьСтруктуруСообщения();
СтруктураСообщения.ТокенБота = ВыборкаСообщение.ТокенБота;
СтруктураСообщения.ИдЧата = ВыборкаСообщение.ИдЧата;

ТекстСообщения = "Ошибка при обработке сообщения. Обратитесь к администратору 1С. Текст ошибки: " + ОписаниеОшибки();
ТекстСообщения = ЗаменитьНедопустимыеСимволыВИмениФайла(ТекстСообщения, "");
СтруктураСообщения.ТекстСообщения = ТекстСообщения;
ПараметрыЗапросаОтправки = "&parse_mode=HTML";
ПараметрыЗапросаОтправки = ПараметрыЗапросаОтправки
//+ "&reply_markup="+ТекстКнопок
+ "&reply_to_message_id="+ВыборкаСообщение.message_id+ "&allow_sending_without_reply=true";
СтруктураСообщения.ПараметрыЗапросаОтправки = ПараметрыЗапросаОтправки;
ДобавитьСообщениеДляОтправки(СтруктураСообщения);
ДобавитьВходящееСообщениеВРегистр(ВыборкаСообщение, Истина);
КонецПопытки;
     
 
what is notes.io
 

Notes.io is a web-based application for taking notes. You can take your notes and share with others people. If you like taking long notes, notes.io is designed for you. To date, over 8,000,000,000 notes created and continuing...

With notes.io;

  • * You can take a note from anywhere and any device with internet connection.
  • * You can share the notes in social platforms (YouTube, Facebook, Twitter, instagram etc.).
  • * You can quickly share your contents without website, blog and e-mail.
  • * You don't need to create any Account to share a note. As you wish you can use quick, easy and best shortened notes with sms, websites, e-mail, or messaging services (WhatsApp, iMessage, Telegram, Signal).
  • * Notes.io has fabulous infrastructure design for a short link and allows you to share the note as an easy and understandable link.

Fast: Notes.io is built for speed and performance. You can take a notes quickly and browse your archive.

Easy: Notes.io doesn’t require installation. Just write and share note!

Short: Notes.io’s url just 8 character. You’ll get shorten link of your note when you want to share. (Ex: notes.io/q )

Free: Notes.io works for 12 years and has been free since the day it was started.


You immediately create your first note and start sharing with the ones you wish. If you want to contact us, you can use the following communication channels;


Email: [email protected]

Twitter: http://twitter.com/notesio

Instagram: http://instagram.com/notes.io

Facebook: http://facebook.com/notesio



Regards;
Notes.io Team

     
 
Shortened Note Link
 
 
Looding Image
 
     
 
Long File
 
 

For written notes was greater than 18KB Unable to shorten.

To be smaller than 18KB, please organize your notes, or sign in.