1. Go to this page and download the library: Download opravdin/amohook library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
opravdin / amohook example snippets
use Opravdin\AmoHook\AmoHook;
// Удобно подключить константы с событиями и сущностями:
use Opravdin\AmoHook\Events;
use Opravdin\AmoHook\Entities;
// Для Laravel удобнее применить $request->all() вместо $_POST
AmoHook::build($_POST)
->register('any', 'any', function ($payload) {
// Вызовется для любой сущности при любом событии, подходит для отладки и логгирования приходящих данных
Log::debug("Action: {$payload['action']} on entity {$payload['entity']}");
})
->register(
['contacts', 'companies'], ['update', 'add'], function ($payload) {
/**
* Вызывается только для контактов и компаний при обновлении и добавлении
* Для register первые 2 параметра могут быть как строками, так и наборами строк.
* При этом обработчик будет выполнен если произойдет любое из указанных события с любой указанной сущностью
*/
})
->register([Entities::COMPANY, Entities::CONTACT], [Events::ADD, Events::UPDATE], function ($payload) {
// Этот обработчик запустится при тех же условиях, что и предыдущий
})
// Можно подключить методы для обработки ошибок (один или несколько)
->onError(function ($exception, $payload, $entity, $action) {
// Этот код выполнится при возникновении исключения при обработке
Log::error("Произошла ошибка при обработке хука: ".$exception->getMessage());
/**
* $exception - возникшее исключение
* $payload - данные, аналогичные передаваемым в обработчик
* $entity, $action - сущность и событие, в контексте которых выполнялась обработка хука
*/
// Завершить выполнение обработчиков (вернуть значение === true)
// Все остальные onError все еще будут выполнены, а также after
// Другие onError не смогут предотвратить отмену работы остальных обработчиков
return true;
// Продолжить выполнение других обработчиков (любое значение !== true)
return false;
})
// Выполнить после каждого обработчика (можно несколько)
->after(function ($result, $payload) {
// $result - результаты работы
// $payload - событие, по которому была работа
})
// Запустить цепочку
->handle();
[
'entity' => 'contacts',
'action' => 'update',
'data' => [
// Содержимое хука, например
'id' => 123,
'name' => 'Иван Иванов',
// ...и так далее
]
]
use Opravdin\AmoHook\AmoHook;
// Использование без фреймворков
$raw = $_POST;
$data = (new AmoHook($_POST))->get();
foreach ($data as $event) {
echo "Action: {$data['action']} on entity {$data['entity']}";
}
// Или через build
$raw = $_POST;
$data = AmoHook::build($raw)->get();
// Использование с Laravel Request
$content = $request->all();
$data = AmoHook::build($content)->get();
$time = -microtime(true);
// Логика обработки хуков
// AmoHook::build(...)->...->handle();
$time += microtime(true);
if ($time >= 1.5) {
Log::warning("Обработка хука заняла более 1.5 секунд! ".$time);
}
// return ответ с кодом 200
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.