У меня коробочная версия портала Битрикс24. Мне необходимо реализовать поиск по элементам инфоблока (спискам) Битркис24 так чтобы можно было отправлять со стороннего сайта на мой Битрикс24 запрос по вебхук с параметрами и получать нужный список элементов из инфоблоков Битркис24. Проблема в том что в стандартном REST API нет возможности делать поиск по полям или своствам элементов инфоблока а через стандартный REST FILTER результат возвращается не правильным
Я хочу написать свой скрипт который будет размещен на стороне Битркис24, он будет принимать внешний запрос и запускать поиск по нужному инфоблоку через Битрикс API и затем возвращать полученный результат в виде json.
Далее я хочу сделать веб-хук который будет привязан к этому обработчику.
Но я не знаю как правильно сделать такой вебхук, помогите разобраться!
Есть
инструкция как можно сделать кастомный обработчик REST
Я сделал по данной иструкции обработчик и привязал к нему вебхук, но вебхук возвращает такое сообщение:
{"error":"ERROR_METHOD_NOT_FOUND","error_description":"Method not found!"}
Вот код обработчика:
public static function OnRestServiceBuildDescription()
{
return array(
'apitest' => array(
'api.test.list' => array(
'callback' => array(__CLASS__, 'getList'),
'options' => array(),
),
)
);
}
public static function getList($query, $nav, \CRestServer $server)
{
$navData = static::getNavData($nav, true);
$res = \Bitrix\Main\UserTable::getList(
[
'filter' => $query['filter']?:[],
'select' => $query['select']?:['*'],
'order' => $query['order']?:['ID' => 'ASC'],
'limit' => $navData['limit'],
'offset' => $navData['offset'],
'count_total' => true,
]
);
$result = array();
while($user = $res->fetch())
{
$result[] = $user;
}
return static::setNavData(
$result,
array(
"count" => $res->getCount(),
"offset" => $navData['offset']
)
);
}
}
AddEventHandler('rest', 'OnRestServiceBuildDescription', array('\ApiTest', 'OnRestServiceBuildDescription'));
В
инструкции к методу возвращается массив пользователей у меня по ходу вообще веб-хук не ведет на этот метод или я что-тоне правильно делаю?