- Модуль: imbot
- Путь к файлу: ~/bitrix/modules/imbot/lib/itr/designer.php
- Класс: BitrixImBotItrDesigner
- Вызов: Designer::execMenuItem
private function execMenuItem($itemId = '')
{
if ($itemId === '')
{
return true;
}
else if ($itemId === "0")
{
$this->skipShowMenu = true;
}
if (!isset($this->menuItems[$this->currentMenu][$itemId]))
{
return false;
}
$menuItemAction = $this->menuItems[$this->currentMenu][$itemId]['ACTION'];
if ($menuItemAction['HIDE_MENU'])
{
$this->skipShowMenu = true;
}
if (isset($menuItemAction['TEXT']))
{
$messageText = str_replace('#USER_NAME#', $this->userData->getName(), $menuItemAction['TEXT']);
BitrixImBot::addMessage(Array('BOT_ID' => $this->botId), Array(
'DIALOG_ID' => $this->dialogId,
'MESSAGE' => $messageText
));
}
if ($menuItemAction['TYPE'] == Item::TYPE_MENU)
{
$this->setCurrentMenu($menuItemAction['MENU']);
}
else if ($menuItemAction['TYPE'] == Item::TYPE_QUEUE)
{
$chat = new BitrixImopenlinesChat(mb_substr($this->dialogId, 4));
$chat->endBotSession();
}
else if ($menuItemAction['TYPE'] == Item::TYPE_USER)
{
$chat = new BitrixImopenlinesChat(mb_substr($this->dialogId, 4));
$chat->transfer(Array(
'FROM' => $this->botId,
'TO' => $menuItemAction['USER_ID'],
'MODE' => BitrixImopenlinesChat::TRANSFER_MODE_BOT,
'LEAVE' => $menuItemAction['LEAVE']? 'Y': 'N'
));
}
else if ($menuItemAction['TYPE'] == Item::TYPE_BOT)
{
$botId = 0;
$bots = BitrixImBot::getListCache();
foreach ($bots as $botData)
{
if ($botData['CODE'] == $menuItemAction['BOT_CODE'] && $botData['OPENLINE'] == 'Y')
{
$botId = $botData['BOT_ID'];
break;
}
}
if ($botId)
{
$chat = new CIMChat($this->botId);
$chat->AddUser(mb_substr($this->dialogId, 4), $botId);
$chat->DeleteUser(mb_substr($this->dialogId, 4), $this->botId);
}
else if ($menuItemAction['ERROR_TEXT'])
{
$messageText = str_replace('#USER_NAME#', $this->userData->getName(), $menuItemAction['ERROR_TEXT']);
BitrixImBot::addMessage(Array('BOT_ID' => $this->botId), Array(
'DIALOG_ID' => $this->dialogId,
'MESSAGE' => $messageText
));
$this->skipShowMenu = false;
}
}
else if ($menuItemAction['TYPE'] == Item::TYPE_FINISH)
{
$chat = new BitrixImopenlinesChat(mb_substr($this->dialogId, 4));
$chat->answer($this->botId);
$chat->finish();
}
else if ($menuItemAction['TYPE'] == Item::TYPE_FUNCTION)
{
$menuItemAction['FUNCTION']($this);
}
return true;
}