2025-09-26 10:43:05 +03:00
|
|
|
|
<?php
|
|
|
|
|
|
/*********************************************************************************
|
|
|
|
|
|
* API-интерфейсы для создания разного рода Заявок
|
|
|
|
|
|
* All Rights Reserved.
|
|
|
|
|
|
* Contributor(s): Илья Руденко itsaturn@yandex.ru
|
|
|
|
|
|
********************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
include_once 'include/Webservices/Query.php';
|
|
|
|
|
|
include_once 'modules/Users/Users.php';
|
|
|
|
|
|
require_once('include/Webservices/Utils.php');
|
|
|
|
|
|
require_once 'include/Webservices/Create.php';
|
|
|
|
|
|
require_once 'includes/Loader.php';
|
|
|
|
|
|
vimport ('includes.runtime.Globals');
|
|
|
|
|
|
vimport ('includes.runtime.BaseModel');
|
|
|
|
|
|
vimport ('includes.runtime.LanguageHandler');
|
|
|
|
|
|
|
|
|
|
|
|
function vtws_createervticket($title, $contactid, $projectid, $user = false) {
|
|
|
|
|
|
|
|
|
|
|
|
$logstring = date("Y-m-d H:i:s").' '.json_encode($_REQUEST);
|
|
|
|
|
|
file_put_contents('logs/CreateTicket.log', $logstring.PHP_EOL, FILE_APPEND);
|
|
|
|
|
|
|
|
|
|
|
|
if(empty($title) or empty($contactid) or empty($projectid)){
|
|
|
|
|
|
$logstring = date("Y-m-d H:i:s").' Не указано одно из обязательных полей: Название Заявик, ID Контакта или ID Проекта';
|
|
|
|
|
|
file_put_contents('logs/CreateTicket.log', $logstring.PHP_EOL, FILE_APPEND);
|
|
|
|
|
|
throw new WebServiceException(WebServiceErrorCode::$INVALIDID, "Не заполнены обязательные поля");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
$params = array (
|
|
|
|
|
|
'ticket_title' => $title,
|
|
|
|
|
|
'parent_id' => '11x67458',
|
|
|
|
|
|
'ticketcategories' => 'Цифровой адвокат ЕРВ',
|
|
|
|
|
|
'ticketstatus' => 'рассмотрение',
|
|
|
|
|
|
'contact_id' => '12x'.$contactid,
|
|
|
|
|
|
'cf_2066' => '33x'.$projectid,
|
|
|
|
|
|
'ticketpriorities' => 'High',
|
|
|
|
|
|
'assigned_user_id' => '19x8'
|
|
|
|
|
|
);
|
|
|
|
|
|
$logstring = date('Y-m-d H:i:s').' массив для создания Заявки: '.json_encode($params).PHP_EOL;
|
|
|
|
|
|
file_put_contents('logs/CreateTicket.log', $logstring, FILE_APPEND);
|
|
|
|
|
|
|
|
|
|
|
|
$result = vtws_create('HelpDesk', $params, $user);
|
|
|
|
|
|
$logstring = date('Y-m-d H:i:s').' сохранена Заявка id = '.$result['id'].PHP_EOL;
|
|
|
|
|
|
file_put_contents('logs/CreateTicket.log', $logstring, FILE_APPEND);
|
|
|
|
|
|
$output = substr($result['id'], 3);
|
|
|
|
|
|
} catch (WebServiceException $ex) {
|
|
|
|
|
|
$output = $ex->getMessage();
|
|
|
|
|
|
$logstring = date('Y-m-d H:i:s').' '.$output.PHP_EOL;
|
|
|
|
|
|
file_put_contents('logs/CreateTicket.log', $logstring, FILE_APPEND);
|
|
|
|
|
|
throw new WebServiceException(WebServiceErrorCode::$INVALIDID, $output);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-10-16 11:17:21 +03:00
|
|
|
|
return $output;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Создание заявки для RAG системы
|
|
|
|
|
|
* @param string $title - тема заявки
|
|
|
|
|
|
* @param int $contactid - ID контакта в CRM
|
|
|
|
|
|
* @param string $question - вопрос для RAG
|
|
|
|
|
|
* @param int $parentid - ID организации (parent_id)
|
|
|
|
|
|
* @param object $user - пользователь CRM (опционально)
|
|
|
|
|
|
* @return int - ID созданной заявки
|
|
|
|
|
|
*/
|
|
|
|
|
|
function vtws_createRAGTicket($title, $contactid, $question, $parentid, $user = false) {
|
|
|
|
|
|
|
|
|
|
|
|
$logstring = date("Y-m-d H:i:s").' '.json_encode($_REQUEST);
|
|
|
|
|
|
file_put_contents('logs/CreateRAGTicket.log', $logstring.PHP_EOL, FILE_APPEND);
|
|
|
|
|
|
|
|
|
|
|
|
if(empty($title) or empty($contactid) or empty($question) or empty($parentid)){
|
|
|
|
|
|
$logstring = date("Y-m-d H:i:s").' Не указано одно из обязательных полей: Название, ID Контакта, Вопрос или ID Организации';
|
|
|
|
|
|
file_put_contents('logs/CreateRAGTicket.log', $logstring.PHP_EOL, FILE_APPEND);
|
|
|
|
|
|
throw new WebServiceException(WebServiceErrorCode::$INVALIDID, "Не заполнены обязательные поля");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
$params = array (
|
|
|
|
|
|
'ticket_title' => $title,
|
|
|
|
|
|
'parent_id' => '11x'.$parentid,
|
|
|
|
|
|
'ticketcategories' => 'Прочее',
|
|
|
|
|
|
'ticketstatus' => 'В прогрессе',
|
|
|
|
|
|
'contact_id' => '12x'.$contactid,
|
|
|
|
|
|
'description' => $question, // Вопрос сохраняем в описании
|
|
|
|
|
|
'ticketpriorities' => 'High',
|
|
|
|
|
|
'assigned_user_id' => '19x8',
|
|
|
|
|
|
'source' => 'RAG SYSTEM' // Указываем источник
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
$logstring = date('Y-m-d H:i:s').' массив для создания RAG заявки: '.json_encode($params).PHP_EOL;
|
|
|
|
|
|
file_put_contents('logs/CreateRAGTicket.log', $logstring, FILE_APPEND);
|
|
|
|
|
|
|
|
|
|
|
|
$result = vtws_create('HelpDesk', $params, $user);
|
|
|
|
|
|
$logstring = date('Y-m-d H:i:s').' сохранена RAG заявка id = '.$result['id'].PHP_EOL;
|
|
|
|
|
|
file_put_contents('logs/CreateRAGTicket.log', $logstring, FILE_APPEND);
|
|
|
|
|
|
$output = substr($result['id'], 3);
|
|
|
|
|
|
|
|
|
|
|
|
} catch (WebServiceException $ex) {
|
|
|
|
|
|
$output = $ex->getMessage();
|
|
|
|
|
|
$logstring = date('Y-m-d H:i:s').' '.$output.PHP_EOL;
|
|
|
|
|
|
file_put_contents('logs/CreateRAGTicket.log', $logstring, FILE_APPEND);
|
|
|
|
|
|
throw new WebServiceException(WebServiceErrorCode::$INVALIDID, $output);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-09-26 10:43:05 +03:00
|
|
|
|
return $output;
|
|
|
|
|
|
}
|