Files
crm.clientright.ru/modules/SMSNotifier/providers/streamsms/StreamClass.php
Fedor ac7467f0b4 Major CRM updates: AI Assistant, Court Status API, S3 integration improvements, and extensive file storage system
- Added comprehensive AI Assistant system (aiassist/ directory):
  * Vector search and embedding capabilities
  * Typebot proxy integration
  * Elastic search functionality
  * Message classification and chat history
  * MCP proxy for external integrations

- Implemented Court Status API (GetCourtStatus.php):
  * Real-time court document status checking
  * Integration with external court systems
  * Comprehensive error handling and logging

- Enhanced S3 integration:
  * Improved file backup system with metadata
  * Batch processing capabilities
  * Enhanced error logging and recovery
  * Copy operations with URL fixing

- Added Telegram contact creation API
- Improved error logging across all modules
- Enhanced callback system for AI responses
- Extensive backup file storage with timestamps
- Updated documentation and README files

- File storage improvements:
  * Thousands of backup files with proper metadata
  * Fix operations for broken file references
  * Project-specific backup and recovery systems
  * Comprehensive file integrity checking

Total: 26,461+ files added/modified including AWS SDK, vendor dependencies, and extensive backup system.
2025-10-16 11:17:21 +03:00

237 lines
14 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
class STREAM
{
/*------------------------------------------------------------------------------------------------*/
/* Функция получения идентификатора сессии */
/* $login (string) - логин пользователя */
/* $password (string) - пароль пользователя */
/*------------------------------------------------------------------------------------------------*/
function GetSessionId($server,$login,$password)
{
$href = $server.'Session/?login='.$login.'&password='.$password;
$result = $this -> GetConnect($href);
return json_decode($result,true);
}
/*------------------------------------------------------------------------------------------------*/
/* Функция получения баланса пользователя */
/* $session (string 32 символа) - идентификатор пользователя */
/*------------------------------------------------------------------------------------------------*/
function GetBalance($server,$session)
{
$href = $server.'Balance/?sessionId='.$session;
$result = $this -> GetConnect($href);
return json_decode($result,true);
}
/*------------------------------------------------------------------------------------------------*/
/* Функция получения статистики по отправленным сообщениям */
/* $session (string 32 символа) - идентификатор пользователя */
/* $startDateTime (DateTime ГГГГ-ММ-ДД(T)ЧЧ:ММ:СС) - начало периода для запроса статистики */
/* $endDateTime (DateTime ГГГГ-ММ-ДД(T)ЧЧ:ММ:СС) - конец периода для запроса статистики */
/*------------------------------------------------------------------------------------------------*/
function GetStatistic($server,$session,$startDateTime,$endDateTime)
{
$href = $server.'Statistic/?sessionId='.$session.'&startDateTime='.$startDateTime.'&endDateTime='.$endDateTime;
$result = $this -> GetConnect($href);
return json_decode($result,true);
}
/*------------------------------------------------------------------------------------------------*/
/* Функция получения входящих сообщений */
/* $session (string 32 символа) - идентификатор пользователя */
/* $minDateUTC (DateTime ГГГГ-ММ-ДД(T)ЧЧ:ММ:СС) - начало периода для запроса входящих сообщений */
/* $maxDateUTC (DateTime ГГГГ-ММ-ДД(T)ЧЧ:ММ:СС) - конец периода для запроса входящих сообщений */
/*------------------------------------------------------------------------------------------------*/
function GetIncomingSms($server,$session,$minDateUTC,$maxDateUTC)
{
$href = $server.'Incoming/?sessionId='.$session.'&minDateUTC='.$minDateUTC.'&maxDateUTC='.$maxDateUTC;
$result = $this -> GetConnect($href);
$result = $this -> ChangeFormateDate(json_decode($result,true));
return $result;
}
/*------------------------------------------------------------------------------------------------*/
/* Функция получения статуса сообщения */
/* $session (string 32 символа) - идентификатор пользователя */
/* $messageId (string 9 символов) - статус отправленного сообщения */
/*------------------------------------------------------------------------------------------------*/
function GetState($server,$session,$messageId)
{
$href = $server.'State/?sessionId='.$session.'&messageId='.$messageId;
$result = $this -> GetConnect($href);
$result = $this -> ChangeFormateDate(json_decode($result,true));
return $result;
}
/*------------------------------------------------------------------------------------------------*/
/* Функция отправки единичного сообщения */
/* $session (string 32 символа) - идентификатор пользователя */
/* $sourceAddress (string 11 латинских или не более 15 цифровых символов) - имя отправителя */
/* $destinationAddress (integer) - номер абонента (в формате 79111234567 для РФ) */
/* $data (string) - текст сообщения */
/* $validity (integer) - время жизни сообщения, указывается в минутах, по умолчанию 1440 */
/* (необязательный параметр) */
/* $sendDate (DateTime ГГГГ-ММ-ДД(T)ЧЧ:ММ:СС) - время передачи сообщения */
/* (необязательный параметр) */
/*------------------------------------------------------------------------------------------------*/
function SendSms($server,$session,$sourceAddress,$destinationAddress,$data,$validity,$sendDate = '')
{
$href = $server.'Send/SendSms/';
if($sendDate != '')
$sendDate = '&sendDate='.$sendDate;
$src = 'sessionId='.$session.'&sourceAddress='.$sourceAddress.'&destinationAddress='.$destinationAddress.'&data='.$data.'&validity='.$validity.$sendDate;
$result = $this -> PostConnect($src,$href);
return json_decode($result,true);
}
/*------------------------------------------------------------------------------------------------*/
/* Функция отправки сообщений нескольким адресатам */
/* $session (string 32 символа) - идентификатор пользователя */
/* $sourceAddress (string 11 латинских или не более 15 цифровых символов) - имя отправителя */
/* $destinationAddresses (string) - номера абонентов (номера указываются через запятую) */
/* $data (string) - текст сообщения */
/* $validity (integer) - время жизни сообщения, указывается в минутах, по умолчанию 1440 */
/* (необязательный параметр) */
/*------------------------------------------------------------------------------------------------*/
function SendBulk($server,$session,$sourceAddress,$destinationAddresses,$data,$validity)
{
$href = $server.'Send/SendBulk/';
$src = 'sessionId='.$session.'&sourceAddress='.$sourceAddress.'&destinationAddresses='.$destinationAddresses.'&data='.$data.'&validity='.$validity;
$result = $this -> PostConnect($src,$href);
return json_decode($result,true);
}
/*------------------------------------------------------------------------------------------------*/
/* Функция отправки сообщений по локальному времени абонента */
/* $session (string 32 символа) - идентификатор пользователя */
/* $sourceAddress (string 11 латинских или не более 15 цифровых символов) - имя отправителя */
/* $destinationAddress (integer) - номер абонента (в формате 79111234567 для РФ) */
/* $data (string) - текст сообщения */
/* $validity (integer) - время жизни сообщения, указывается в минутах, по умолчанию 1440 */
/* (необязательный параметр) */
/* $sendDate (DateTime ГГГГ-ММ-ДД(T)ЧЧ:ММ:СС) - время передачи сообщения по UTC */
/*------------------------------------------------------------------------------------------------*/
function SendByTime($server,$session,$sourceAddress,$destinationAddress,$data,$validity,$sendDate = '')
{
$href = $server.'Send/SendByTime/';
if($sendDate != '')
$sendDate = '&sendDate='.$sendDate;
$src = 'sessionId='.$session.'&sourceAddress='.$sourceAddress.'&destinationAddress='.$destinationAddress.'&data='.$data.'&validity='.$validity.$sendDate;
$result = $this -> PostConnect($src,$href);
return json_decode($result,true);
}
/*------------------------------------------------------------------------------------------------*/
/* Функция пакетной отправки сообщений */
/* $session (string 32 символа) - идентификатор пользователя */
/* $sourceAddress (string 11 латинских или не более 15 цифровых символов) - имя отправителя */
/* $destinationAddress (integer) - номер абонента (в формате 79111234567 для РФ) */
/* $phone_data (array) - тексты сообщений и номера получателей */
/* $validity (integer) - время жизни сообщения, указывается в минутах, по умолчанию 1440 */
/* (необязательный параметр) */
/*------------------------------------------------------------------------------------------------*/
function SendBulkPacket($server,$session,$sourceAddress,$phone_data,$validity)
{
$href = $server.'Send/SendBulkPacket/';
$src = 'sessionId='.$session.'&sourceAddress='.$sourceAddress.'&phone_data='.$phone_data.'&validity='.$validity;
$result = $this -> PostConnect($src,$href);
return json_decode($result,true);
}
/*------------------------------------------------------------------------------------------------*/
/* Функция формирования и отправки get-запроса на сервер через cURL */
/* $href (string) - адрес для подключения (http://gateway.api.sc/rest/) */
/*------------------------------------------------------------------------------------------------*/
function GetConnect($href)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $href);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
$result=curl_exec($ch);
curl_close($ch);
return $result;
}
/*------------------------------------------------------------------------------------------------*/
/* Функция формирования и отправки post-запроса на сервер через cURL */
/* $href (string) - адрес для подключения (http://gateway.api.sc/rest/) */
/* $src (string) - передаваемый запрос */
/*------------------------------------------------------------------------------------------------*/
function PostConnect($src,$href)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CRLF, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $src);
curl_setopt($ch, CURLOPT_URL, $href);
$result = curl_exec($ch);
return $result;
curl_close($ch);
}
/*------------------------------------------------------------------------------------------------*/
/* Функция изменения даты из unix-формата в формат ГГГГ-ММ-ДД(T)ЧЧ:ММ:СС */
/* $result (array) - массив, в котором значения типа unix-дата будут переведены в формат */
/* ГГГГ-ММ-ДД(T)ЧЧ:ММ:СС */
/*------------------------------------------------------------------------------------------------*/
function ChangeFormateDate($result)
{
foreach($result as $key => $value)
{
if(is_array($value))
{
foreach($value as $key_in => $value_in)
{
if(substr($value_in,0,5)=='/Date')
{
$value_in = str_replace('/Date(','',$value_in);
$value_in = str_replace(')/','',$value_in);
$value_in = substr($value_in,0,strlen($value_in)-3);
$value_in = date('Y-m-d H:i:s',$value_in);
$arr_in[$key_in] = $value_in;
}
else
$arr_in[$key_in] = $value_in;
}
$arr[$key] = $arr_in;
}
else
{
if(substr($value,0,5)=='/Date' || $key=='TimeStampUtc')
{
$value = str_replace('/Date(','',$value);
$value = str_replace(')/','',$value);
$value = substr($value,0,strlen($value)-3);
$value = date('Y-m-d H:i:s',$value);
$arr[$key] = $value;
}
else
$arr[$key] = $value;
}
}
return $arr;
}
function jsonRemoveUnicodeSequences($struct)
{
//SalesPlatform.ru begin
//return preg_replace("/\\\\u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", json_encode($struct));
return preg_replace_callback("/\\\\u([a-f0-9]{4})/", function($matches) {
return iconv('UCS-4LE','UTF-8',pack('V', hexdec('U' . $matches[1])));
}, json_encode($struct));
//SalesPlatform.ru end
}
function JsonArray($arr)
{
$phone_data = array('sms' => $arr);
$result = $this -> jsonRemoveUnicodeSequences($phone_data);
return $result;
}
}
?>