PHPackages                             wilfreedi/acmen-laravel-sdk - 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. wilfreedi/acmen-laravel-sdk

ActiveLibrary[API Development](/categories/api)

wilfreedi/acmen-laravel-sdk
===========================

A Laravel SDK for API interactions

1.10(1mo ago)076MITPHPPHP ^8.1

Since Jan 21Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/wilfreedi/acmen-laravel-sdk)[ Packagist](https://packagist.org/packages/wilfreedi/acmen-laravel-sdk)[ RSS](/packages/wilfreedi-acmen-laravel-sdk/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (9)Versions (15)Used By (0)

AcMen Laravel SDK
=================

[](#acmen-laravel-sdk)

SDK для отправки сообщений через коммуникационные каналы AcMen API.

Поддерживаемые каналы:

- Telegram
- VK
- Email

Архитектура SDK построена как расширяемый реестр каналов (`channel registry`), поэтому новые каналы (например, `max`) добавляются без переписывания ядра.

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

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

```
composer require wilfreedi/acmen-laravel-sdk
```

Публикация конфига
------------------

[](#публикация-конфига)

```
php artisan vendor:publish --provider="Wilfreedi\AcMen\AcMenServiceProvider"
```

Конфигурация
------------

[](#конфигурация)

```
return [
    // Новая универсальная схема
    'base_url' => env('ACMEN_API_BASE_URL', 'https://acmen.ru/api/v1'),

    // Legacy (для обратной совместимости)
    'url'       => env('ACMEN_API_URL', 'https://acmen.ru/api/v1/telegram/'),
    'vk_url'    => env('ACMEN_VK_API_URL', 'https://acmen.ru/api/v1/vk/'),
    'email_url' => env('ACMEN_EMAIL_API_URL', 'https://acmen.ru/api/v1/email'),

    'endpoints' => [
        'telegram.send_message' => '/telegram/sendMessage',
        'vk.send_message'       => '/vk/sendMessage',
        'vk.send_document'      => '/vk/sendDocument',
        'email.send'            => '/email',
    ],

    'channels' => [
        'telegram' => \Wilfreedi\AcMen\Channels\TelegramChannel::class,
        'vk'       => \Wilfreedi\AcMen\Channels\VkChannel::class,
        'email'    => \Wilfreedi\AcMen\Channels\EmailChannel::class,
    ],

    'token'   => env('ACMEN_API_TOKEN'),
    'timeout' => env('ACMEN_API_TIMEOUT', 10),
];
```

Использование
-------------

[](#использование)

### 1) Универсальный доступ по каналу

[](#1-универсальный-доступ-по-каналу)

```
use Wilfreedi\AcMen\Facades\AcMen;

AcMen::channel('telegram')->sendMessage(-1001234567890, 'Привет');
AcMen::channel('vk')->sendMessage(2000000015, 'Привет из VK');
AcMen::channel('email')->sendEmail(['user@example.com'], subject: 'Тест', message: 'Hello');
```

### 2) Удобные shortcut-методы

[](#2-удобные-shortcut-методы)

```
use Wilfreedi\AcMen\Facades\AcMen;

// Telegram
$telegramResponse = AcMen::sendMessage(
    chatId: -1001234567890,
    message: 'Привет из Telegram API',
    topicId: 15
);

// VK
$vkResponse = AcMen::sendVkMessage(
    peerId: 2000000015,
    message: 'Привет из VK API',
    fromId: 1,
    randomId: 123456 // optional, если не передан, генерируется автоматически
);

// VK Document (отправка файлов)
$vkDocResponse = AcMen::sendVkDocument(
    peerId: 2000000015,
    file: '/path/to/local/file.pdf',
    message: 'Лови файл!', // optional
    fromId: 1 // optional
);

// Email
$emailResponse = AcMen::sendEmail(
    to: ['user1@example.com', 'user2@example.com'],
    toHidden: ['audit@example.com'],
    email: 'bot@example.com',
    name: 'Support Bot',
    subject: 'Тест',
    message: 'Hello',
    attach: 'https://example.com/file.pdf'
);
```

### 3) Отправка через очередь

[](#3-отправка-через-очередь)

```
use Wilfreedi\AcMen\Facades\AcMen;

AcMen::queue()->vk()->sendMessage(2000000015, 'Сообщение через очередь');
```

Контракты API
-------------

[](#контракты-api)

### VK: POST `/api/v1/vk/sendMessage`

[](#vk-post-apiv1vksendmessage)

Успешный ответ:

```
{
  "success": true,
  "data": 981,
  "message": "VK сообщение отправлено"
}
```

### VK: POST `/api/v1/vk/sendDocument`

[](#vk-post-apiv1vksenddocument)

Отправляет файл (multipart/form-data).

Параметры:

- `peer_id` (int, required)
- `file` (file, required): путь к локальному файлу
- `message` (string, optional)
- `from_id` (int, optional)

Успешный ответ:

```
{
  "success": true,
  "data": 12345,
  "message": "VK файл отправлен"
}
```

Ошибки:

- `403`: нет доступных VK ботов
- `403`: VK бот не найден
- `403`: VK бот отключен
- `400`: ошибка отправки от VK API

### Email: POST `/api/v1/email`

[](#email-post-apiv1email)

Тело запроса:

- `email` (string, optional): username конкретного Email-аккаунта
- `to` (array, required): получатели
- `to_hidden` (array, optional): BCC
- `name` (string, optional): имя отправителя
- `subject` (string, optional): тема письма
- `message` (string, optional): HTML-тело
- `attach` (string, optional): URL вложения

Успешный ответ:

```
{
  "success": true,
  "data": [],
  "message": "Email отправлен"
}
```

Ошибки:

- `403`: нет привязанных email-каналов к API токену
- `403`: выбранный email не найден

Примечание: `subject` и `message` формально optional, но в рабочем сценарии рекомендуется всегда передавать их строками.

Расширение под будущий канал (например, max)
--------------------------------------------

[](#расширение-под-будущий-канал-например-max)

1. Создать класс канала (по аналогии с `VkChannel`/`EmailChannel`).
2. Добавить endpoint в `acmen.endpoints`.
3. Зарегистрировать канал в `acmen.channels`.
4. Использовать `AcMen::channel('max')`.

###  Health Score

44

—

FairBetter than 90% of packages

Maintenance94

Actively maintained with recent releases

Popularity11

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity55

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 ~38 days

Recently: every ~24 days

Total

14

Last Release

32d ago

Major Versions

0.3.7 → 1.0.02026-02-24

### Community

Maintainers

![](https://www.gravatar.com/avatar/1355cb05e7c6c78d53a0aeab5ac3263138735659009cdaa4c9b7b21601d22c4f?d=identicon)[wilfreedi](/maintainers/wilfreedi)

---

Top Contributors

[![wilfreedi](https://avatars.githubusercontent.com/u/40352982?v=4)](https://github.com/wilfreedi "wilfreedi (11 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/wilfreedi-acmen-laravel-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/wilfreedi-acmen-laravel-sdk/health.svg)](https://phpackages.com/packages/wilfreedi-acmen-laravel-sdk)
```

###  Alternatives

[statamic/cms

The Statamic CMS Core Package

4.8k3.6M987](/packages/statamic-cms)[tencentcloud/tencentcloud-sdk-php

TencentCloudApi php sdk

3741.3M45](/packages/tencentcloud-tencentcloud-sdk-php)[neuron-core/neuron-ai

The PHP Agentic Framework.

2.0k656.1k38](/packages/neuron-core-neuron-ai)[eslazarev/wildberries-sdk

Wildberries OpenAPI clients (generated).

273.0k](/packages/eslazarev-wildberries-sdk)[avalara/avataxclient

Client library for Avalara's AvaTax suite of business tax calculation and processing services. Uses the REST v2 API.

528.5M7](/packages/avalara-avataxclient)[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)
