Услуги профессионального Битрикс-программиста

Чат api bitrix24 коробка


CModule::IncludeModule('im'); //чат, мессенджер
ЧАТ (мессенджер)
отправим уведомление в чат (мессенджер)
$arFields = array(
        "NOTIFY_TITLE" => "Новый клиент", //заголовок
        
        "MESSAGE" => "Новый клиент",

   "MESSAGE_TYPE" => IM_MESSAGE_SYSTEM, // IM_MESSAGE_PRIVATE, IM_MESSAGE_CHAT, IM_MESSAGE_OPEN, IM_MESSAGE_SYSTEM, IM_MESSAGE_OPEN_LINE
   "TO_USER_ID" => $userIdTo,
   "FROM_USER_ID" => $userIdFrom,
   //"AUTHOR_ID" => $userIdOther, //может отличаться от FROM_USER_ID
   
   "NOTIFY_TYPE" => IM_NOTIFY_SYSTEM,  // IM_NOTIFY_CONFIRM, IM_NOTIFY_SYSTEM, IM_NOTIFY_FROM
   "NOTIFY_MODULE" => "main", // module id sender (ex: xmpp, main, etc)
   "NOTIFY_EVENT" => "manage", 
        
   
         
);
if(CModule::IncludeModule('im')){
   CIMMessenger::Add($arFields);
}
перезвоните мне от клиента в чат менеджеру
$rsUser = CUser::GetList($by, $order,
    array("ID" => $USER->GetID()),
    array(
        "SELECT" => array("ID","NAME","UF_CONTACT","PERSONAL_MOBILE"),
    )
);
if($arUser = $rsUser->Fetch()){                
    $companyId = $arUser["UF_CONTACT"];        
    if(intval($companyId)>0 && CModule::IncludeModule('crm') && CModule::IncludeModule('im')){                                 
       $arComp = CCrmCompany::GetByID(intval($companyId),false);
       $managerId = $arComp["ASSIGNED_BY_ID"];
       if($managerId >0 && ($USER->GetID() != $managerId)){                        
          $result = CIMMessage::Add(array(  
              'FROM_USER_ID' => $USER->GetID(),  
              'TO_USER_ID' => $managerId, 
              'MESSAGE' => 'Перезвоните мне, пожалуйста! Тел: '.$arUser["PERSONAL_MOBILE"], 
          ));                      
       }
    }
}

получить сообщения
$chatId =  CIMMessage::GetChatId($userAId, $userBId);
$CIMMessage = new CIMMessage(); 
$arParams = array('SPEED_CHECK' => 'N', 'ORDER' => 'ASC', 'USE_SMILES' => 'N', 'USER_LOAD' => 'N', 'LOAD_DEPARTMENT' => 'N');   
$arMessages = $CIMMessage->GetUnreadMessage($arParams); //только непрочитанные
foreach ($arMessages["message"] as $key => $arMes) {
   if($arMes["chatId"]==$chatId){
      $arUnreadMessages[$arMes["id"]] = $arMes["id"];
   }
}

$arMessages = $CIMMessage->GetLastMessage($userAId, $userBId);
$month = array("", "января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря");
               $today = date("Y-m-d");
foreach ($arMessages["message"] as &$arMes) {
                    $printDate =  $arMes["date"]->format("j") ." ". $month[$arMes["date"]->format("n")];
                    $arMes["date_print"] = ($today == $arMes["date"]->format("Y-m-d"))? "Сегодня" : $printDate;
                    $arMes["date_unix"] = $arMes["date"]->getTimestamp();
        $arMes['read'] = (isset($arUnreadMessages[$arMes["id"]]))?"N":"Y";
                    unset($arMes["date"]);                     
}
аватар
$arResult["USER_AVATAR"] = CIMChat::GetAvatarImage($arUser["PERSONAL_PHOTO"]);
пометить прочитанным
$res = $CIMMessage->SetLastId($chatId,$userId,$lastId); //$lastId - последнее прочитанное сообщение

уведомления

$CIMNotify = new CIMNotify();
foreach ($_POST["ID"] as $id) {
    $CIMNotify->MarkNotifyRead($id); //пометить прочитанным
}//получить список
$arNotify = $CIMNotify->GetNotifyList();  
$arResult = [];                
foreach ($arNotify as &$arMes) {
      $printDate =  $arMes["date"]->format("j") ." ". $month[$arMes["date"]->format("n")];
      $arMes["date_print"] = ($today == $arMes["date"]->format("Y-m-d"))? "Сегодня" : $printDate;
      $arMes["date_unix"] = $arMes["date"]->getTimestamp();
      unset($arMes["date"]); 
      $arResult[] = $arMes;                    
}