Skip to content
Возможности Когникон
Share
Explore
Сценарии чат-бота

icon picker
Модуль "Формирование сообщений"

Чат-бот устанавливается в общий рабочий чат с персоналом в Телеграм. В нужное время сообщает о необходимости выполнить задание (пройти чек-лист). Также он контролирует качество и время выполнения этого задания через личные рабочие чаты в мессенджерах Telegram.
Чтобы отсылать или удалять сообщения в рабочих чатах с сотрудниками Чат-бот использует Telegram API. Эти возможности собраны в отдельном файле telegram-functions.js и объявлены в виде функций.

Функция удаления сообщений из чата:

Данная функция необходима для удаления дублирующихся сообщений из чата:
image.png
function deleteMessegeFromChat(messageId, chatId, token) { var url = "https://api.telegram.org/bot"+token+"/deleteMessage"; var options = { dataType: "json", body: { "chat_id": chatId, "message_id": messageId } }; var response = $http.post(url, options); log('delete method response:\n'+toPrettyString(response)); return response.isOk ? response.data : false; }
Перед отправкой нового напоминания сотруднику, Чат-бот проверяет, что если ранее такое сообщение уже отправлялось, то предыдущее с таким же текстом удаляется.
изображение.png
if ($session.early_id!="" && $session.early_text!="" && $session.early_text === message) { deleteMessegeFromChat($session.early_id, $client.id, $injector.bot_token); }

Функция, отвечающая за отправку сообщений в групповой чат:

С помощью этой функции в групповой чат будет отправлен отчет, если сотрудник выполнил все пункты чек-листа.
image.png
function sendMessageToGroupChat(message) { var id = $jsapi.context().injector.group_chat_id; var token = $jsapi.context().injector.bot_token; var url = "https://api.telegram.org/bot"+token+"/sendMessage"; var options = { dataType: "json", body: { "chat_id": id, "text": message } }; var response = $http.post(url, options); return response.isOk ? response.data : false; }
Данная функция отвечает за формирование сообщения об успешном выполнении чек-листа сотрудником:
image.png
state: Report script: ///получаем время окончания (когда все пункты выполнены) var amountEndTimeInMilliseconds = $jsapi.timeForZone("Europe/Moscow"); //разница между концом и началом в минутых var interval = Math.round((amountEndTimeInMilliseconds - $client.amountStartTimeInMilliseconds)/60000); // формируем день недели в родительном падеже var dayInGenitive = $nlp.inflect(checklist[$session.checklistType].dayName, "gent"); // формируем день недели в винительном падеже var dayInAccs = $nlp.inflect(checklist[$session.checklistType].dayName, "accs"); //420 для чек-листа чистоты // если сотрудник уложился в это время, то чек-лист выполнен if (interval > 420){ $reactions.answer('Чек лист \«Задачи чистоты ' + dayInGenitive + '\» провален!'); } else { $reactions.answer('Задачи чистоты ' + dayInGenitive + ' выполнены!'); // формируем сообщение о выполнении чек-листа var message = "Сотрудник " + $client.name +" "+ $client.username + " справился с чек-листом чистоты за " + dayInAccs + ". время выполнения - " + interval + " " + $caila.conform("минута", interval) + " \nОтчёт:"; $temp.response = sendMessageToGroupChat(message); for (var i = 0; i < $client.report.length; i++) { var message = " " + $client.name +" "+ $client.username + " " + "Пункт " + (i + 1) + "." + checklist[$session.checklistType].stepNames[i] + ": " + $client.report[i] $temp.response = sendMessageToGroupChat(message); } }
Формирование фразы при возникновении сложностей у сотрудника при выполнении заданий по чек-листу:
image.png
script: if ($session.ErrorCounter === 3) { var message = "У сотрудника " + $client.name + " " + $client.username + " сложность с чек-листом чистоты с пунктом " + ($session.stepNumber + 1) + ". " + checklist[$session.checklistType].stepNames[$session.stepNumber]; $temp.response = sendMessageToGroupChat(message); }

Функция, отвечающая за отправку сообщений в личный чат:

Функция отправки заданий согласно Чек-листа в чат сотруднику.
image.png
function sendMessageToUserChat(message) { var chat_id = $jsapi.context().session.clientChatId; var token = $jsapi.context().injector.bot_token; var url = "https://api.telegram.org/bot"+token+"/sendMessage"; var options = { body: { "chat_id": chat_id, "text": message } }; var response = $http.post(url, options); return response.isOk ? response.data : false; }
Формирование сообщения для обработки нераспознанной фразы в личном чате сотрудника:
image.png
var message = "Я не понял. Вы сказали: " + $request.query + ". Продолжите пожалуйста выполнять чек-лист."; sendMessageToUserChat(message);
Формирование сообщения с заданием по чек-листу:
image.png
var message = checklist[$session.checklistType].steps[$session.stepNumber]; // отправляем сообщение пользователю $temp.response = sendMessageToUserChat(message);

Функция, отвечающая за отправку сообщений в личный чат с использованием кнопок:

image.png
function sendMessageToUserChatWithButton(message, message_with_button, callback_button) { var chat_id = $jsapi.context().session.clientChatId; var token = $jsapi.context().injector.bot_token; var url = "https://api.telegram.org/bot"+token+"/sendMessage"; var options = { body: { "chat_id": chat_id, "text": message, "reply_markup":{ "inline_keyboard":[ [ { "text": message_with_button, "callback_data": callback_button } ] ] } } }; var response = $http.post(url, options); return response.isOk ? response.data : false; }
Используется, если сотрудник отправил больше одной фотографии в качестве отчета
изображение.png
var message = "Запрещено присылать больше одного фото. Необходимо повторить пункт.\nНажмите на кнопку \"Повторить\""; $temp.response = sendMessageToUserChatWithButton(message,'Повторить', 'repit_step');


Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.