Per creare un sistema che ci permetta di inviare messaggi via Telegram tramite Vtiger e l’uso dei Workflow possiamo procedere come segue :

Creare un file chiamato registra.php ed inserirlo nella cartella principale di Vtiger. Richiamare tale file una sola volta in modo tale da registrare nel Database di Vtiger il metodo personalizzato che abbiamo creato e che ci permetterà di richiamare la funzione personalizzata contenuta in un altro file ( HelpDeskHandler.php ) che creeremo tra poco.

Il file registra.php deve avere il seguente contenuto:

<?php
/*
I workflows invocano funzioni personalizzate. Ad esempio possiamo registrare il file registra.php

Questo permetterà di registrare una funzione per un metodo specifico creatonel file myexample.inc 

Questa funzione di metodo può essere richiamata da : 
workflows < new condition < new task < invoke custom function

come registrare la funzione:
per registrare la funzione il file deve essere posizionato nella cartella radice di vtiger ed essere richiamato manualmente dal browser (solo una volta) esempio : http://www.mydomain.com/vtiger/registra.php

Attenzione : Richiama questo file solamente una volta ...
ogni volta che richiami questo file, verrà aggiunta la funzione alla tabella vtiger_workflowtasks_entitymethod nel database.

Se richiami due volte questo file, verrà aggiunta due volte questa funzione.

Per rimuovere una funzione con metodo registrato dovrai rimuoverla manualmente dalla tabella vtiger_workflowtasks_entitymethod del database.

$emm-<addentitymethod("modulename", "mymethodname", "modules/workflow/myexample.inc", "myexamplefunctionname");
modulename - nomi validi per i moduli sono: contacts, Helpdesk, ecc...

mymethodname - questo è il nome che comprarirà nella lista a tendina e da cui potrai selezionare.

modules/workflow/myexample.inc - il percorso e nome file che contiene la funzione del metodo. 

Se la cartella modules/workflow/ non esiste, puoi semplicemente crearla!

mymethodfunctionname - il nome della funzione del metodo dichiarato nel file myexample.inc
*/

require_once 'include/utils/utils.php';
require 'modules/com_vtiger_workflow/VTEntityMethodManager.inc';
$emm = new VTEntityMethodManager($adb);
$emm->addEntityMethod("HelpDesk", "SendTelegram", "modules/HelpDesk/HelpDeskHandler.php", "HelpDesk_SendTelegram");
echo 'addentitymethod complete!';
?>

Modificare il file HelpDeskHandler.php (che si trova in /vtigercrm/modules/HelpDesk) ed inserire il seguente codice :

function HelpDesk_SendTelegram($entityData){
	
	//echo "<pre>";
	//var_dump($entityData);
	//echo "</pre>";
	
	$adb = PearDatabase::getInstance();
	$telegrambot='numero_identificativo_del_bot';  //bot aggiunto al canale e al gruppo
	//$telegramchatid=id_della_chat;	//chat
	//$telegramchatid=-id_del_gruppo;   //gruppo
	$telegramchatid=-id_del_canale; //canale
	$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');
		


	//$msg=$entityData->get('description');
	
	$msg= '*Nuovo Ticket relativo a : *' .$parentname . "\n\n" .'*Problema riferito : *' .$entityData->get('description') . "\n\n" .'*Soluzione : *' .$entityData->get('solution');
	
	$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;

//telegram('This is a test message sent to Telegram bot at'.time());


}

Fatto quanto appena descritto, possiamo creare un Workflow e richiamare la nostra funzione personalizzata scegliendola dal menu a tendina.

Per istruzioni su come creare un gruppo o canale o bot in Telegram si rimanda ad altro articolo ancora da scrivere.

Potete testare il vostro script creando un file .php nella cartella radice di Vtiger inserendo il seguente codice e richiamando tale file dal vostro browser:

<?php
$telegrambot='723421946:AAHaJv32DEfi352352VdzJZAaShtfrak'; //ho modificato per ragione di sicurezza mettendo lettere a caso
$telegramchatid=-34421860;  //ho modificato per ragione di sicurezza mettendo numeri a caso

function inviaTelegram($msg) {
  global $telegrambot,$telegramchatid;
  $msg= "messaggio inviato manualmente da php tramite url";
  $url='https://api.telegram.org/bot'.$telegrambot.'/sendMessage';$data=array('chat_id'=>$telegramchatid,'text'=>$msg);
  $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);
  return $result;
}

inviaTelegram ($msg);

?>
Categorie: VtigerCRM