Интеграция 1С и Telegram

1. Ivan_Stepnov 08.08.24 13:27 Сейчас в теме
Доброго времени суток, уважаемые коллеги!

Прошу откликнуться тех, кому приходилось решать задачу связи 1С и Telegram.
Мы пытаемся разработать модуль, который позволял бы с помощью телеграм-бота, связанного с бизнес-аккаунтом, читать в 1С сообщения, отправленные и полученные этим аккаунтом. С помощью механизма
webhook история сообщений читается. Но не получается отправить сообщение на произвольный аккаунт
через 1С с использованием API бота. Я пробую это делать командой

"bot" + token + "/sendMessage?chat_id=" + "ИдентификаторТелеграм"

и получаю сообщение об ошибке:
{"ok":false,"error_code":403,"description":"Forbidden: bot can't initiate conversation with a user"}

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

Подскажите, пожалуйста, нет ли другой возможности отправить сообщение из внешнего приложения абоненту Телеграм от имени бизнес - аккаунта, к которому привязан бот, без запуска беседы другого аккаунта с ботом?

Заранее благодарю за помощь.
По теме из базы знаний
Найденные решения
6. yispepotri 08.08.24 14:19 Сейчас в теме
(5) без их участия никак. Там где происходит общение давать ссылку на боту, с предложением подключится и там они смогут получить такой-то функционал. Они подключаются к боты, в записываете их id куда -то и уже по id отправляете все что нужно.
29. yispepotri 08.08.24 15:16 Сейчас в теме
(28) в 27 ответе написал, чего возможно не хватает
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. user1880116 08.08.24 13:46 Сейчас в теме
(1)
отправить сообщение из внешнего приложения абоненту Телеграм от имени бизнес - аккаунта
Центр медицинских исследований города Москвы приглашает пройти без оплаты обследование по следующим направлениям урология, флебология, кардиология, ортопедия, обследование включает в себя консультацию профильного специалиста и узи. Диагностику. Имеются противопоказания. Необходима консультация. Чтобы узнать подробнее. Нажмите цифру 1.
2. user2033930 08.08.24 13:30 Сейчас в теме
4. yispepotri 08.08.24 13:56 Сейчас в теме
подключайте клиентов к вашему боту и отправляйте от бота сколько угодно сообщений. А так писать как по мне не очень правильно, вы же каким то образом находите данный контакт.
5. Ivan_Stepnov 08.08.24 14:15 Сейчас в теме
(4) yispepotri, спасибо за ответ!

А как подключить клиентов к нашему боту? Ведь, насколько я понимаю, без их участия этого не сделать - каждый из них должен сам начать чат с нашим ботом?
6. yispepotri 08.08.24 14:19 Сейчас в теме
(5) без их участия никак. Там где происходит общение давать ссылку на боту, с предложением подключится и там они смогут получить такой-то функционал. Они подключаются к боты, в записываете их id куда -то и уже по id отправляете все что нужно.
7. Ivan_Stepnov 08.08.24 14:24 Сейчас в теме
(6) yispepotri, спасибо Вам огромное за пояснение!
8. yispepotri 08.08.24 14:27 Сейчас в теме
(7) а вы используете функционал бизнес аккаунта телеграм? просто я вот точно не знаю разрешается ли от него писать первым, чтобы не получить бан за спам
9. Ivan_Stepnov 08.08.24 14:32 Сейчас в теме
(8) yispepotri, а можно ли из него отправлять сообщения не через бот?
12. yispepotri 08.08.24 14:37 Сейчас в теме
(9) я только вот сегодня решил посмотреть что это за фишка, ну как я понимаю бизнес аккаунт может отвечать даже без подключений к боту, на прописанные команды

https://telegram.org/blog/telegram-business/id?setln=ru
19. yispepotri 08.08.24 14:52 Сейчас в теме
(12) в BotFather, в настройках есть режим бизнес мод
21. Ivan_Stepnov 08.08.24 14:56 Сейчас в теме
(19) yispepotri, эту настройку я тоже установил. Но опять же - тогда ответ формирует бот, а надо, чтобы это делал пользователь.
24. yispepotri 08.08.24 15:00 Сейчас в теме
(21) ну у вас же наверно реализовано где сообщения хранятся от бота? от бота приходит вопрос, в 1 сохраняется со статусом в работе например, выводить в какой-нибудь обработке этот вопрос, пользователь дает какой-то ответ на вопрос, статус меняется например отправка и только тогда отправляется ответом. Проблема тут только во времени ожидания, можно писать что-то вроде, ожидайте ответа оператора ...
27. yispepotri 08.08.24 15:12 Сейчас в теме
(21) Обратил внимание, у sendMessage, есть параметр business_connection_id, я так понимаю сюда передается как раз id вашего бизнес аккаунта
Прикрепленные файлы:
10. Ivan_Stepnov 08.08.24 14:36 Сейчас в теме
Как я понимаю, к бизнес - аккаунту можно подключать ботов, которые будут анализировать полученные сообщения и отвечать на них от имени аккаунта. Но вот интерактивно отправлять произвольные сообщения - не знаю, как
14. yispepotri 08.08.24 14:40 Сейчас в теме
(10) ну по идее даже если бот подключен к бизнес аккаунту, то отправить также не сможете, не от бота, ни от бизнес аккаунта. А когда пользователь начнет общение с бизнес аккаунтом, тогда уже можно
15. Ivan_Stepnov 08.08.24 14:44 Сейчас в теме
(14)
А когда пользователь начнет общение с бизнес аккаунтом, тогда уже можно

yispepotri, а как тогда отправить? Опять же через бот командой SendMessage, или есть другой способ?
18. yispepotri 08.08.24 14:49 Сейчас в теме
(15) в настройках есть пункт Чат-боты, туда добавить бота, который будет реагировать на сообщение к бизнес аккаунту
Прикрепленные файлы:
20. Ivan_Stepnov 08.08.24 14:54 Сейчас в теме
(18) yispepotri, эту настройку я знаю. Но тогда бот будет анализировать полученные сообщения и сам формировать ответы на них от имени аккаунта. А мне надо, чтобы ответы формировал пользователь в 1С в интерактивном режиме. Такое возможно?
22. yispepotri 08.08.24 14:57 Сейчас в теме
(20)
А мне надо, чтобы ответы формировал пользователь в 1С в интерактивном режиме.


не совсем это понял, то есть это будет не программно, а в режиме реального ответа человека?
25. Ivan_Stepnov 08.08.24 15:06 Сейчас в теме
(22) yispepotri, да, именно! Требуется, чтобы пользователь 1С, используя webhook или getUpdates, получил сообщения telegram, которые отобразятся у него в какой-либо форме. После этого пользователь должен в 1С читать эти сообщения, думать, что ответить, и отправлять ответы на эти сообщения из 1С. И получается, что получить сообщения в 1С от может, а отправить ответы не может, т.к. ответы отправляются через бот, а абоненты не стартовали чат с этим ботом.
26. yispepotri 08.08.24 15:08 Сейчас в теме
(25) а вопросы где задается в бизнес аккуанте как раз?
28. Ivan_Stepnov 08.08.24 15:13 Сейчас в теме
(26) yispepotri, у пользователя 1С есть бизнес-аккаунт. Он читает из 1С сообщения, которые ему пришли - это может быть произвольный текст, и он должен иметь возможность ответить из 1С в режиме реального времени. Т.е. в 1С надо реализовать интерфейс такой же, как в чате Телеграм - я вижу сообщение, пишу ответ, и этот ответ отправляется.
29. yispepotri 08.08.24 15:16 Сейчас в теме
(28) в 27 ответе написал, чего возможно не хватает
30. Ivan_Stepnov 08.08.24 15:49 Сейчас в теме
(29) yispepotri , спасибо! Сообщение из 1С отправилось, когда я добавил в него параметр business_connection_id.
Одна проблема обнаружилась - может, её получится как-то решить. В истории сообщений, получаемой через webhook, данные о сообщении, которое я отправил таким способом, отсутствуют. Информация об ответе, которые мне на это сообщение отправили с телефона, есть, а самого сообщения нет. Это, конечно, не беда, если хранить информацию о сообщениях, отправленных через бот, в отдельном регистре, но там не будет данных, прочитал ли сообщение абонент.
31. yispepotri 08.08.24 15:53 Сейчас в теме
(30) прочитал ли сообщение скорее всего вряд ли узнаете, я по крайней мере такой функционал не видел. А подскажите на будущее, business_connection_id id бизнес аккаунта каким образом получили?
11. user-z99999 70 08.08.24 14:36 Сейчас в теме
Можно от имени себя, своего логина писать автоматические сообщения кому-нибудь.
Но сейчас всё грустно.
Пользователи нажимают пожаловаться, и вас отправляют в бан на 2-7-30 дней.

Когда пользователь сам начинает общаться с нами, через бота, вы в спам не улетите.
Лучше через бота.
13. Ivan_Stepnov 08.08.24 14:39 Сейчас в теме
(11) user-z99999, а как можно писать автоматические сообщения от имени своего логина? Ведь команда SendMessage работает только с токеном бота.
16. user-z99999 70 08.08.24 14:44 Сейчас в теме
(13) Телеграм в браузер устанавливаем.
+ Selenium
17. Ivan_Stepnov 08.08.24 14:48 Сейчас в теме
(16) user-z99999, и как это поможет? Отправка-то должна выполняться из 1С!
23. DmitriyZh 08.08.24 15:00 Сейчас в теме
(17) Можно установить selenium server и из 1с http запросами управлять им
32. user1880116 08.08.24 15:56 Сейчас в теме
(23)
selenium server
Ласты не забудьте, пожалуйста. И гамак. Возможно, также потребуется противогаз.
36. mkalimulin 1223 08.08.24 17:39 Сейчас в теме
(13) У Telegram есть bot API и есть user API
37. Ivan_Stepnov 08.08.24 18:33 Сейчас в теме
(36) mkalimulin, я посмотрел документацию по user API, и мне кажется, что она больше ориентирована на Python, чем на использование в 1С. Во всяком случае, на просторах Интернета я нашел примеры интеграции 1С с Телеграм только с использованием bot API, в том числе и Вашу статью https://habr.com/ru/companies/otus/articles/741520/, которая очень помогла мне в понимании концепции взаимодействия 1С и Телеграм.
33. Ivan_Stepnov 08.08.24 17:08 Сейчас в теме
(31) yispepotri, спасибо огромное за помощь!

Можно ли узнать business_connection_id бизнес-аккаунта через настройки в Телеграм, я не знаю - у меня это сделать не получилось. Я использовал другие способы:
1). Через ресурс salebot, на котором я проверял подключение. Там надо авторизовываться, придумать логин и пароль. Если выбрать на левой панели пункт "Каналы", то появляется информация о подключенных бизнес-аккаунтах - я подчеркнул красным поля, в которые выводятся идентификатор бизнес-аккаунта (Business ID) и имя пользователя (Business Username). Если у Вас настроен и подключен к боту-администратору бизнес-аккаунт, то в этих полях будут данные.
2). Я смотрел в 1С отладчиком сообщения, которые приходили от HTTP-сервиса через вебхук (у меня настроен обмен данными бота с 1С через вебхук c URL, указывающим на путь к HTTP-сервису 1С).
HTTP-запрос обрабатывается функцией:

Функция Webhook(Запрос)

Ответ = Новый HTTPСервисОтвет(200);
Попытка
Тело = Запрос.ПолучитьТелоКакСтроку();
Чтение = Новый ЧтениеJSON();
Чтение.УстановитьСтроку(Тело);
Рез = ПрочитатьJSON(Чтение);
Исключение
ООШ = ОписаниеОшибки();
КонецПопытки;
Возврат Ответ;

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

Я поставил точку останова на строку КонецФункции и посмотрел в окне отладки переменную Рез. Она вывелась в виде структуры с полем Business_connection_id

Может, есть способы более цивилизованные, но я их не знаю.
Прикрепленные файлы:
yispepotri; +1 Ответить
34. yispepotri 08.08.24 17:11 Сейчас в теме
(33) ну если работает то хорошо, ну по идее должно работать также как с ИД бота или пользователя, каким то образом точно можно выцепить))
35. Ivan_Stepnov 08.08.24 17:28 Сейчас в теме
(34) yispepotri, ИД бота или пользователя действительно можно найти через botFather. А вот с бизнес-ИД не получается, только через сторонний ресурс (Salebot). Может, в дальнейших обновлениях Телеграм добавит такую возможность и в свой функционал.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот