• Модуль: imbot
  • Путь к файлу: ~/bitrix/modules/imbot/lib/bot/network.php
  • Класс: BitrixImBotBotNetwork
  • Вызов: Network::onReceiveCommand
static function onReceiveCommand($command, $params)
{
	$result = ['RESULT' => 'OK'];

	if ($command === self::COMMAND_OPERATOR_MESSAGE_ADD)
	{
		Log::write($params, 'NETWORK: operatorMessageAdd');

		static::operatorMessageAdd($params['MESSAGE_ID'], [
			'BOT_ID' => $params['BOT_ID'],
			'BOT_CODE' => $params['BOT_CODE'] ?? '',
			'DIALOG_ID' => $params['DIALOG_ID'],
			'MESSAGE' => $params['MESSAGE'],
			'FILES' => $params['FILES'] ?? '',
			'ATTACH' => $params['ATTACH'] ?? '',
			'KEYBOARD' => $params['KEYBOARD'] ?? '',
			'PARAMS' => $params['PARAMS'] ?? '',
			'USER' => $params['USER'] ?? '',
			'LINE' => $params['LINE'] ?? ''
		]);
	}

	else if($command === self::COMMAND_OPERATOR_MESSAGE_UPDATE)
	{
		Log::write($params, 'NETWORK: operatorMessageUpdate');

		static::operatorMessageUpdate($params['MESSAGE_ID'], [
			'BOT_ID' => $params['BOT_ID'],
			'DIALOG_ID' => $params['DIALOG_ID'],
			'MESSAGE' => $params['MESSAGE'],
			'FILES' => $params['FILES'] ?? '',
			'ATTACH' => $params['ATTACH'] ?? '',
			'KEYBOARD' => $params['KEYBOARD'] ?? '',
			'PARAMS' => $params['PARAMS'] ?? '',
			'CONNECTOR_MID' => $params['CONNECTOR_MID'],
		]);
	}

	else if($command === self::COMMAND_OPERATOR_MESSAGE_DELETE)
	{
		Log::write($params, 'NETWORK: operatorMessageDelete');

		static::operatorMessageDelete($params['MESSAGE_ID'], [
			'BOT_ID' => $params['BOT_ID'],
			'DIALOG_ID' => $params['DIALOG_ID'],
			'CONNECTOR_MID' => $params['CONNECTOR_MID'],
		]);
	}

	else if($command === self::COMMAND_OPERATOR_START_WRITING)
	{
		Log::write($params, 'NETWORK: operatorStartWriting');

		static::operatorStartWriting([
			'BOT_ID' => $params['BOT_ID'],
			'DIALOG_ID' => $params['DIALOG_ID'],
			'USER' => isset($params['USER'])? $params['USER']: ''
		]);
	}

	else if($command === self::COMMAND_OPERATOR_MESSAGE_RECEIVED)
	{
		Log::write($params, 'NETWORK: operatorMessageReceived');

		static::operatorMessageReceived([
			'BOT_ID' => $params['BOT_ID'],
			'DIALOG_ID' => $params['DIALOG_ID'],
			'MESSAGE_ID' => $params['MESSAGE_ID'],
			'CONNECTOR_MID' => $params['CONNECTOR_MID'],
			'SESSION_ID' => $params['SESSION_ID']
		]);
	}

	// operator OL session start
	else if($command === self::COMMAND_START_DIALOG_SESSION)
	{
		Log::write($params, 'NETWORK: startDialogSession');

		static::startDialogSession([
			'BOT_ID' => $params['BOT_ID'],
			'DIALOG_ID' => $params['DIALOG_ID'],
			'SESSION_ID' => $params['SESSION_ID'],
			'PARENT_ID' => $params['PARENT_ID'],
			'CLOSE_TERM' => $params['CLOSE_TERM'],
		]);
	}

	// operator OL session finish
	else if($command === self::COMMAND_FINISH_DIALOG_SESSION)
	{
		Log::write($params, 'NETWORK: finishDialogSession');

		static::finishDialogSession([
			'BOT_ID' => $params['BOT_ID'],
			'DIALOG_ID' => $params['DIALOG_ID'],
			'SESSION_ID' => $params['SESSION_ID'],
			'PARENT_ID' => $params['PARENT_ID'],
			'CLOSE_TERM' => $params['CLOSE_TERM'],
		]);
	}

	// checking access to public url
	else if($command === self::COMMAND_CHECK_PUBLIC_URL)
	{
		Log::write($params, 'NETWORK: '.self::COMMAND_CHECK_PUBLIC_URL);

		$result = ['PONG' => 'OK'];
	}

	else
	{
		$result = new ImBotError(__METHOD__, 'UNKNOWN_COMMAND', 'Command is not found');
	}

	return $result;
}