Перейти к основному контенту

Подключение распознавания файлов в различных каналах

Редактирование настроек канала VK

Редактирование настроек канала MAX

Редактирование настроек канала Telegram

При создании канала необходимо для каждого типа файлов выбрать свои настройки:

image.png

image.png

1. Выбрать реакцию на файл:

    Игнорировать - бот не будет реагировать на файлы данного типа; Только NLP - бот будет реагировать на файлы данного типа ответом из NLP системы; Только меню - бот будет реагировать на файлы данного типа Штатная (NLP и меню) - бот будет реагировать обоими способами.

    2. Добавить контекст NLP при необходимости.

    3. Если для файла не должен срабатывать Fallback скрипт, то проставить метку Отключить Fallback.

    Редактирование настроек канала Metabot Widget

    В канале Metabot Widget через редактирование необходимо:

    -xGFy4sEmwSfbVpxocjHxxg-fp-zJBSePwvSCzmUY_0ZnwbIQWCJSpxWDNrGgpK2Os0vPO3MKOSo1vsLbSg1h3Nxm9-qfkeCQ4L2lZGKCtT8IFXtpwLKEsyaWSCRxjw8W2YpMMz2zMWjt4ociC7yERo

    1. Поставить активность чекбокса Разрешить отправку файлов.

    2. В поле Список поддерживаемых расширений файлов добавить список разрешенных форматов файлов: 

    pdf,doc,docx,xls,xlsx,csv,txt,png,jpe,jpg,jpeg,gif,bmp,ico,svg,svgz,tif,tiff,jfif,ai,drw,pct,psp,xcf,psd,raw,webp,xbm,dib,pgp,apng,pjpeg,avif,avi,divx,flv,m4v,mkv,mov,mp4,mpeg,mpg,ogm,ogv,ogx,rm,rmvb,smil,webm,wmv,xvid,3gp,3g2,qt,asx

    3. Выбрать Только меню в поле Реакция на файлы (документы).

    4. Сохранить настройки.

    bq780Nt2tykBm36gFthumdrunUxWhBTNWSzYk3DaXkAa094c193ZB2AW8ApXdAdhlk-8cDcVmx8uTaUhQUTkP4MakIOPUmVkPKO7dWXIC1pBtuT5HIEMGbxLLgr2HFZ5j0OPyRggjkdLrNFKJkCD5Z8

    Редактирование настроек скрипта с типом Fallback

    В название скрипта Fallback рекомендуем добавить “+ ФАЙЛЫ” для оперативного поиска в списке скриптов. Необходимо проверить корректность настроек NLP в скрипте.

    Затем наполните скрипт командами:

    • Первой командой должна идти команда Выполнить JavaScript, которая получает из вебхука событие: есть ли в сообщении с распознанным текстом файл и добавляет переменную is_attachment, что файл есть;
    let whJob = bot.getWebhookJob()
    let eventType = whJob.event_type

    memory.setAttr('is_attachment', false) if (eventType === 'user_attachments') { memory.setAttr('is_attachment', true) bot.disableRepeatMessageText() // погасит вывод сообщения с повтором вопроса bot.hideRepeatMessageButtons() // погасит вывод меню с повтором вопроса }

    • Второй командой должна идти команда Выполнить JavaScript, которая фиксирует сам файл в хранилище и формирует ссылку для передачи в последствии в сообщениях/в письме на почту;
    // Библиотека с помощью которой можно записать в карочку лида данные не отправля их в тг
    let TelegramMessage = require('Common.Integrations.Telegram')
    let msg = new TelegramMessage()

    // Все входящие файлы let attachments = bot.getAllAttachments()

    if(Boolean(attachments?.[0]?.url)){

    uploadData = bot.downloadFileFromUrl(attachments[0].url) msg.debug('Пользователь отправил файл: ' + uploadData.url)

    lead.setAttr('file', uploadData.url) // Запуск скрипта... bot.runScriptByCodeForLead("recieveFile", lead.getData('id'))

    bot.stop() }

    • Третьей командой должна идти команда Выполнить JavaScript, которая срабатывает в случае, когда файла в сообщениях нет (проверка в условии).  JavaScript подбирает случайный ответ из списка, фиксирует дату сообщения, заносит в Google таблицу нераспознанный текст;
    // Условие

    return !(memory.getAttr('is_attachment')*1)

    // JavaScript
    
    var randomStrings = [
            "Не совсем понимаю, о чём вы.",
            "Извините, я вас не понял. Перефразируйте, пожалуйста.",
            "Попробуйте воспользоваться разделами меню или сказать другими словами.", 
            "Простите, не понял вас, попробуйте снова." 
        ];
    
    randomIndex = Math.ceil((Math.random()*randomStrings.length-1));
    
    lead.setAttr('randomAnswer', randomStrings[randomIndex]);
    var ДатаСообщения = new Date(Date.now());
    
    var ДатаСообщенияСтр =
        ДатаСообщения.getFullYear() + "-" +
        ("0" + (ДатаСообщения.getMonth()+1)).slice(-2) + "-" +
        ("0" + ДатаСообщения.getDate()).slice(-2);
    
    var GoogleSheetsService = require('Common.Integrations.GoogleSheets') // Плагин для работы с Google Sheets
    
    GoogleSheetsService.sheetId = '1pLbxTJG2YI6LghJ4FMCCBkQ7ybTL0Y7ZGw4yvaGCsQo' // ID скопированный из таблицы
    GoogleSheetsService.listName = 'Рехау.Про' // Название листа
    
    // Параметры где ключ - название столбца, значение - данные которые занесутся в строку
    let params = {
        "Bot ID": botId,
        "Лид ID": leadId,
        "Время": ДатаСообщения,
        "Сообщение": bot.getIncomingMessage(),
    }
    
    let result = GoogleSheetsService.addRow(params) // Функция для добавления строк в таблицу
    
    debug(result)
    • Четвертой командой должна идти команда Отправить текст с рандомным текстом, которая срабатывает в случае, когда файла в сообщениях нет (проверка в условии);
    // Условие

    return !(memory.getAttr('is_attachment')*1)

    Текст команды
    {{ $randomAnswer }}
    • Пятой командой должна идти команда Отправить текст с текстом, которая срабатывает в случае, когда в сообщении есть файл (проверка в условии);


      // Условие

      return (memory.getAttr('is_attachment')*1)

      Текст команды

      Файл принят, передадим на изучения группе поддержки. С вами свяжутся либо через чат-бота, либо через имеющиеся контакты.


      А пока что можете воспользоваться автоматическим функционалом чат-бота.

    • При необходимости шестой командой должна идти команда Email, которая срабатывает в случае, когда в сообщении есть файл (проверка в условии).  На почту отправляется письмо с файлом пользователя;
    // Условие

    return (memory.getAttr('is_attachment')*1)

    Получатель email, на который необходимо отправить письмо. ({{ $bot.botSupportMails }})
    Тема *Название бота поддержки*: лид отправил в бота файл
    Содержимое В чат-боте пользователь прислал в бота файл <br> <br>ID клиента для поиска в диалогах на платформе Metabot: {{ &$leadId }} <br> <br>Ссылка на файл: {{ $is_attachment }} <br> <img src="{{ $is_attachment }}" alt="Отправленный файл" width="400" height="341" /> <br> С уважением, <br> Ваш Metabot

    При необходимости, можно создать системный атрибут с ключом botSupportMails, типом variable и значением равным всем почтам, на которые должно поступить письмо.

    • Последней командой должна идти команда Повторить вопрос.

    Как достать данные вложений

    Для Telegram используйте метод bot.getAllAttachments()

    let attachments = bot.getAllAttachments()

    if(Boolean(attachments?.[0]?.url)){

    uploadData = bot.downloadFileFromUrl(attachments[0].url) msg.debug('Пользователь отправил файл: ' + uploadData.url)

    lead.setAttr('file', uploadData.url) }

    Для других каналов bot.getWebhookPayload()

    let attachments = bot.getWebhookPayload()

    if(attachments.payload.attachments[0].url){

    uploadData = bot.downloadFileFromUrl(attachments.payload.attachments[0].url)

    lead.setAttr('file', uploadData.url) }

    В данных примерах в атрибут записывается url вложения для скачивания с помощью метода  bot.downloadFileFromUrl().