Отправка уведомлений из GetCourse в telegram-канал
У нас возникла ситуация, когда надо присылать уведомления о новых заказах менеджерам и РОПу. Причем менеджеры могут меняться, добавляться новые или в какой-то день у менеджера выходной и он не должен следить за уведомлениями.
Чтобы решить все эти вопросы решила создать отправку уведомлений в телеграм-канал. И сделать ее максимально простой, чтобы участвовали только getcourse и телеграм-канал, без использования сторонних сервисов.
В статье расскажу основные этапы реализации и с какими нюансами при настройке я сталкивалась.
Подготовка канала и бота
- Создаем канал в телеграм. Изначально он должен быть общедоступный, но позже разберем, как правильно перевести его в приватный, чтобы сохранить отправку уведомлений.
- Сохраняем название канала: https://t.me/{название_канала}
- Создаем бота в @BotFather. Название и описание не особо важны. Просто задайте название, по которому потом поймете для чего используется бот.
- Сохраняем токен, который BotFather присылает после создания бота.
- Добавляем бота в телеграм-канал администратором.
Ссылка для отправки запроса и перевод канал в приватный
Теперь надо заполнить ссылку данными, которые мы сохранили на предыдущем шаге:
https://api.telegram.org/bot{токен}/sendMessage?chat_id=@{название_канала}&text={текст_уведомления}
В качестве текста уведомления пока можно просто написать "тест", в будущем это будет любой нужный вам текст.
И теперь, если вы все сделали верно, произойдут 2 вещи:
- В браузере вы увидите код, в котором можно найти значение id. Это ID вашего канала, который надо скопировать. Скопировать надо абсолютно все символы после двоеточия. И теперь вместо "@{название_канала}, в ссылку можно поставить значение id, а канал перевести в приватный.
- В ваш телеграм-канал придет то сообщение, которое вы указали в тексте уведомления. Значит все работает корректно и можно переходить к следующим настройкам. Если сообщение не пришло, значит надо проверять верно ли прописана ссылка.
Отправка уведомлений из getcourse
- Создаем процесс или выбираем уже созданный процесс, куда хотим добавить уведомление.
- Добавляем туда блок "Вызвать url" и там в разделе Url вставляем нашу ссылку.
- Текст уведомления меняем на нужный нам. В следующем разделе расскажу подробнее про работу с текстом.
- Проверяем отправку уведомления.
📌 Важно. На момент написания статьи у геткурс наблюдаются проблемы с использованием блока "Вызвать url" в некоторых процессах:
На данный момент новые задачи по процессам не отображаются в разделе входящих аккаунта, если по процессам выполняется параллельное выполнение блока ожидания условия с блоком вызова URL (ситуация актуальна для задач, которые были созданы автоматически по периодической проверке).
Я пока выношу уведомления в отдельные процессы, чтобы задачи не терялись.
Текст уведомления
- Я использую разметку Markdown, поэтому в ссылке добавляю "parse_mode=Markdown"
- Сразу писать сообщение в строку, особенно длинное будет сложно. Поэтому я сначала пишу сообщение в любом редакторе с нужной мне разметкой, а потом уже перевожу это в строку
- Переменные заказа и пользователя из геткурс я использую как и в любых других процессах. Например, ссылка на заказ будет выглядеть следующим образом:
Ссылка на заказ: [https://{домен}/sales/control/deal/update/id/{object.id}](https://{домен}/sales/control/deal/update/id/{object.id})
В квадратных скобках пишется текст ссылки, в круглых сама ссылка. В моем случае я хочу, чтобы они совпадали. - Некоторые символы нельзя использовать, поэтому их надо заменять. Например,
вместо символа "#" я использую "%23" (нужно, если вы размечаете уведомления тегами)
"%0A" используется для переноса строки, соответственно "%0A%0A" будет формировать новый абзац.
В заключение пример моей ссылки с уведомлением о поступлении оплаты по заказу, с которым работал менеджер (жирным выделены переменные, которые надо подставить):
https://api.telegram.org/bot{токен}/sendMessage?chat_id={chat_id}&parse_mode=Markdown&text=%23оплата по заказу №{object.number}%0A%0AМенеджер: {object.manager}%0AСтоимость заказа: {object.cost_money}%0A%0AСостав заказа: {object.positions}%0A%0AСсылка на заказ: [https://{домен}/sales/control/deal/update/id/{object.id}](https://{домен}/sales/control/deal/update/id/{object.id})