<?php
// Attach the event handler globally
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
    "messageservice",
    "OnMessageServiceProvidersBuildList",
    "addMobizonProvider"
);

function addMobizonProvider()
{
    // Force the Message Service module to load first
    if (\Bitrix\Main\Loader::includeModule("messageservice"))
    {
        // Define the class only if it hasn't been defined yet
        if (!class_exists("MobizonSmsProvider"))
        {
            class MobizonSmsProvider extends \Bitrix\MessageService\Sender\Base
            {
                // === YOUR MOBIZON CREDENTIALS ===
                private $apiKey = 'PASTE_YOUR_MOBIZON_API_KEY_HERE';
                private $senderId = 'Premiera'; // Replace with your approved Sender ID
                // ================================

                public function getId() { return 'mobizon_kz'; }
                public function getName() { return 'Mobizon Kazakhstan'; }
                public function getShortName() { return 'mobizon_kz'; }
                public function canUse() { return true; }
                
                public function getFromList() {
                    return [['id' => $this->senderId, 'name' => $this->senderId]];
                }
                
                public function sendMessage(array $messageFields) {
                    $result = new \Bitrix\MessageService\Sender\Result\SendMessage();
                    $httpClient = new \Bitrix\Main\Web\HttpClient();
                    
                    $phone = preg_replace('/[^0-9]/', '', $messageFields['MESSAGE_TO']);
                    $text = $messageFields['MESSAGE_BODY'];

                    $url = "https://api.mobizon.kz/service/message/sendsmsmessage&quot;;
                    $url .= '?recipient=' . urlencode($phone);
                    $url .= '&text=' . urlencode($text);
                    $url .= '&from=' . urlencode($this->senderId);
                    $url .= '&apiKey=' . urlencode($this->apiKey);

                    $response = $httpClient->get($url);
                    
                    if ($response === false) {
                        $result->addError(new \Bitrix\Main\Error('Network connection failed.'));
                        return $result;
                    }

                    $data = json_decode($response, true);
                    if (isset($data['code']) && $data['code'] === 0) {
                        $result->setId($data['data']['messageId']);
                        $result->setStatus(\Bitrix\MessageService\MessageStatus::ACCEPTED);
                    } else {
                        $errorMsg = isset($data['message']) ? $data['message'] : 'API Error';
                        $result->addError(new \Bitrix\Main\Error($errorMsg));
                    }

                    return $result;
                }
            }
        }
        return [new MobizonSmsProvider()];
    }
}
?>
[Error] 
Undefined constant "SITE_TEMPLATE_PATH" (0)
/home/bitrix/www/bitrix/modules/main/include/epilog_before.php:93
#0: require
	/home/bitrix/www/bitrix/modules/main/include/epilog.php:2
#1: require_once(string)
	/home/bitrix/www/bitrix/footer.php:4
#2: require(string)
	/home/bitrix/www/local/php_interface/init.php:72
#3: include_once(string)
	/home/bitrix/www/bitrix/modules/main/include.php:140
#4: require_once(string)
	/home/bitrix/www/bitrix/modules/main/include/prolog_before.php:19
#5: require_once(string)
	/home/bitrix/www/bitrix/modules/main/include/prolog.php:10
#6: require_once(string)
	/home/bitrix/www/bitrix/header.php:1
#7: require(string)
	/home/bitrix/ext_www/test.premiera.kz/catalog/index.php:2
#8: include_once(string)
	/home/bitrix/www/bitrix/modules/main/include/urlrewrite.php:128
#9: include_once(string)
	/home/bitrix/www/bitrix/urlrewrite.php:2
----------