Вебхук. Путь Телеграма

Публикация № 1128028

Разработка - Системная интеграция - Внешние источники данных

Телеграм telegram вебхук webhook. бот для телеграм + на http сервис телеграма webhook

Долгое (на самом деле нет) и нелегкое путешествие телеграма к неведомым (из за РКН) конфигурациям 1С. Памятка себе.

Ну вот, когда где-нибудь едешь, то в голове столько мыслей, что написать, а когда садишься писать, где вы, все мысли?!

Вдох

Выдох

Поехали (с)

 

Давно хотел написать что нибудь интересно, но все интересно, что мне поддавалось, было уже давно написано. Про связку телеграм + 1с тоже уже все давно написано, причем раз в несколько недель выходит новая публикация, но мне эта разработка так понравилась, что, пожалуй, напишу еще одну. Но хватит лирики.

P.S. Поскольку вышел там какой то закон, все картинки рисовал сам.

 

Сказ о том, как телеграм путь к 1С искал.

Однажды я подумал... и понеслось.

...

А потом думаю - "оповещать покупателей в телеграме, из 1с, о статусах заказов было бы прикольно". Но на деле оказалось все куда интересней. Получение данных из 1с для сотрудников! Эта идея показалась мне очень интересной. Есть один маааааленький минус... телеграм запрещен в РФ. Вайбер? Да, как вариант. Может быть когда нибудь) 

"Я смутно помню тот момент, это был не легкий выбор. Все как в туманном сне, я плохо контролирую свое тело, вокруг паника, нужно встать и идти. В голове была одна мысль - нельзя останавливаться. Нужно было выбрать направление. Передо мной появился он... протянув руку и раскрыв кулак, он сказала:

- Выберешь голубую, и история закончится прямо здесь.

 На ладони лежали две таблетки - голубая и красная. Это была точка не возврата " (с) bot_telegram

Конечно, для себя я сразу определил, что буду пользоваться вебхуком, когда узнал, что такое возможно) Итак, что нам понадобится для вебхука:

1. Сервер apach

2. Статический(белый ip) на сервере. 

3. Виртуальный сервер - если у вас заблокирован телеграм. 

4. Прямые руки.

5. Чашечка чая.

6. Две чашечки кофе. 

Теперь подробней... По факту я конечно начал с шестого пункта, но здесь пойдем по порядку.

1. Сервер

Качаем apach 2.4 и vc_redist с этого сайта. Не перепутайте разрядности(версия apach на момент написания статьи).

- Разархивируем папку apach24 в корень системного диска. По умолчанию конфигурационный файл настроен на диск C:\, так что если у вас нет такого диска, или у системного диска другая буква, необходимо будет заменить это в файле.

Открываем файл C:\Apache24\conf\httpd.conf блокнотом. Находим в нем строку Listen 80, и ниже нее добавляем допустим Listen 8018. Именно на порт 8018 будет идти запрос. Можете установить какой предпочитаете.

- Установим vc_redist

- Для установки службы, откроем командную строку от имени администратора. Перейдем в каталог bin командой:

cd C:\Apache24\bin

и следующей командой установим службу:

httpd.exe -k install

Кажись служба установлена, ну зайдем в список служб проверим на всякий случай) Если не получилось, то выполним пункт назначения 5 или 6, на ваше усмотрение, и попробуем еще раз.

2. Статический ip

Здесь все еще проще. Чтобы телеграмму было куда отправить телеграм мог отправить запрос, нужен статический ip все потому что он белый

Если он уже есть - хорошо, если нет - нужно как то чтобы был. Далее пробрасываем порт на наш сервер apach на порт 8018, чтобы открыв наш адрес через белый ip, мы увидели что It works!

PS Если не получиться, но вы уверены, что все сделали правильно, то проверьте не блокирует ли ваш запрос антивирус или брандмауэр.

3. VPS или Виртуальный сервер. 

Здесь все достаточно просто - поскольку обращения телеграма к нашему серверу будет блокировать провайдер, то нам нужен посредник. Есть замечательное видио. по настройки этого посредника, так же у автора на сайте есть статья по этому видио, откуда можно скопировать все команды. Я арендовал VPS в другом месте, так как мне показалось, что рекомендуемый VPS дороговат. Я нашел за 3 евро в месяц. Так же выбрал ОС debian и все настраивал полностью по видио. Все получилось! 

Единственное, что у меня не получилось - это установить вебхук))))))))))) Так как в видио этого нет, а я не совсем бумбум) Но я не сдрейфил, связался с автором и попросил помочь, за что ему большое спасибо)

Если у вас на VPS не установлен curl(а если вы только развернули сервер, то скорей всего так и будет), нужно выполнить команду:

apt install curl

И установка вебхука:

curl -F "url=https://IP_VPS:Port" -F "certificate=@/etc/ssl/certs/nginx-selfsigned.crt" "https://api.telegram.org/bot{ТокенБота}/setWebhook"

IP_VPS - ip ващего виртуального сервера.

Port - порт, который установили в конфигурационном файле telegram.conf.

nginx-selfsigned.crt - сгенерированный сертификат. 

Не забудьте указать порт, при установки вебхука, а то я порядком так тупил в этот момент)))

Если кому то интересно, могу продлить аренду еще на пару месяцев, и попробовать пробросить порт на ваш ip, исключительно для тестов. Но не уверен, что у меня это получится) Если что, пишите в лс, можем попробовать))

4. Да начнется веселье....

Ну да ладно, будем откровенны - прямые руки нужны на каждом пункте этой эпопеи. И даже щелчок Таноса здесь не поможет.

Предположим что бота вы уже создали. Это делается довольно просто и есть куча мануалов, а еще есть хорошая статья.  

Теперь, в 1с. Запускаем конфигуратор от имени администратора

Нам нужно создать http сервис, который будет принимать запросы телеграма. Корневой каталог укажем bot_telegram

 

На закладке Шаблоны URL добавим шаблон, предположим ОбработатьВходящиеСообщение, с двумя методами GET и POST.

В обработчике GET напишем следующий код:

Ответ = Новый HTTPСервисОтвет(200);
Ответ.Заголовки.Вставить("Content-Type","text/html; charset=utf-8");
Попытка
	Ответ.УстановитьТелоИзСтроки("Связь есть, продолжаем");
Исключение
	Ответ.КодСостояния = 400;
	Ответ.УстановитьТелоИзСтроки(ОписаниеОшибки());
КонецПопытки;
Возврат Ответ;

Обновим конфигурацию базы данных. Теперь необходимо опубликовать наш сервис. Переходим на закладку Администрирование - Публикация на веб сервере... Заполняем необходимые данные

Сразу же включим отладку веб сервера. Перейдем на закладку Прочее

Жмем Опубликовать, и перезагружаем службу apach(в моем случае службу приходилось перезагружать каждый раз, когда вносили изменения в конфигурацию). 1с предложит самой перезапустить службу, но не верьте ей, сделайте это сами. Переходим по нашему VPS IP Если все сделано правильно, то должны увидеть наше сообщение:

Теперь напишем команду приветствия нового пользователя. Переходим в обработчик POST запроса. Сразу скажу что при принятии сообщения, нужно различать текстовую команду, от клавиатурной команды сообщения (inline клавиатура). Я делаю это проверкой свойства структуры callback_query. Функцией РазобратьПакет json разберем пакет на структуры.

Добавил справочник Боты, куда заношу токен, и сервер. Потом если в параметрах процедуры отправки сообщения эти параметры пустые, тогда получаю бота по умолчанию, у которого активен соответствующий реквизит. Вы же можете прописать настройки бота в коде для тестирования, и передавать в параметрах. Во вложении будет конфигурация со справочником.

Функция ОбработатьВходящиеСообщенияPOST(Запрос)
	
	ПакетСообщения = Разобратьпакет(Запрос.ПолучитьТелоКакСтроку());
	ПакетСообщения = ?(ПакетСообщения.Свойство("callback_query"), ПакетСообщения.callback_query, ПакетСообщения); // Если ответ с inline клавиатуры, тогда берет подпакет
	Подписчик = ПакетСообщения.message.chat.id;
	Если ПакетСообщения.message.Свойство("text") Тогда 															  // Если нет текста то ничего не делаем
		Если ПакетСообщения.Свойство("data") Тогда 																  // Если есть свойство data значит ответ пришел с inline клавиатуры
			//ОбработатьКомандуinline(ПакетСообщения, Подписчик);
		Иначе
			Если ПакетСообщения.message.text = "/start" Тогда														  // Определяем какую команду отправил пользователь. первая команда всегда /start, так как пользователь только подписался
				ТекстСообщения = "Добро пожаловать в чат =/";
				Успешно = Неопределено;
				Кнопки = СформироватьМассивКомандКлавиатуры();														  // Сформируем команды начальной клавиатуры 
				ОтправитьСообщениеПользователю(Подписчик,,,ТекстСообщения,Успешно,,Кнопки);
			ИначеЕсли ПакетСообщения.message.text = "ЕстьCHO??" Тогда
				//ПоказатьПодписчикуinlineКлавиатуру(Подписчик);
			Иначе
				//ОтветКомандаНеНайдена(Подписчик, Строка(ПакетСообщения.message.text));
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
	Ответ = Новый HTTPСервисОтвет(200);
	Возврат Ответ;
	
КонецФункции

Функция Разобратьпакет(СтрокаJSON) 
	
	Чтение = Новый ЧтениеJSON;
	Чтение.УстановитьСтроку(СтрокаJSON);
	Данные = ПрочитатьJSON(Чтение, Ложь);
	Чтение.Закрыть();	
	
	Возврат Данные;
	
КонецФункции

Функция СформироватьМассивКомандКлавиатуры()
	
	МассивКнопок = Новый Массив;
	МассивКнопок.Добавить("ЕстьCHO??");
	Строки = Новый Массив;
	Строки.Добавить(МассивКнопок);
	КнопкиJs = ЗаписатьJS(Новый Структура("keyboard", Строки));
	
	Возврат КнопкиJs;
	
КонецФункции

Функция ЗаписатьJS(СтруктураJS)
	
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку();
	ЗаписатьJSON(ЗаписьJSON,СтруктураJS);
	Возврат ЗаписьJSON.Закрыть();	

КонецФункции

Процедура ОтправитьСообщениеПользователю(id_Чата, Токен = Неопределено, Сервер = Неопределено, Сообщение, Успешно = Неопределено, ПутьФайла = Неопределено, Кнопки = Неопределено) Экспорт
	
	Если Токен = Неопределено Тогда
		ПолучитьБотаПоУмолчанию(Токен, Сервер);
	КонецЕсли;
	
	Если ЗначениеЗаполнено(ПутьФайла) Тогда
		//ОтправитьФайл(id_Чата, Токен, Сервер, ПутьФайла);
	Иначе
		
		ИнтернетПрокси = Новый ИнтернетПрокси(Ложь);
		ИнтернетПрокси.Установить("https","195.171.27.244",3128, "", "", Ложь);
		
		Ресурс = "bot" + Токен + "/sendMessage?chat_id=" + СтрЗаменить(Формат(id_Чата, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text=" + Сообщение+ ?(Кнопки<>Неопределено, "&reply_markup="+Кнопки ,"");
		ЗС = Новый ЗащищенноеСоединениеOpenSSL();
		
		Соединение  =  Новый HTTPСоединение(Сервер,443,,,ИнтернетПрокси,,ЗС);
		Запрос = Новый HTTPЗапрос(Ресурс);
		
		Попытка
			Ответ = Соединение.Получить(Запрос);
		Исключение
			Успешно = ОписаниеОшибки();
			Возврат;
		КонецПопытки;
		
		Успешно = Ответ.КодСостояния = 200;
	КонецЕсли;
	
КонецПроцедуры

Процедура ПолучитьБотаПоУмолчанию(Токен, Сервер)
	
	Запрос = Новый Запрос("ВЫБРАТЬ
	                      |	Боты.Токен КАК Токен,
	                      |	Боты.Сервер КАК Сервер
	                      |ИЗ
	                      |	Справочник.Боты КАК Боты
	                      |ГДЕ
	                      |	Боты.Основной");
	
	Выборка = Запрос.Выполнить().Выбрать();
	
	Выборка.Следующий();
	
	Токен 	= Выборка.Токен;
	Сервер 	= Выборка.Сервер;
	
КонецПроцедуры

Совсем забыл упомянуть, для стран где телеграм заблокирован, нужно использовать прокси. Я нашел один, который стабильно работал на момент написания статьи, и прямо в коде его прописал. Вот очень хорошая статья по этому поводу.

Обновляем конфигурацию, перезапускаем службу apach.

Так же при отправке ответа, формируется статическая клавиатура с командами, ну чтобы не писать их каждый раз.  В результате должны получить что то типа такого:

Бот у нас будет не особо доброжелательным. Ну еще бы...

Далее на нашу единственную команду клавиатуры сформируем inline клавиатуру. Смысл такой клавиатуры, что она привязана к конкретному сообщению. В текущей разработке у них нет особого смысла, но да ладно мы тут вроде как вебхук поднимаем, а не переписываемся

Процедура ПоказатьПодписчикуinlineКлавиатуру(Подписчик)
    
    ТекстСообщения = "А чо нада???";
    Успешно = Неопределено;
    Кнопки = СформироватьМассивКомандКлавиатуры_inline();
    ОтправитьСообщениеПользователю(Подписчик,,,ТекстСообщения,Успешно,,Кнопки);
        
КонецПроцедуры

Функция СформироватьМассивКомандКлавиатуры_inline()
    
    МассивКнопок = Новый Массив;
    МассивКнопок.Добавить("Картинка");
    МассивКнопок.Добавить("Аудио");
    МассивКнопок.Добавить("Документ");
    Кнопки = Новый Массив;
    Для каждого Кнопка ИЗ МассивКнопок Цикл
        Кнопки.Добавить(Новый Структура("text, callback_data", кнопка, СтрЗаменить(Кнопка, " ", "")));
    КонецЦикла;
    Строки = Новый Массив;
    Строки.Добавить(Кнопки);
    КнопкиJs = ЗаписатьJS(Новый Структура("inline_keyboard", Строки));
    Возврат КнопкиJs;


КонецФункции

Сформируется три кнопки:

Ну и раз уж на то пошло, тогда давайте напишем обработчик этих команд. Будем указывать путь в файлу, в зависимости от того, что выбрал пользователь.

Процедура ОбработатьКомандуinline(ПакетСообщения, Подписчик)
	
	Отказ = ложь;
	
	Если ПакетСообщения.data = "Картинка" Тогда
		ПутьКФайлу = "C:\fil_bot\картинка.jpg";		
		ТекстСообщения = "Ваша картинка, сЭр";
	ИначеЕсли ПакетСообщения.data = "Аудио" Тогда
		ПутьКФайлу = "C:\fil_bot\audio.mp3";
		ТекстСообщения = "Ваше аудио, сЭр";
	ИначеЕсли ПакетСообщения.data = "Документ" Тогда
		ПутьКФайлу = "C:\fil_bot\document.xlsx";
		ТекстСообщения = "Ваш документ, сЭр";
	Иначе
		Отказ = истина;
	КонецЕсли;
	
	Если Не Отказ Тогда
		ОтправитьСообщениеПользователю(Подписчик,,,ТекстСообщения,, ПутьКФайлу);
	КонецЕсли;
	
КонецПроцедуры

И процедура отправки файла, которую я честно стырил отсюда  и немного переделал(надеюсь не будут судебные иски и вот это вот все) 

Процедура ОтправитьФайл(id_Чата, Токен, Сервер, ПутьКФайлу)
    
	Файл = Новый Файл(ПутьКФайлу);
	ИмяОтправляемогоФайла = Файл.Имя;	
    
    СтрокаСоединения = "/bot" + Токен + "/sendDocument";
    
    Boundary = "----"+Строка(Новый УникальныйИдентификатор());
    
    //Определяем массив для процедуры ОбъединитьФайлы
    МассивФайловДляОбъединения = Новый Массив;
    
    //Формируем начальный фрагмент файла POST-запроса
    ИмяФайлаОтправкиНачало = ПолучитьИмяВременногоФайла("txt");
    ФайлОтправкиНачало = Новый ЗаписьТекста(ИмяФайлаОтправкиНачало, КодировкаТекста.UTF8);
    
    //Формируем конечный фрагмент файла POST-запроса
    ИмяФайлаОтправкиКонец = ПолучитьИмяВременногоФайла("txt");
    ФайлаОтправкиКонец = Новый ЗаписьТекста(ИмяФайлаОтправкиКонец, КодировкаТекста.UTF8);
    
    ТекстДляОтправки = "";
    
    ТекстДляОтправки = ТекстДляОтправки + "--"+Boundary + Символы.ПС;
    ТекстДляОтправки = ТекстДляОтправки + "Content-Disposition: form-data; name=""chat_id""" + Символы.ПС + Символы.ПС;
    ТекстДляОтправки = ТекстДляОтправки + id_Чата + Символы.ПС;
    
    ТекстДляОтправки = ТекстДляОтправки + "--"+Boundary + Символы.ПС;
    ТекстДляОтправки = ТекстДляОтправки + "Content-Disposition: form-data; name=""document""; filename="""+ИмяОтправляемогоФайла+"""" + Символы.ПС;
    
    ФайлОтправкиНачало.ЗаписатьСтроку(ТекстДляОтправки );
    ФайлОтправкиНачало.Закрыть();
    
    МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиНачало);
    
    МассивФайловДляОбъединения.Добавить(СокрЛП(ПутьКФайлу));
    
    ТекстДляОтправки = "" + Символы.ПС;
    ТекстДляОтправки = ТекстДляОтправки + "--"+Boundary+"--";
    ФайлаОтправкиКонец.ЗаписатьСтроку(ТекстДляОтправки);
    ФайлаОтправкиКонец.Закрыть();
    МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиКонец);
    
    ИмяФайлаОтправки = ПолучитьИмяВременногоФайла("txt");
    ОбъединитьФайлы(МассивФайловДляОбъединения, ИмяФайлаОтправки);
    
    HTTPЗапрос = Новый HTTPЗапрос;
    Заголовки = Новый Соответствие;
    
    HTTPЗапрос.Заголовки.Вставить("Connection", "keep-alive");
    HTTPЗапрос.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary="+Boundary);
    
    HTTPЗапрос.УстановитьИмяФайлаТела(ИмяФайлаОтправки);
    HTTPЗапрос.АдресРесурса = СтрокаСоединения;
    
    ЗС = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
	ИнтернетПрокси = Новый ИнтернетПрокси(Ложь);
	ИнтернетПрокси.Установить("https","195.171.27.244",3128, "", "", Ложь);
    HTTPСоединение = Новый HTTPСоединение(Сервер,,,,ИнтернетПрокси,, ЗС);
    
    Попытка
        ОтветHTTP = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
    Исключение
		
	КонецПопытки;
	
КонецПроцедуры

И получаем то, что выбрали

Так же сделал обработку, для отправки сообщений в чат пользователя от имени бота

Как то так...

Получился какой то набор ссылок) Nо возможно этого я и хотел, так как уже при повторном поднятии вебхука, у меня не все получалось)

Мне понравилась это направление, в дальнейшем хочу реализовать отправку отчетов и получение данных из базы 1с. Единственное - не знаю в каком направлении двигаться дальше - какие отчеты отправлять, какие данные получать, для каких конфигураций. На моем предприятии данный функционал не актуален, поэтому если кому то понадобится, или у кого то есть идеи, пишите в лс или в комментарии, буду благодарен. 

Конфигурацию прикреплю во вложение. 

Разрабатывалось на платформе 8.3.15.1656, но на более низких версиях 8.3 должно работать без проблем. 

 

 

 

 

 

 

 

 

 

 

 

 

 

Используемые источники:

Установка сервера Аpache 2.4

Телеграм + 1С + Вебхуки + Апач + Самоподписанный сертификат

1С:Пирог

https://nizamov.school/

HTTP Сервисы: Путь к своему сервису. Часть 1

 

Скачать файлы

Наименование Файл Версия Размер
Вебхук. Путь Телеграма. :

.cf 16,35Kb
02.10.19
14
.cf 16,35Kb 14 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ex3mall 2 03.10.19 22:42 Сейчас в теме
Нужный материал.

Когда-то, надеюсь, здравый смысл восторжествует, РКН перестанет изображать муху, бьющуюся в стекло, и Телеграмм начнет работать стабильно у всех на мобилах.

Вообще на сегодняшний день Телеграм - идеальная платформа для создания групп и оповещения о событиях (например, выгрузка управленческих отчетов, опросники - для согласования коммерческих условий и договоров, или информирование о событиях для оперативного принятия решения).

Но, к сожалению, из-за опасения "А вдруг все-таки заблокируют наглухо" люди предпочитают тратить деньги на создание собственных мобильных приложений.
semagin@gmail.com; +1 Ответить
8. for_sale 821 04.10.19 14:22 Сейчас в теме
(1)
У меня вообще без проблем работает, даже без ВПН.
Ну а уж жить в этой стране без ВПН - это как-то...
2. acanta 03.10.19 22:51 Сейчас в теме
Вау. Раньше использовали Миранду как локальный сервер с приложением от глобального чата плюс выгонялка из 1с. Видимо проблема у них с собственным сервером.. Теперь телеграмм тоже можно и даже больше. Это очень круто.
3. kuzyara 1084 04.10.19 05:21 Сейчас в теме
4. platonov.e 108 04.10.19 07:22 Сейчас в теме
(3) Думал туда еще знак РКН пририсовать, но посмотрел на это, и удалил его)
5. serg-lom89 61 04.10.19 10:49 Сейчас в теме
отлично
Согласен счас Телега самый доступный и простой во внедрении для 1С.
Публичный Api что открыт это прекрасно
Сам много познал из https://nizamov.school/ и после него тоже занесло в дебри интеграции с веб !
Вебхук еще не использовал ,но надеюсь в ближайшее время дойдут руки.!
6. platonov.e 108 04.10.19 10:53 Сейчас в теме
(5)Успехов вам) Если что обращайтесь, постараюсь помочь) Но там вроде все просто)
7. Region102 04.10.19 11:49 Сейчас в теме
Очень рад что мои уроки пригодились. Скоро запишу полноценный курс по telegram.
serg-lom89; platonov.e; +2 Ответить
9. dap 12 09.10.19 17:18 Сейчас в теме
У меня файловая база опубликована на IIS10
успешно приходят сообщения в 1С на HTTP сервис от Бота только в том случае, если в базе НЕТ пользователей (без авторизации)
Если завожу в базу пользователей, то соответственно getWebhookInfo - дает ошибку 401 авторизации
и сообщения от бота не приходят.

1. публиковал базу без галочки "Использовать аутентификацию ОС"
2. в IIS везде от сервера до базы анонимная авторизация ВКЛЮЧЕНА, остальные - отключены.

Поэтому вопрос. Раскройте пожалуйста тему авторизации. Как должна быть настроена авторизация, чтобы связка
HTTP сервис 1С и БОТ Телеги работала нормально. Для случая, когда в базе зарегистрированы пользователи.
10. platonov.e 108 09.10.19 20:26 Сейчас в теме
(9) Я такое на apach обходил следующим образом: В 1с заводил пользователя с необходимыми правами. В файле default.vrd прописывал логин и пароль этого пользователя, и при обращении к сервису, он автоматически авторизовывался под ним. Прописывал в атрибуте id, тег point. получалась строка такого вида:
ib="File="Каталогбазы";Usr="Пользователь";Pwd="Пароль;";"


Желательно наверное латиницей прописывать) Делал я это не для телеграма, но работало. Однако с точки зрения безопасности это не самая лучшая идея. Позже попробую найти другой способ)
15. uno-c 164 10.06.20 11:08 Сейчас в теме
(9)
Для случая, когда в базе зарегистрированы пользователи

В setWebhook нужно указать url типа такого:
"https://ИмяПользователя:пароль*ВашДомен.ru/ИмяПубликации/hs/КорневойUrlСервиса/ПутьШаблона"
в адресе звездочку * - считать за символ собаки (которая на клавиатуре над двойкой), форум почему-то собаку звездочкой заменяет.

Имя пользователя и пароль лучше латиницей без пробелов завести, потому как уже проверено - пашет нормально.
Katepompom; platonov.e; +2 Ответить
11. dimasts 22 25.12.19 22:34 Сейчас в теме
Подскажите пожалуйста, а требуется ли иметь на своём сервере HTTPS? Если да то как его установить и какого уровня HTTPS будет достаточно?
12. platonov.e 108 08.01.20 16:25 Сейчас в теме
(11) Я немного не понимаю о чем вы) Если сделать все по статье, то вроде как ничего дополнительно устанавливать не нужно)
13. strafer 17.02.20 16:50 Сейчас в теме
Ошибка есть
Процедура ОбработатьКомандуinline(ПакетСообщения, Подписчик)
	
	Отказ = ложь;
	
	Если ПакетСообщения.data = "Картинка" Тогда
		ПутьКФайлу = "C:\fil_bot\картинка.jpg";		
		ТекстСообщения = "Ваша картинка, сЭр";
	ИначеЕсли ПакетСообщения.data = "Аудио" Тогда
		ПутьКФайлу = "C:\fil_bot\audio.mp3";
		ТекстСообщения = "Ваше аудио, сЭр";
	ИначеЕсли ПакетСообщения.data = "Документ" Тогда
		ПутьКФайлу = "C:\fil_bot\document.xlsx";
		ТекстСообщения = "Ваш документ, сЭр";
	Иначе
		Отказ = истина;
	КонецЕсли;
	
	Если Не Отказ Тогда
		ОтправитьСообщениеПользователю(Подписчик,,,ТекстСообщения,, ПутьКФайлу, Кнопки); // переменная Кнопки видимо тут лишняя
	КонецЕсли;
	
КонецПроцедуры
Показать
14. platonov.e 108 17.02.20 16:58 Сейчас в теме
16. Olenevod 26 07.07.20 10:04 Сейчас в теме
Всем привет.
Люди добрые, подскажите, кто знает: какова периодичность повторов вебхуков с телеграм сервера?
Это вопрос к тому, чтобы база успевала обрабатывать его иначе ошибка 504. И можно ли управлять временем через которое повторяется "непринятый" вебхук?

В интернете ничерта нет.. ((
17. user1387276 07.07.20 10:08 Сейчас в теме
(16) Можно только сделать ограниченное количество подключений
Прикрепленные файлы:
Olenevod; +1 Ответить
18. Olenevod 26 08.07.20 09:18 Сейчас в теме
(17) Спасибо. Не такая гибкая настройка, конечно. Но наверное по другому, действительно, никак.
19. sokir 1 26.08.20 22:50 Сейчас в теме
У меня "It works!" выводит только если localhost набрать, а если белый ип, то ничего.
Апач на порту 80. Что может быть не так?
20. platonov.e 108 27.08.20 07:16 Сейчас в теме
25. sokir 1 09.10.20 18:40 Сейчас в теме
(20) да я то понял что надо пробросить и пробросил, но не работает. Хотя iis норм через инет заработал.
Не понятно почему апач не хочет. Весь инет облазил - вроде нет настройки что бы только внутри сети работал - оно и странно было бы, иначе зачем вообще веб-сервер. Файервол вообще отключил, антивирь виндовый как бы не может блокировать.
Апач на порту 85, не хочет на 80 стартовать даже если iis отключить.
21. user775441 02.09.20 15:12 Сейчас в теме
Добрый день! Система выдает ошибку "{"ok":false,"error_code":409,"description":"Conflict: can't use getUpdates method while webhook is active; use deleteWebhook to delete the webhook first"}" - подскажите, как это исправить?
22. platonov.e 108 02.09.20 15:26 Сейчас в теме
(21) Все ведь написано в описании - нельзя использовать метод, по получению сообщений, пока активен вебхук.
Т.е. либо вы сообщения получаете вебхуком, либо методом. Если хотите использовать метод, удалить вебхук.
23. user775441 02.09.20 15:35 Сейчас в теме
Я использую getUpdates, код работал где-то полгода назад, сейчас вернулся к этой теме. Про какой Webhook идёт речь не могу понять.
24. platonov.e 108 02.09.20 15:43 Сейчас в теме
(23) Что вернет запрос /getWebhookInfo ?
26. Andrey73 11.10.20 20:21 Сейчас в теме
Жаль, что зарезали валюту GRAM, Можно было бы выставлять счета и оплачивать их через телегу.
Оставьте свое сообщение

См. также

Практический пример настройки обмена с казначейством в БГУ Промо

Внешние источники данных v8 БГУ Россия Госбюджет Абонемент ($m)

Материалов для бюджетников, всегда не хватает, особенно с практическими примерами. Попробую описать процесс настройки с нуля обмена с ОФК/УФК на примере выгрузки документа «Заявки на кассовый расход» из БГУ и импорта в СЭД.

1 стартмани

13.04.2012    66509    Vestr    17    

Cбор и анализ ошибок при помощи Sentry, или как упростить жизнь себе и пользователям

Практика программирования Интеграция v8 Абонемент ($m)

Цель данной статьи - сделать процесс сбора и анализа ошибок, происходящих в базе, максимально простым, быстрым и удобным, собирать статистику по ошибкам, местам их возникновения и частоте их появления, а также в деталях разобрать все тонкости по интеграции 1С с Sentry.

1 стартмани

09.10.2020    2833    hexhoc    12    

Выбираем российского провайдера для интеграции с WhatsApp

WEB Интеграция v8 Россия Абонемент ($m)

Собственно, почему выбираем именно провайдера и почему российского? WhatsApp, создавая свое API, преследовал две цели - делать деньги и минимизировать спам. И чтобы убить сразу двух зайцев, было принято решение предлагать API исключительно через партнеров. Ну а вопрос по поводу российского партнера скорее уже риторический. И не только из-за курса рубля, но и из-за таланта работать с российскими телефонными номерами, коим одарены далеко не все провайдеры. Между тем статья не претендует на всесторонний анализ всех возможностей всех провайдеров. Мы копнем лишь верхушку айсберга этого немаленького рынка.

1 стартмани

19.05.2020    4375    ripreal1    5    

1С+Firebase. Оперативное отображение информации

Интеграция Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Появилась задача по отображению информации из базы в "режиме реального времени" с возможностью масштабирования количества подключенных клиентов (неплохо бы уметь подключаться с мобильных устройств), плавающей нагрузкой и минимальными затратами на разработку без изобретения сложных велосипедов. В уме довольно быстро всплыло "Firebase". Далее небольшой опыт реализации взаимодействия с Firestore для раскрашивания объектов карты.

1 стартмани

06.04.2020    2309    oyti    0    

На хайпе: интегрируем 1С с сервисом видеоконференций Zoom

Интеграция v8 1cv8.cf Абонемент ($m)

По причине коронавируса всем резко понадобились видеоконференции, а Зум (zoom.us) - одна из самых популярных платформ для этого. Когда пользователей и трансляций в зуме много, возникает необходимость в автоматизации. Рассматривается интеграция 1С с Zoom через API - от регистрации в сервисе до создания конференции из 1С.

1 стартмани

04.04.2020    6541    muzipov    4    

Разбираемся с web-kit в 1С, на примере интеграции TinyMCE в управляемую форму в УТ 11.4. Допиливаем обмен с сайтом в УТ 11.4

Обмен данными 1С Интеграция Адаптация типовых решений v8 v8::УФ УТ11 Абонемент ($m)

Многие уже знают, что в релизе платформы 8.3.14.1565, браузер Internet Explorer был заменен на Web-Kit, это на самом деле большой шаг вперед, но я уверен, многим, как и мне, пока не совсем понятно, что к чему. Возник опыт использования web-kit в 1С, вызова JS из 1С и вызова 1С из JS. Давайте вместе попробуем понять, чем одно отличается от другого, и заодно сделаем, что-нибудь полезное. Да и наверняка многим придется переписывать свои подобные поделки после обновления на новую платформу, так что надеюсь мой опыт окажется полезным.

2 стартмани

08.12.2019    8561    Бэнни    25    

Описание формата внутреннего представления данных 1С в контексте обмена данными

Практика программирования Внешние источники данных v8 v8::УФ 1cv8.cf Абонемент ($m)

Фирма 1С не рекомендует использовать внутреннее представление данных для любых целей, которые отличны от обмена с 1С:Предприятием 7.7. Но сама возможность заглянуть на "внутреннюю кухню" платформы с помощью функций ЗначениеВСтрокуВнутр(), ЗначениеВФайл(), ЗначениеИзСтрокиВнутр() и ЗначениеИзФайла(), дала возможность сообществу программистов 1С разработать новые приемы разработки и анализа. Так, именно на использовании внутреннего представления был построен алгоритм "быстрого массива", который позволяет практически мгновенно создать массив в памяти на основании строки с разделителями. С помощью разбора внутреннего представления можно "на лету" программным кодом выполнить анализ обычной формы и даже сделать редактор графической схемы. Во внутреннем формате сохраняют свои данные между сеансами различные популярные внешние обработки. А еще это возможность сделать быстрый обмен с внешними системами.

1 стартмани

06.09.2019    19744    Dementor    30    

Обмен большими данными между клиентом и сервером

Внешние источники данных v8 Абонемент ($m)

В статье рассматривается вопрос передачи больших объемов данных, превышающих теоретический лимит сеансовых данных (4Гб за вызов) (они же временное хранилище) как с клиента на сервер, так и в обратном направлении.

1 стартмани

27.08.2019    13802    logos    32    

АИТП. Простой, событийно-управляемый обмен данными

Внешние источники данных v8 1cv8.cf Абонемент ($m)

В статье, на примере обмена с ЗУП 3.1, демонстрируется механизм событийно-управляемого взаимодействия конфигурации АИТП с прикладными решениями на платформе 1С:Предприятие.

1 стартмани

04.07.2019    4977    blackhole321    0    

Интеграция 1С с Битрикс CRM через REST API

Внешние источники данных v8 1cv8.cf Абонемент ($m)

На фоне неутихающего обострения «бизнеса» по внедрению СРМ-систем остро встают вопросы обмена данными с уже существующими системами. В статье рассматривается выгрузка контактов, товаров и сделок из 1С в Битрикс CRM через REST API, приложена обработка для тестирования.

1 стартмани

28.06.2019    23375    muzipov    9    

Совместное использование 1С:Сервер взаимодействия и Документооборот 8 КОРП, редакция 2.1.13 - Уведомления для рабочего стола

Пользователю системы Работа с интерфейсом Интеграция Документооборот и делопроизводство Документооборот и делопроизводство v8 ДО УУ Абонемент ($m)

С версии ДО 2.1.13 в программу встроена подсистема Обсуждения. Данная подсистема позволяет производить уведомление пользователей без необходимости открытия программы.

1 стартмани

18.06.2019    13713    ilya.rudziak    10    

1C + Python + Django Rest Framework + Vue.js. Опыт несложной full-stack разработки

Практика программирования Внешние источники данных Обмен через XML WEB Разработка v8 1cv8.cf Абонемент ($m)

В этой статье мы рассмотрим путь и основные моменты создания небольшого вэб-сервиса, который мы называем "Онлайн Прайс-лист". Выгрузка из 1С, бэкенд, фронтенд, получение заказов в 1С.

1 стартмани

22.04.2019    34088    riposte    65    

Аутентификация на внешних сервисах посредством OAuth

Информационная безопасность Внешние источники данных v8 v8::УФ 1cv8.cf Абонемент ($m)

Пример подключения к сервисам Google из 1С с помощью протокола OAuth и получения данных с внешнего сервиса.

1 стартмани

03.04.2019    21018    binx    126    

Телеграм + 1С + Вебхуки + Апач + Самоподписанный сертификат

Внешние источники данных v8 Абонемент ($m)

Много строк исписано про интеграцию Телеграма и 1С. Но нигде не увидел полной инструкции по установке и настройке вебхуков. Попробую её написать.

1 стартмани

26.02.2019    16512    alexlx    30    

Универсальное расширение 1С для Google Таблиц и Документов

Внешние источники данных v8 1cv8.cf Абонемент ($m)

Эта статья для тех, кто использует G Suite и 1С. Готовое решение для выгрузки отчетов и печатных форм из баз 1С в Google Диск в формате Google Таблиц и Google Документов. Информация по его внедрению. Описание создания и настройки проекта в GCP.

1 стартмани

31.01.2019    16844    Maria18    32    

Применение средств MS SQL R service для 1С

Внешние источники данных v8 1cv8.cf Абонемент ($m)

Некоторое время назад Microsoft добавила в MS SQL сервер службы машинного обучения, позволяющие выполнять программный код на языках программирования R и Python. В статье будет продемонстрирована общая схема и принцип того, как можно использовать данные службы в контексте разработки на 1С. 

1 стартмани

25.11.2018    14389    Robbi    14    

1С и Telegram. Об опыте использования прокси-серверов

Практика программирования v8 Бесплатно (free)

Рассказ о том, как немного улучшить отправку сообщений из 1С в Телеграм в условиях использования прокси-серверов

02.08.2018    16592    altmf    26    

Способы оптимизации переносов данных

Перенос данных из 1C8 в 1C8 Интеграция v8 КД Абонемент ($m)

Хочу рассказать вам про способы оптимизации разработки правил обмена в программе «Конвертация данных» второй редакции. Казалось бы, про эту программу и разработку в ней правил конвертации уже сказано все, что можно. Появились уже более современные и быстрые технологии. Почему же все еще она? Дело в том, что «Конвертация данных» второй редакции все еще актуальна для огромного круга задач. Она имеет очень широкую функциональность и позволяет реализовывать сложные алгоритмы. Годы идут, а люди продолжают ей пользоваться и у них возникает много вопросов по этой программе. Возможно, в будущем вы тоже будете заниматься такими проектами и столкнетесь с задачами, похожими на те, про которые я собираюсь рассказать. Мне хочется вам в этом помочь.

1 стартмани

02.08.2018    17605    primat    7    

Связка 1С и Telegram. Отправка стикеров

Практика программирования Внешние источники данных v8 v8::УФ 1cv8.cf Абонемент ($m)

В качестве факультатива сейчас изучаю возможности связки 1С и мессенджера Telegram. И возник вопрос, как помимо сообщений, посылать в ответ на действия пользователя произвольный стикер? Решению этой мини задачи и посвящена данная статья.

1 стартмани

31.07.2018    12638    Skin123    4    

Опыт проведения сложных переносов данных на 1С

Перенос данных из 1C8 в 1C8 Интеграция v8 КД Абонемент ($m)

В статье я расскажу про опыт сложных переносов на платформе 1С:Предприятие. Она будет адресована в первую очередь разработчикам 1С, которые уже имеют опыт использования методики «Конвертация данных» (как второй, так и третьей редакции) – я думаю, это большинство из нас. • Я расскажу про различные методики организации переносов данных. • Мы рассмотрим рекомендуемые способы оптимизации правил конвертации, которые позволят вам быстрее выполнять свои переносы. • Также мы разберем, какие могут возникнуть сложности в ходе переноса данных. • Я покажу сравнительный анализ по ряду параметров инструментов «Конвертация данных» второй редакции и третьей, которая вышла уже более года назад.

1 стартмани

30.07.2018    37288    primat    14    

Опыт интеграции мессенджера Telegram c 1C

Внешние источники данных Интеграция v8 Абонемент ($m)

Статья будет полезна всем, кто интересуется возможностями интеграции 1С с мессенджером Telegram. Пустовой Вячеслав в формате короткого мастер-класса рассказывает о создании и настройке бота, позволяющего, к примеру, упростить процессы согласования платежей внутри компании, отгрузки со склада или получение оперативной информации о состоянии дебиторской задолженности.

19.07.2018    22793    VachKirp    44    

HTTP Сервисы: Путь к своему сервису. Часть 1

Практика программирования WEB v8 1cv8.cf Абонемент ($m)

Уже много было написано про http-сервисы, но то и дело всплывают «Новые» статьи по обмену между базами V8 по COM, что «Немножко» удивляет. Решил внести свои 5 копеек, поработаем с http-сервисом.

1 стартмани

15.07.2018    90728    dsdred    32    

Опять про sFTP и вообще

Внешние источники данных v8 1cv8.cf Абонемент ($m)

Памятка для разработчика по работе с FTP, FTPs и sFTP.

1 стартмани

23.05.2018    19100    leongl    19    

Использование регулярных выражений (RegExp) в Linux

Сервисные утилиты Администрирование данных 1С Внешние источники данных v8 Абонемент ($m)

Описывается способ использования регулярных выражений (RegExp) в Linux с использованием тех же компонентов, что и в Windows (COM-объекты VBScript.RegExp).

1 стартмани

20.04.2018    8662    vsbronnikov    12    

Практикум по созданию обменов данными через протокол oData «за полдня»

Практика программирования Внешние источники данных v8 1cv8.cf Россия Абонемент ($m)

Про oData и 1С было довольно много написано, однако же описания работы и с чтением, и с записью данных через JSON я так и не встретил ни на этом ресурсе ни на других. Попробую раскрыть эту тему.

1 стартмани

20.03.2018    26485    timm00    64    

Практика доступа в базу 1С через протокол oData. Изменение данных

Практика программирования Внешние источники данных v8 1cv8.cf Абонемент ($m)

Продолжаем знакомство с протоколом oData и в данной статье мы рассмотрим такие вопросы, как минимально необходимый багаж теоретических знаний, необходимый для работы, способы изменения доступных данных, а также с какими ограничениями можем при этом столкнуться. Осторожно, будет много скриншотов!

1 стартмани

30.12.2017    35460    Dementor    28    

Инструкция по настройке загрузки из ФСС электронных листков нетрудоспособности ЭЛН в документ 1С Начисление по больничному листу

Внешние источники данных Зарплата Зарплата v8 КА1 ЗУП2.5 УПП1 Россия БУ ФОМС, ПФ, ФСС Абонемент ($m)

Клиент (страхователь) работает в программе "1С Зарплата и управление персоналом ред.2.5" сдает отчетность через Контур или СБИС и не собирается подключать 1С-Отчетность, при этом хочет загружать электронные больничные в программу 1С Зарплата. Подобная ситуация может быть и для других конфигураций в которых есть документ "Начисление по больничному листу", например Комплексная автоматизация 1.1, Управление производственным предприятием 1.3.

1 стартмани

28.11.2017    153826    rusmil    126    

Установка сервера Аpache 2.4

Администрирование данных 1С Apache v8 1cv8.cf Бесплатно (free)

В публикации описана установка web-сервера Аpache 2.4 на платформе Windows

26.10.2017    105837    ВикторП    15    

Telegram-боты

Практика программирования v8 Абонемент ($m)

Описание теории, разбор архитектуры и пример реализации telegram-ботов. Сразу скажу, со структурированием изложения мало что могу поделать. :) редакция от 18.07.2018 Правки последней редакции выделены жирным.

1 стартмани

01.09.2017    33311    132    PLAstic    59    

Google OAuth и мобильное приложение

Мобильная разработка Обмен данными 1С Внешние источники данных WEB v8 v8::Mobile 1cv8.cf Абонемент ($m)

Об аутентификации для работы с сервисами google из мобильного или настольного приложения

1 стартмани

29.08.2017    11596    stveans@gmail.com    3    

Опыт интеграции 1С с системой Меркурий (Часть 5)

Внешние источники данных Интеграция Оптовая торговля Оптовая торговля v8::ОУ 1cv8.cf Сельское хозяйство и рыболовство Транспорт, автопарки, такси Оптовая торговля, дистрибуция, логистика Пищевая промышленность Россия БУ УУ Абонемент ($m)

Описывается опыт внедрения в 1С системы работы с ветеринарно-сопроводительными документами Меркурий. Интеграция еще в процессе и приветствуется обмен опытом.

1 стартмани

10.07.2017    59701    axxell    33    

1С и MongoDB: дружба начинается с RESTHeart'а

Внешние источники данных v8 Абонемент ($m)

Краткое описание того, как подружить MongoDB и 1С: Предприятие используя один из предлагаемых на официальном сайте RESTFul сервисов - RESTHeart.

1 стартмани

03.07.2017    43385    Silenser    8    

Что такое HMAC и JWT и как это использовать в 1С

Внешние источники данных v8 1cv8.cf Абонемент ($m)

Лёгкая статья про стандарты HMAC и JWT с небольшой теорией и исходным кодом.

1 стартмани

20.04.2017    21932    keypax    48    

Пример связи 1С и мессенджера Telegram. Получение данных из 1С запросом из Telegram

Практика программирования Внешние источники данных v8 1cv8.cf Абонемент ($m)

В результате чтения публикации Вы получите готовую внешнюю обработку, позволяющую получать из 1С данные, запрашиваемые через Telegram. В данной статье рассмотрим следующее: Использование HTTPСоединение; Чтение JSON для версии 1С 8.3.6 и выше, а также аналог JSON для версии 1С ниже 8.3.6; Подключение обработчика ожидания; Некоторые основные возможности API Telegram; Как создать бота для Telegram; Программное создание колонок дерева на управляемой форме;

1 стартмани

19.11.2015    94997    464    Luchik    209    

Получение информации об экспортных свойствах и методах объектов 1С через COM.

Разработка внешних компонент Внешние источники данных v8 1cv8.cf Абонемент ($m)

Как из тела COM-объекта или внешней компоненты определить состав свойств и методов объектов 1С агрегатных типов? Все ответы здесь.

1 стартмани

03.09.2013    14301    gislink    5    

Синхронизация с сервером 1С во внешнем соединении

Внешние источники данных Универсальные функции v8 1cv8.cf Абонемент ($m)

Позволяет установить время удаленного SQL-сервера на компьютере при выполнении обмена через Внешнее соединение

1 стартмани

27.09.2011    13469    sml    6