amocrm-php
amocrm-php copied to clipboard
Нет получается добавить событие с типом звонок в контакт.
В место text добавляю массив params
private function addCallRecord ($amocrm)
{
$note = $amocrm->note;
$note->debug(true); // Режим отладки
$note['element_id'] = $this->contactId;
$note['element_type'] = \AmoCRM\Models\Note::TYPE_CONTACT;
if($this->callType == 'outgoing')
{
$note['note_type'] = \AmoCRM\Models\Note::CALL_OUT;
}
$note['params'] = [
'UNIQ' => md5(Rand(11111111,99999999)),
'LINK' => $this->callRecFile,
'PHONE' => $this->phone,
'DURATION' => $this->callLength,
'SRC' => 'asterisk'
];
$id = $note->apiAdd();
}
Событие в контакт не добавляется Объект $node выглядит вот так перед $node->apiAdd();
Note {#185 ▼
#fields: array:9 [▼
0 => "element_id"
1 => "element_type"
2 => "note_type"
3 => "date_create"
4 => "last_modified"
5 => "request_id"
6 => "text"
7 => "responsible_user_id"
8 => "created_user_id"
]
#types: array:14 [▼
1 => "Сделка создана"
2 => "Контакт создан"
3 => "Статус сделки изменен"
4 => "Обычное примечание"
5 => "Файл"
6 => "Звонок приходящий от iPhone-приложений"
7 => "Письмо"
8 => "Письмо с файлом"
10 => "Входящий звонок"
11 => "Исходящий звонок"
12 => "Компания создана"
13 => "Результат по задаче"
102 => "Входящее смс"
103 => "Исходящее смс"
]
#values: array:3 [▼
"element_id" => 45429965
"element_type" => 1
"note_type" => 11
]
#v1: false
-debug: true
-parameters: ParamsBag {#180 ▼
-authParams: array:3 [▶]
-getParams: []
-postParams: []
-proxy: null
}
-lastHttpCode: null
-lastHttpResponse: null
}
При этом дебаг без ошибок
[DEBUG] url: https://zuckerstudio.amocrm.ru/private/api/v2/json/notes/set?USER_LOGIN=login&USER_HASH=hash
[DEBUG] headers: Array ( [0] => Content-Type: application/json )
[DEBUG] post params: {"request":{"notes":{"add":[{"element_id":45429965,"element_type":1,"note_type":11}]}}} [DEBUG] curl_exec: {"response":{"notes":{"add":[]},"server_time":1520577837}} [DEBUG] curl_getinfo: Array ( [url] => https://zuckerstudio.amocrm.ru/private/api/v2/json/notes/set?USER_LOGIN=login&USER_HASH=hash [content_type] => application/json; charset="utf-8" [http_code] => 200 [header_size] => 1058 [request_size] => 313 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.316862 [namelookup_time] => 2.5E-5 [connect_time] => 0.046507 [pretransfer_time] => 0.159193 [size_upload] => 87 [size_download] => 58 [speed_download] => 183 [speed_upload] => 274 [download_content_length] => -1 [upload_content_length] => 87 [starttransfer_time] => 0.316842 [redirect_time] => 0 [redirect_url] => [primary_ip] => 88.212.240.252 [certinfo] => Array ( ) [primary_port] => 443 [local_ip] => 10.0.1.4 [local_port] => 60246 ) [DEBUG] curl_error: [DEBUG] curl_errno: 0
И вроде все хорошо, а в контакте пусто
Так у примечания нету поля params https://web.archive.org/web/20150325223249/https://developers.amocrm.ru/rest_api/notes_set.php
Правильно ли я понимаю, что текущая версия вашей библиотеки не поджерживает события с типом CALL_IN и CALL_OUT?
https://www.amocrm.ru/developers/content/api/notes#note_types Для событий CALL_IN и CALL_OUT обязательным является наличие массива params.
Нашел вашей библиотеке
/**
* @link https://developers.amocrm.ru/rest_api/notes_type.php
* @type array Типы примечаний
*/
protected $types = [
self::DEAL_CREATED => 'Сделка создана',
self::CONTACT_CREATED => 'Контакт создан',
self::DEAL_STATUS_CHANGED => 'Статус сделки изменен',
self::COMMON => 'Обычное примечание',
self::ATTACHMENT => 'Файл',
self::CALL => 'Звонок приходящий от iPhone-приложений',
self::EMAIL_MESSAGE => 'Письмо',
self::EMAIL_ATTACHMENT => 'Письмо с файлом',
self::CALL_IN => 'Входящий звонок',
self::CALL_OUT => 'Исходящий звонок',
self::COMPANY_CREATED => 'Компания создана',
self::TASK_RESULT => 'Результат по задаче',
self::SMS_IN => 'Входящее смс',
self::SMS_OUT => 'Исходящее смс',
];
const DEAL_CREATED = 1;
const CONTACT_CREATED = 2;
const DEAL_STATUS_CHANGED = 3;
const COMMON = 4;
const ATTACHMENT = 5;
const CALL = 6;
const EMAIL_MESSAGE = 7;
const EMAIL_ATTACHMENT = 8;
const CALL_IN = 10;
const CALL_OUT = 11;
const COMPANY_CREATED = 12;
const TASK_RESULT = 13;
const SMS_IN = 102;
const SMS_OUT = 103;
Если есть поддержка всех типов, тогда почему вы написали, что у примечаний нет поля params.
Я запутался, помогите разобраться пожалуйста
Спасибо, я разобрался. Массив параметров звонка нужно в json конвернуть и записать в элемент text. Запутала меня документация AmoCRM
@trofimovm Спасибо за помощь, документация у amo просто отвратная, как у вас получилось догадаться что туда нужно передавать json? Ведь у них даже в доках написано в примере на php без json:
$notes['add'] = array(
array(
'element_id' => 2342344,
'element_type' => 2,
'note_type' => 10,
'params' => array(
'UNIQ' =>'676sdfs7fsdf',
'LINK' => 'www.testweb.ru/test_call.mp3',
'PHONE' => '84950000001',
'DURATION' => 58,
'SRC' => 'asterisk'
'call_status' => '3', //статус
'call_result' => 'Поговорили' //результат (необязательно)
)
)
);
@edvardpotter Думаю, достаточно элементарно - params был добавлен в amoCRMv3. А то, в чем вы пробуете разобраться - amoCRMv2, там прямым текстом написано, что text это JSON. Русская версия этой документации уже давно выпилена с их сайта, старую пока еще можно найти в английской версии. В любой системе существуют недокументированные возможности и тот факт, что вы их используете еще не означает, что документация отвратная. Это означает лишь то, что вы уверены в своих силах, используете API на свой страх и риск и готовы к борьбе со всевозможными проблемами.
P.S> Хотя новая документация меня местами тоже ставит в тупик - например, note_type=25 (тип указан в документации), где нужно в params передавать еще и service, иначе не заведется. Узнал я это, конечно же, не из документации (там этого просто нет), а написав в саппорт.