- 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.
177 lines
5.2 KiB
PHP
177 lines
5.2 KiB
PHP
<?php
|
|
/*+**********************************************************************************
|
|
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
|
|
* ("License"); You may not use this file except in compliance with the License
|
|
* The Original Code is: vtiger CRM Open Source
|
|
* The Initial Developer of the Original Code is vtiger.
|
|
* Portions created by vtiger are Copyright (C) vtiger.
|
|
* All Rights Reserved.
|
|
************************************************************************************/
|
|
|
|
class SMSNotifier_MyProvider_Provider implements SMSNotifier_ISMSProvider_Model {
|
|
|
|
private $userName;
|
|
private $password;
|
|
private $parameters = array();
|
|
|
|
const SERVICE_URI = 'http://localhost:9898';
|
|
private static $REQUIRED_PARAMETERS = array('app_id');
|
|
|
|
/**
|
|
* Function to get provider name
|
|
* @return <String> provider name
|
|
*/
|
|
public function getName() {
|
|
return 'MyProvider';
|
|
}
|
|
|
|
/**
|
|
* Function to get required parameters other than (userName, password)
|
|
* @return <array> required parameters list
|
|
*/
|
|
public function getRequiredParams() {
|
|
return self::$REQUIRED_PARAMETERS;
|
|
}
|
|
|
|
/**
|
|
* Function to get service URL to use for a given type
|
|
* @param <String> $type like SEND, PING, QUERY
|
|
*/
|
|
public function getServiceURL($type = false) {
|
|
if($type) {
|
|
switch(strtoupper($type)) {
|
|
case self::SERVICE_AUTH: return self::SERVICE_URI . '/http/auth';
|
|
case self::SERVICE_SEND: return self::SERVICE_URI . '/http/sendmsg';
|
|
case self::SERVICE_QUERY: return self::SERVICE_URI . '/http/querymsg';
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Function to set authentication parameters
|
|
* @param <String> $userName
|
|
* @param <String> $password
|
|
*/
|
|
public function setAuthParameters($userName, $password) {
|
|
$this->userName = $userName;
|
|
$this->password = $password;
|
|
}
|
|
|
|
/**
|
|
* Function to set non-auth parameter.
|
|
* @param <String> $key
|
|
* @param <String> $value
|
|
*/
|
|
public function setParameter($key, $value) {
|
|
$this->parameters[$key] = $value;
|
|
}
|
|
|
|
/**
|
|
* Function to get parameter value
|
|
* @param <String> $key
|
|
* @param <String> $defaultValue
|
|
* @return <String> value/$default value
|
|
*/
|
|
public function getParameter($key, $defaultValue = false) {
|
|
if(isset($this->parameters[$key])) {
|
|
return $this->parameters[$key];
|
|
}
|
|
return $defaultValue;
|
|
}
|
|
|
|
/**
|
|
* Function to prepare parameters
|
|
* @return <Array> parameters
|
|
*/
|
|
protected function prepareParameters() {
|
|
$params = array('user' => $this->userName, 'pwd' => $this->password);
|
|
foreach (self::$REQUIRED_PARAMETERS as $key) {
|
|
$params[$key] = $this->getParameter($key);
|
|
}
|
|
return $params;
|
|
}
|
|
|
|
/**
|
|
* Function to handle SMS Send operation
|
|
* @param <String> $message
|
|
* @param <Mixed> $toNumbers One or Array of numbers
|
|
*/
|
|
public function send($message, $toNumbers) {
|
|
if(!is_array($toNumbers)) {
|
|
$toNumbers = array($toNumbers);
|
|
}
|
|
|
|
$params = $this->prepareParameters();
|
|
$params['text'] = $message;
|
|
$params['to'] = implode(',', $toNumbers);
|
|
|
|
$serviceURL = $this->getServiceURL(self::SERVICE_SEND);
|
|
$httpClient = new Vtiger_Net_Client($serviceURL);
|
|
$response = $httpClient->doPost($params);
|
|
//SalesPlatform.ru begin
|
|
//$responseLines = split("\n", $response);
|
|
$responseLines = explode("\n", $response);
|
|
//SalesPlatform.ru end
|
|
|
|
$results = array();
|
|
foreach($responseLines as $responseLine) {
|
|
$responseLine = trim($responseLine);
|
|
if(empty($responseLine)) continue;
|
|
|
|
$result = array( 'error' => false, 'statusmessage' => '' );
|
|
if(preg_match("/ERR:(.*)/", trim($responseLine), $matches)) {
|
|
$result['error'] = true;
|
|
$result['to'] = $toNumbers[$i++];
|
|
$result['statusmessage'] = $matches[0]; // Complete error message
|
|
} else if(preg_match("/ID: ([^ ]+)TO:(.*)/", $responseLine, $matches)) {
|
|
$result['id'] = trim($matches[1]);
|
|
$result['to'] = trim($matches[2]);
|
|
$result['status'] = self::MSG_STATUS_PROCESSING;
|
|
} else if(preg_match("/ID: (.*)/", $responseLine, $matches)) {
|
|
$result['id'] = trim($matches[1]);
|
|
$result['to'] = $toNumbers[0];
|
|
$result['status'] = self::MSG_STATUS_PROCESSING;
|
|
}
|
|
$results[] = $result;
|
|
}
|
|
return $results;
|
|
}
|
|
|
|
/**
|
|
* Function to get query for status using messgae id
|
|
* @param <Number> $messageId
|
|
*/
|
|
public function query($messageId) {
|
|
$params = $this->prepareParameters();
|
|
$params['apimsgid'] = $messageId;
|
|
|
|
$serviceURL = $this->getServiceURL(self::SERVICE_QUERY);
|
|
$httpClient = new Vtiger_Net_Client($serviceURL);
|
|
$response = $httpClient->doPost($params);
|
|
$response = trim($response);
|
|
|
|
$result = array( 'error' => false, 'needlookup' => 1 );
|
|
|
|
if(preg_match("/ERR: (.*)/", $response, $matches)) {
|
|
$result['error'] = true;
|
|
$result['needlookup'] = 0;
|
|
$result['statusmessage'] = $matches[0];
|
|
} else if(preg_match("/ID: ([^ ]+) Status: ([^ ]+)/", $response, $matches)) {
|
|
$result['id'] = trim($matches[1]);
|
|
$status = trim($matches[2]);
|
|
|
|
// Capture the status code as message by default.
|
|
$result['statusmessage'] = "CODE: $status";
|
|
if($status === '1') {
|
|
$result['status'] = self::MSG_STATUS_PROCESSING;
|
|
} else if($status === '2') {
|
|
$result['status'] = self::MSG_STATUS_DISPATCHED;
|
|
$result['needlookup'] = 0;
|
|
}
|
|
}
|
|
return $result;
|
|
}
|
|
}
|
|
?>
|