Бот обратной связи в Telegram

Этот поток создает бота обратной связи в Telegram.

  • Когда пользователь запускает бота, ему отправляется приветствие: «Здравствуйте. Задайте вопрос и мы ответим в ближайшее время.»;
  • Когда пользователь отправляет сообщение боту, оно переотправляется в вашу группу;
  • Когда кто-то отвечает в вашей группе на сообщение, ответ отправляется пользователю от имени бота.

Поток бота обратной связи в Telegram

JSON потока#

[
{
"id": "816191d5.cb781",
"type": "tab",
"label": "TG Обратная связь",
"disabled": false,
"info": ""
},
{
"id": "20fc1f49.0ac97",
"type": "drom-tg-updates",
"z": "816191d5.cb781",
"name": "",
"method": "longpoll",
"property": "tgUpdate",
"client": "55210027.dc46d",
"x": 220,
"y": 540,
"wires": [
[
"581f6191.a03c4"
]
]
},
{
"id": "581f6191.a03c4",
"type": "drom-tg-switch-update",
"z": "816191d5.cb781",
"name": "Какое обновление?",
"tgUpdate": "tgUpdate",
"property": "tgUpdateObj",
"updates": [
"message"
],
"outputs": 1,
"x": 500,
"y": 540,
"wires": [
[
"f1b47a6d.c871d8"
]
]
},
{
"id": "9a5462b0.20203",
"type": "drom-tg-api-call",
"z": "816191d5.cb781",
"name": "Отправка сообщения",
"data": "apiData",
"dataType": "msg",
"method": "sendMessage",
"methodType": "str",
"property": "apiRes",
"client": "55210027.dc46d",
"x": 1180,
"y": 540,
"wires": [
[
"d700d74.3b99228"
]
]
},
{
"id": "1f5ca683.997369",
"type": "change",
"z": "816191d5.cb781",
"name": "🆔 Id группы",
"rules": [
{
"t": "set",
"p": "apiData.chat_id",
"pt": "msg",
"to": "-12345",
"tot": "num"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 1140,
"y": 460,
"wires": [
[
"81739abd.55c008"
]
]
},
{
"id": "f1b47a6d.c871d8",
"type": "switch",
"z": "816191d5.cb781",
"name": "В личку Боту?",
"property": "tgUpdateObj.from.id",
"propertyType": "msg",
"rules": [
{
"t": "eq",
"v": "tgUpdateObj.chat.id",
"vt": "msg"
},
{
"t": "else"
}
],
"checkall": "false",
"repair": false,
"outputs": 2,
"x": 720,
"y": 540,
"wires": [
[
"a44a7065.22f7"
],
[
"7b7d959c.a503ac"
]
],
"outputLabels": [
"Да",
"Нет"
]
},
{
"id": "63e53df1.7d73a4",
"type": "drom-tg-api-call",
"z": "816191d5.cb781",
"name": "Отправка ответа",
"data": "apiData",
"dataType": "msg",
"method": "sendMessage",
"methodType": "str",
"property": "payload",
"client": "55210027.dc46d",
"x": 1490,
"y": 680,
"wires": [
[]
]
},
{
"id": "6c4344ad.334b9c",
"type": "change",
"z": "816191d5.cb781",
"name": "",
"rules": [
{
"t": "set",
"p": "apiData.chat_id",
"pt": "msg",
"to": "message_sender[0].value2",
"tot": "msg"
},
{
"t": "set",
"p": "apiData.text",
"pt": "msg",
"to": "tgUpdateObj.text",
"tot": "msg"
},
{
"t": "set",
"p": "apiData.entities",
"pt": "msg",
"to": "tgUpdateObj.entities",
"tot": "msg"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 1355,
"y": 680,
"wires": [
[
"63e53df1.7d73a4"
]
],
"l": false
},
{
"id": "7e643f.62614bc",
"type": "drom-data-relationships-num",
"z": "816191d5.cb781",
"storage": "6c999ed1.7d41f",
"action": "setup-rels",
"rels": "message_sender",
"relsType": "storId",
"value1": "inviter",
"value1Type": "msg",
"value2": "invitee",
"value2Type": "msg",
"value1Req": "inviter",
"value1ReqType": "msg",
"value2Req": "invitee",
"value2ReqType": "msg",
"limitRes": "20",
"limitResType": "num",
"offsetRes": "0",
"offsetResType": "num",
"name": "",
"property": "payload",
"x": 580,
"y": 180,
"wires": [
[]
]
},
{
"id": "f553b75.a386048",
"type": "inject",
"z": "816191d5.cb781",
"name": "Настроить хранение данных",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 240,
"y": 180,
"wires": [
[
"7e643f.62614bc"
]
]
},
{
"id": "d700d74.3b99228",
"type": "drom-data-relationships-num",
"z": "816191d5.cb781",
"storage": "6c999ed1.7d41f",
"action": "add",
"rels": "message_sender",
"relsType": "storId",
"value1": "inviter",
"value1Type": "msg",
"value2": "invitee",
"value2Type": "msg",
"value1Req": "apiRes.message_id",
"value1ReqType": "msg",
"value2Req": "tgUpdateObj.from.id",
"value2ReqType": "msg",
"limitRes": "20",
"limitResType": "num",
"offsetRes": "0",
"offsetResType": "num",
"name": "Добав в message_sender",
"property": "payload",
"x": 1470,
"y": 500,
"wires": [
[]
]
},
{
"id": "7b7d959c.a503ac",
"type": "switch",
"z": "816191d5.cb781",
"name": "Ответ?",
"property": "tgUpdateObj",
"propertyType": "msg",
"rules": [
{
"t": "hask",
"v": "reply_to_message",
"vt": "str"
}
],
"checkall": "false",
"repair": false,
"outputs": 1,
"x": 940,
"y": 660,
"wires": [
[
"3c811c29.b17d74"
]
],
"outputLabels": [
"Да"
]
},
{
"id": "3c811c29.b17d74",
"type": "drom-data-relationships-num",
"z": "816191d5.cb781",
"storage": "6c999ed1.7d41f",
"action": "get",
"rels": "message_sender",
"relsType": "storId",
"value1": "tgUpdateObj.reply_to_message.message_id",
"value1Type": "msg",
"value2": "",
"value2Type": "undef",
"value1Req": "apiRes.message_id",
"value1ReqType": "msg",
"value2Req": "tgUpdateObj.from.id",
"value2ReqType": "msg",
"limitRes": "",
"limitResType": "undef",
"offsetRes": "0",
"offsetResType": "num",
"name": "Найти в message_sender",
"property": "message_sender",
"x": 1170,
"y": 660,
"wires": [
[
"ed52d334.5457c"
]
]
},
{
"id": "ed52d334.5457c",
"type": "switch",
"z": "816191d5.cb781",
"name": "Есть?",
"property": "message_sender",
"propertyType": "msg",
"rules": [
{
"t": "nempty"
}
],
"checkall": "false",
"repair": false,
"outputs": 1,
"x": 1230,
"y": 700,
"wires": [
[
"6c4344ad.334b9c"
]
],
"outputLabels": [
"Да"
]
},
{
"id": "20a7b471.a1fdec",
"type": "comment",
"z": "816191d5.cb781",
"name": "Администрирование",
"info": "",
"x": 220,
"y": 120,
"wires": []
},
{
"id": "116eda62.627f66",
"type": "drom-template",
"z": "816191d5.cb781",
"name": "Сообщение с подписью",
"field": "apiData.text",
"fieldType": "msg",
"syntax": "handlebars",
"htmlEscape": false,
"template": "{{tgUpdateObj.text}}\n\n[{{tgUpdateObj.from.first_name}} {{tgUpdateObj.from.last_name}}](tg://user?id={{tgUpdateObj.from.id}})",
"x": 1170,
"y": 500,
"wires": [
[
"9a5462b0.20203"
]
]
},
{
"id": "81739abd.55c008",
"type": "change",
"z": "816191d5.cb781",
"name": "",
"rules": [
{
"t": "set",
"p": "apiData.entities",
"pt": "msg",
"to": "tgUpdateObj.entities",
"tot": "msg"
},
{
"t": "set",
"p": "apiData.parse_mode",
"pt": "msg",
"to": "MarkdownV2",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 1255,
"y": 460,
"wires": [
[
"116eda62.627f66"
]
],
"l": false
},
{
"id": "a44a7065.22f7",
"type": "switch",
"z": "816191d5.cb781",
"name": "/start?",
"property": "tgUpdateObj.text",
"propertyType": "msg",
"rules": [
{
"t": "eq",
"v": "/start",
"vt": "str"
},
{
"t": "else"
}
],
"checkall": "false",
"repair": false,
"outputs": 2,
"x": 930,
"y": 460,
"wires": [
[
"bae155e8.df20e8"
],
[
"1f5ca683.997369"
]
],
"outputLabels": [
"Да",
""
]
},
{
"id": "d726944e.cf39a8",
"type": "drom-template",
"z": "816191d5.cb781",
"name": "Задайте вопрос...",
"field": "apiData.text",
"fieldType": "msg",
"syntax": "handlebars",
"htmlEscape": false,
"template": "Здравствуйте. Задайте вопрос и мы ответим в ближайшее время.",
"x": 1210,
"y": 340,
"wires": [
[
"eec17638.2241c8"
]
]
},
{
"id": "eec17638.2241c8",
"type": "drom-tg-api-call",
"z": "816191d5.cb781",
"name": "Отправка сообщения",
"data": "apiData",
"dataType": "msg",
"method": "sendMessage",
"methodType": "str",
"property": "apiRes",
"client": "55210027.dc46d",
"x": 1440,
"y": 340,
"wires": [
[]
]
},
{
"id": "bae155e8.df20e8",
"type": "change",
"z": "816191d5.cb781",
"name": "",
"rules": [
{
"t": "set",
"p": "apiData.chat_id",
"pt": "msg",
"to": "tgUpdateObj.from.id",
"tot": "msg"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 1075,
"y": 340,
"wires": [
[
"d726944e.cf39a8"
]
],
"l": false
},
{
"id": "6e4a26b9.2168f8",
"type": "comment",
"z": "816191d5.cb781",
"name": "/start - приветствие",
"info": "",
"x": 1150,
"y": 300,
"wires": []
},
{
"id": "7ef70f71.0ccfc",
"type": "comment",
"z": "816191d5.cb781",
"name": "Вопрос - в группу",
"info": "",
"x": 1150,
"y": 420,
"wires": []
},
{
"id": "105ca5d9.639f5a",
"type": "comment",
"z": "816191d5.cb781",
"name": "Ответ - пользователю",
"info": "",
"x": 1160,
"y": 620,
"wires": []
},
{
"id": "55210027.dc46d",
"type": "drom-tg-api-config",
"name": "Бот обратной связи"
},
{
"id": "6c999ed1.7d41f",
"type": "drom-data-config",
"name": "",
"dbType": "sqlite",
"sqliteFile": "my-data.sqlite"
}
]

Настройка#

  1. Скопируйте JSON потока и импортируйте в ваш Ботодром - у вас появится новая вкладка "TG Обратная связь"
  2. Откройте боковую панель узлов конфигурации и настройте конфиг-узлы:
    • Бот обратной связи - Введите токен вашего Telegram бота для обратной связи. Инструкции по регистрации нового бота и получению его токена вы можете найти на боковой панели справки, в документации к узлу drom-tg-api-config.
    • Файл my-data.sqlite - Для хранения данных используется файл my-data.sqlite. При желании можно выбрать другой файл.
  3. Найдите в потоке секцию "Вопрос - в группу" и в настройках узла "🆔 Id группы" введите Telegram-id группы, куда будут отправляться сообщения пользователей. Чтобы узнать Telegram-id группы, воспользуйтесь ботом для получения ID.
  4. Нажмите Развернуть.
  5. В верхней части потока найдите секцию "Администрирование" и нажмите кнопку запуска узла "Настроить хранение данных", чтобы настроить хранилище данных о пользователях, отправлявших сообщения.
  6. Убедитесь, что Бот обратной связи состоит в группе, в которую нужно отправлять сообщения пользователей.
  7. Готово. Попробуйте теперь запустить бота, отправить ему сообщение и ответить на сообщение в группе.