PHPackages                             fcritic/amojo-api-client - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. fcritic/amojo-api-client

ActiveLibrary[API Development](/categories/api)

fcritic/amojo-api-client
========================

PHP client for the amoCRM chat API service

v1.4.0(8mo ago)761MITPHPPHP &gt;=7.4

Since Feb 13Pushed 8mo ago1 watchersCompare

[ Source](https://github.com/fcritic/amojo-api-client)[ Packagist](https://packagist.org/packages/fcritic/amojo-api-client)[ RSS](/packages/fcritic-amojo-api-client/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (3)Versions (6)Used By (0)

[![amoJo PHP Client](.github/logo.png?raw=true)](.github/logo.png?raw=true)

amoJo PHP Client
================

[](#amojo-php-client)

🚀 PHP клиент для интеграции с сервисом API чатов amoCRM

 [ ![Версия](https://camo.githubusercontent.com/3926df8e064d6c731450db560652c043e5535f5901ca86ea963033a133d72172/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f666372697469632f616d6f6a6f2d6170692d636c69656e742e7376673f7374796c653d666c61742d737175617265) ](https://packagist.org/packages/fcritic/amojo-api-client) [ ![Загрузки](https://camo.githubusercontent.com/c5c00596ab803a08f1310c725a5ade8aa0bece24d335c6fb4e032553efdab321/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f666372697469632f616d6f6a6f2d6170692d636c69656e742e7376673f7374796c653d666c61742d737175617265) ](https://packagist.org/packages/fcritic/amojo-api-client) [ ![Версия PHP](https://camo.githubusercontent.com/3a89b45c8743b4b0136c10ffbd0985a6e1f8fbcf66cd31097deb4497caa0028b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d372e342532422d626c75652e7376673f7374796c653d666c61742d737175617265) ](https://php.net) [ ![License](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265) ](LICENSE)

Содержание
----------

[](#содержание)

- [✨ Возможности](#-%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8)
- [📦 Установка](#-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0)
- [🚀 Быстрый старт](#-%D0%B1%D1%8B%D1%81%D1%82%D1%80%D1%8B%D0%B9-%D1%81%D1%82%D0%B0%D1%80%D1%82)
    - [Управление каналами](#%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB%D0%B0%D0%BC%D0%B8)
    - [Работа с чатами](#%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81-%D1%87%D0%B0%D1%82%D0%B0%D0%BC%D0%B8)
    - [Работа с сообщениями](#%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81-%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D1%8F%D0%BC%D0%B8)
    - [Дополнительные функции](#%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8)
- [🔌 Кастомные middleware](#-%D0%BA%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%BD%D1%8B%D0%B5-middleware)
- [📢 Обработка ошибок](#-%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA)
- [🔐 Работа с WebHooks](#-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81-webhooks)
- [📝 Документация](#-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F)
- [📄 Лицензия](#-%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F)

---

✨ Возможности
-------------

[](#-возможности)

- Полное покрытие API чатов amoCRM
- Строгая типизация данных через DTO
- Гибкая система Middleware
- Предсказуемые данные в WebHooks
- Поддержка сегментов .ru и .com
- Подробная обработка ошибок
- Инструменты разработчика
    - Строгая типизация (strict\_types)
    - PSR-12 совместимый код
    - Полная документация PHPDoc
    - Поддержка Guzzle и PSR-18

---

📦 Установка
-----------

[](#-установка)

Установка через Composer:

```
composer require fcritic/amojo-api-client
```

### Требования:

[](#требования)

- PHP 7.4+

---

🚀 Быстрый старт
---------------

[](#-быстрый-старт)

### Управление каналами

[](#управление-каналами)

##### 1. Подключение канала

[](#1-подключение-канала)

```
use AmoJo\Client\AmoJoClient;
use AmoJo\Models\Channel;

$channel = new Channel(uuid: 'channel-uuid', secretKey: 'secret-key');
$client = new AmoJoClient(
    channel: $channel,
    additionalMiddleware: [],
    segment: 'ru'
);

$response = $client->connect(
    accountUuid: 'f36b8c48-ed97-4866-8aba-d55d429da86d',
    title: 'Мой канал',
    hookVersion: 'v2'
);

echo 'Scope ID: ' . $response->getScopeId();
```

##### 2. Отключение канала

[](#2-отключение-канала)

```
$client->disconnect(accountUuid: 'f36b8c48-ed97-4866-8aba-d55d429da86d');
```

---

### Работа с чатами

[](#работа-с-чатами)

##### 1. Создание чата

[](#1-создание-чата)

```
use AmoJo\Models\Conversation;
use AmoJo\Models\Users\Sender;

$conversation = (new Conversation())->setId('chat-123');
$contact = (new Sender())
    ->setId('user-123')
    ->setName('Иван Иванов')
    ->setAvatar('https://picsum.photos/300/300')
    ->setProfile((new UserProfile())->setPhone('+1464874556719'));

$response = $client->createChat(
    accountUuid: 'f36b8c48-ed97-4866-8aba-d55d429da86d',
    conversation: $conversation,
    contact: $contact
);

echo 'ID чата в API чатов: ' . $response->getConversationRefId();
```

### Работа с сообщениями

[](#работа-с-сообщениями)

##### 1. Входящие текстовое сообщение

[](#1-входящие-текстовое-сообщение)

```
use AmoJo\Models\Payload;
use AmoJo\Models\Messages\TextMessage;

$message = (new TextMessage())->setUuid('MSG_100')->setText('Hello');

$response = $client->sendMessage(
    accountUuid: 'f36b8c48-ed97-4866-8aba-d55d429da86d',
    payload: (new Payload())
        ->setConversation($conversation)
        ->setSender($contact)
        ->setMessage($message),
    externalId: 'Источник'
);

echo 'ID чата в API чатов: ' . $response->getReceiverRefId();
```

##### 2. Исходящие текстовое сообщение

[](#2-исходящие-текстовое-сообщение)

```
use AmoJo\Models\Users\Receiver;

// amojo_id пользователя amoCRM
$sender = (new Sender())->setRefId('113de373-a2d3-4eb7-a67c-04660332df07');
$message = (new TextMessage())->setUuid('MSG_101')->setText('Hello');

$response = $client->sendMessage(
    accountUuid: 'f36b8c48-ed97-4866-8aba-d55d429da86d',
    payload: (new Payload())
        ->setConversation($conversation)
        ->setSender($sender)
        ->setReceiver($contact)
        ->setMessage($message),
    externalId: 'Источник'
);
```

##### 3. Редактирование сообщения

[](#3-редактирование-сообщения)

```
$message = (new TextMessage())->setUuid('MSG_101')->setText('Hello, Richard');

$response = $client->editMessage(
    accountUuid: 'f36b8c48-ed97-4866-8aba-d55d429da86d',
    (new Payload())
        ->setConversation($conversation)
        ->setMessage($message)
);
```

##### 4. Ответ на сообщения

[](#4-ответ-на-сообщения)

```
use AmoJo\Models\Messages\ReplyTo;

$message = (new TextMessage())->setUuid('MSG_102')->setText('I want to place an order');

$response = $client->sendMessage(
    accountUuid: 'f36b8c48-ed97-4866-8aba-d55d429da86d',
    payload: (new Payload())
        ->setConversation($conversation)
        ->setSender($contact)
        ->setMessage($message)
        ->setReplyTo((new ReplyTo())->setReplyUuid('MSG_101'))
);
```

---

### Дополнительные функции

[](#дополнительные-функции)

##### 1. История чата

[](#1-история-чата)

```
$response = $client->getHistoryChat(
    accountUuid: 'f36b8c48-ed97-4866-8aba-d55d429da86d',
    conversationRefId: $conversation->getRefId()
);

foreach ($response->getMessages() as $message) {
    echo 'Текст сообщения: ' . $message->getMessage()->getText();
}
```

##### 2. Обновление статуса доставки

[](#2-обновление-статуса-доставки)

```
use AmoJo\Enum\DeliveryStatus;
use AmoJo\Enum\ErrorCode;
use AmoJo\Models\Deliver;

$client->deliverStatus(
    accountUuid: 'f36b8c48-ed97-4866-8aba-d55d429da86d',
    messageUuid: $message->getRefUuid(),
    deliver: (new Deliver(DeliveryStatus::ERROR))
        ->setErrorCode(ErrorCode::WITH_DESCRIPTION)
        ->setMessageError('User deleted')
);
```

##### 3. Отправка или снятие реакции

[](#3-отправка-или-снятие-реакции)

```
$client->react(
    accountUuid: 'f36b8c48-ed97-4866-8aba-d55d429da86d',
    conversation: $conversation,
    sender: $contact,
    message: $message,
    emoji: '👍'
);
```

##### 4. Информации о печатание

[](#4-информации-о-печатание)

```
$client->typing(
    accountUuid: 'f36b8c48-ed97-4866-8aba-d55d429da86d',
    conversation: $conversation,
    sender: $contact,
);
```

---

🔌 Кастомные middleware
----------------------

[](#-кастомные-middleware)

##### Пример middleware для логирования запросов:

[](#пример-middleware-для-логирования-запросов)

```
use AmoJo\Middleware\MiddlewareInterface;
use Psr\Http\Message\RequestInterface;
use Psr\Log\LoggerInterface;
use Closure;

final class LoggingMiddleware implements MiddlewareInterface
{
    public function __invoke(callable $handler): Closure
    {
        return function (RequestInterface $request, array $options) use ($handler) {
            error_log('Request: ' . $request->getMethod() . ' ' . $request->getUri());
            return $handler($request, $options);
        };
    }
}
```

##### Подключение middleware:

[](#подключение-middleware)

```
$client = new AmoJoClient(
    channel: $channel,
    additionalMiddleware: [LoggingMiddleware::class]
);
```

---

📢 Обработка ошибок
------------------

[](#-обработка-ошибок)

Клиент выбрасывает исключения при ошибках:

- `AmoJoException` - Базовое исключение
- `EmptyMessageErrorException` - Не передано сообщение об ошибки при 905 коде ошибке deliverStatus()
- `InvalidRequestWebHookException` - не валидном вебхуке об исходящим сообщении
- `InvalidResponseException` - Некорректный ответ сервера
- `NotFountException` - некорректный URL запроса
- `RequiredParametersMissingException` - Отсутствуют обязательные параметры
- `SenderException` - Не был передан ID внутреннего пользователя при исходящим сообщение
- `UnsupportedMessageTypeException` - Передано неподдерживаемый типа сообщения

Пример обработки:

```
try {
    // Вызов API метода
} catch (RequiredParametersMissingException $e) {
    echo "Ошибка: " . $e->getMessage();
} catch (AmoJoException $e) {
    var_dump([
        'type'    => $e->getType(),
        'message' => $e->getMessage(),
        'code'    => $e->getCode(),
        'context' => $e->getContext(),
        'file'    => $e->getFile(),
    ]);
}
```

---

🔐 Работа с WebHooks
-------------------

[](#-работа-с-webhooks)

##### 1. Валидация WebHooks

[](#1-валидация-webhooks)

```
use AmoJo\Webhook\ValidatorHook;

if (!ValidatorHook::isValid(request: $request, secretKey: '465c28d756f...')) {
    // Обработка не валидного вебхука
}
```

##### 2. Строгая типизация данных полученных из WebHooks amoCRM

[](#2-строгая-типизация-данных-полученных-из-webhooks-amocrm)

```
use AmoJo\Webhook\AmoJoHookFactory;

$event = (new AmoJoHookFactory())->fromArray($requestBody);

var_dump($event->toArray());
```

---

📝 Документация
--------------

[](#-документация)

Официальная документация API чатов amoCRM:

- [Начало работы](https://www.amocrm.ru/developers/content/chats/chat-start)
- [Методы API чатов](https://www.amocrm.ru/developers/content/chats/chat-api-reference)
- [Webhooks документация](https://www.amocrm.ru/developers/content/chats/chat-webhooks)

---

📄 Лицензия
----------

[](#-лицензия)

Проект распространяется под лицензией MIT - подробности в файле [LICENSE](LICENSE)

###  Health Score

33

—

LowBetter than 72% of packages

Maintenance60

Regular maintenance activity

Popularity15

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~63 days

Total

5

Last Release

250d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/113447533?v=4)[Vladislav Bochkarev](/maintainers/fcritic)[@fcritic](https://github.com/fcritic)

---

Top Contributors

[![fcritic](https://avatars.githubusercontent.com/u/113447533?v=4)](https://github.com/fcritic "fcritic (15 commits)")

---

Tags

phpclientREST APIamoCRMAPI chatamojoamojo api

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/fcritic-amojo-api-client/health.svg)

```
[![Health](https://phpackages.com/badges/fcritic-amojo-api-client/health.svg)](https://phpackages.com/packages/fcritic-amojo-api-client)
```

###  Alternatives

[openai-php/laravel

OpenAI PHP for Laravel is a supercharged PHP API client that allows you to interact with the Open AI API

3.7k9.5M89](/packages/openai-php-laravel)[tencentcloud/tencentcloud-sdk-php

TencentCloudApi php sdk

3741.3M46](/packages/tencentcloud-tencentcloud-sdk-php)[resend/resend-php

Resend PHP library.

617.2M43](/packages/resend-resend-php)[mozex/anthropic-laravel

Laravel integration for the Anthropic API: facade, config publishing, install command, testing fakes, messages, streaming, tool use, thinking, and batches.

74331.3k1](/packages/mozex-anthropic-laravel)[eslazarev/wildberries-sdk

Wildberries OpenAPI clients (generated).

273.0k](/packages/eslazarev-wildberries-sdk)[files.com/files-php-sdk

Files.com PHP SDK

2481.1k](/packages/filescom-files-php-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
