Прошу откликнуться тех, кому приходилось решать задачу связи 1С и Telegram.
Мы пытаемся разработать модуль, который позволял бы с помощью телеграм-бота, связанного с бизнес-аккаунтом, читать в 1С сообщения, отправленные и полученные этим аккаунтом. С помощью механизма
webhook история сообщений читается. Но не получается отправить сообщение на произвольный аккаунт
через 1С с использованием API бота. Я пробую это делать командой
и получаю сообщение об ошибке:
{"ok":false,"error_code":403,"description":"Forbidden: bot can't initiate conversation with a user"}
Т.е. бот не может сам инициировать беседу - надо, чтобы абонент Телеграм, которому я пишу, начал беседу с ботом командой /start
Т.е., как я понимаю, даже если мой аккаунт уже общается с другим аккаунтом в Телеграм, отправить этому другому аккаунту сообщение через бота я всё равно не могу, пока этот другой аккаунт не запустит чат с ботом.
Подскажите, пожалуйста, нет ли другой возможности отправить сообщение из внешнего приложения абоненту Телеграм от имени бизнес - аккаунта, к которому привязан бот, без запуска беседы другого аккаунта с ботом?
(5) без их участия никак. Там где происходит общение давать ссылку на боту, с предложением подключится и там они смогут получить такой-то функционал. Они подключаются к боты, в записываете их id куда -то и уже по id отправляете все что нужно.
отправить сообщение из внешнего приложения абоненту Телеграм от имени бизнес - аккаунта
Центр медицинских исследований города Москвы приглашает пройти без оплаты обследование по следующим направлениям урология, флебология, кардиология, ортопедия, обследование включает в себя консультацию профильного специалиста и узи. Диагностику. Имеются противопоказания. Необходима консультация. Чтобы узнать подробнее. Нажмите цифру 1.
подключайте клиентов к вашему боту и отправляйте от бота сколько угодно сообщений. А так писать как по мне не очень правильно, вы же каким то образом находите данный контакт.
А как подключить клиентов к нашему боту? Ведь, насколько я понимаю, без их участия этого не сделать - каждый из них должен сам начать чат с нашим ботом?
(5) без их участия никак. Там где происходит общение давать ссылку на боту, с предложением подключится и там они смогут получить такой-то функционал. Они подключаются к боты, в записываете их id куда -то и уже по id отправляете все что нужно.
(7) а вы используете функционал бизнес аккаунта телеграм? просто я вот точно не знаю разрешается ли от него писать первым, чтобы не получить бан за спам
(9) я только вот сегодня решил посмотреть что это за фишка, ну как я понимаю бизнес аккаунт может отвечать даже без подключений к боту, на прописанные команды
(21) ну у вас же наверно реализовано где сообщения хранятся от бота? от бота приходит вопрос, в 1 сохраняется со статусом в работе например, выводить в какой-нибудь обработке этот вопрос, пользователь дает какой-то ответ на вопрос, статус меняется например отправка и только тогда отправляется ответом. Проблема тут только во времени ожидания, можно писать что-то вроде, ожидайте ответа оператора ...
Как я понимаю, к бизнес - аккаунту можно подключать ботов, которые будут анализировать полученные сообщения и отвечать на них от имени аккаунта. Но вот интерактивно отправлять произвольные сообщения - не знаю, как
(10) ну по идее даже если бот подключен к бизнес аккаунту, то отправить также не сможете, не от бота, ни от бизнес аккаунта. А когда пользователь начнет общение с бизнес аккаунтом, тогда уже можно
(18) yispepotri, эту настройку я знаю. Но тогда бот будет анализировать полученные сообщения и сам формировать ответы на них от имени аккаунта. А мне надо, чтобы ответы формировал пользователь в 1С в интерактивном режиме. Такое возможно?
(22) yispepotri, да, именно! Требуется, чтобы пользователь 1С, используя webhook или getUpdates, получил сообщения telegram, которые отобразятся у него в какой-либо форме. После этого пользователь должен в 1С читать эти сообщения, думать, что ответить, и отправлять ответы на эти сообщения из 1С. И получается, что получить сообщения в 1С от может, а отправить ответы не может, т.к. ответы отправляются через бот, а абоненты не стартовали чат с этим ботом.
(26) yispepotri, у пользователя 1С есть бизнес-аккаунт. Он читает из 1С сообщения, которые ему пришли - это может быть произвольный текст, и он должен иметь возможность ответить из 1С в режиме реального времени. Т.е. в 1С надо реализовать интерфейс такой же, как в чате Телеграм - я вижу сообщение, пишу ответ, и этот ответ отправляется.
(29) yispepotri , спасибо! Сообщение из 1С отправилось, когда я добавил в него параметр business_connection_id.
Одна проблема обнаружилась - может, её получится как-то решить. В истории сообщений, получаемой через webhook, данные о сообщении, которое я отправил таким способом, отсутствуют. Информация об ответе, которые мне на это сообщение отправили с телефона, есть, а самого сообщения нет. Это, конечно, не беда, если хранить информацию о сообщениях, отправленных через бот, в отдельном регистре, но там не будет данных, прочитал ли сообщение абонент.
(30) прочитал ли сообщение скорее всего вряд ли узнаете, я по крайней мере такой функционал не видел. А подскажите на будущее, business_connection_id id бизнес аккаунта каким образом получили?
Можно от имени себя, своего логина писать автоматические сообщения кому-нибудь.
Но сейчас всё грустно.
Пользователи нажимают пожаловаться, и вас отправляют в бан на 2-7-30 дней.
Когда пользователь сам начинает общаться с нами, через бота, вы в спам не улетите.
Лучше через бота.
(36) mkalimulin, я посмотрел документацию по user API, и мне кажется, что она больше ориентирована на Python, чем на использование в 1С. Во всяком случае, на просторах Интернета я нашел примеры интеграции 1С с Телеграм только с использованием bot API, в том числе и Вашу статью https://habr.com/ru/companies/otus/articles/741520/, которая очень помогла мне в понимании концепции взаимодействия 1С и Телеграм.
Можно ли узнать 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
Может, есть способы более цивилизованные, но я их не знаю.
(34) yispepotri, ИД бота или пользователя действительно можно найти через botFather. А вот с бизнес-ИД не получается, только через сторонний ресурс (Salebot). Может, в дальнейших обновлениях Телеграм добавит такую возможность и в свой функционал.