Объект Call

Звонки представляют возможность добавлять информацию к контакту или компании. События в карточках отображаются на ряду с задачами, т.к. не имеют ответственного и не прикреплены к дате. Если у события звонка есть ссылка на файл записи звонка, то в заметку будет добавлен плеер для проигрывания этой записи.

Метод позволяет по одному или пакетно добавлять новые звонки в очередь на обработку для последующего перемещения в таблицу «События». При добавлении звонков через calls/add записи попадают в очередь на обработку. Затем, если нашелся контакт с указанным в параметрах номером, создается примечание типа «Звонок» в карточке контакта. Если контакт не был найден в течении 18 часов, то звонок удаляется.

Важно знать, что для добавления звонка через метод call/add необходимо иметь уникальный ключ сервиса. Для получения данного ключа, вам необходимо загрузить в систему свой виджет телефонии(можно тестовый) и обратиться к нам в техподдержку.

Имея уникальный ключ вы сможете добавлять звонки на различные аккаунты amoCRM, при условии что на данных аккаунтах будет подключен ваш виджет и уникальные ключи в подключённых пользователями виджетах будут совпадать с залитой вами версией.

URL метода
POST /api/calls/add/

Параметры GET

Параметр Тип Описание
code
require
string Уникальный идентификатор сервиса.
key
require
string (цифрами) Ключ сервиса, который можно получить написав в техническую поддержку amoCRM.

Параметры

Параметр Тип Описание
account_id
require
string (цифрами) Идентификационный номер аккаунта, в котором произошёл звонок.
uuid
require
string Уникальный идентификатор звонка. Передаётся вами.
caller
require
string (цифрами) Номер звонящего. В случае, если тип звонка - исходящий, считается номером пользователя аккаунта. Список пользователей необходимо хранить в настройках виджета в ключе 'phones' в поле типа 'users' в формате {user_id: phone}, либо в ключе 'phones_lp' в поле типа 'users_lp', тогда искомым номером будет значение в ключе login элемента массива 'phones_lp'
to
require
string (цифрами) Номер, на который идёт звонок. В случае, если тип звонка - входящий, считается номером пользователя аккаунта. Список пользователей необходимо хранить в настройках виджета в ключе 'phones' в поле типа 'users' в формате {user_id: phone}, либо в ключе 'phones_lp' в поле типа 'users_lp', тогда искомым номером будет значение в ключе login элемента массива 'phones_lp'
date
require
timestamp Дата звонка
type
require
string Тип звонка (inbound - входящий, outbound - исходящий)
billsec
require
int Продолжительность звонка в секундах.
link string Ссылка на файл с записью разговора.

Приведём пример запроса добавления звонков.

Пример интеграции

  1. $calls['request']['add'] = array(
  2.     0 => array (
  3.         'uuid' => '394427aaf821879e29efbc4eb98ef13271514',
  4.         'caller' => 117,
  5.         'to' => '71969681126',
  6.         'date' => 1414654739,
  7.         'billsec' => 98,
  8.         'type' => 'inbound',
  9.     'link' => 'http:///* ссылка на запись */.mp3',
  10.         'account_id'=>1111111
  11.     ),
  12.     1 => array (
  13.         'uuid' => 'b7095fb33b368c7103626d3943d9e61c14697',
  14.         'caller' => 280,
  15.         'to' => '75809543710',
  16.         'date' => 1414653676,
  17.         'billsec' => 57,
  18.         'type' => 'outbound',
  19.         'link' => 'http:///* ссылка на запись */.mp3',
  20.         'account_id'=>1111111
  21.     ),
  22. );
  23. $code = 'my_service_name'; # Код вашего сервиса в amoCRM
  24. $key = '601eb8fab9707d8009dba552f2d411a3'; # Ключ, полученный в техподдержке
  25. $account_id = 39099; # Идентификационный номер аккаунта, в который добавляются звонки
  26. #Формируем ссылку для запроса
  27. $link='https://sip.amocrm.ru/api/calls/add/?code=' . $code . '&key=' . $key . '&account_id=' . $account_id;
  28. $curl=curl_init(); #Сохраняем дескриптор сеанса cURL
  29. #Устанавливаем необходимые опции для сеанса cURL
  30. curl_setopt($curl,CURLOPT_POST,TRUE);
  31. curl_setopt($curl,CURLOPT_RETURNTRANSFER,TRUE);
  32. curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-API-client/1.0');
  33. curl_setopt($curl,CURLOPT_HEADER,FALSE);
  34. curl_setopt($curl,CURLOPT_TIMEOUT,30);
  35. curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
  36. curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
  37. curl_setopt($curl,CURLOPT_URL,$link);
  38. curl_setopt($curl,CURLOPT_POSTFIELDS,http_build_query($calls));
  39. $out=curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
  40. $code=curl_getinfo($curl,CURLINFO_HTTP_CODE);
  41. $code=(int)$code;
  42. $errors=array(
  43.     301=>'Moved permanently',
  44.     400=>'Bad request',
  45.     401=>'Unauthorized',
  46.     403=>'Forbidden',
  47.     404=>'Not found',
  48.     500=>'Internal server error',
  49.     502=>'Bad gateway',
  50.     503=>'Service unavailable'
  51. );
  52. try
  53. {
  54.     #Если код ответа не равен 200 или 204 - возвращаем сообщение об ошибке
  55.    if($code!=200 && $code!=204)
  56.         throw new Exception(isset($errors[$code]) ? $errors[$code] : 'Undescribed error',(int)$code);
  57. }
  58. catch(Exception $E)
  59. {
  60.     die('Ошибка: '.$E->getMessage().PHP_EOL.'Код ошибки: '.$E->getCode());
  61. }
  62. /*
  63.  Данные получаем в формате JSON, поэтому, для получения читаемых данных,
  64.  нам придётся перевести ответ в формат, понятный PHP
  65.  */
  66. $response=json_decode($out,TRUE);
  67. if( count($response['response']['calls']['add']['success']) > 0 ) {
  68.     $output .= 'Успешно добавленные звонки:' . PHP_EOL;
  69.     foreach($response['response']['calls']['add']['success'] as $v) {
  70.         $output .= $v . PHP_EOL;
  71.     }
  72. }
  73.  if( count($response['response']['calls']['add']['errors']) > 0 ) {
  74. $output .= 'Ошибки:' . PHP_EOL;
  75. foreach($response['response']['calls']['add']['errors'] as $uuid => $reasons) {
  76.     $output .= $uuid . ' - ' . implode(', ', $reasons) . PHP_EOL;
  77. }
  78. }