WT Max integration library for Joomla

  • Category: Libraries
  • Version: 0.3.0
  • Date:
Downloads 2149 Hits 1294 CTR 166% 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, 6.1.2, 6.1.3

What's new

Change

Max PHP SDK update

The bundled PHP library for MAX API has been updated.
Addition

Bot commands

Bot commands are now supported, so integrations can update the command list shown to users.
Addition

Comment handling

Comment handling has been added for sending, viewing, editing, and deleting message comments.
Addition

Chat and button-response features

Chat and button-response features have been expanded, including chat descriptions and link preview control.
Addition

Documentation and API check schemas

Documentation and API check schemas have been refreshed.

Related extensions

WebTolk Joomla Extensions

113 Extensions
12 Categories
577 Versions released
856172 Downloads