amocrm-php icon indicating copy to clipboard operation
amocrm-php copied to clipboard

Нет получается добавить событие с типом звонок в контакт.

Open trofimovm opened this issue 6 years ago • 6 comments

В место 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

И вроде все хорошо, а в контакте пусто

trofimovm avatar Mar 09 '18 06:03 trofimovm

Так у примечания нету поля params https://web.archive.org/web/20150325223249/https://developers.amocrm.ru/rest_api/notes_set.php

dotzero avatar Mar 09 '18 07:03 dotzero

Правильно ли я понимаю, что текущая версия вашей библиотеки не поджерживает события с типом CALL_IN и CALL_OUT?

trofimovm avatar Mar 09 '18 08:03 trofimovm

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.

Я запутался, помогите разобраться пожалуйста

trofimovm avatar Mar 09 '18 08:03 trofimovm

Спасибо, я разобрался. Массив параметров звонка нужно в json конвернуть и записать в элемент text. Запутала меня документация AmoCRM

trofimovm avatar Mar 09 '18 09:03 trofimovm

@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 avatar May 15 '18 07:05 edvardpotter

@edvardpotter Думаю, достаточно элементарно - params был добавлен в amoCRMv3. А то, в чем вы пробуете разобраться - amoCRMv2, там прямым текстом написано, что text это JSON. Русская версия этой документации уже давно выпилена с их сайта, старую пока еще можно найти в английской версии. В любой системе существуют недокументированные возможности и тот факт, что вы их используете еще не означает, что документация отвратная. Это означает лишь то, что вы уверены в своих силах, используете API на свой страх и риск и готовы к борьбе со всевозможными проблемами.

P.S> Хотя новая документация меня местами тоже ставит в тупик - например, note_type=25 (тип указан в документации), где нужно в params передавать еще и service, иначе не заведется. Узнал я это, конечно же, не из документации (там этого просто нет), а написав в саппорт.

abelidze avatar May 21 '18 04:05 abelidze