crm.deal.update
Примечание: чтобы узнать требуемый формат полей, выполните метод crm.deal.fields и посмотрите формат пришедших значений этих полей.
Пример
var ID"); BX24.callMethod( "crm.deal.update", < id: id, fields: < "STAGE_ID": "NEGOTIATION", "PROBABILITY": 70 >, params: < "REGISTER_SONET_EVENT": "Y" >>, function(result) < if(result.error()) console.error(result.error()); else < console.info(result.data()); >> );
Как через веб хук загрузить файл в сделку (PHP)
$batchUpdate = array ( 'update_contact' => 'crm.deal.update?'.http_build_query( array( 'id'=> $dealId, 'fields'=> array( 'fileData'=>array( $files['files']['name'], base64_encode(file_get_contents($files['files']['tmp_name'])), ) ), ) ) ) $resultUpdate = executeHook(array('cmd' => $batchUpdate)); // выполняем хук
Пояснения к методу
Для управления контактами сделки рекомендуется использовать множественное поле CONTACT_IDS:
BX24.callMethod("crm.deal.update", < id: 1, fields: < "CONTACT_IDS": [ 1, 2, 3 ] >>);
В результате сделка будет связана с тремя указанными контактами.
Поле CONTACT_ID является устаревшим и поддерживается для обеспечения обратной совместимости.
BX24.callMethod("crm.deal.update", < id: 1, fields: < "CONTACT_ID": 4 >>);
В результате этого вызова в сделку будет добавлена связь с указанным контактом.
Пожалуйста, обратите внимание, что уже существующие связи связи с контактами при этом удалены не будут. То есть если сделка до этого была связана с контактами 1, 2 и 3, то в результате она будет связана с контактами 1, 2, 3 и 4.
crm.deal.update
Примечание: чтобы узнать требуемый формат полей, выполните метод crm.deal.fields и посмотрите формат пришедших значений этих полей.
Пример
var ID"); BX24.callMethod( "crm.deal.update", < id: id, fields: < "STAGE_ID": "NEGOTIATION", "PROBABILITY": 70 >, params: < "REGISTER_SONET_EVENT": "Y" >>, function(result) < if(result.error()) console.error(result.error()); else < console.info(result.data()); >> );
Как через веб хук загрузить файл в сделку (PHP)
$batchUpdate = array ( 'update_contact' => 'crm.deal.update?'.http_build_query( array( 'id'=> $dealId, 'fields'=> array( 'fileData'=>array( $files['files']['name'], base64_encode(file_get_contents($files['files']['tmp_name'])), ) ), ) ) ) $resultUpdate = executeHook(array('cmd' => $batchUpdate)); // выполняем хук
Пояснения к методу
Для управления контактами сделки рекомендуется использовать множественное поле CONTACT_IDS:
BX24.callMethod("crm.deal.update", < id: 1, fields: < "CONTACT_IDS": [ 1, 2, 3 ] >>);
В результате сделка будет связана с тремя указанными контактами.
Поле CONTACT_ID является устаревшим и поддерживается для обеспечения обратной совместимости.
BX24.callMethod("crm.deal.update", < id: 1, fields: < "CONTACT_ID": 4 >>);
В результате этого вызова в сделку будет добавлена связь с указанным контактом.
Пожалуйста, обратите внимание, что уже существующие связи связи с контактами при этом удалены не будут. То есть если сделка до этого была связана с контактами 1, 2 и 3, то в результате она будет связана с контактами 1, 2, 3 и 4.
Как в битрикс24 изменить направление сделки с помощью php?
hecby_v, По сути мне нужно обрабатывать ответ поставщика из вайбера, например на вопрос: «Есть ли товар в наличии?». Если есть то отправляем сделку (заказ) в колонку «Есть в наличии», иначе в колонку «Нет в наличии» (как на фото). Получить ответ из вайбера мне удалось, осталось изменить стадию сделки (её направление).
Ну если вы в пхп получили запрос из вайбера, знаете ид сделки и уже точно знаете, какой сделке какую стадию ставить, то вроде как никаких проблем https://dev.1c-bitrix.ru/rest_help/crm/cdeals/crm_.
Это при условии, что вы знаете как методы апи вызывать. https://dev.1c-bitrix.ru/rest_help/rest_sum/index.php
hecby_v, Спасибо, не туда смотрел просто) Думал что за стадию сделки отвечает поле CATEGORY_ID которое изменять нельзя, https://dev.1c-bitrix.ru/rest_help/crm/cdeals/crm_.
любите вы краткость) что именно понять? Как вызывать методы апи из пхп? В битрикс24 создаете входящий вебхук с правом доступа CRM, получаете токен.
В пхп при помощи curl вызываете https://адрес црм/rest/1/токен/crm.deal.update/
прикрепляете нужный массив и вуаля)
https://helpdesk.bitrix24.ru/open/5408147/
hecby_v, Ну мне получается нужно дописать в свой вэбхук метод изменения стадии) А тут рассказывается как через вэбхук битрикса делать)
Ну я не знаю, что у вас там за проект и как все устроено) Сформулируйте вопрос, на который я могу вам ответить)
hecby_v, Ну смотрите, у меня есть код, который обрабатывает ответ поставщика из вайбера. Допустим поставщик на вопрос: «Есть ли товар в наличии?» ответил «Да» и указал номер заказа (id сделки). После чего я получаю ответ и айди сделки и с помощью bitrix api должен дописать в этот файл (который обрабатывает ответ из вайбера) метод, с помощью которого в зависимости от ответа поставщика изменяю стадию сделки, т.е. уже на мой вэбхук надо внести изменения. В той ссылке которую вы кинули, рассказывается как сделать этот метод только через вэбхуки битрикса, поэтому у меня возникает сложность)
Брр) У вас коробочная версия? Вам уже приходилось как-либо менять сделки при помощи пхп? Куда вы получаете ответ из вайбера?
@hecby_v, exec("set names utf8"); if (!$db_order) < exit('Ошибка подключения к базе данных'); >function put_log_in($data) < global $is_log; if($is_log) > function put_log_out($data) < global $is_log; if($is_log) > function sendReq($data) < $request_data = json_encode($data); put_log_out($request_data); //here goes the curl to send data to user $ch = curl_init("https://chatapi.viber.com/pa/send_message"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $request_data); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); $response = curl_exec($ch); $err = curl_error($ch); curl_close($ch); if($err) else > function sendMsg($sender_id, $text, $type, $tracking_data = Null, $arr_asoc = Null) < global $auth_token, $send_name; $data['auth_token'] = $auth_token; $data['receiver'] = $sender_id; if($text != Null) $data['type'] = $type; //$data['min_api_version'] = $input['sender']['api_version']; $data['sender']['name'] = $send_name; //$data['sender']['avatar'] = $input['sender']['avatar']; if($tracking_data != Null) if($arr_asoc != Null) < foreach($arr_asoc as $key =>$val) > return sendReq($data); > function sendMsgText($sender_id, $text, $tracking_data = Null) < return sendMsg($sender_id, $text, "text", $tracking_data); >$request = file_get_contents("php://input"); $input = json_decode($request, true); put_log_in($request); $type = $input['message']['type']; //тип полученного сообщения (текст / картинка) $text = $input['message']['text']; //фактическое сообщение, отправленное пользователем $sender_id = $input['sender']['id']; //уникальный идентификатор пользователя, отправившего сообщение $sender_name = $input['sender']['name']; //имя пользователя, отправившего сообщение if($input['event'] == 'webhook') < $webhook_response['status'] = 0; $webhook_response['status_message'] = "ok"; $webhook_response['event_types'] = 'delivered'; echo json_encode($webhook_response); die; >else if($input['event'] == "subscribed") < sendMsgText($sender_id, "Спасибо, что подписались на нас!"); >else if($input['event'] == "conversation_started") < sendMsgText($sender_id, "Беседа началась!"); >elseif($input['event'] == "message") < elseif ($input['message']['text'] == 'Да')< sendMsg($sender_id, 'Ура', $type); >elseif ($input['message']['text'] == 'Нет') < sendMsg($sender_id, 'Жаль', $type); >else < sendMsg($sender_id, 'Неизвестная команда!', $type); >> ?>
elseif ($input['message']['text'] == 'Да')
Насколько понял, это код для обмена сообщениями с вайбером. Сообщение пользователя я так понимаю вы получаете через $request = file_get_contents(«php://input»);
И? Насколько я понял из кода, он не имеет никакого отношения к битрикс24. Я не понимаю, как вы определите, что в присланном сообщении находится код сделки, но это наверное не касается обсуждаемого вопроса. Допустим вы знаете ид сделки в битрикс24 и хотите ее обновить. Вам надо использовать входящий вебхук, нет?)
Если вы запутались — у битрикса есть два типа вебхуков — исходящий, когда битрикс при определенном событии сам вызывает сторонний скрипт и входящий, когда сторонний скрипт вызывает какой-то метод из апи битрикса. У вас же сторонний скрипт? Он же не работает как приложение битрикса? Тогда вам нужно использовать вебхук.
Но это касается облачной версии, вы не ответили какая у вас. в коробочной можно сделать иначе. Для облачной могу скинуть пример кода вызова методов, с коробочной не работал, но судя по документации, там тоже можно использовать rest api
hecby_v, Ладно, давайте по-другому
https://домен_Б24.bitrix24.
вот строка где имя метода crm.deal.update, параметры метода это fields:
<
«STAGE_ID»: «NEGOTIATION»,
«PROBABILITY»: 70
>,
как мне через этот запрос указать айди сделки, и что такое &auth=ключ_авторизации?
elseif ($input['message']['text'] == 'Да')< sendMsg($sender_id, 'Ура', $type); $queryUrl = 'https:///rest//crm.deal.update/'; $queryData = [ 'id' => , 'fields' => [ 'STAGE_ID' => "Стадия" ] ]; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_POST => 1, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => $queryUrl, CURLOPT_POSTFIELDS => $queryData, )); $result = curl_exec($curl); if($result === false) < echo 'Ошибка CURL: ' . curl_errno($curl); >$result = json_decode($result, 1); return $result; >
hecby_v, Спасибо большое) Просто я не до конца понимаю, у меня уже были запросы на добавление лида в битрикс24, и там вэбхук не нужен был, а в этом случае нужен, не понятно)
$bitrix24GetData = array( 'LOGIN' => $bitrix24login, 'PASSWORD' => $bitrix24password, 'TITLE' => "Заказ №".$arr_order[$i], 'NAME' => $data['firstname'], 'LAST_NAME' => $data['lastname'], 'PHONE_OTHER' => $data['telephone'], 'OPPORTUNITY' => $data['total'], 'CURRENCY_ID' => 'UAH', 'SOURCE_ID' => 'WEB', 'SOURCE_DESCRIPTION' => $data['store_url'], 'COMMENTS' => $stackBitrix[$key].$bitrix24data ); if (!empty($bitrix24email)) < $bitrix24GetData['EMAIL_OTHER'] = $bitrix24email; >if (!empty($bitrix24address)) < $bitrix24GetData['ADDRESS'] = $bitrix24address; >$bitrix24GetData = http_build_query($bitrix24GetData); file_get_contents("https://".$bitrix24domen."/crm/configs/import/lead.php?".$bitrix24GetData);
ну раз не нужен был, то сделайте по аналогии, только метод и данные поменяйте, делов-то) Мне хорошо знаком способ через вебхуки, потому я его и советовал, раз вы знаете вот такой — ну и используйте, не принципиально.
hecby_v, ну вот этом у меня и проблема) Не знаю как это реализовать) Но за все равно спасибо, попробую реализовать через битрикс вэбхук