Использование API SmartCallBack для автоматизации, собственной телефонии, интеграции с CRM

Использование API SmartCallback начинается с создания личного кабинета (если у вас уже есть личный кабинет, то пропускаем этот пункт) на сайте smartcallback.ru: Регистрация личного кабинета создаёт область для хранения всех обращений, истории изменений и дополнительных настроек телефонии.

Далее регистрируем приложение для использования API:

В течение суток (фактически раньше) техподдержка присылает информацию для подключения post запросом. Вы получите следующие данные:

  • Параметр client_id - уникальный номер клиента в SmartCallBack (у одного клиента может быть несколько доменов со своими настройками)
  • Параметр domen_id - уникальный номер домена, используется для обращения к конкретному домену
  • Параметр signature - цифровой ключ для обеспечения безопасности передаваемых данных
  • Параметр apiToken
  • Параметр token - аналог параметра domen_id
  • Ссылку на готовую php-библиотеку на github

Теперь у нас есть всё, чтобы начать работу с API SmartCallBack. Допустим, нам нужно создать на веб-странице инструмент, который звонит покупателю и связывает его с выбранным колл-центром из списка.

Вот составляющие такого инструмента:

  • callStart_page.php - исполняемый файл, который получает входные данные и выводит на экран статус обращения (обработан/нет ответа/иное)
  • SmartCallBackAPI.php - класс, который собирает post-запрос и отправляет его по адресу http://smartcallback.ru/api/v2/
  • getQuerryList.php - метод, который возвращает нам список обращений
  • сallstart.php - метод, который запускает звонок
  • query_list - метод, который возвращает историю звонков в html

Далее создаем поля для ввода номеров: `

<form class="callStart_name" action="" method="post">
    <input type="text" name="tell_1" id="phone_1" placeholder="Введите номер клиента" value="">
    <input type="text" name="tell_2" id="phone_2" placeholder="Введите номер оператора" value="">
    <input type="submit" name="send" value="Запустить звонок"/>
</form>


` При добавление масок и стилей получается очень даже приятный интерфейс:

Далее получаем введенные данные с форм и вызываем метод callStart, который запустит звонок.

//получаем данные со страницы
$tell_from = htmlspecialchars($_POST["tell_1"]);
$tell_to = htmlspecialchars($_POST["tell_2"]);
//создаём класс и передаём в него данные
$callstart = new class_callStart();
$callstart->from = "$tell_from";
$callstart->to = "$tell_to";
$callstart->callStar_function();

Сам класс class class_callStart содержит:

public $to;
public $from;

function callStar_function(){

    echo("$this->to");
    echo("$this->from");

    $POST = Array(
        "client_id" => 1292,//в какой кабинет закидываем, токен или id
        "domen_id"   => 2204,//домен
        "phoneto"   => $this->to,//кому звоним
        "phonefrom"   => $this->from,//оператор
        "utm_source"   => 'referral'//utm метка

    );

    $SmartCallBackAPI = new SmartCallBack_API();
    $SmartCallBackAPI->callStart($POST);
}

Вот список параметров, которые можно передать:

  • client_id (int) || token (string(20)) [One is REQUIRED] - параметры идентификации клиента, для которого обращается API
  • domen_id (int) [REQUIRED] - идентификатор вашего домена (сайта), зарегистрированного в системе SmartCallBack.
  • phoneto (string) [REQUIRED] - номер абонента (phoneto), которому придет обычный входящий звонок от абонента phonefrom.
  • phonefrom (string) - номер абонента, который выступает в роли оператора. Ему придет звонок в первую очередь, робот предупредит его о звонке и соединит с абонентом phoneto.
  • convenient (datetime) - дата и время, в которое необходимо перезвонить. Система автоматически инициирует звонок в указанное время.
  • utm_source (string) - Utm-метка, которая будет связана с заявкой.
  • utm_medium (string) - Utm-метка, которая будет связана с заявкой.
  • utm_campaign (string) - Utm-метка, которая будет связана с заявкой.
  • utm_content (string) - Utm-метка, которая будет связана с заявкой.
  • utm_term (string) - Utm-метка, которая будет связана с заявкой.

Текущая библиотека не содержит нужного метода, просто дописываем его:

function callStart($POST = Array()){
    $method = 'callStart';
    $POST['client_id'] = self::$CLIENT_ID;
    RETURN $this->apiRequest($method, $POST);
}

Параллельно вводим в SmartCallBackApi.php данные, которые прислала техподдержка:

const API_URL       = 'https://smartcallback.ru/api/v2/';
const API_TOKEN     = 'INSERT_YOU_API_TOKEN_HERE';
const API_SIGNATURE = 'INSERT_YOU_API_SIGNATURE_HERE';
public static $CLIENT_ID    = 'INSERT_YOUR_CLIENT_ID';
public static $CLIENT_TOKEN = 'INSERT_YOUR_CLIENT_TOKEN';

Далее создаем query_list, который будет вызывать getQuerryList для получения заявок за сегодняшний день, а затем возвращать на основную страницу html для построения таблицы:

function printResult($result_array)
{
$HTML = '';
$phone_array =[];
$status_array =[];

$count_array = count($result_array["response"]["queries"]);


for($i=0; $i < $count_array; $i++){

    $HTML = $HTML . '

     <tr><td width="265" valign="top">
         <p>' . $result_array["response"]["queries"}[$i]["phone"] . '</p>
         </td>
         <td width="265" valign="top">
         <p>' . $result_array["response"]["queries"][$i]["status"]["title"] . '</p>
          </td>
          </tr>';
   }
    return $HTML;
}

Сам getQueryList.php включает в себя:

 function getQuery_function(){
    $today = date("m.d.y");

    $POST = Array(
        "client_id"  => 1292,
        "date_from" => strtotime($today),
    );

    $SmartCallBackAPI = new SmartCallBack_API();
    $SmartCallBackAPI->getQueryList($POST);

    $result_array=json_decode($SmartCallBackAPI->RESULT, true);

    return $result_array;
}

Метод принимает следующие параметры:

  • client_id (int) || token (string(20)) [One is REQUIRED] - параметры идентификации клиента, для которого обращается API
  • date_from (int) - метка времени time() создания заявки, начиная с которой необходимо получить заявки
  • date_to (int) - метка времени time() создания заявки, до которой необходимо получить заявки
  • domen_id (int) - идентификатор домена, подключенного к SmartCallBack, для получения заявок только по указанному домену
  • domen (string(100)) - домен сайта, по которому необходимо отфильтровать заявки. Например: site.ru
  • status (tinyint(2)) - код статуса заявки. Получить список и описание заявок StatusesGetList()
  • phone (string(20)) - номер телефона покупателя для фильтрации всех его заявок. Вводится в формате +7(495)125-10-80 или 74951251080
  • tag_id (int) - идентификатор тега, которым отмечена заявка
  • query_ids (string()) - перечисление ID заявок через запятую, например: 123,125,108. Не более 100 заявок за запрос.

В основной файл подключаем написанный query_list и производим вывод:

require_once 'query_list.php';
$getQuery_class = new getQuery_class();
$result_array=$getQuery_class->getQuery_function();
$HTML =  printResult($result_array);

<table border="1" cellspacing="0" cellpadding="0" width="529" style="text-align: center;"><?php print($HTML); ?> </table>

В результате получилась веб-страница, из которой можно запустить звонок на указанный номер, а также вывести историю за сутки по предыдущим звонкам:

Полный список всех возможных методов, а также документацию смотрите по ссылке.