С помощью БП в облачном битрикс24 создается задача, в которой сотрудник в комментариях прикрепляет файл. Сотрудник может забыть выбрать нужную папку на общем диске, а нужно что бы файл обязательно оказался там где ему место. А место будет отличаться каждый раз, в зависимости от того, к какой сделке относится задача.
На сколько я понял, штатными средствами это не решить и придется задействовать REST API. Для этого я создал исходящий вебхук, срабатывающий на добавление комментариев, и как я понял, срабатывает он абсолютно на все комментарии в абсолютно всех задачах, не относящихся к нужному мне БП.
Код обработчика для вебхука:
Информация в логе:
На сколько я понял, вебхук передает ID комментария "[ID]" и ID задачи "[TASK_ID]". Сам комментарий и ID прикрепленного файла он не передает.
1) Каким образом получить ID прикрепленного к комментарию файла, имея ID комментария?
2) Каким образом, имея ID файла, копировать его на битрикс-диске? Опять же через вебхук, но уже входящий?
3) Как согласовать все это дело, имея эти ID'ы, так что бы из нужной задачи файлы попадали в нужные папки? БП создает задачу "Сделка ID 200" и файл из этой задачи должен попасть в папку, соответствующую названию сделки. А в следующий раз папка и задача будут уже с названием новой сделки и соответственно файлы должны будут копироваться в новую папку.
4) Начиная с пункта номер 2, все операции будут осуществляться вебхуками, а БП уже не будет задействоваться для копирования файла? (или вообще одними вебхуками и БП тут не обойтись, и надо писать приложение?) Но если так, то как научить обработчик понимать что задача "[TASK_ID] => 827" это именно та задача, из комментариев которой необходимо будет скопировать файлы в папку нужной сделки, а не просто все подряд файлы из всех подряд задач в одну и ту же папку? Нельзя ведь одним вебхуком передавать и комментарий задачи и информацию о сделке, к которой относится задача?
На сколько я понял, штатными средствами это не решить и придется задействовать REST API. Для этого я создал исходящий вебхук, срабатывающий на добавление комментариев, и как я понял, срабатывает он абсолютно на все комментарии в абсолютно всех задачах, не относящихся к нужному мне БП.
Код обработчика для вебхука:
Цитата |
---|
<?php print_r($_REQUEST); writeToLog($_REQUEST); function writeToLog($data, $title = '') { $log .= (strlen($title) > 0 ? $title : 'DEBUG') . "\n"; $log .= print_r($data, 1); file_put_contents(getcwd() . '/hook.log', $log, FILE_APPEND); return true; } |
Информация в логе:
Цитата |
---|
DEBUG Array ( [event] => ONTASKCOMMENTADD [data] => Array ( [FIELDS_BEFORE] => undefined [FIELDS_AFTER] => Array ( [ID] => 1651 [TASK_ID] => 827 ) [IS_ACCESSIBLE_BEFORE] => N [IS_ACCESSIBLE_AFTER] => undefined ) [ts] => 1594320547 [auth] => Array ( [domain] => ********.bitrix24.ru [client_endpoint] => [server_endpoint] => [member_id] => ******** [application_token] => ******** ) ) |
На сколько я понял, вебхук передает ID комментария "[ID]" и ID задачи "[TASK_ID]". Сам комментарий и ID прикрепленного файла он не передает.
1) Каким образом получить ID прикрепленного к комментарию файла, имея ID комментария?
2) Каким образом, имея ID файла, копировать его на битрикс-диске? Опять же через вебхук, но уже входящий?
3) Как согласовать все это дело, имея эти ID'ы, так что бы из нужной задачи файлы попадали в нужные папки? БП создает задачу "Сделка ID 200" и файл из этой задачи должен попасть в папку, соответствующую названию сделки. А в следующий раз папка и задача будут уже с названием новой сделки и соответственно файлы должны будут копироваться в новую папку.
4) Начиная с пункта номер 2, все операции будут осуществляться вебхуками, а БП уже не будет задействоваться для копирования файла? (или вообще одними вебхуками и БП тут не обойтись, и надо писать приложение?) Но если так, то как научить обработчик понимать что задача "[TASK_ID] => 827" это именно та задача, из комментариев которой необходимо будет скопировать файлы в папку нужной сделки, а не просто все подряд файлы из всех подряд задач в одну и ту же папку? Нельзя ведь одним вебхуком передавать и комментарий задачи и информацию о сделке, к которой относится задача?