Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**********************************************************************************
- ** The contents of this file are subject to the vtiger CRM Public License Version 1.0
- * ("License"); You may not use this file except in compliance with the License
- * The Original Code is: vtiger CRM Open Source
- * The Initial Developer of the Original Code is vtiger.
- * Portions created by vtiger are Copyright (C) vtiger.
- * All Rights Reserved.
- * telegram config by George Rousopoulos t.me/grousso
- ********************************************************************************/
- class SMSNotifier_telegramOrSms_Provider implements SMSNotifier_ISMSProvider_Model {
- private $_username;
- private $_password;
- private $_parameters = array();
- const SERVICE_URI = 'https://api.telegram.org';
- const smsSERVICE_URI = 'https://bulksmsn.gr/api';
- private static $REQUIRED_PARAMETERS = array('from');
- function __construct() {
- }
- public function getName() {
- return 'telegramOrSms';
- }
- public function setAuthParameters($username, $password) {
- $this->_username = $username;
- $this->_password = $password;
- }
- public function setParameter($key, $value) {
- $this->_parameters[$key] = $value;
- }
- public function getParameter($key, $defvalue = false) {
- if (isset($this->_parameters[$key])) {
- return $this->_parameters[$key];
- }
- return $defvalue;
- }
- public function getRequiredParams() {
- return self::$REQUIRED_PARAMETERS;
- }
- public function getServiceURL($type = false) {
- if ($type) {
- switch (strtoupper($type)) {
- case self::SERVICE_AUTH : return self::SERVICE_URI . '';
- case self::SERVICE_SEND : return self::SERVICE_URI . '';
- case self::SERVICE_QUERY : return self::SERVICE_URI . '/http/query.php';
- }
- }
- return false;
- }
- public function sendPhotogetServiceURL($type = false) {
- if ($type) {
- switch (strtoupper($type)) {
- case self::SERVICE_AUTH : return self::SERVICE_URI . '';
- case self::SERVICE_SEND : return self::SERVICE_URI . '';
- case self::SERVICE_QUERY : return self::SERVICE_URI . '/http/query.php';
- }
- }
- return false;
- }
- public function smsgetServiceURL($type = false) {
- if ($type) {
- switch (strtoupper($type)) {
- case self::SERVICE_AUTH : return self::smsSERVICE_URI . '/http/auth';
- case self::SERVICE_SEND : return self::smsSERVICE_URI . '/http/send.php';
- case self::SERVICE_QUERY : return self::smsSERVICE_URI . '/http/query.php';
- }
- }
- return false;
- }
- protected function prepareParameters() {
- $params = array('username' => $this->_username, 'password' => $this->_password, 'from' => $this->_from);
- foreach (self::$REQUIRED_PARAMETERS as $key) {
- $params[$key] = $this->getParameter($key);
- }
- return $params;
- }
- public function send($message, $tonumbers) {
- if (!is_array($tonumbers)) {
- $tonumbers = array($tonumbers);
- }
- //foreach ($tonumbers as $i => $tonumber) {
- // $tonumbers[$i] = str_replace(array('(', ')', ' ', '+', '-'), '', $tonumber);
- //}
- foreach($tonumbers as $tonumbers) {
- /*
- define $GLOBALS['some-text-for-name'] at
- /modules/SMSNotifier/actions/MassSaveAjax.php
- replace $message = $request->get('message');
- with
- $message = $request->get('message');
- $photo-or-doc = $request->get('photo-or-doc');
- $GLOBALS['some-name-for-var'] = $photo-or-doc;
- Create photo-or-doc field at /layouts/v7/modules/Vtiger/SendSMSForm.tpl
- add
- <br>
- <span><strong>Αν θέλετε να στείλετε και αρχείο επισυνάψτε παρακάτω το link. <br> Να τελείωνει σε pdf, jpeg ή png.</strong></span>
- <br>
- <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>
- at line 65
- add 'LBL_WRITE_YOUR_PHOTO_OR_DOC_HERE' => 'write your photo or doc link here',
- to /languages/en_us/SMSNotifier.php
- */
- $botToken = 'your-bot-token';
- $link = $GLOBALS['some-text-for-name'];
- $sms_username = 'your-sms-api-username';
- $sms_password = 'your-sms-api-pass';
- $sms_sender = 'your-sender-name';
- //If number not starts from 69 use telegram
- if (strpos($tonumbers, '69') !== 0) {
- $message = str_replace("€","",$message);
- $message = implode("\r\n", explode('\r\n', $message)); //line braker for telegram
- $params = $this->prepareParameters();
- $params['text'] = $message;
- $params['chat_id'] = $tonumbers;
- $params['caption'] = $message;
- $params['parse_mode'] ='html';
- //diallekse serviceURL
- if (empty($link)) {
- $serviceURL = 'https://api.telegram.org/bot'.$botToken.'/sendMessage';
- }
- elseif (strpos($link, '.pdf') !== false) {
- $serviceURL = 'https://api.telegram.org/bot'.$botToken.'/sendDocument';
- $params['document'] = $link;
- }
- elseif (strpos($link, '.jpeg') || strpos($link, '.png') || strpos($link, '.jpg') !== false) {
- $serviceURL = 'https://api.telegram.org/bot'.$botToken.'/sendPhoto';
- $params['photo'] = $link;
- }
- $httpClient = new Vtiger_Net_Client($serviceURL);
- $messageId = $httpClient->doGet($params);
- $queryResult = $this->query($messageId);
- $result = array(
- 'id' => $messageId,
- 'status' => $queryResult['status'],
- 'error' => false
- );
- if ($queryResult['status'] == self::MSG_STATUS_FAILED) {
- $result['error'] = true;
- }
- $results = array();
- foreach ($tonumbers as $i => $tonumber) {
- $results[$i] = $result;
- $results[$i]['chat_id'] = $tonumber;
- }
- }
- else {
- $message = implode("\r\n", explode('\r\n', $message)); //line braker
- $params = $this->prepareParameters();
- $params['message'] = $message;
- $params['to'] = $tonumbers;
- $params['username'] = $sms_username;
- $params['password'] = $sms_password;
- $params['from'] = $sms_sender;
- $serviceURL = $this->smsgetServiceURL(self::SERVICE_SEND);
- $httpClient = new Vtiger_Net_Client($serviceURL);
- $messageId = $httpClient->doGet($params);
- $queryResult = $this->query($messageId);
- $result = array(
- 'id' => $messageId,
- 'status' => $queryResult['status'],
- 'error' => false
- );
- if ($queryResult['status'] == self::MSG_STATUS_FAILED) {
- $result['error'] = true;
- }
- $results = array();
- foreach ($tonumbers as $i => $tonumber) {
- $results[$i] = $result;
- $results[$i]['to'] = $tonumber;
- }
- usleep(1000);
- $queryResult = $this->query($messageId);
- $result = array(
- 'id' => $messageId,
- 'status' => $queryResult['status'],
- 'error' => false
- );
- if ($queryResult['status'] == self::MSG_STATUS_FAILED) {
- $result['error'] = true;
- }
- $results = array();
- foreach ($tonumbers as $i => $tonumber) {
- $results[$i] = $result;
- $results[$i]['to'] = $tonumber;
- }
- }
- }
- return $results;
- }
- public function query($messageid) {
- $params = array('username' => $this->_username, 'password' => $this->_password, 'msgid' => $messageid);
- $serviceURL = $this->getServiceURL(self::SERVICE_QUERY);
- $httpClient = new Vtiger_Net_Client($serviceURL);
- $response = $httpClient->doGet($params);
- $result = array();
- if (stripos($response, 'Delivered') !== false) {
- $result['status'] = self::MSG_STATUS_DISPATCHED;
- $result['needlookup'] = 0;
- $result['statusmessage'] = 'Message delivered';
- } else if (stripos($response, 'Submitted') !== false) {
- $result['status'] = self::MSG_STATUS_PROCESSING;
- $result['needlookup'] = 1;
- $result['statusmessage'] = 'Message submitted for processing';
- } else {
- $result['status'] = self::MSG_STATUS_FAILED;
- $result['needlookup'] = 0;
- $result['statusmessage'] = 'Message delivery failed.';
- }
- return $result;
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement