Advertisement
grousso

telegramORsms

Mar 18th, 2021 (edited)
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.75 KB | None | 0 0
  1. <?php
  2. /**********************************************************************************
  3.  ** The contents of this file are subject to the vtiger CRM Public License Version 1.0
  4.  * ("License"); You may not use this file except in compliance with the License
  5.  * The Original Code is: vtiger CRM Open Source
  6.  * The Initial Developer of the Original Code is vtiger.
  7.  * Portions created by vtiger are Copyright (C) vtiger.
  8.  * All Rights Reserved.
  9.  
  10.  * telegram config by George Rousopoulos t.me/grousso
  11.  ********************************************************************************/
  12.  
  13. class SMSNotifier_telegramOrSms_Provider implements SMSNotifier_ISMSProvider_Model {
  14.  
  15.     private $_username;
  16.     private $_password;
  17.     private $_parameters = array();
  18.     const SERVICE_URI = 'https://api.telegram.org';
  19.     const smsSERVICE_URI = 'https://bulksmsn.gr/api';
  20.    
  21.     private static $REQUIRED_PARAMETERS = array('from');
  22.    
  23.        
  24.     function __construct() {
  25.        
  26.     }
  27.  
  28.     public function getName() {
  29.         return 'telegramOrSms';
  30.     }
  31.  
  32.     public function setAuthParameters($username, $password) {
  33.         $this->_username = $username;
  34.         $this->_password = $password;
  35.     }
  36.  
  37.     public function setParameter($key, $value) {
  38.         $this->_parameters[$key] = $value;
  39.     }
  40.  
  41.     public function getParameter($key, $defvalue = false) {
  42.         if (isset($this->_parameters[$key])) {
  43.             return $this->_parameters[$key];
  44.         }
  45.         return $defvalue;
  46.     }
  47.  
  48.     public function getRequiredParams() {
  49.         return self::$REQUIRED_PARAMETERS;
  50.     }
  51.  
  52.  
  53.     public function getServiceURL($type = false) {
  54.         if ($type) {
  55.             switch (strtoupper($type)) {
  56.                 case self::SERVICE_AUTH : return self::SERVICE_URI . '';
  57.                 case self::SERVICE_SEND : return self::SERVICE_URI . '';
  58.                 case self::SERVICE_QUERY : return self::SERVICE_URI . '/http/query.php';
  59.             }
  60.         }
  61.         return false;
  62.     }
  63.    
  64.     public function sendPhotogetServiceURL($type = false) {
  65.         if ($type) {
  66.             switch (strtoupper($type)) {
  67.                 case self::SERVICE_AUTH : return self::SERVICE_URI . '';
  68.                 case self::SERVICE_SEND : return self::SERVICE_URI . '';
  69.                 case self::SERVICE_QUERY : return self::SERVICE_URI . '/http/query.php';
  70.             }
  71.         }
  72.         return false;
  73.     }  
  74.    
  75.     public function smsgetServiceURL($type = false) {
  76.         if ($type) {
  77.             switch (strtoupper($type)) {
  78.                 case self::SERVICE_AUTH : return self::smsSERVICE_URI . '/http/auth';
  79.                 case self::SERVICE_SEND : return self::smsSERVICE_URI . '/http/send.php';
  80.                 case self::SERVICE_QUERY : return self::smsSERVICE_URI . '/http/query.php';
  81.             }
  82.         }
  83.         return false;
  84.     }
  85.  
  86.     protected function prepareParameters() {
  87.         $params = array('username' => $this->_username, 'password' => $this->_password, 'from' => $this->_from);
  88.         foreach (self::$REQUIRED_PARAMETERS as $key) {
  89.             $params[$key] = $this->getParameter($key);
  90.         }
  91.         return $params;
  92.     }
  93.  
  94.     public function send($message, $tonumbers) {
  95.         if (!is_array($tonumbers)) {
  96.             $tonumbers = array($tonumbers);
  97.         }
  98.         //foreach ($tonumbers as $i => $tonumber) {
  99.         //  $tonumbers[$i] = str_replace(array('(', ')', ' ', '+', '-'), '', $tonumber);
  100.         //}
  101.         foreach($tonumbers as $tonumbers) {
  102.  
  103.         /*
  104.         define $GLOBALS['some-text-for-name'] at
  105.         /modules/SMSNotifier/actions/MassSaveAjax.php
  106.        
  107.         replace $message = $request->get('message');
  108.        
  109.         with
  110.        
  111.         $message = $request->get('message');
  112.         $photo-or-doc = $request->get('photo-or-doc');
  113.         $GLOBALS['some-name-for-var'] = $photo-or-doc;
  114.        
  115.         Create photo-or-doc field at /layouts/v7/modules/Vtiger/SendSMSForm.tpl
  116.         add
  117.        
  118.         <br>
  119.         <span><strong>Αν θέλετε να στείλετε και αρχείο επισυνάψτε παρακάτω το link. <br> Να τελείωνει σε pdf, jpeg ή png.</strong></span>
  120.         <br>
  121.         <textarea class="form-control smsTextArea" data-rule-required="false" name="photo-or-doc" id="photo-or-doc" maxlength="1600" placeholder="{vtranslate('LBL_WRITE_YOUR_PHOTO_OR_DOC_HERE', $MODULE)}"></textarea>
  122.        
  123.         at line 65
  124.        
  125.         add     'LBL_WRITE_YOUR_PHOTO_OR_DOC_HERE' => 'write your photo or doc link here',
  126.        
  127.         to /languages/en_us/SMSNotifier.php
  128.         */
  129.    
  130.         $botToken = 'your-bot-token';
  131.         $link = $GLOBALS['some-text-for-name'];
  132.         $sms_username = 'your-sms-api-username';
  133.         $sms_password = 'your-sms-api-pass';
  134.         $sms_sender = 'your-sender-name';
  135.                
  136.         //If number not starts from 69 use telegram
  137.     if (strpos($tonumbers, '69') !== 0) {
  138.        
  139.         $message = str_replace("&euro;","",$message);
  140.         $message = implode("\r\n", explode('\r\n', $message)); //line braker for telegram
  141.        
  142.         $params = $this->prepareParameters();
  143.         $params['text'] = $message;
  144.         $params['chat_id'] = $tonumbers;
  145.         $params['caption'] = $message;
  146.         $params['parse_mode'] ='html';
  147.                        
  148.         //diallekse serviceURL
  149.         if (empty($link)) {
  150.         $serviceURL = 'https://api.telegram.org/bot'.$botToken.'/sendMessage';
  151.         }
  152.         elseif (strpos($link, '.pdf') !== false) {
  153.         $serviceURL = 'https://api.telegram.org/bot'.$botToken.'/sendDocument';
  154.         $params['document'] = $link;
  155.         }
  156.         elseif (strpos($link, '.jpeg') || strpos($link, '.png') || strpos($link, '.jpg') !== false) {
  157.         $serviceURL = 'https://api.telegram.org/bot'.$botToken.'/sendPhoto';
  158.         $params['photo'] = $link;
  159.         }
  160.        
  161.         $httpClient = new Vtiger_Net_Client($serviceURL);
  162.         $messageId = $httpClient->doGet($params);
  163.         $queryResult = $this->query($messageId);
  164.         $result = array(
  165.             'id' => $messageId,
  166.             'status' => $queryResult['status'],
  167.             'error' => false
  168.         );
  169.         if ($queryResult['status'] == self::MSG_STATUS_FAILED) {
  170.             $result['error'] = true;
  171.         }
  172.         $results = array();
  173.         foreach ($tonumbers as $i => $tonumber) {
  174.             $results[$i] = $result;
  175.             $results[$i]['chat_id'] = $tonumber;
  176.         }
  177.         }
  178.  
  179.     else {
  180.        
  181.         $message = implode("\r\n", explode('\r\n', $message)); //line braker
  182.         $params = $this->prepareParameters();
  183.         $params['message'] = $message;
  184.         $params['to'] = $tonumbers;
  185.         $params['username'] = $sms_username;
  186.         $params['password'] = $sms_password;
  187.         $params['from'] = $sms_sender;
  188.        
  189.         $serviceURL = $this->smsgetServiceURL(self::SERVICE_SEND);
  190.         $httpClient = new Vtiger_Net_Client($serviceURL);
  191.         $messageId = $httpClient->doGet($params);
  192.         $queryResult = $this->query($messageId);
  193.         $result = array(
  194.             'id' => $messageId,
  195.             'status' => $queryResult['status'],
  196.             'error' => false
  197.         );
  198.         if ($queryResult['status'] == self::MSG_STATUS_FAILED) {
  199.             $result['error'] = true;
  200.         }
  201.         $results = array();
  202.         foreach ($tonumbers as $i => $tonumber) {
  203.             $results[$i] = $result;
  204.             $results[$i]['to'] = $tonumber;
  205.         }
  206.        
  207.         usleep(1000);
  208.        
  209.         $queryResult = $this->query($messageId);
  210.         $result = array(
  211.             'id' => $messageId,
  212.             'status' => $queryResult['status'],
  213.             'error' => false
  214.         );
  215.         if ($queryResult['status'] == self::MSG_STATUS_FAILED) {
  216.             $result['error'] = true;
  217.         }
  218.        
  219.        
  220.         $results = array();
  221.         foreach ($tonumbers as $i => $tonumber) {
  222.             $results[$i] = $result;
  223.             $results[$i]['to'] = $tonumber;
  224.     }
  225.     }
  226.     }
  227.     return $results;
  228.     }
  229.    
  230.        
  231.     public function query($messageid) {
  232.         $params = array('username' => $this->_username, 'password' => $this->_password, 'msgid' => $messageid);
  233.         $serviceURL = $this->getServiceURL(self::SERVICE_QUERY);
  234.         $httpClient = new Vtiger_Net_Client($serviceURL);
  235.         $response = $httpClient->doGet($params);
  236.         $result = array();
  237.         if (stripos($response, 'Delivered') !== false) {
  238.             $result['status'] = self::MSG_STATUS_DISPATCHED;
  239.             $result['needlookup'] = 0;
  240.             $result['statusmessage'] = 'Message delivered';
  241.         } else if (stripos($response, 'Submitted') !== false) {
  242.             $result['status'] = self::MSG_STATUS_PROCESSING;
  243.             $result['needlookup'] = 1;
  244.             $result['statusmessage'] = 'Message submitted for processing';
  245.         } else {
  246.             $result['status'] = self::MSG_STATUS_FAILED;
  247.             $result['needlookup'] = 0;
  248.             $result['statusmessage'] = 'Message delivery failed.';
  249.         }
  250.  
  251.         return $result;
  252.     }
  253.  
  254. }
  255.  
  256. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement