Код |
---|
public static function SearchByTel($messageId, $messageFields){ $arRes = array(); $arRes["MESSAGEFIELDS"] = $messageFields; \Bitrix\Im\Bot::startWriting(Array('BOT_ID' => self::getBotId()), $messageFields['DIALOG_ID']); //проверка на формат номера if($messageFields["COMMAND_PARAMS"] && !cptools::telcheck($messageFields["COMMAND_PARAMS"])){ $arRes["ERROR"] = "Неправильный формат телефона"; } //нет ошибок if(empty($arRes["ERROR"])){ $arRes["ALLSTATUS"] = cptools::GetAllStatus(); $arRes["TIP_BUYER_LEAD"] = array( "143" => "Покупатель", "145" => "Продавец", "392" => "Создание франшиз" ); $arRes["TIP_BUYER_DEAL"] = array( "275" => "Покупатель", "276" => "Продавец" ); $res = CCrmFieldMulti::GetList(array(), array("TYPE_ID" => "PHONE", "%VALUE" => cptools::FormatPhoneNumber($arRes["MESSAGEFIELDS"]["COMMAND_PARAMS"]))); while($ob = $res->Fetch()){ $arRes["AVALIBL"][$ob["ENTITY_ID"]][] = $ob["ELEMENT_ID"]; }; $messageFields["ATTACH"] = array(); if($arRes["AVALIBL"]){ //находим все лиды связанные с этим номером телефона if(array_key_exists("LEAD", $arRes["AVALIBL"])){ $messageFields["ATTACH"][] = array( "MESSAGE" => "Лиды" ); $res = CCrmLead::GetList(array(), array("ID" => $arRes["AVALIBL"]["LEAD"], "CHECK_PERMISSIONS" => "N"), array("ID", "NAME", "TITLE", "STATUS_ID", "DATE_CREATE", "ASSIGNED_BY", "UF_CRM_1422820217")); while($ob = $res->Fetch()){ $NAMS = array( $ob["ID"], date("d.m.Y", strtotime($ob["DATE_CREATE"])), $ob["TITLE"], $arRes["ALLSTATUS"]["STATUS"][$ob["STATUS_ID"]]["NAME"], $ob["ASSIGNED_BY_NAME"]." ".$ob["ASSIGNED_BY_LAST_NAME"], $arRes["TIP_BUYER_LEAD"][$ob["UF_CRM_1422820217"]] ); $messageFields["ATTACH"][] = array( "LINK" => array( "NAME" => implode(" / ", $NAMS), "LINK" => "/crm/lead/show/".$ob["ID"]."/", ) ); }; } //находим все контакты if(array_key_exists("CONTACT", $arRes["AVALIBL"])){ $messageFields["ATTACH"][] = array( "DELIMITER" => array( 'SIZE' => 200, 'COLOR' => "#c6c6c6" ) ); $messageFields["ATTACH"][] = array( "MESSAGE" => "Контакты" ); $res = CCrmContact::GetList(array(), array("ID" => $arRes["AVALIBL"]["CONTACT"], "CHECK_PERMISSIONS" => "N"), array("ID", "NAME", "TITLE")); while($ob = $res->Fetch()){ $messageFields["ATTACH"][] = array( "LINK" => array( "NAME" => $ob["ID"]." ".$ob["NAME"], "LINK" => "/crm/contact/show/".$ob["ID"]."/", ) ); }; } //находим все компании if(array_key_exists("COMPANY", $arRes["AVALIBL"])){ $messageFields["ATTACH"][] = array( "DELIMITER" => array( 'SIZE' => 200, 'COLOR' => "#c6c6c6" ) ); $messageFields["ATTACH"][] = array( "MESSAGE" => "Компании" ); $res = CCrmCompany::GetList(array(), array("ID" => $arRes["AVALIBL"]["COMPANY"], "CHECK_PERMISSIONS" => "N"), array("ID","NAME", "TITLE")); while($ob = $res->Fetch()){ $messageFields["ATTACH"][] = array( "LINK" => array( "NAME" => $ob["ID"]." ".$ob["NAME"], "LINK" => "/crm/company/show/".$ob["ID"]."/", ) ); }; } } //поиск сделок UF_CRM_1385538384 $res = CCrmDeal::GetList(array(), array("UF_CRM_1385538384" => cptools::FormatPhoneNumber($arRes["MESSAGEFIELDS"]["COMMAND_PARAMS"]), "CHECK_PERMISSIONS" => "N"), array("ID","NAME", "TITLE", "DATE_CREATE", "STAGE_ID", "ASSIGNED_BY", "UF_CRM_566BD63BDD6BE")); while($ob = $res->Fetch()){ //костылище!!! - связанно с разными направлениями в сделках foreach($arRes["ALLSTATUS"] as $key_1 => $ALLSTATUS){ foreach($ALLSTATUS as $key_2 => $NAPRAVLENIE){ if($ob["STAGE_ID"] == $key_2){ $STAUS_DEAL = $NAPRAVLENIE["NAME"]; } } } $NAMS = array( $ob["ID"], date("d.m.Y", strtotime($ob["DATE_CREATE"])), $ob["TITLE"], //$arRes["ALLSTATUS"]["DEAL_STAGE"][$ob["STAGE_ID"]]["NAME"], $STAUS_DEAL, $ob["ASSIGNED_BY_NAME"]." ".$ob["ASSIGNED_BY_LAST_NAME"], ); //log_to_file3($ob, "/test_bot_deal.log"); //log_to_file3($arRes["ALLSTATUS"], "/test_bot_deal.log"); $arRes["DEALS"][] = array( "LINK" => array( "NAME" => implode(" / ", $NAMS), "LINK" => "/crm/deal/show/".$ob["ID"]."/", ) ); }; if($arRes["DEALS"]){ $messageFields["ATTACH"][] = array( "DELIMITER" => array( 'SIZE' => 200, 'COLOR' => "#c6c6c6" ) ); $messageFields["ATTACH"][] = array( "MESSAGE" => "Сделки" ); $messageFields["ATTACH"] = array_merge($messageFields["ATTACH"], $arRes["DEALS"]); } }else{ $arRes["ANSWER"] = $arRes["ERROR"]; } $messageFields['ANSWER'] = $arRes["ANSWER"]; $messageId = self::sendAnswer($messageId, $messageFields); return $messageId; } |
Вот так выглядит чат бот по поиск по телефону...