Документация для разработчиков
Темная тема

Set

Описание и параметры

int
CTicket::Set(
	array arFields,
	int messageID,
	int ticketID,
	char(1) checkRights
	char(1) sendEmailToAuthor
	char(1) sendEmailToTechsupport
);

Метод создает новое обращение, либо модифицирует существующее в случае указания во втором параметре ID сообщения. Возвращает ID созданного обращения, либо ID модифицированного обращения. Метод нестатический.

Параметры метода

ПараметрОписаниеС версии
arFields Массив параметров обращения. В массиве допустимы следующие индексы:
  • *TITLE - заголовок обращения (обязательное поле при создании нового обращения)
  • MESSAGE - тело сообщения (обязательное поле при создании нового обращения)
  • IMAGE - массив описывающий загружаемое изображение; в массиве допустимые следующие индексы:
    • name - исходное имя загружаемого файла
    • type - тип загружаемого файла (например: "image/gif")
    • tmp_name - имя временного файла на сервере
    • error - код ошибки ("0" - нет ошибок)
    • size - размер загружаемого файла
    • MODULE_ID - идентификатор модуля ("support")
  • *OWNER_SID - символьный код автора обращения; можно указать любое значение идентифицирующее автора обращения - email, телефон, адрес и т.п.
  • *OWNER_USER_ID - ID автора обращения (по умолчанию - ID текущего пользователя)
  • *SOURCE_SID - символьный код источника обращения (по умолчанию - "web")
  • *CREATED_MODULE_NAME - идентификатор модуля из которого создаётся обращение (по умолчанию - "support")
  • **MESSAGE_AUTHOR_SID - символьный код автора сообщения (можно указать любое значение идентифицирующее автора сообщения - email, телефон, адрес и т.п.)
  • **MESSAGE_AUTHOR_USER_ID - ID пользователя - автора сообщения (по умолчанию - ID текущего пользователя)
  • **MESSAGE_SOURCE_SID - символьный код источника сообщения (по умолчанию - "web")
  • **MODIFIED_MODULE_NAME - идентификатор модуля из которого обращение модифицируется (по умолчанию - "support")
  • **HIDDEN - "Y" - сообщение будет добавлено как скрытое и будет видимо только сотрудникам техподдержки; "N" - сообщение будет добавлено видимым как для автора обращения так и для сотрудников техподдержки (по умолчанию)
  • CATEGORY_SID - символьный код категории
  • CATEGORY_ID - ID категории.
  • CRITICALITY_SID - символьный код критичности
  • STATUS_SID - символьный код статуса
  • MARK_ID - ID оценки ответов
  • RESPONSIBLE_USER_ID - ID пользователя ответственного за обращение
  • SUPPORT_COMMENTS - комментарий видимый только пользователям входящим в группу техподдержки
  • CLOSE - "Y" - обращение закрыть; "N" - обращение открыть
  • AUTO_CLOSE_DAYS - количество дней по истечении которых автоматически закрыть обращение если за это время от автора не поступило сообщения
* - данное поле может быть использовано для создания новых обращений
** - данное поле используется только при модификации существующих обращений.
MESSAGE_ID ID добавленного сообщения. Необязательный параметр.
TICKET_ID ID модифицируемого обращения.
CHECK_RIGHTS Флаг необходимости проверки прав текущего пользователя: "Y" - необходимо проверить права текущего пользователя под которым создаётся обращение либо модифицируется; "N" - обращения создавать и модифицировать независимо от прав текущего пользователя. Необязательный параметр. Значение по умолчанию - "Y".
SEND_EMAIL_TO_AUTHOR Необязательный параметр. Значение по умолчанию - "Y". 3.3.11
SEND_EMAIL_TO_TECHSUPPORT Необязательный параметр. Значение по умолчанию - "Y". 3.3.11

Примеры использования

Пример кода добавляющего новое обращение в техподдержку приходящего по EMail,
либо добавляющего новое сообщение в обращение если задан $TICKET_ID:
<?
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule("support");
$arFields = array(
	"CREATED_MODULE_NAME"       => "mail",
	"MODIFIED_MODULE_NAME"      => "mail",
	"OWNER_SID"                 => "user@mail.ru",
	"SOURCE_SID"                => "email",
	"MESSAGE_AUTHOR_SID"        => "user@mail.ru",
	"MESSAGE_SOURCE_SID"        => "email",
	"TITLE"                     => "title",
	"MESSAGE"                   => "message"
);
//$TICKET_ID = 866;
$NEW_TICKET_ID = CTicket::Set($arFields, $MESSAGE_ID, $TICKET_ID, "N");
echo "MESSAGE_ID = ".$MESSAGE_ID;
?>


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
1
Вячеслав Королев
Чтобы создать тикет от имени другого пользователя нужно передать поле «CREATED_USER_ID»:
"CREATED_USER_ID" => 1 //ID юзера от имени которого публикуется тикет. В противном случае тикет создастся, но его не будет в списке тикетов у пользователя от имени которого должен был создаться тикет.
4
Дмитрий Налбандян
Почему-то опущена возможность прикрепления файлов через параметр FILES (можно использовать даже вместо IMAGE).

По сути в самой функции происходит такой маппинг:
Код
if(is_set($arFields, "IMAGE")) $arFields["FILES"][] = $arFields["IMAGE"];
 


Соответственно, спокойно можно прикладывать к тикету любые файлы:
Код
CModule::IncludeModule("support"); 
 
// Основные параметры
$arFields = array(
 "CREATED_MODULE_NAME" => "personal",   // Указать нужный id модуля
 "OWNER_USER_ID" => $userId,   // id пользователя
 "SOURCE_SID" => 'web',   
 "TITLE" => 'title',
 "MESSAGE" => 'message',
 "CATEGORY_SID" => $category,   // id категории обращения
);
  

// Прикладываю файл 1
 
// Создаю временный файл на сервере
$screenTmp = tempnam(sys_get_temp_dir(), 'TMP_');
$screenSize = file_put_contents($screenTmp, $imgData); // Записываю во временный файл свою картинку, полученную через ajax  (картинка)  

if ($screenSize) {
 $arFields["FILES"][] = array(
 "name" => "Скриншот экрана с ошибкой.png",
 "type" => "image/png",
 "tmp_name" => $screenTmp,   // путь к файлу на сервере
 "error" => 0,
 "size" => $screenSize   // размер файла
 );
}
   

// Создаю временный файл с диагностической информацией
$debugTmp = tempnam(sys_get_temp_dir(), 'TMP_');
$debugSize = file_put_contents($debugTmp, $diagMsg); // Записываю в файл диагностическую информацию  (html файл)

// Прикладываю файл 2
if ($debugSize) {
 $arFields["FILES"][] = array(
 "name" => "Диагностическая информация рабочего места.html",
 "tmp_name" => $debugTmp,   // путь к файлу на сервере
 "error" => 0,
 "size" => $debugSize   // размер файла

 );
} 
3
Николай Складанюк
Можно использовать пользовательские поля, просто указав их символьный код в массиве:

Код
$arFields = array( 
   "CREATED_MODULE_NAME" => "mail", 
   "MODIFIED_MODULE_NAME" => "mail", 
   "OWNER_SID" => "user@mail.ru", 
   "SOURCE_SID" => "email", 
   "MESSAGE_AUTHOR_SID" => "user@mail.ru", 
   "MESSAGE_SOURCE_SID" => "email", 
   "TITLE" => "title", 
   "MESSAGE" => "message" 
   "UF_ORGANIZATION" => "10"
);
 
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх