WT Max integration library for Joomla

  • Category: Libraries
  • Version: 0.2.0
  • Date:
Downloads 1180 Hits 744 CTR 159% Pack Free

MAX API Joomla library with a system plugin for configuration and connection diagnostics.

WT Max integration library for Joomla

Description

Joomla package that installs:

  • the WebTolk/Wtmax library
  • the System - WT Max system plugin

The package wraps the main webtolk/max SDK and provides a ready entry point \Webtolk\Wtmax\Wtmax::getInstance(). The bot token and service settings are stored in the system plugin.

Main SDK repository: https://github.com/WebTolk/Max-platform-PHP-SDK

Package contents

  • Joomla library Webtolk/Wtmax
  • system plugin for storing the token
  • API connection status field
  • separate file logging option

How it works

After installation:

  1. enable the System - WT Max plugin
  2. enter the MAX bot token
  3. enable separate file logging if needed
  4. in Joomla code, get the ready SDK via Wtmax::getInstance()

Internally, the library creates:

  • Joomla\Http\HttpFactory
  • Laminas\Diactoros\RequestFactory
  • Laminas\Diactoros\StreamFactory
  • a PSR-3 logger from Joomla core

Quick start

Get a ready SDK instance

<?php

declare(strict_types=1);

use Webtolk\Wtmax\Wtmax;

defined('_JEXEC') or die;

$max = Wtmax::getInstance();

$bot = $max->bots()->me();

echo $bot->getId();
echo $bot->getUsername();

Send a message to a chat

The example is based on the upstream messages()->sendToChat() flow.

<?php

declare(strict_types=1);

use Webtolk\Max\Payload\NewMessageBody;
use Webtolk\Wtmax\Wtmax;

defined('_JEXEC') or die;

$chatId = 123456;

$message = Wtmax::getInstance()->messages()->sendToChat(
	$chatId,
	NewMessageBody::text('Hello from Joomla WT Max library')
);

echo $message->getBody()?->getText() ?? '';

Send an image

The example is based on the upstream upload flow: uploads()->upload() + toAttachment() + messages()->sendToChat().

<?php

declare(strict_types=1);

use Webtolk\Max\Payload\NewMessageBody;
use Webtolk\Max\Payload\UploadType;
use Webtolk\Wtmax\Wtmax;
use RuntimeException;

defined('_JEXEC') or die;

$chatId = 123456;
$imagePath = JPATH_ROOT . '/images/sample.jpg';
$binaryImage = file_get_contents($imagePath);

if ($binaryImage === false)
{
	throw new RuntimeException('Image file was not read: ' . $imagePath);
}

$max = Wtmax::getInstance();

$imageAttachment = $max->uploads()
	->upload(UploadType::IMAGE, $binaryImage, 'image/jpeg')
	->toAttachment();

$message = $max->messages()->sendToChat(
	$chatId,
	NewMessageBody::text('Sending an image from Joomla')
		->withAttachments([$imageAttachment])
);

echo $message->getBody()?->getMessageId() ?? '';

Handle a callback and answer it

The example is based on the upstream messages()->answerCallback() flow.

<?php

declare(strict_types=1);

use Webtolk\Max\Payload\CallbackAnswerPayload;
use Webtolk\Wtmax\Wtmax;

defined('_JEXEC') or die;

$payload = file_get_contents('php://input');

if ($payload !== false && $payload !== '')
{
	$update = json_decode($payload, true, 512, JSON_THROW_ON_ERROR);
	$callbackId = $update['callback']['callback_id'] ?? null;

	if ($callbackId !== null)
	{
		Wtmax::getInstance()->messages()->answerCallback(
			(string) $callbackId,
			(new CallbackAnswerPayload())->withNotification('Button processed')
		);
	}
}

If you need a manual Max instance

Wtmax::getInstance() is convenient for typical Joomla usage, but you can also assemble the SDK manually if needed.

<?php

declare(strict_types=1);

require_once JPATH_LIBRARIES . '/Webtolk/Wtmax/src/libraries/vendor/autoload.php';

use Joomla\Http\HttpFactory;
use Laminas\Diactoros\RequestFactory;
use Laminas\Diactoros\StreamFactory;
use Webtolk\Max\Config\MaxConfig;
use Webtolk\Max\Max;
use Psr\Log\NullLogger;

defined('_JEXEC') or die;

$token = 'YOUR_BOT_TOKEN';

$max = new Max(
	new MaxConfig($token),
	new NullLogger()
);

$max->setTransport(
	(new HttpFactory())->getHttp([], ['curl', 'stream']),
	new RequestFactory(),
	new StreamFactory(),
);

Where the token is stored

The token is stored in the parameters of the System - WT Max system plugin.

Main parameters:

  • MAX bot token
  • Log to a separate file
  • Custom log file

Logging

If logging is enabled, the library writes to a separate file:

/logs/wtmax.max-api.log

 

Joomla

Extension type:
Package
Package composition:
Library, Plugin
Joomla version:
6.1.0, 6.1.1

What's new

Addition

New API Max Host

A new version of the API host has been enabled: https://platform-api2.max.ru. To work correctly, you will need to install the certificate of the Ministry of Digital Development of the Russian Federation on your server.
Addition

The public API surface has been expanded

Methods for working with chats and messages have been updated and supplemented (including new scenarios for linking to chat and selecting messages by query id).
Change

Updated the set of public JSON schemas

Schemas for new and modified endpoints have been added and synchronized.
Change

Updating documentation

The README, starter manuals, references, and descriptions of entities/uploads are given at the current API level.

WebTolk Joomla Extensions

110 Extensions
12 Categories
558 Versions released
790192 Downloads