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

19.07.18

Интеграция - Мессенджеры и боты

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

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

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

Предыстория

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

Возникла идея интегрироваться с каким-нибудь мессенджером, например, 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.

 

30 мая - 1 июня 2024 года состоится конференция Анализ & Управление в ИТ-проектах, на которой прозвучит 130+ докладов.

Темы конференции:

  • Программная инженерия.
  • Инструментарий аналитика.
  • Решения 1С: архитектура, учет и кейсы автоматизации на 1С.
  • Управление проектом.
  • Управление продуктом.
  • Soft skills, управление командой проекта.

Конференция для аналитиков и руководителей проектов, а также других специалистов из мира 1С, которые занимаются системным и бизнес-анализом, работают с требованиями, управляют проектами и продуктами!

Подробнее о конференции.

 


См. также

SALE! 25%

Конструктор ботов Телеграм, редакция 2

Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Развитие популярного решения для интеграции мессенджера Telegram с нашей любимой 1С.

15000 11250 руб.

18.06.2021    58679    291    255    

345

SALE! 25%

Что нам стоит бота построить? Нарисуем - будет жить! Графический конструктор телеграм-ботов/Telegram

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 9900 руб.

27.12.2021    33276    80    157    

174

Легкий документооборот (+чат-бот для Telegram)

Документооборот и делопроизводство (СЭД) Мессенджеры и боты Учет документов Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 Платные (руб)

Расширение для согласования справочников и документов в конфигурациях "1С: Бухгалтерия 3.0", "Управление нашей фирмой", "1С ERP Управление предприятием", "Бухгалтерия государственного учреждения". Ролевая адресация, условная маршрутизация, последовательное и параллельное согласование, уведомление о новых задачах на почту, блокировка объектов в зависимости от статуса, запрет проведения в зависимости от статуса, автозапуск процессов согласования, отчеты по исполнительской дисциплине. Не требуется снятие конфигурации с поддержки. Настройка без программирования. Версия для 1cfresh.com. Сертификат 1С-Совместимо.

14900 руб.

15.11.2018    27790    25    48    

57

Email, SMS, Telegram рассылки из 1С - Директ Маркетинг

Управление взаимоотношениями с клиентами (CRM) Мессенджеры и боты SMS рассылки Email рассылки Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

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

7788 руб.

07.04.2014    83618    40    191    

127

Интеграция 1С с телефонией и чатами WhatsApp и Telegram

Телефония, SIP Мессенджеры и боты Платформа 1С v8.3 Конфигурации 1cv8 Россия Управленческий учет Платные (руб)

Интеграция 1С с телефонией и чатами WhatsApp и Telegram автоматизирует работу оператора со звонками и чатами и добавит вашей 1С элементы CRM системы. Храните всю историю взаимоотношений в 1С, не теряйте звонки, скачивайте, прослушивайте в любое время из карточки клиента или журнала звонков, держите руку на пульсе, используя блок отчетов по звонкам. Интегрируйте вашу 1С и чатами WhatsApp и Telegram, общайтесь с клиентами с единого номера и в одном окне. Теперь чаты с клиентами хранятся в карточке партнера в 1С, а не в личных мобильных ваших менеджеров.

4100 руб.

28.04.2022    13853    11    6    

36

Отправка в Telegram отчетов, печатных форм, присоединённых файлов и произвольных вложений. Загрузка получателей. Хранение истории отправок.

Мессенджеры и боты Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Платные (руб)

Универсальное расширение для отправки (напрямую и через прокси) печатных форм, отчетов, присоединённых файлов, табличных документов и произвольных вложений в чат Telegram прямо из 1С. Ручная и автоматическая фоновая загрузка по расписанию идентификаторов получателей Telegram. Хранение истории отправок сообщений с ограничением по времени хранения и с автоматической очисткой по мере истечения срока хранения.

4800 руб.

26.12.2023    2203    1    0    

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

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

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

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

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

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

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

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

Или другие способы:
1. Вывод сервера с ботами из РФ.
2. Проксирование трафика заграничным сервером.
18. PLAstic 295 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) тем что не способен оперативно адаптироваться к законодательству стран в которых работает.

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

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

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

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

Когда это электронную почту мессенджерами заменили?)
28. PLAstic 295 31.07.18 12:39 Сейчас в теме
(27) Да много когда. Она подлежит замене везде, где требуется оперативное общение, либо общение, превышающее возможности почты. Например, передача локации, передача аудио-сообщений.
У меня есть боевые клиенты, которые ушли от почты. Конечно, это не традиционная торговля товарами.
34. 028 21.05.20 11:34 Сейчас в теме
после того как в телеграмме нажал отправить свой номер появляется такая ошибка
{ОбщийМодуль.Telegram_Сервер.Модуль(24)}: Поле объекта не обнаружено (text)
Команда = ВернутьКомандуTelegram(СтрокаМассива.message.text);
35. 028 21.05.20 11:46 Сейчас в теме
после того как в телеграмме нажал отправить свой номер появляется такая ошибка
{ОбщийМодуль.Telegram_Сервер.Модуль(24)}: Поле объекта не обнаружено (text)
Команда = ВернутьКомандуTelegram(СтрокаМассива.message.text);
36. 028 24.05.20 09:17 Сейчас в теме
44. Lyumi3004 23.11.20 13:45 Сейчас в теме
(36)
КАААК ? Поле объекта не обнаружено (text) Как решил ? Ни с того ни с сего появилось, не пойму где проблема.
29. lishniy 132 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);	
			КонецЕсли; 		
	КонецЕсли;
КонецПроцедуры
Показать

Таким образом, я получаю только новые сообщения
ixijixi; zzz14; CD_SVEN; Sector78; Smoking1C; yuli; mnemchinov; arti4k; +8 Ответить
53. FandrFa 39 17.01.23 11:07 Сейчас в теме
(29) Добрый день, таким образом тоже получаю все сообщения
30. yuli 14 01.07.19 10:59 Сейчас в теме
Добрый день! При попытке получения сообщения от пользователя возникает ошибка
Прикрепленные файлы:
39. user945750 13.06.20 23:19 Сейчас в теме
31. yuli 14 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 Сейчас в теме
(31) получилось исправить?
33. rpashkovsky 23 14.01.20 17:45 Сейчас в теме
Подскажите, пожалуйста, каким образом обработать событие в 1с нажатия кнопок в телеграмм при согласовании?
38. 028 24.05.20 09:26 Сейчас в теме
(33)смотри на свойство callback_query там есть callback_data
42. AlexeyPapanov 458 24.10.20 02:55 Сейчас в теме
(38)
(33)смотри на свойство callback_query там есть callback_data

Коллеги, что-то подзатупил. Не понимаю в каком месте кода мне обработать ответ (нажатие кнопки).
43. AlexeyPapanov 458 24.10.20 03:19 Сейчас в теме
(42) и сам себе отвечу:
Код
Процедура ПрочитатьСообщенияПользователя() Экспорт
   
/// ...
   
   Если HTTPОтвет.КодСостояния = 200 Тогда
         Данные = ДесериализоватьJSON(HTTPОтвет.ПолучитьТелоКакСтроку());
         Если Данные.ok И Данные.result.Количество()>0 Тогда
            //Запишем историю сообщений
             
            Для каждого СтрокаМассива Из Данные.result  Цикл
Показать полностью


Вот в переменной СтрокаМассива и будет свойство callback_query.
37. 028 24.05.20 09:18 Сейчас в теме
Добрый день как в1С сделать чтобы менять расположение кнопок? использую inline_keyboard
40. WellMaster 104 26.08.20 11:37 Сейчас в теме
Спасибо за конфу, получилось быстро войти в тему.
Кроме того, в этой конфигурации отправка идет методом POST, в другой конфе, где тоже есть интеграция с Телеграм, используется метод GET, который у меня не заработал.
41. user775441 02.09.20 14:48 Сейчас в теме
Добрый день! Система выдает ошибку "{"ok":false,"error_code":409,"description":"Conflict: can't use getUpdates method while webhook is active; use deleteWebhook to delete the webhook first"}" - как это исправить?
45. xavier13 02.06.21 20:44 Сейчас в теме
(41)
Для тех, кто столкнется с такой ошибкой - при создании бота вы для себя должны определить, какой формат вам больше подходит - отсылать веб-хук при событиях на url или стучаться по определенному графику на api телеграмма, чтобы получить данные. Если вы попытаетесь получить getupdates при использовании веб-хуков, то вы получите ошибку, как у user775441.
46. simuljakr 203 07.01.22 19:27 Сейчас в теме
Спасибо за подробную статью!

Подскажите пожалуйста - какие еще HTML тэги поддерживает Телеграм?

Про жирный текст, курсив, подчеркнутый текст и ссылку - понятно.

А например изменить размер/текст шрифта можно?
А табличку нарисовать?
47. user645801_yyyuuu123q 02.03.22 12:38 Сейчас в теме
Всем привет ребята. При выгрузки в ексель файл не телеграмме не открывается с телефона. На компутере пишет ошибка в части содержания книги.

Была выполнена проверка на уровне файла с последующим восстановлением файла. Некоторые фрагменты документа могли быть восстановлены либо удалены.
48. 13kot 18.03.22 11:23 Сейчас в теме
Можно ведь хранить не все обработанные сообщения, а только последнее.
И обходить сконца пока не наткнемся на последнее обработанное (они ведь по порядку все равно идут)
49. jan27 732 21.03.22 09:31 Сейчас в теме
50. Iv777 15.04.22 11:10 Сейчас в теме
Возможно ли отправлять сообщение из 1с в телеграмм не на ID пользователя а на номер его телефона?
51. Sector78 20.09.22 13:14 Сейчас в теме
ТабДок = Новый ТабличныйДокумент;
Отчеты.Telegram_Отчет_Остатки.Создать().СкомпоноватьРезультат(ТабДок);
ИмяФайла=ПолучитьИмяВременногоФайла("XLS");
ТабДок.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.XLS);

Возможно ли отправлять файл только определенному пользователю по его ID?
52. VoVo 19.12.22 15:22 Сейчас в теме
Здравствуйте, а не знаете как управлять расположением полем текстового ввода сообщения, у вас на скрине тоже над коммандами, а я видел где-то и нужно реализовать в самом низу под коммандами?
54. dinopopyys 151 20.04.23 18:25 Сейчас в теме
Коллеги можно ещё проще: отправлять уведомления в мобильном приложении. И другие данные и даже отчёты Дзен MIE
или публикация инфостарт Инфостарт MIE
55. user1682551 23.05.23 21:20 Сейчас в теме
Хочу сказать Вам ОГРОМНОЕ СПАСИБО за статью и, главное, за файл конфигурации!!! На основе неё я смогла написать своего бота. Сначала была в панике, как же я осилю - имею совсем небольшой опыт в разработке. Но у меня всё получилось именно благодаря Вам. Чатботы заказала служба по работе с персоналом. У меня их 3: выходное интервью, адаптация и вакансии. Расширение HR-бот. Помогла мне и коллега по работе. Мои боты проводят опросы, делают рассылки сотрудникам и позволяют смотреть открытые в компании вакансии, записываться на собеседование. Ещё раз большое Вам СПАСИБО!!!
insurgut; user1602958; +2 Ответить
56. setufanet 27.08.23 17:33 Сейчас в теме
А можно сделать что человек в 1с отправляет сообщение в чат бот от своего имени, как будто бы он в приложении зашел в чат бот и написал сообщение сам?
57. cps83 10.10.23 10:42 Сейчас в теме
Коллеги, подскажите пжл. в связи с чем может возникать подобная ошибка:
Ошибка при вызове метода контекста (ОтправитьДляОбработки): Ошибка работы с Интернет: Удаленный узел не прошел проверку

2 терминальных сервера, с одного отправляет файл отчёта с другого - нет. при этом сообщения отправляются нормально с обоих серверов.
Если ставишь как регл. задание, тоже не отправляет файл, сообщение - отправляются
58. simuljakr 203 06.12.23 13:24 Сейчас в теме
Здравствуйте.

Посдкажите пожалуйста - а можно ли сделать - чтобы сообщения отправлялись от имени пользователя, а не бота ?
Чтобы выглядело - как будто с тобой общается человек ?
Я регистрирую аккаунт в Телграме, потом подключаю этот аккаунт к 1С, и общаюсь уже от своего имени, а не от имени бота ?
59. insurgut 207 08.12.23 12:10 Сейчас в теме
Спасибо, запустил с нуля за полчаса. Сэкономил кучу времени на изучение API.
Оставьте свое сообщение