GetCourse
April 12, 2022

Отправка уведомлений из GetCourse в telegram-канал

У нас возникла ситуация, когда надо присылать уведомления о новых заказах менеджерам и РОПу. Причем менеджеры могут меняться, добавляться новые или в какой-то день у менеджера выходной и он не должен следить за уведомлениями.

Чтобы решить все эти вопросы решила создать отправку уведомлений в телеграм-канал. И сделать ее максимально простой, чтобы участвовали только getcourse и телеграм-канал, без использования сторонних сервисов.

В статье расскажу основные этапы реализации и с какими нюансами при настройке я сталкивалась.

Подготовка канала и бота

  1. Создаем канал в телеграм. Изначально он должен быть общедоступный, но позже разберем, как правильно перевести его в приватный, чтобы сохранить отправку уведомлений.
  2. Сохраняем название канала: https://t.me/{название_канала}
  3. Создаем бота в @BotFather. Название и описание не особо важны. Просто задайте название, по которому потом поймете для чего используется бот.
  4. Сохраняем токен, который BotFather присылает после создания бота.
  5. Добавляем бота в телеграм-канал администратором.

Ссылка для отправки запроса и перевод канал в приватный

Теперь надо заполнить ссылку данными, которые мы сохранили на предыдущем шаге:

https://api.telegram.org/bot{токен}/sendMessage?chat_id=@{название_канала}&text={текст_уведомления}

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

И теперь, если вы все сделали верно, произойдут 2 вещи:

  1. В браузере вы увидите код, в котором можно найти значение id. Это ID вашего канала, который надо скопировать. Скопировать надо абсолютно все символы после двоеточия. И теперь вместо "@{название_канала}, в ссылку можно поставить значение id, а канал перевести в приватный.
  2. В ваш телеграм-канал придет то сообщение, которое вы указали в тексте уведомления. Значит все работает корректно и можно переходить к следующим настройкам. Если сообщение не пришло, значит надо проверять верно ли прописана ссылка.

Отправка уведомлений из getcourse

  1. Создаем процесс или выбираем уже созданный процесс, куда хотим добавить уведомление.
  2. Добавляем туда блок "Вызвать url" и там в разделе Url вставляем нашу ссылку.
  3. Текст уведомления меняем на нужный нам. В следующем разделе расскажу подробнее про работу с текстом.
  4. Проверяем отправку уведомления.

📌 Важно. На момент написания статьи у геткурс наблюдаются проблемы с использованием блока "Вызвать url" в некоторых процессах:

На данный момент новые задачи по процессам не отображаются в разделе входящих аккаунта, если по процессам выполняется параллельное выполнение блока ожидания условия с блоком вызова URL (ситуация актуальна для задач, которые были созданы автоматически по периодической проверке).

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

Текст уведомления

  1. Я использую разметку Markdown, поэтому в ссылке добавляю "parse_mode=Markdown"
  2. Сразу писать сообщение в строку, особенно длинное будет сложно. Поэтому я сначала пишу сообщение в любом редакторе с нужной мне разметкой, а потом уже перевожу это в строку
  3. Переменные заказа и пользователя из геткурс я использую как и в любых других процессах. Например, ссылка на заказ будет выглядеть следующим образом:

    Ссылка на заказ: [https://{домен}/sales/control/deal/update/id/{object.id}](https://{домен}/sales/control/deal/update/id/{object.id})

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

    вместо символа "#" я использую "%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})