С крайними версиями БП 2.0.66.6 и 3.0.46.16 перестало работать, ждет нажатия "ОК":
15.01.2017 23:31:03 - debug (3): wt 844
! 15.01.2017 23:31:03 - Не удалось выполнить команду "/FileAccounting83_ActiveUsers": Адресат вызова создал исключение.
Предупреждение безопасности
Открывается "Выполнение произвольного кода для Telemonitor" из файла "R:\Soft\Telemonitor\executer83.tep".
Рекомендуется обращать внимание на источник, из которого был получен данный файл.
Если с источником нет договоренности о разработке дополнительных модулей,
или есть сомнения в содержимом файла, то его не рекомендуется открывать,
поскольку это может нанести вред компьютеру и данным.
Разрешить открывать данный файл?
15.01.2017 23:31:03 - debug (5): Команда /FileAccounting83_ActiveUsers выполнена
15.01.2017 23:31:03 - debug (5): url: https://api.telegram.org/bot{0}/sendMessage
15.01.2017 23:31:03 - debug (5): response: Ошибка при выполнении команды
(124) Спасибо за ссылку.
(123) Такое, к сожалению, реализовать не смогу т.к. программа построена совсем на других принципах и такое поведение не планировалось с самого начала.
(7) sml, ну так то можно и web сервис поднять и приложение под андроид написать. Одну и ту же задачу можно кучей разных способов реализовать. Мне идея и реализация понравилась. Например, кто захочет тот и получит нужную информацию, а не так как в планировщике по заданным параметрам, выполнять одно и тоже действие :)
Что-то фишку не просёк. Идея общаться с ботом текстовыми командами не впечатлила
Разве не удобнее
1. Сделать отдельную БД, которая будет собирать состояния из целевых баз и показывать сводно при старте и по отдельности на весь экран (без каких-либо запросов со стороны оператора)
2. Нужные дополнительные сведения получать в один-два клика мыши в отельных окнах
3. Получать из базы периодические рассылки важной контроллируемой информации по электронной почте / SMS и по любым иным каналам сваязи
(13) Darklight, здесь уже писали про планировщик заданий, что в принципе равносильно периодическим рассылкам, как пишите вы.
Но идея бота не в периодических оповещениях, а в предоставлении информации по требованию. Мне не нужно получать каждый день SMS (электронное письмо и т.д.) о том что все хорошо/все пропало. Я хочу видеть информацию, только когда у меня душа заболела.
Идея хорошая, но не везде есть возможность запускать чужие программы.
Пытаюсь на 1С это же написать, по обмену сообщениями трудности не возникло, но вот отправку файла так и не победил.
Думаю, что не туда вставляю Токен.
Т.е., что б бот что-то сделал в базе и отправил отчет в виде файла.
Может, распишите принцип этого процесса?
(16) yuran2000, я сам не с первого раза отправил файл, скорее всего ошибка в формировании тела multipart/form-data и определении ContentLength. Попробую сделать в 1С такое и напишу.
(16) yuran2000, к сожалению мне не удалось отправить данные 1С на api.telegram.org с помощью multipart/form-data. Испытывал на методе sendMessage, передавая поля chat_id и text. Передавать пробовал с помощью WinHttp.WinHttpRequest.5.1, Msxml2.SERVERXMLHTTP и встроенного HTTPСоединение. Если указывать протокол http, то возвращается ошибка 301, либо text is empty, а если использовать, как положено, https - вылет по таймауту. Причем тело multipart/form-data точно правильное взял его из Telemonitor.
Если найдете решение, дайте знать.
Тело запроса выглядит так
19.
eugeniezheludkov
4118.09.15 03:24 Сейчас в теме
(18) Возился как то с POST "multipart/form-data", оказалось, что кроме boundry, общий пакет делится на несколько пакетов по 2500 байт (точно не помню размер). все браузеры делят, отправляется за несколько посылок.
из RFC http://www.ietf.org/rfc/rfc2388.txt ничего особо не понять , нужно смотреть примеры кода на гитхабе и тд
(18) дня три мучался с отправкой файла в телеграмм из 1С.
Из-за того что 1Ска не может рабоать с двоичными данными - единственный способ, которым получилось сформировать правильный запрос - это ОбъединитьФайлы().
Идея хороша. решил воспользоватся. Опишу недостатки, которые мешают в полной мере насладиться разработкой:
1. мало документации с Вашей стороны.
2. т.к. код выполняется в безопасном режиме, некоторые вещи невозможно реализовать, например, перезагрузку сервера. Пытаюсь отключить безопасный режим, но...
Ошибка при вызове метода контекста (ЗапуститьПриложение)
Установлен безопасный режим. Выполнение операции запрещено
(24) mrmasson, спасибо за отзыв!
Да, действительно весь код запускается во внешней обработке, которая создается в безопасном режиме.
Я добавлю в настройки возможность запускать небезопасный режим.
А насчет документации даже и не знаю, что сказать. Я тут постарался максимально просто и доступно объяснить как все работает. Как создавать свои команды для бота написал. Если есть какие-то вопросы, пишите, обязательно отвечу.
(27) JohnyDeath, чтобы получать информацию, когда она действительно нужна. Не будем брать в расчет всякие отказы, когда что-то не работает. В этом случае, конечно, удобнее планировщиком опрашивать какие-то параметры и, в случае возникновения критической ситуации, оповещать об этом.
Telemonitor немного про другое. Например, для обновления конфигурации БД требуется реструктуризация, которую невозможно выполнить с работающими пользователями. Дело к вечеру, а пользователи все работают. С помощью Telegram можно отправить команду боту, пусть будет /MyBase_GetActiveUsers. Когда увидим, что пользователей нет, можно запустить /MyBase_UpdateDB.
Другой пример, хотим увидеть сколько задач выставлено нам в базе, отправляем /MyBase_GetTasks UserID. Или нужно узнать сколько новых заказов ждут обработки, тогда /MyBase_GetNewOrders.
Вариантов возможного использования масса, причем использовать бота может не только админ/программист, а директор, менеджер, бухгалтер и т.д.
Надеюсь теперь идея ясна.
(28) идею-то я сразу понял. Я не понял почему все это нельзя обрабатывать на стороне 1С, используя, например, http-сервис?
Или, если лень заморачиваться с публикацией сервиса, создать регламентное задание, в котором будет периодически вызываться getUpdates телеграма?
Вы же создаете дополнительную прослойку, которая плюс ко всему имеет закрытый код.
(29) JohnyDeath, программа использует NET.Framework, поэтому посмотреть код, нет никаких проблем.
Http-сервисы, конечно, можно использовать, можно даже и без них обойтись, но тогда придется либо изменять конфигурацию и держать web-сервер, либо постоянно держать открытым сеанс с обработкой, которая будет вызывать getUpdates. Так что в любом случае, как вы говорите "прослойка", какая-никакая, а нужна. Весь вопрос в том, самому её делать, либо взять готовую.
Моё решение позволяет все делать без изменения конфигурации(й) и не писать самому взаимодействие с Telegram API, а сосредоточится только на создании функционала бота.
Как я уже отмечал ранее, программа изначально писалась для собственных нужд, поэтому я никого не призываю пользоваться именно моим "велосипедом", тут каждый волен сделать свой.
Подскажите, а то мало знаю по всякими месенджерам, боты, которые вы создаёте, доступны абсолютно другим пользователям Telegram. То есть я могу найти вашего бота и им воспользоваться злонамеренно?
(40) amitin78, 1с запускать не надо. Telemonitor сам создает Com-соединение, когда получает команду. Что именно вам не понятно с командами? Файлы *.tcm - это и есть описание команд. Имя файла - это имя команды. Первая строка в файле - тектовое описание команды, начиная со второй строки - исполняемый в 1С код.
salexdv Спасибо с этим разобрался.
После этого возникло большое желание использовать данный момент в разных задачках. Просьба добавить функционал запуска BAT файлов. Поясню: файловая база, есть задачки которые делает робот через запуск BAT файлов по времени. Используя Ваш Телемонитор можно это дело сделать по нажатию команд в Телеграмме. Очень удобно было-бы. Как дополнение к запланированным процессам. Заранее спасибо.
(43) Фся фишка запускать все по команде удаленно с телефона, планшета, компьютера. Как я с телефона дам команду в 1с? А вот через Ваш Telemonitor должно получиться. Просьба доработать функционал. Благодарных пользователей будет много как поймут плюсы. Спасибо.
(44) amitin78, вы, видимо, не совсем поняли принцип работы. Посмотрите на схему вначале статьи. Вы с телефона в Telegram отдаете команду, а уже Telemonitor выполняет код команды в 1С. Получается вы на смартфоне выбираете команду "ЗапуститьBAT", а на компьютере, где стоит 1С и Telemonitor выполняется код
ЗапуститьПриложение(<ПутьКФайлуBat>);
. Таким образом через 1С запускается батник в системе.
Это(45) Это конечно да. То есть без 1с вообще не будем никакого действия? А вот скан например тоже средствами 1с сделан? Если тогда моя идея идет немного дальше. Запустить Батник не привлекая 1с. Это не возможно сделать?
Классный и удобный бот!
есть маленькая хотелки:
- возможно ли в ini файлах баз прописывать каким юзерам телеграмма есть доступ? соответственно у этого юзера будут видны только команды его базы.
- и сделать разрешение/запрет на команды /screen также нужным юзверям?
ЗЫ. можу простимулировать на пивасик, для поднятия боевого тонуса ;)
Доброго времени суток.
Отписываюсь в данной теме так как она более приближенная к моей задаче.
Для начала опишу конечную цель:
Нужно с определенных чатов удалять/добавлять пользователей, имея их номера телефонов.
Я так понимаю, бот телеграма нам не совсем здесь интересен, по этому нужно использовать именно методы обычного API.
В API есть методы управления чатами. Но не совсем понятно как можно узнать ID добавляемого контакта, зная его телефон?
Может кто сталкивался с подобной ситуацией? Кто-то сталкивался с взаимосвязью 1С - API Telegram ?
Буду благодарен за направления мыслей в нужную сторону :)
Пожелания :)
a. Было бы очень хорошо запускатьTelemonitor как сервис (!!!)
b. Хорошо бы иметь возможность настраивать "белый" список пользователей для каждой команды;
с. мелочь, но все же - в контекстное меню по иконке в трее добавить "Перезапустить".
е. Хотелось бы иметь возможность в папку с описанием базы положить файл "nocommand.tcm" и передавать в него сообщения от пользователя без слеша - не команды. Это позволит реализовывать "многоходовые" команды (как в @BotFather и пр.), т.е. сначала бот получает команду, а потом задает пользователю вопрос и ждет от него ответ (команды с параметрами менее юзабильные).
(63) zhurba, спасибо за отзыв и пожелания. У меня была мысль реализовать "диалог" с ботом, но пока, к сожалению, совсем нет на это времени. Программа писалась буквально за 2 дня для решения одной насущной проблемы. Все остальные доработки делаю, когда есть свободное время, а это случается нечасто.
(63) zhurba, добавил поддержку диалоговых команд. Теперь код команды можно описать так, чтобы бот запрашивал дополнительные параметры. Если есть возможность, проверьте и отпишитесь.
(70) Vladimir_Konyrev, приложение в каком-то смысле для создания чата, но не между людьми. Диалог Человек <-> Бот Telegram - вот назначение программы. Для создания чатов между сотрудниками вам надо найти что-то другое.
В чате случайно задел кнопку с микрофоном. Записанное аудио отправилось боту и тот "повис" - все последующие команды не обрабатываются. То же самое происходит если отправить боту фоточку.
"Полечил" бота отправкой через браузер команды getUpdate со смещением.
Хотел подключить к боту своих юзверей, но увы, придется пользоваться только мне одному...
Добрый день! Если включить бота в группу, то он понимает только команду /start. Если общаться с ботом напрямую, то понимает все команды, созданные мной в настройках. Хотелось бы, чтоб в группе он тоже работал. В группе все видят, кто, когда, какие команды боту давал.
При тестировании в файловом режиме все ок. При тестировании в клиент серверном режиме на той же базе исполняемый код команды (пытаюсь провести документ) вываливается в исключение со следующей ошибкой
Ошибка при вызове метода контекста (Записать)
ЗаявкаОбъект.Записать(РежимЗаписиДокумента.Проведение);
по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода ПередЗаписьюЗаявки ()
Процедура "ПередЗаписьюЗаявки()" находится в общем серверном модуле и на нее ссылается мной добавленная подписка на событие. Первый ее параметр - Источник
(78) Снежный_человек, в описании программы сказано, что весь код выполняется через метод Выполнить(). Всё это работает в режиме внешнего соединения. Проверьте свою конфигурацию на работу в режиме "Внешнее соединение" и "Внешнее соединение (клиент-сервер)". Думаю, проблема как раз в этом.
Другими словами, если использовать подписку на событие документа "ПередЗаписью", то при исполнении процедуры этой подписки в общем серверном модуле с использованием параметра "Источник" в клиент серверном варианте не работает. Текст ошибки выше.
Добрый день! Поставил нескольким юзверям. Обнаружил проблему зависания приложения телемонитор, причем, если жать на зависший экземпляр правой кнопкой мыши в трэе, то нет появления меню Выход. причем бот реагирует на команду старт, выдает список доступных команд, но на полученную из списка команду никак не реагирует. Лечится убиванием процесса telemonitor в диспетчере задач и перезапуском. До следующего повторения зависания.
Windows 2008 Server. Я, правда, создал каждому юзеру отдельного бота и запускал несколько приложений в одном терминальном сеансе, причем переименовывал файл Telemonitor.exe в ****.exe, , где *** имя пользователя латиницей, чтобы видеть, чья именно копия телемонитора отваливается. Сейчас оставил только одну копию, проверить на предмет конфликта запущеных копий. Пока работает, часа 2