API webhooks
Сенсей позволяет добавить в процесс запуск веб-хуков. В конструкторе элемент называется Webhooks. Вы можете настроить HTTP адрес вашего приложения в этом элементе. Когда работа процесса дойдет до него, то будет отправлен запрос с информацией о сделке и процессе по указанному в настройках адресу.

В настройках элемента webhooks можно включить флажок «Ждать результат выполнения». В этом случае, после отправки данных на ваше приложение, процесс приостановится. Чтобы продолжить работу процесса, необходимо отправить на специальный адрес результат работы webhook'a:

https://api.sensei.plus/webhook?result=<result>&hash=<hash>

Где, <result> – результат работы. Строковый параметр, значение должно соответствовать результату, указанному в настройках элемента webhooks
<hash> – хэш-значение, соответствующее запущенному процессу. Данный hash-параметр отправляется вместе с информацией о сделке в заголовке параметром X-Hash.

Пример 1.

Мы хотим уведомить стороннее приложение, что сделка дошла до определенного этапа в процессе. Для этого будем отправлять веб-хук на адрес https://domain.ru/myapp.php, без ожидания результата от приложения процессом.
В этом случае настройка веб-хука в процессе будет выглядеть следующим образом:
настройки webhook без ожидания результата
В приложение myapp.php, которое мы настроили в примере, придет POST-запрос, содержащий данные о сделке. Структура массива с данными идентична структуре webhook's в amoCRM:
{
    "sensei":
        [
            {
                "id":"118261",
                "name":"Бытовая техника онлайн",
                "date_create":"1545042870",
                "created_user_id":"2368945", 
                "last_modified":"1545135210",
                "price":"1000000",
                "responsible_user_id":"1320969",
                "linked_company_id":"456127",
                "pipeline_id":"1509766",
                "date_close":"0",
                "closest_task":"1545135209",
                "status_id":"23300671"
            }
        ]
}
Пример 2.

Настроим второй webhook, который бы ожидал результат от нашего приложения:
Настройки webhook с ожиданием результата
Приложение, также как и в первом примере, получит информацию о сделке. Но работа процесса будет приостановлена. Процесс будет возобновлен, когда приложение отправит результат обратно в процесс Сенсея. Результат может быть отправлен сразу или через какое-то время.
Рассмотрим для примера, что приложение отправило ответ сразу, чтобы процесс продвинулся дальше:
<?php
// получаем информацию о сделке
$lead = $_POST['sensei'][0];
// делаем необходимую обработку ...
// и получаем результат работы
$result = 'result1';
// в заголовке запроса также получаем hash-значение, запущенного процесса
$hash = $_SERVER['X-Hash'];
// продолжаем работу Сенсея с результатом result1
$link = 'https://api.sensei.plus/webhook?hash='.$hash.'&result='.$result;
$curl = curl_init();
curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl,CURLOPT_USERAGENT, 'sensei-API-client/1.0');
curl_setopt($curl,CURLOPT_URL, $link);
curl_setopt($curl,CURLOPT_HEADER, false);
$out = curl_exec($curl);
curl_close($curl);