Tempo fa ho scritto una funzione per far si che si possa inviare messaggi ad un gruppo di persone tramite Telegram usando il CRM Vtiger.

In questo articolo non spiegherò come configurare un gruppo di Telegram, e nemmeno un Bot, mi limiterò a riportare il codice necessario affinché sia possibile inviare tramite Vtiger CRM dei messaggi Telegram per mezzo dei Workflow ma solo in determinati orari e solo se non siamo nel Weekend.

Perchè ho voluto introdurre questa limitazione?
Semplice! Non desidero essere disturbato via Telegram durante i Weekend o comunque fuori orario di lavoro. Siccome il CRM potrebbe inviarmi n messaggi tramite Workflow programmati, voglio evitare di essere disturbato nei momenti di vita privata.

Ecco il codice che va inserito nel file Heldeskhandler.php che si trova in Modules\Helpdesk :

<?php
//definisco variabili che userò come variabili globali per altre funzioni
global $weekend;
$weekend = false;
global $fuoriorario;
$fuoriorario = false;

		function finesettimana(){
		global $weekend;
		date_default_timezone_set('Europe/Rome');
		
		$date = date("m/d/Y");
		$weekendDay = false;
		$day = date("D", strtotime($date));
		 
		//Check to see if it is equal to Sat or Sun.
		if($day == 'Sat' || $day == 'Sun'){
			//Set our $weekendDay variable to TRUE.
			$weekendDay = true;
		}
		 
		//Output for testing purposes.
		if($weekendDay){
			//echo $date. ' falls on the weekend.';
			$weekend =true;
		} else{
			//echo $date. ' falls on a weekday.';
			$weekend =false;
			}
		}


	  function orariolavoro(){
		//funzione che controlla che ore sono per capire se orario lavorativo o meno
		global $fuoriorario;
		$fuoriorario = false;
  
		date_default_timezone_set('Europe/Rome');
		
		  $oraattuale = date('H:i', time());
		//echo $oraattuale;
		//$currentTime = strtotime(date);
		  $orainizio = ('08:30');
		  $orafine = ('18:00');
	
		if ($oraattuale >= $orainizio && $oraattuale <= $orafine) {
			$fuoriorario=false;
		}
		else
		{
			$fuoriorario=true;
        }		
}

function HelpDesk_SendTelegram($entityData){
	
	global $weekend,$fuoriorario;
	
	$adb = PearDatabase::getInstance();
	$telegrambot='642342382:AAg5hzsE0M-8BMJj735sgdhsdgKvZHJ8';  //bot aggiunto al canale e al gruppo
	$telegramchatid=-13525235998;   //gruppo 
	$wsAccountId = $entityData->get('parent_id');
	$accountId = explode('x', $wsAccountId);
		
	$resulta = $adb->pquery("SELECT accountname, emailoptout, email1 FROM vtiger_account WHERE accountid=?",	array($accountId[1]));
	$emailoptout = $adb->query_result($resulta,0,'emailoptout');
	$parent_email = $adb->query_result($resulta,0,'email1');
	$parentname = $adb->query_result($resulta,0,'accountname');
	
		//controlla se siamo durante la settimana
		finesettimana();
		//controlla che ore sono per capire se orario lavorativo o meno
		orariolavoro();

		//controlla se non siamo in weekend o fuori orario lavoro allora permette invio messaggi telegram altrimenti no
	    if(($weekend == true )|| ($fuoriorario == true)) 
		{
        //non faccio nulla in quanto siamo in weekend o fuori orario
        } 
    else
		{
            
			$msg= '*Ticket n. : *' .$entityData->get('ticket_no') .
			"\n\n" .'*Relativo a : *' .$parentname . 
			"\n\n" .'*Data e ora : *' .$entityData->get('createdtime') .
			"\n\n" .'*Titolo : *' .$entityData->get('ticket_title') . 
			"\n\n" .'*Problema riferito : *' .$entityData->get('description') .
			"\n\n" .'*Priorità : *' .$entityData->get('ticketpriorities') .
			"\n\n" .'*Importanza : *' .$entityData->get('ticketseverities') .
			"\n\n" .'*Categoria : *' .$entityData->get('ticketcategories');
			$msg = html_entity_decode($msg, ENT_QUOTES | ENT_XML1, 'UTF-8' );
			$url='https://api.telegram.org/bot'.$telegrambot.'/sendMessage';$data=array('chat_id'=>$telegramchatid,'text'=>$msg, 'parse_mode' => 'markdown');
			$options=array('http'=>array('method'=>'POST','header'=>"Content-Type:application/x-www-form-urlencoded\r\n",'content'=>http_build_query($data),),);
			$context=stream_context_create($options);
			$result=file_get_contents($url,false,$context);
			echo $result;
			return $result;
		}
		
}

Ovviamente per usare il codice riportato qui sopra occorre aver registrato la funzione personalizzata HelpDesk_SendTelegram in modo tale da poterla richiamare nei workflow tramite funzione personalizzata.

Categorie: Android