- Модуль: imconnector
- Путь к файлу: ~/bitrix/modules/imconnector/lib/connectors/network.php
- Класс: BitrixImConnectorConnectorsNetwork
- Вызов: Network::processingInputCommandKeyboard
public function processingInputCommandKeyboard($params, $line): Result
{
$result = new Result();
if (empty($params['USER']) || empty($params['USER']['UUID']))
{
$result->addError(new Error(
'User data not transmitted',
'ERROR_IMCONNECTOR_NOT_TRANSMITTED_USER_DATA',
__METHOD__,
$params
));
}
$userId = 0;
if ($result->isSuccess())
{
$userId = $this->getUserId($params['USER'], false);
if (empty($userId))
{
$result->addError(new Error(
'Failed to find user',
'ERROR_IMCONNECTOR_FAILED_USER',
__METHOD__,
$params
));
}
}
// Interactive Message
if (
$result->isSuccess()
&& isset($params['COMMAND'])
&& isset($params['COMMAND_PARAMS'])
)
{
/** @var InteractiveMessageConnectorsNetworkInput $interactiveMessage */
$interactiveMessage = InteractiveMessageInput::init('network');
$resultProcessing = $interactiveMessage->processingCommandKeyboard($params['COMMAND'], $params['COMMAND_PARAMS']);
if (!$resultProcessing->isSuccess())
{
$result->addErrors($resultProcessing->getErrors());
}
}
else
{
$result->addError(new Error(
'Invalid data was transmitted',
'IMCONNECTOR_INTERACTIVE_MESSAGE_ERROR_NOT_LOAD_CORRECT_DATA',
__METHOD__,
['command' => $params['COMMAND'] ?? '-empty-', 'data' => $params['COMMAND_PARAMS'] ?? '-empty-']
));
}
// IM commands
if (
$result->isSuccess()
&& isset($params['MESSAGE_ID'])
&& (int)$params['MESSAGE_ID'] > 0
)
{
$messageId = (int)$params['MESSAGE_ID'];
$message = ImModelMessageTable::getById($messageId)->fetch();
if ($message)
{
$relations = CIMChat::getRelationById($message['CHAT_ID'], false, false, false);
if (isset($relations[$userId]))
{
$chat = ImModelChatTable::getById($message['CHAT_ID'])->fetch();
$messageFields = $params;
$messageFields['FROM_USER_ID'] = $userId;
$messageFields['TO_CHAT_ID'] = $message['CHAT_ID'];
$messageFields['MESSAGE'] = '/'.$params['COMMAND'].' '.$params['COMMAND_PARAMS'];
$messageFields['MESSAGE_TYPE'] = $relations[$userId]['MESSAGE_TYPE'];
$messageFields['AUTHOR_ID'] = $userId;
$messageFields['COMMAND_CONTEXT'] = $params['COMMAND_CONTEXT'] ?? 'KEYBOARD';
$messageFields['CHAT_ENTITY_TYPE'] = $chat['ENTITY_TYPE'];
$messageFields['CHAT_ENTITY_ID'] = $chat['ENTITY_ID'];
ImCommand::onCommandAdd($messageId, $messageFields);
}
}
}
$result->setResult([
'PARAMS' => $params,
'USER_ID' => $userId,
]);
return $result;
}