• Модуль: imbot
  • Путь к файлу: ~/bitrix/modules/imbot/lib/itrmenu.php
  • Класс: BitrixImBotItrMenu
  • Вызов: ItrMenu::makeItemKeyboard
public function makeItemKeyboard(string $itemId, array $params): ?Keyboard
{
	$keyboard = null;

	$userAccess = $params['USER_LEVEL'] ?? null;
	$supportLevel = $params['SUPPORT_LEVEL'] ?? null;

	$menuItem = $this->getItem($itemId);

	if (isset($menuItem['buttons']))
	{
		$keyboard = new Keyboard($this->botId);

		foreach ($menuItem['buttons'] as $buttonData)
		{
			// check access
			if ($userAccess && isset($buttonData['access']))
			{
				$buttonAccess = preg_split("/[s,]+/", $buttonData['access']);
				if ($buttonAccess && !in_array($userAccess, $buttonAccess, true))
				{
					continue;
				}
			}

			// check support level
			if ($supportLevel && isset($buttonData['support_level']))
			{
				$buttonSupportLevel = preg_split("/[s,]+/", $buttonData['support_level']);
				if ($buttonSupportLevel && !in_array($supportLevel, $buttonSupportLevel, true))
				{
					continue;
				}
			}

			$button = [
				'TEXT' => $buttonData['text'],
				'DISPLAY' => ($buttonData['display'] ?? "BLOCK"),
				'BG_COLOR' => ($buttonData['back_color'] ??  self::MENU_BUTTON_ACTIVE),
				'TEXT_COLOR' => ($buttonData['text_color'] ?? "#fff"),
				'BLOCK' => "Y",
			];
			switch ($buttonData['action'])
			{
				case self::MENU_ACTION_NEXT:
					$button["COMMAND"] = self::COMMAND_MENU;
					$button["COMMAND_PARAMS"] = $buttonData['action_value'];
					break;

				case self::MENU_ACTION_LINK:
					$button["LINK"] = $buttonData['action_value'];
					break;

				case self::MENU_ACTION_HELP:
					if ($buttonData['action_value'] && !empty($buttonData['action_value']))
					{
						$button["FUNCTION"] = "BX.Helper.show('redirect=detail&HD_ID=".$buttonData['action_value']."')";
					}
					else
					{
						$button["FUNCTION"] = "BX.Helper.show()";
					}
					break;

				case self::MENU_ACTION_QUEUE:
					$button["COMMAND"] = self::COMMAND_MENU;
					$button["COMMAND_PARAMS"] = self::MENU_EXIT_ID;
					// add some additional action params
					if ($buttonData['action_value'] && !empty($buttonData['action_value']))
					{
						$button["COMMAND_PARAMS"] .= ';'.$buttonData['action_value'];
					}
					break;
			}
			$keyboard->addButton($button);
		}
	}

	return $keyboard;
}