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

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

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

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

Предыстория

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

Возникла идея интегрироваться с каким-нибудь мессенджером, например, WhatsApp, Viber или Telegram. Хотели Skype, но он в последнее время не очень хорошо работает, особенно на мобильных устройствах. Выбрали Telegram, потому что это наиболее защищенный мессенджер, к тому же его тогда как раз хотели заблокировать – это стало дополнительной рекламой.

Все отнеслись скептически, но решили попробовать. Посмотрели статьи на Инфостарте, поняли, что это несложно. Тем более, у Telegram открытое API и все достаточно быстро работает. Попробовали, и это оказалось удобным:

  • Первым делом, мы сделали согласование заявлений на отгрузку – при проведении документа реализации руководителю отдела отправлялось сообщение с Excel-файлом, где можно было посмотреть, какие товары отгружаются сейчас со склада.
  • С еще одним руководителем мы сделали согласование платежей. Он, сидя на совещании, мог видеть в мессенджере уведомление о необходимом платеже, и, если все нормально, нажимать кнопку «Согласовано». Это оказалось действительно очень удобным, согласование проходило быстро и оперативно. По крайней мере, работало лучше, чем через почту.
  • Затем директор вошел во вкус. Мы создали ему список специальных команд, которые он мог отправить боту в Telegram, чтобы получить оперативную информацию о состоянии расчетного счета, о наличии дебиторской задолженности и т.д. Получился практически «Монитор руководителя», но через бот. Это тоже оказалось интересным решением, и нашему клиенту понравилось.

Создание бота

 

Теперь я расскажу, как это работает и как это устроено внутри.

  • Сначала нужно зарегистрировать бота. Для этого находим в Telegram канал BotFather и пишем ему команду «/newbot».
  • Теперь нужно придумать ему название – я назову своего бота test_infostart2017_bot.
  • После этого необходимо придумать его имя, которое заканчивается на «bot» – имя нашего бота будет infostart2017_bot.
  • Сейчас BotFather проверит, есть ли уже такие зарегистрированные боты в системе, и выдаст нам токен.

Имя и название бота нам больше не пригодятся, нужен будет только токен. Его никому нельзя сообщать, потому если кто-то его узнает, он сможет пользоваться вашим ботом и делать с ним все, что угодно. Эту информацию необходимо сохранить.

 

 

Чтобы начать работать с ботом, нажимаем на гиперссылку, которая была сформирована при создании, и попадаем в канал нашего бота.

 

Конфигурация TelegramBot

Теперь я расскажу, как это сделано с точки зрения конфигурирования в 1С. Я сделал конфигурацию, которую потом выложу.

В конфигурации есть:

  • Один общий модуль Telegram_Сервер – в нем 500-1000 строк, не больше.
  • Три регистра сведений:
    • Telegram_ИсторияСообщений;
    • Telegram_Пользователи;
    • Telegram_Настройки.

 

В регистре сведений Telegram_ИсторияСообщений хранится история входящих и исходящих сообщений.

  • Здесь у нас три измерения:
    • ID_сообщения;
    • ВидСообщения – об этом измерении я расскажу чуть подробнее позже;
    • И Пользователь – это измерение нужно, чтобы видеть, кто общается с ботом.
  • И есть два ресурса:
    • Команда;
    • И Сообщение.

Ресурс «Команда» имеет тип Справочник.Telegram_КомандыСистемы. В этом справочнике хранятся команды, которые нам пишут пользователи. Для того чтобы бот понимал, на какие вопросы как отвечать, мы здесь создадим список команд – список вопросов, которые можно ему задать, и соответствующий этим командам список ответов.

 

 

В справочнике Telegram_КомандыСистемы есть реквизиты:

  • Описание;
  • ТипКоманды – это перечисление. Здесь может быть либо отправка файла, либо просто сообщение;
  • КодОбработки – этот реквизит нужен для того, чтобы можно было добавлять команды не через конфигуратор, а сразу написать какие-то ответы в режиме «1С:Предприятие», чтобы постоянно не обновлять систему.

Справочник – это удобно, потому что можно делать предопределенные элементы, чтобы потом обращаться к этим командам в коде.

 

 

Еще у нас есть регистр Telegram_Пользователи, где мы храним информацию о соответствии пользователя Telegram и пользователя нашей системы.

  • Здесь у нас два измерения:
    • ИмяПользователяТелеграм;
    • ID_Пользователя.
  • И один ресурс «Пользователь», где хранится ссылка на элемент справочника «Пользователи».

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

Также есть регистр Telegram_Настройки.

  • Здесь у нас два измерения:
    • ИмяБота;
    • API.
  • И один ресурс token – это токен, по которому у нас будут идти сообщения.

 

В регистре сведений Telegram_Настройки мы записываем:

  • Имя бота – сюда можно написать любое имя;
  • Api – это всегда api.telegram.org;
  • И Token – тот токен, который был назначен нам при регистрации.

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

 

 

Как только я запущу обработчик ожидания, конфигурация начнет раз в три секунды обращаться к API Telegram и общаться с ботом.

 

 

Посмотрим, что происходит при этом в коде. Как только срабатывает обработка ожидания, запускается процедура ПрочитатьСообщенияПользователя().

Сначала устанавливается HTTPСоединение. Строчки подключения стандартные для всех API:

  • В переменную Источник мы прописываем токен бота и команду, которую нужно передать в Telegram. Для получения сообщений за последние 24 часа используется команда /getUpdates;
  • HTTPСоединение открывается через 443-й порт;
  • В заголовке HTTPЗапроса прописываем, что будет передаваться структура JSON.

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

 

 

Сначала мы попадаем в процедуру ДесериализоватьJSON – это стандартная процедура преобразования нашей строки JSON в структуру данных.

 

 

Структура входящего сообщения изнутри выглядит следующим образом.

  • Первое поле ok – это значение, куда записывается результат вызова – правильно или неправильно прошло сообщение.
  • И второе поле result – это массив сообщений за 24 часа, который вернул нам бот. В этом массиве можно увидеть, что четыре человека нам уже что-то написали. Каждый элемент массива – это структура, состоящая из полей:
    • update_id – это уникальный код сообщения, который нам прислали;
    • message – это непосредственно само сообщение.

 

Открываю любое сообщение из массива.

 

 

Здесь тоже вложенная структура – можно увидеть, от кого пришло сообщение (поле from), можно посмотреть текст сообщения (поле text), можно посмотреть сам чат (поле chat).

 

 

При просмотре структуры from видно, от кого пришло сообщение (first_name) и видно ID пользователя.

 

 

То же самое мы видим при просмотре структуры chat.

В этой структуре не так много параметров, главное – это запомнить ID самого сообщения и ID того пользователя, с которым мы общаемся. Мы должны обращаться к этому пользователю по его ID, чтобы сообщение пришло именно ему, а не какому-то другому пользователю в сети. Пользователей очень много.

 

 

Итак, бот вернул массив сообщений (у нас их четыре). Теперь я поочередно разбираю этот результат:

  • Сначала в переменную СообщениеID я сохраняю ID конкретного сообщения для того, чтобы с ним дальше работать.
  • Далее у нас идет проверка ПроверитьНаличиеСообщенияПоID. Дело в том, что после каждого запроса к серверу Telegram в результат попадают все сообщения за 24 часа. И мы должны где-то хранить информацию о том, какие сообщения мы уже обработали, а какие нет. Для этого у нас есть регистр сведений Telegram_ИсторияСообщений, где мы храним всю историю. Здесь я проверяю, было ли уже обработано это сообщение от бота или нет.
  • Далее у нас производится вызов функции ВернутьКомандуTelegram, где мы принимаем команду (сообщение, которое нам прислали) и проверяем, есть ли у нас эта команда в справочнике Telegram_КомандыСистемы. Если описание не вернулось, мы должны ответить, что не знаем такой команды.
  • Далее в процедуре ЗаписатьИсториюСообщений мы записываем в регистр сведений Telegram_ИсторияСообщений информацию о том, что это сообщение было обработано, после этого оно становится старым.
  • И, наконец, в процедуре ОбработатьОтветПользователя вызываем процедуру обработки ответа.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Теперь по командам. У нас есть справочник с историей сообщений. Здесь хранится информация обо всех сообщениях – и входящих, и исходящих.

 

 

На данный момент всем всегда приходит один ответ: «Извините, я такого не знаю», потому что никаких команд мы в справочник «Команды системы» еще не вводили.

 

 

Заведем новую команду в справочник «Команды системы».

  • В качестве типа команды выбираем «Сообщение».
  • В поле «Наименование» напишем то, что могут написать боту пользователи, например, «Привет».
  • Поле «Описание» заполняем для справки.
  • И в поле «Код обработки» заносим простые команды, которые будут выполнены из кода через оператор «Выполнить()». В данном случае, я напишу:
    ОтветСистемы = "Привет, дружище. Как дела?".

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Посмотрим, как реализована обработка ответа пользователя.

  • Если в качестве команды попадает известная команда – мы ее обрабатываем.
  • А если мы команду не знаем, то отвечаем «Извините, я такого не знаю».
  • И дальше мы отдаем ответ пользователю.
    • Если тип команды – Файл, то производится отправка файла пользователю.
    • А если тип команды – Сообщение, то мы берем стандартную структуру HTTPСоединение и для этого соединения создаем HTTPЗапрос, куда передаем команду /sendMessage с параметром chat_id, в который записываем значение переменной СтруктураСообщения.chat.id. В результате сообщение благополучно отправляется именно тому пользователю, который нам написал.

 

 

Сейчас проверю, будет ли теперь работать команда «Привет».

 

 

Вот, пожалуйста, работает. Вы можете любого человека посадить, он вам такие простые команды напрограммирует.

 

 

Теперь я расскажу, как можно в отправляемом сообщении реализовать кнопки. Я у себя в конфигурации реализовал две кнопки, которые реагируют на команду «Вечером все идем в кино!!!». В обработке «Telegram обработка отладки» напишем сообщение «Вечером все идем в кино!!!» и нажимаем на кнопку «Отправить сообщение пользователям».

 

 

Теперь мне приходит сообщение с кнопками «Согласовать» и «Не согласовать».

 

 

Код такой:

  • Мы добавляем простейшие кнопки в массив, вставляем их в структуру и записываем в JSON.
  • Дальше отправляем стандартное сообщение – оно всегда отправляется одинаково, независимо от того, с кнопками вы его отправляете, или без. Просто в конце добавляете reply_markup или ваши кнопки, которые вы перечисляете – их может быть две или три, сколько вам удобно.
  • И, соответственно, когда пользователь отвечает, вы этот ответ обрабатываете.

Кода здесь вообще практически нет. Все эти сообщения выводятся стандартными командами – только то, что вы внутри накрутите.

 

 

Добавляю в справочник «Команды системы» еще одну команду – \help. В ней мы просто запросом пробегаемся по справочнику наших команд и выводим название команды и ее описание.

 

 

Теперь, когда я пишу боту команду \help, я получаю ответ – все команды и их описание.

 

 

Еще одна команда – \report. Она присылает нам отчет со всеми сообщениями пользователей, их ID и т д. Соответственно, если вы куда-то это встроите, то сможете отправлять любой отчет, например, оборотно-сальдовую ведомость, отчет о дебиторской задолженности и т.д. В этой команде мы:

  • Создаем новый табличный документ;
  • Обращаемся к отчету в системе, вызываем его экспортную процедуру СкомпоноватьРезультатТабДок, которая компонует результат в табличный документ;
  • Создаем временный файл с расширением xlsx;
  • Записываем табличный документ в этот временный файл.

 

 

Теперь по команде \report мне приходит отчет по истории сообщений.

В конфигураторе это все обрабатывается следующим образом.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Этот код я взял из одной хорошей статьи с Инфостарта.

Здесь мы прописываем заголовки, текст отправки, имя файла.

 

 

И в конце вызываем команду \sendDocument.

У Telegram открытый API, можно с ним разобраться. Конечно, когда постоянно работаешь в 1С – это сложно, но можно день-два посидеть, потестировать, и становится все понятно.

Система более-менее рабочая. Я постарался сделать поменьше объектов метаданных: два справочника, три регистра. Справочник «Пользователи» я не стал вытаскивать из «Библиотеки стандартных подсистем», потому что вместе с ним там идет огромное количество связанных объектов. Но если вы его объедините, он нормально объединится.

 

Вопросы

Как так получилось, что вы начали пользоваться Telegram?

Первоначально у нас был достаточно крупный клиент, у которого была проблема – чтобы провести отгрузку со склада, нужно было согласовать ее состав с руководителем. Плюс они еще согласовывали платежный календарь – какие платежи сегодня платить. А руководители отдела, которые за это отвечают, постоянно находились в разъездах или на совещаниях. Из-за этого постоянно происходили задержки – по отгрузке, по оплатам. Соответственно, это тормозило определенные бизнес-процессы в компании. И мы предложили им с чем-нибудь интегрироваться, сделали им через Telegram согласование распоряжений на отгрузку и платежей. Попробовали, запустили, всем понравилось, все начали активно пользоваться. Как обычно люди на совещаниях сидят? Они слушают, что говорят, и попутно решают свои дела. Пришло сообщение – он быстро нажал на «Согласовать» или «Не согласовать». Тем самым, повысилась оперативность работы. А потом уже директор начал с этим «играться» – отправлял определенные команды и ему приходил, например, размер дебеторской задолженности.

 

Целевая аудитория – какое количество человек?

100 человек.

 

А аутентификацию как организовали? Зная наименование бота, к нему можно подключиться. Как вы это отсекали?

У бота в настройках можно настроить приватность. Соответственно, настроить вход по паролю и т.д. И на стороне 1С можно реализовать отключение обработки сообщений для неизвестных системе пользователей. Здесь есть регистр Telegram Пользователи. И те, кто боту писал, сюда автоматически попали. Вот он, ID у каждого пользователя. Связка с пользователем системы проставляется вручную. Мы сделали это соответствие через регистр, чтобы не мучиться, но можно привязаться к контактной информации. Например, вы можете в контактную информацию добавить поле ID_Telegram и прописать туда ID пользователя. Этот ID можно узнать по входящему сообщению.

 

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

Поле для творчества очень большое. API тоже очень большое, можно много чего «накопать». В зависимости от задачи и того, что вам требуется. Мы сделали так – нас устраивало.

 

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

У нас же есть регистр, где записывается вся история сообщений – тот отчет, который вам приходил. В нем видно, кто какие сообщения отправлял и что ему бот в ответ написал. Есть входящие и исходящие сообщения. Соответственно, вы можете через этот регистр анализировать, какое было ближайшие сообщение, и была ли по этому пользователю вложенность? Здесь тоже есть поле для творчества, с регистрами в 1С все умеют работать, это несложно.

 

А можно ли добавлять дополнительные ключи – например, чтобы получить отчет по какому-то конкретному контрагенту? Как будет выглядеть команда – report и наименование контрагента?

Команду необязательно писать через слэш – вы ее можете определить, как вам удобно. Например, вы задаете команду ДебиторскаяЗадолженность, потом пробел и ставите какой-то определенный спецсимвол (например, @), после которого пишете название контрагента. Когда у вас эта команда попадает в 1С, там вы уже парсите, что к чему относится и, соответственно, передаете уже эти параметры в отчет.

 

А как вы решали проблему с возможным флудом сообщений от пользователя? Насколько я понял, у вас все пользователи бота – это ваши сотрудники. А были ли какие-то возможности у бота, которые могли использовать сторонние неподконтрольные люди – контрагенты, например или еще кто-то. У нас сейчас основные пользователи нашего бота – это студенты. Они нам неподконтрольные. Мы не можем дисциплинарно наказать человека за то, что он нам пришлет 5000 сообщений.

По chat.id можно отключить обработку сообщений целиком.

 

А вообще Telegram не банит, когда слишком часто к нему обращаешься?

Нас ни разу не банили.

 

А есть ли какие-нибудь ограничения его использования?

Единственное ограничение, которое есть – это отправка исходящих сообщений. Там, по-моему, допускаются пики до 30 сообщений в секунду. Это – основное узкое место.

 

Еще вопрос по кнопкам – в callback_data есть жесткое ограничение в 64 символа. В этой конфигурации реакция на кнопки реализована через ответ на данные в callback_data или в базе данных записывается еще что-то, что используется при обработке callback?

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

 

А почему вы выбрали Telegram? С WhatsApp вы интеграцию не рассматривали?

С WhatsApp мы не работали. Там нет открытого API. Насколько я знаю, WhatsApp собираются сделать корпоративную версию и там уже давать API за деньги. В Viber есть открытое API, но в Viber, насколько я знаю, нет кнопок. К тому же Viber еще и не все файлы поддерживает. По крайней мере, раньше так было – какие-то файлы отправляешь, он пишет – я этот формат не знаю. А в Telegram открытое API, можно использовать кнопки и можно свободно обмениваться теми же самыми Excel-евскими документами.

 

А можно ли реализовать обращения к API не через обработчик ожидания?

Мы это делали регламентным заданием.

 

Это понятно, но стучаться постоянно все равно неохота.

Можно заставить отправлять Telegram push-уведомления – высунуть наружу HTTP-сервис, который будет получать сообщения. У Telegram есть такая возможность – там можно создать подписку и указать типы сообщений, которые будут приходить по этой точке. Но здесь есть ограничение – нужно «высунуть наружу» HTTP-сервис. Это вообще отличная идея, когда из 1С ничего в Telegram не стучится, а все сообщения разбирает сам IIS (или Apache). Потому что у нас была такая проблема – создавалась дополнительная нагрузка на 1С, потому что она должна была одновременно обрабатывать эти сообщения. Тут нужно поступать в зависимости от того, для чего вам нужен этот бот. Если вы хотите, чтобы у вас постоянно было 1000 пользователей, и они массово писали, я думаю, что через 1С это будет сделать сложно. Можно, но сложно. Думаю, что тогда нужно будет запускать отдельную базу 1С, чтобы она работала только с Telegram. А если вы хотите запустить просто информирование внутри компании, то таких возможностей вам хватит, достаточно поставить время для запросов – одну-две минуты.

 

****************

Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2017 COMMUNITY. Больше статей можно прочитать здесь.

В 2020 году приглашаем всех принять участие в 7 региональных митапах, а также юбилейной INFOSTART EVENT 2020 в Москве.

Выбрать мероприятие.

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

Наименование Файл Версия Размер
cf файл с конфигурацией
.cf 29,45Kb
23.07.18
535
.cf 29,45Kb 535 Скачать бесплатно

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. PLAstic 246 20.07.18 11:31 Сейчас в теме
Я подробно описал свои впечатления в комментариях к видео. Удивительно, что рупор отрасли, который должен нести просвещение, выкладывает такие материалы в общий доступ.
2. support 4458 20.07.18 12:34 Сейчас в теме
(1) Так что ж вы к нам не приехали со своим докладом? На новую конференцию тоже можно еще успеть https://event.infostart.ru/2018/#invite_speaker
Мы не рупор отрасли, а сообщество. Как раз благодаря вам мы только и можем понять. Подождем аргументов с другой стороны.
5. Infactum 286 20.07.18 15:16 Сейчас в теме
(1) Поддержу.
Сделано довольно много корректных замечаний. При этом они, фактически, связаны с тем, что автор оригинального доклада не смог внимательно изучить документацию по предельному простому API. Ну серьезно, бота для телеграма, особенно на волне хайпа, сделал каждый "школьник". Потому что удобно и одновременно очень легко.

(2) А не приехал он к вам, имхо, потому что не считает подобное решение достойным демонстрации на всероссийской конференции.
Вы организуете конференции уже не первый год. При этом уровень технических докладов как был низким, так и остается. В рамках голосования регулярно побеждают темы, которые просто выбрали из-за того, что в них фигурирует название технологии/продукта, о котором все говорят, + 1С. А по факту там примеры уровня hello world . Эта статья тому пример.
Вам необходимо намного более серьезней подходить к изучению предоставленных материалов, прежде чем выпускать докладчиков на сцену.
Gureev; jaroslav.h; stako8; CyberCerber; nomadon; PLAstic; +6 Ответить
7. PLAstic 246 20.07.18 15:49 Сейчас в теме
(5) Всё так. Я не считаю эту тему достойной освещения перед широким сообществом, учитывая, что на самОм же ИСе представлена пара исчерпывающих статей.
11. support 4458 20.07.18 21:05 Сейчас в теме
(7) На самом ИС мы тоже принимаем публикации от всех, кто захочет. Голосование за публикацию показывает, насколько она оказалась полезной для сообщества. Как видите, это работает.
10. support 4458 20.07.18 21:01 Сейчас в теме
(5) Мы пускаем всех, кто проходит народное голосование среди участников конференции. Качество каждого доклада и харизму каждого спикера никто не гарантирует. Выступающий сам принимает решение, насколько качественно ему подготовиться. У нас многие выступают можно сказать впервые на сцене. Но у каждого есть самоконтроль и самоцензура. Если спикер хочет сдалать обзор какой-то технологии, то он ее и делает. Поэтому мы приветствуем тех, кто уже публиковался на портале. Но именно таким образом мы можем найти новых «звёзд».

Заслуженные эксперты приглашаются отдельно на нашу конференцию, от них мы ожидаем гарантированного качества и харизматичного выступления.

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

Данный же доклад не вошёл в основную программу, Вячеслав приехал за свой счёт и рассказал его в формате небольшого обзора для интересующихся этой темой.
3. beefit 20.07.18 13:01 Сейчас в теме
Скриншоты кода это крутяк
user649060; CyberCerber; nomadon; VachKirp; klinval; +5 Ответить
8. nomadon 387 20.07.18 17:24 Сейчас в теме
(3) это что бы не скопипастили бесплатно, скрин отладчика с пустыми полями и кнопками - что бы разработчик не переключался, а даже при чтении потихоньку отлаживал
4. dmurk 277 20.07.18 14:53 Сейчас в теме
В прошлом году опробовал функцию, когда Telegram стучится обратно на HTTP сервис. Всё бы хорошо, но есть два "но":
1. Обязательно должен использоваться несамоподписанный SSL сертификат с отпечатком SHA256
2. Объект платформы HTTPЗапрос не в состоянии сформировать корректное вложение SSL сертификата при доступе к WebAPI Telegram, приходилось использовать Fiddler, для того чтобы отдать Telegram сертификат, при помощи которого начнется поступление входящих запросов
6. PLAstic 246 20.07.18 15:33 Сейчас в теме
(4) Я каждые три месяца выписываю бесплатный сертификат Comodo. Не имею проблем.
17. dmurk 277 23.07.18 10:32 Сейчас в теме
(6) Да, я тоже решил этот вопрос ))
9. nomadon 387 20.07.18 17:31 Сейчас в теме
Можно заставить отправлять Telegram push-уведомления

что-то пошло не так со словом push
12. KonstB 176 21.07.18 23:37 Сейчас в теме
(0) как Вы обошли блокировку телеграма в РФ?
Телеграм на телефоне работает. Адрес https://api.telegram.org/ без прокси молчит.
13. Infactum 286 22.07.18 09:57 Сейчас в теме
(12) Когда проходил IS event ничего еще не блокировалось.
Ну а сейчас какие проблемы через прокси зайти то?
14. KonstB 176 22.07.18 21:54 Сейчас в теме
(13)
Ну а сейчас какие проблемы через прокси зайти то?

Не увидел у Вас на скриншотах прокси. Подумал, возможно Вы как-то по другому обошли блокировку
15. Infactum 286 22.07.18 21:58 Сейчас в теме
(14) Я не автор. Но все варианты крутятся вокруг построения маршрута без блокировок. Не хотите прокси - настройте маршрутизацию на уровне шлюза / роутера.
16. PLAstic 246 23.07.18 10:02 Сейчас в теме
(12)

1. Как ни странно, но многие бизнес-провайдеры не блокируют трафик.
2. Для получения апдейтов по getUpdates достаточно впн-соединения.

Или другие способы:
1. Вывод сервера с ботами из РФ.
2. Проксирование трафика заграничным сервером.
18. PLAstic 246 24.07.18 12:32 Сейчас в теме
(16) Как показывает практика, проксирование - вопрос очень сложный, т.к. сервера телеги пытаются установить TLS сессию именно с прокси и надо как-то мутить прозрачное проксирование TLS.
19. Gureev 25.07.18 15:23 Сейчас в теме
Телега удобный мессенджер, жаль что ненадежный.
20. stako8 27.07.18 13:08 Сейчас в теме
(19) Чем это ненадежный? 2 раза в год ложится на несколько часов? или тем что роскомнувыпоняли его пытается блокировать, но уже везде встроен автообход и только через 1С его надо "ручками" делать...непонятно, объясните свою точку зрения!
21. Gureev 27.07.18 13:57 Сейчас в теме
(20) тем что не способен оперативно адаптироваться к законодательству стран в которых работает.

тем самым подвергает сервисы, реализованные на его базы, риску быть отключенными.
22. stako8 27.07.18 14:23 Сейчас в теме
(21) т.е. надо поддерживать страны где все законы противоречят друг другу и по одному ты не прав, а по второму законы ты не прав вдвойне - увольте!
23. Gureev 27.07.18 15:13 Сейчас в теме
(22)
т.е. надо поддерживать страны где все законы противоречят друг другу и по одному ты не прав, а по второму законы ты не прав вдвойне - увольте!

не очень понял этот поток сознания.

Но повторю, лично я не вижу причин, почему почти все крупные компании мира могут соблюдать российские законы, а телега не может.
Видимо просто не хочет. Эта и есть та самая ненадежность.
24. PLAstic 246 30.07.18 13:02 Сейчас в теме
(23) Для каждого пользователя свои приоритеты. Кому-то нравится позиция телеги не давать читать сообщения в приватных чатах. И для корпоративного сектора, имхо, это важно. А кому-то важнее распространённость и они пользуются, например, ватсапом. Но тут напрямую встаёт вопрос автоматизации общения с мессенжером. Кто ещё у нас поддерживает схожие возможности ботов?
25. Gureev 30.07.18 16:39 Сейчас в теме
(24) Корпоративный сектор общается в действительно защищенных мессенджерах.
Кто-то из бизнес сообщества уже высказывался, о том, что неопределенный правовой статус телеги не позволяет ее рассматривать всерьез.

Я бы хотел, чтоб у Дурова купили телегу, и вывели ее на цивилизованные рельсы.
26. PLAstic 246 30.07.18 18:27 Сейчас в теме
(25) Прям в действительно защищённых? Тогда такому сектору глубоко по барабану, у кого он установлен и они, совершив свой выбор, навязывают его определённому кругу. Кругу кого? Конечно, сотрудников, и конечно, для внутрикорпоративного общения.
А вот когда нужно общение с внешними контрагентами - клиентами или поставщиками, тогда выбирают наиболее массовые и функциональные мессенжеры, потому что такие установлены у многих и могут многое. Возвращаемся к моему предыдущему сообщению - у каждого свои приоритеты.
27. Gureev 31.07.18 12:00 Сейчас в теме
(26)
А вот когда нужно общение с внешними контрагентами

Когда это электронную почту мессенджерами заменили?)
28. PLAstic 246 31.07.18 12:39 Сейчас в теме
(27) Да много когда. Она подлежит замене везде, где требуется оперативное общение, либо общение, превышающее возможности почты. Например, передача локации, передача аудио-сообщений.
У меня есть боевые клиенты, которые ушли от почты. Конечно, это не традиционная торговля товарами.
29. lishniy 111 19.04.19 13:22 Сейчас в теме
Спасибо за ваш труд. Конфигурация хоть и не универсальная, но дает довольной быстрый старт.
Единственное не понял зачем вы все время получаете все сообщения? У себя пока сделал так
Процедура ПрочитатьСообщенияПользователя() Экспорт
	ПоследнийИД = Константы.TelegramOffset.Получить();
	СтруктураНастроек = ПолучитьНастройкиTelegram();
	
	//Установим соединение
	Источник = "bot" + СтруктураНастроек.token + "/getUpdates" + ?(ПоследнийИД = 0, "", "?offset=" + Формат(ПоследнийИД, "ЧГ="));
	...
	
	Если HTTPОтвет.КодСостояния = 200 Тогда
			Данные = ДесериализоватьJSON(HTTPОтвет.ПолучитьТелоКакСтроку());
			Если Данные.ok И Данные.result.Количество()>0 Тогда
				СообщениеID = 0; 
				Для каждого СтрокаМассива Из Данные.result  Цикл
					
					UpdateID = СтрокаМассива.update_id;
					
					...
				КонецЦикла;
				Константы.TelegramOffset.Установить(UpdateID+1);	
			КонецЕсли; 		
	КонецЕсли;
КонецПроцедуры
Показать

Таким образом, я получаю только новые сообщения
yuli; mnemchinov; arti4k; +3 Ответить
30. yuli 5 01.07.19 10:59 Сейчас в теме
Добрый день! При попытке получения сообщения от пользователя возникает ошибка
Прикрепленные файлы:
31. yuli 5 01.07.19 11:01 Сейчас в теме
Ключ = СтруктураНастроек.token; 
    Попытка
        
        Сервер = СтруктураНастроек.api;
        
        Если ИспользоватьПрокси Тогда
            HTTPСоединение = Новый HTTPСоединение(Сервер,,,,ИнтернетПрокси,,Новый ЗащищенноеСоединениеOpenSSL);
        Иначе
        
            
            HTTPСоединение  =  Новый HTTPСоединение(СтруктураНастроек.api,443,,,,,Новый ЗащищенноеСоединениеOpenSSL());    
            
            
                КонецЕсли;    
        
            
    Исключение
        
    КонецПопытки; 
     
        
        
    
//Установим соединение


    Источник = "bot" + СтруктураНастроек.token + "/getUpdates";
    HTTPЗапрос = Новый HTTPЗапрос(Источник);
    
    HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json");
            
    HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос); // - вот здесь возникает ошибка
Показать
32. guerro 27.11.19 16:14 Сейчас в теме
33. rpashkovsky 1 14.01.20 17:45 Сейчас в теме
Подскажите, пожалуйста, каким образом обработать событие в 1с нажатия кнопок в телеграмм при согласовании?
Оставьте свое сообщение

См. также

Redmine 1C - почти коробка

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

Почему это решение называется «почти коробка»? Потому, что это почти коробочное решение. С его помощью, просто добавив подсистему в конфигурацию, уже можно начинать взаимодействовать с системой Redmine.

10 стартмани

10.02.2020    2380    5    zfilin    5       

Базовый курс для начинающих 1С-программистов. Онлайн-интенсив со 2 июня по 2 июля 2020 г. Промо

Данный онлайн-курс является начальной ступенью по изучению базовых принципов программирования в системе “1С:Предприятие” и предназначен для обучения 1С-программированию “с нуля”.

4500-9500 рублей

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

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

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

2 стартмани

08.12.2019    5404    6    Бэнни    25       

Онлайн-интенсив "1C:Предприятие для программистов: Бухгалтерские задачи" с 22 июня по 8 июля 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, которые предназначены для решения задач бухгалтерского учета. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей прикладного решения “1С:Бухгалтерия” и прочих прикладных решений, в которых реализованы соответствующие механизмы для автоматизации бухгалтерских задач.

4900 рублей

Использование хранимых процедур MS SQL Server в 1С

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf MS SQL Абонемент ($m) Внешние источники данных

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

1 стартмани

03.12.2019    6040    3    Dedushka    26       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

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

Статья Программист Конфигурация (md, cf) v8 Абонемент ($m) Внешние источники данных Интеграция

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

1 стартмани

03.10.2019    10406    8    platonov.e    14       

Получение изображения с IP-камеры

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

Получение изображения JPG с IP-камеры в виде двоичных данных. В 1С может применяться для фотографирования объектов.

1 стартмани

10.09.2019    6917    22    sivin-alexey    8       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

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

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

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

1 стартмани

06.09.2019    11782    10    Dementor    29       

Согласование задач из Outlook

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

Согласование задач непосредственно из почтовой программы, в моем случае Outlook 2013 без каких-либо дополнительных настроек. Из почты отправляется GET запрос к HTTP-сервису 1С, который в свою очередь выполняет задачу.

1 стартмани

06.09.2019    5261    11    duhh    17       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

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

Статья Программист Внешняя обработка (ert,epf) v8 Абонемент ($m) Внешние источники данных

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

1 стартмани

27.08.2019    9520    2    logos    24       

Телеграм 1С – почти коробка

Инструменты и обработки Программист Пользователь Архив с данными v8 Windows Абонемент ($m) Внешние источники данных

Почему это решение называется «почти коробка»? Потому, что это почти коробочное решение. С его помощью, просто добавив подсистему в конфигурацию, уже можно начинать взаимодействовать с мессенджером Telegram.

10 стартмани

20.08.2019    8225    20    zfilin    59       

Сдача регламентированной отчетности из программ 1С Промо

Сдача регламентированной отчетности из программ "1С" во все контролирующие органы без выгрузок и загрузок в другие программы. Для групп компаний действуют специальные предложения.

от 1500 руб.

Расширение Бром для интеграции с 1С

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

Из этой статьи вы узнаете, как можно быстро и просто синтегрироваться с любой конфигурацией 1С при помощи расширения Бром.

1 стартмани

06.08.2019    3549    5    itworks    12       

Конфигурация для обмена данными (интеграционная шина)

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Windows Абонемент ($m) Внешние источники данных WEB

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

4 стартмани

08.07.2019    6251    20    miha-28    16       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

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

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

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

1 стартмани

28.06.2019    13047    15    muzipov    7       

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

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

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

1 стартмани

18.06.2019    9199    2    ilya.rudziak    9       

Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г. Промо

На курсе вы получите практические навыки решения задач производительности 1С, в том числе характерных для высоконагруженных информационных систем (более 1000 пользователей). Подготовка к экзамену – только одна из составляющих курса. 70% слушателей приходят за знаниями, которые позволят расти и зарабатывать, делать сложные задачи на крупных проектах.

16450 рублей

Почта России - отправка и отслеживание, интеграция с Документооборот 8

Инструменты и обработки Программист Пользователь Расширение (cfe) v8 ДО Россия Документооборот и делопроизводство Абонемент ($m) Внешние источники данных

Выгрузка почтовых отравлений в личный кабинет отправки Почты России; отслеживание почтовых отправлений через Почту России; расширение для интеграции Документооборот 8 с Почтой России

5 стартмани

04.06.2019    4887    40    wtlz    13       

Базовый курс по обмену данными в системе 1С:Предприятие. Онлайн-интенсив с 12 по 28 мая 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, обеспечивающих обмен данными между различными прикладными 1С-решениями и взаимодействие с другими информационными системами. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”.

5500 рублей

Шаблон http-сервиса для вашего проекта

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

Http-сервис для обмена данными в формате JSON. Обработчики этого сервиса находятся во внешней обработке, что позволяет дорабатывать его без изменения конфигурации. Также прилагаю пример мобильного приложения для работы с данным сервисом (получает номенклатуру и остатки на складе). Сервис очень быстро разворачивается и масштабируется под ваши задачи.

3 стартмани

04.05.2019    12317    64    MarkoSokolov    47       

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

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

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

1 стартмани

22.04.2019    23189    25    riposte    63       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

WhatsApp чат для 1С

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

WhatsApp чат для 1С. Расширение конфигурации, подходит для любых конфигураций 1С (управляемые формы).

5 стартмани

15.04.2019    6186    20    ManyakRus    19       

Доработка функционала отправки дополнительных реквизитов 1С: ЭДО для Татнефть

Инструменты и обработки Бухгалтер Расширение (cfe) v8 ERP2 БУ Документооборот и делопроизводство Абонемент ($m) Внешние источники данных

Подключаемое расширение к конфигурации ERP с функционалом отправки дополнительных реквизитов 1С ЭДО для Татнефть (№ и дата договора, подразделение, автор, примечание) в электронных документах Счет-фактуры и ТОРГ-12 Проверялось на 1С:ERP Управление предприятием 2.4.6.160.

2 стартмани

07.04.2019    5993    10    sapervodichka    6       

Онлайн-курс «Автоматизация процессов управления МТО: методика сбора и формализации требований» с 1 апреля по 13 мая 2020 года. Промо

Цель курса - повысить полноту и качество сбора и формализации требований к автоматизации процессов управления материально-техническим обеспечением. Курс основан на процессном подходе, позволяет в полном объеме выявить и учесть все факторы, влияющие на специфику процессов управления МТО. Участники курса получают теоретические знания в области организации процессов управления МТО и готовый инструментарий для сбора и формализации требований по автоматизации этих процессов (шаблоны, опросники, модели).

40000 рублей

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

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

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

1 стартмани

03.04.2019    12374    14    binx    11       

Формирование xml файла ЭДО (СБИС, Диадок, Такском и т.п.) для типовых документов (счета-фактуры, накладные)

Инструменты и обработки Программист Бухгалтер Пользователь Внешняя обработка (ert,epf) v8 1cv8.cf Документооборот и делопроизводство Абонемент ($m) Внешние источники данных Обмен через XML

Не все типовые документы типовых конфигураций 1С можно выгрузить в файл формата xml ЭДО. Например счет-фактуру, на текущий момент момент это не предусмотрено. Обработка позволяет сделать это.

4 стартмани

30.03.2019    19777    136    capitan    64       

1C:Предприятие для программистов: Расчетные задачи (зарплата). Онлайн-интенсив с 01 по 17 июня 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, которые предназначены для автоматизации периодических расчетов, а именно - для расчета зарплаты. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей прикладного решения “1С:Зарплата и управление персоналом” и прочих прикладных решений, в которых реализован функционал расчета зарплаты.

4900 рублей

Декларации по формам 11 и 12 алкогольной продукции, интеграция с ПО Декларант-Алко

Отчеты и формы Бухгалтер Архив с данными v8 Розничная и сетевая торговля (FMCG) Россия БУ Розничная торговля Абонемент ($m) Регламентированная отчетность Внешние источники данных

Конфигурация на обычных формах, платформа 1С 8.2.19.130 и выше, с помощью которой можно сформировать Декларации по формам 11 и 12 алкогольной продукции, гибрид/интеграция с ПО Декларант-Алко версии 4.31.05 и выше.

1 стартмани

25.03.2019    5324    8    independ    6