public function sendAutomaticMessage($idTask, $idConfigTask, $configTask = []): Result
{
$result = new Result();
if (empty($configTask))
{
$configTask = ConfigAutomaticMessagesTable::getByPrimary($idConfigTask)->fetch();
}
if (
$this->session['CLOSED'] !== 'Y'
&& $this->session['STATUS'] < self::STATUS_WAIT_CLIENT
&& !empty($configTask)
&& $configTask['ACTIVE'] === 'Y'
&& Loader::includeModule('imconnector')
&& $this->isEnableSendSystemMessage()
)
{
$operatorKeyboard = new BitrixImBotKeyboard();
$connectorKeyboard = [];
if (!empty($configTask['TEXT_BUTTON_CLOSE']))
{
$bottomColor = '#86AE1E';
$textColor = '#fff';
$operatorKeyboard->addButton([
'TEXT' => $configTask['TEXT_BUTTON_CLOSE'],
'ACTION' => 'SEND',
'ACTION_VALUE' => $configTask['LONG_TEXT_BUTTON_CLOSE'],
'BG_COLOR' => $bottomColor,
'TEXT_COLOR' => $textColor,
'DISPLAY' => 'LINE',
'DISABLED' => 'Y'
]);
$connectorKeyboard[] = [
'TEXT_BUTTON' => $configTask['TEXT_BUTTON_CLOSE'],
'LONG_TEXT' => $configTask['LONG_TEXT_BUTTON_CLOSE'],
'BOTTOM_COLOR' => $bottomColor,
'TEXT_COLOR' => $textColor,
'DISPLAY' => 'LINE',
'COMMAND' => BitrixImConnectorInteractiveMessageInput::COMMAND_SESSION,
'COMMAND_PARAMS' => [
'COMMAND' => BitrixImConnectorInteractiveMessageInput::COMMAND_SESSION_CLOSE,
'SESSION_ID' => $this->session['ID'],
'CHAT_ID' => $this->session['CHAT_ID'],
'TASK_ID' => $idTask,
'CONFIG_TASK_ID' => $idConfigTask,
],
];
}
if (!empty($configTask['TEXT_BUTTON_CONTINUE']))
{
$bottomColor = '#EE322D';
$textColor = '#fff';
$operatorKeyboard->addButton([
'TEXT' => $configTask['TEXT_BUTTON_CONTINUE'],
'ACTION' => 'SEND',
'ACTION_VALUE' => $configTask['LONG_TEXT_BUTTON_CONTINUE'],
'BG_COLOR' => $bottomColor,
'TEXT_COLOR' => $textColor,
'DISPLAY' => 'LINE',
'DISABLED' => 'Y'
]);
$connectorKeyboard[] = [
'TEXT_BUTTON' => $configTask['TEXT_BUTTON_CONTINUE'],
'LONG_TEXT' => $configTask['LONG_TEXT_BUTTON_CONTINUE'],
'BOTTOM_COLOR' => $bottomColor,
'TEXT_COLOR' => $textColor,
'DISPLAY' => 'LINE',
'COMMAND' => BitrixImConnectorInteractiveMessageInput::COMMAND_SESSION,
'COMMAND_PARAMS' => [
'COMMAND' => BitrixImConnectorInteractiveMessageInput::COMMAND_SESSION_CONTINUE,
'SESSION_ID' => $this->session['ID'],
'CHAT_ID' => $this->session['CHAT_ID'],
'TASK_ID' => $idTask,
'CONFIG_TASK_ID' => $idConfigTask,
],
];
}
if (!empty($configTask['TEXT_BUTTON_NEW']))
{
$bottomColor = '#0CA7D9';
$textColor = '#fff';
$operatorKeyboard->addButton([
'TEXT' => $configTask['TEXT_BUTTON_NEW'],
'ACTION' => 'SEND',
'ACTION_VALUE' => $configTask['LONG_TEXT_BUTTON_NEW'],
'BG_COLOR' => $bottomColor,
'TEXT_COLOR' => $textColor,
'DISPLAY' => 'LINE',
'DISABLED' => 'Y'
]);
$connectorKeyboard[] = [
'TEXT_BUTTON' => $configTask['TEXT_BUTTON_NEW'],
'LONG_TEXT' => $configTask['LONG_TEXT_BUTTON_NEW'],
'BOTTOM_COLOR' => $bottomColor,
'TEXT_COLOR' => $textColor,
'DISPLAY' => 'LINE',
'COMMAND' => BitrixImConnectorInteractiveMessageInput::COMMAND_SESSION,
'COMMAND_PARAMS' => [
'COMMAND' => BitrixImConnectorInteractiveMessageInput::COMMAND_SESSION_NEW,
'SESSION_ID' => $this->session['ID'],
'CHAT_ID' => $this->session['CHAT_ID'],
'TASK_ID' => $idTask,
'CONFIG_TASK_ID' => $idConfigTask,
],
];
}
$chatEntityId = Chat::parseLinesChatEntityId($this->chat->getData('ENTITY_ID'));
$connectorId = $chatEntityId['connectorId'] ?? '';
InteractiveMessageOutput::getInstance($this->session['CHAT_ID'], ['connectorId' => $connectorId])->setKeyboardData($connectorKeyboard);
Im::addMessage([
'TO_CHAT_ID' => $this->session['CHAT_ID'],
'MESSAGE' => $configTask['MESSAGE'],
'SYSTEM' => 'Y',
'IMPORTANT_CONNECTOR' => 'Y',
'NO_SESSION_OL' => 'Y',
'RECENT_ADD' => 'N',
'PARAMS' => [
'CLASS' => 'bx-messenger-content-item-ol-output',
'IMOL_FORM' => 'offline',
'TYPE' => 'lines',
'COMPONENT_ID' => 'bx-imopenlines-form-offline',
'NOTIFY' => 'N',
],
'KEYBOARD' => $operatorKeyboard,
]);
}
$resultDelete = SessionAutomaticTasksTable::delete($idTask);
if (!$resultDelete->isSuccess())
{
$result->addErrors($resultDelete->getErrors());
}
Debug::addSession($this, __METHOD__, ['result' => $result]);
return $result;
}