Custom SMS & Email Notifications for Perfex CRM

Custom SMS & Email Notifications for Perfex CRM v.2.3.2

No permission to download

maxpayneinfo

Well-known member
Trusted Uploader
Jan 5, 2021
650
1,278
100
Universe
how we can add custom sms gateway here help please or any other module to add your own smsgateway ?
Need some coding knowledge i have added my own whatsapp gateway by replacing msg91 core files and its working perfectly from last 1+ year.
 

maxpayneinfo

Well-known member
Trusted Uploader
Jan 5, 2021
650
1,278
100
Universe
Can you share us your tips :) ?
Replace this code under application/libraries/sms > sms_msg91.php
with my link you can replace your sms provider link and country code but make sure your provider api structure support this type of variables in api

Code:
<?php

defined('BASEPATH') or exit('No direct script access allowed');

class Sms_msg91 extends App_sms
{
    private $auth_key;

    private $sender_id;

    private $apiRequestUrl = 'http://api.msg91.com/api/v2/sendsms';

    private $worldRequestUrl = 'http://msg.dsuinfotech.com/api/v2/sendhttp.php?';
    private $worldRequestUrlDSU = 'https://wa.apikaro.in/send';

    public function __construct()
    {
        parent::__construct();

        $this->sender_id = $this->get_option('msg91', 'sender_id');
        $this->auth_key  = $this->get_option('msg91', 'auth_key');
        $this->api_type  = $this->get_option('msg91', 'api_type');

        $this->add_gateway('msg91', [
                'info'    => "<p>Whatsapp API integration</p><hr class='hr-10'>",
                'name'    => 'DSU SMS',
                'options' => [
                    [
                        'name'  => 'sender_id',
                        'label' => 'Sender ID',
                        'info'  => '<p><a href="https://wa.apikaro.in" target="_blank">https://wa.apikaro.in</a></p>',
                    ],
                    [
                        'name'          => 'api_type',
                        'field_type'    => 'radio',
                        'default_value' => 'api',
                        'label'         => 'Api Type',
                        'options'       => [
                            ['label' => 'World', 'value' => 'world'],
                            ['label' => 'Api', 'value' => 'api'],
                        ],
                    ],
                    [
                        'name'  => 'auth_key',
                        'label' => 'Auth Key',
                    ],
                ],
            ]);
    }

    /**
     * Send sms
     *
     * @param  string $number
     * @param  string $message
     *
     * @return boolean
     */
    public function send($number, $message)
    {
        if ($this->api_type == 'world') {
            return $this->sendViaWorldRoute($number, $message);
        }

        return $this->sendViaApiRoute($number, $message);
    }

    /**
     * Send SMS via World Route
     *
     * @param  string $number
     * @param  string $message
     *
     * @return boolean
     */
    public function sendViaWorldRoute($number, $message)
    {
        try {
            $queryString = array_merge($this->getCommonQueryString(), [
                'mobiles'  => $number,
                'message'  => $message,
                'authkey'  => $this->auth_key,
                'response' => 'json',
            ]);
            
            $queryStringDSU = [
                'sender'  => $this->sender_id,
                'receiver'  => '91'.$number,
                'msgtext'  => $message,
                 'appurl'    => 'https://wa.apikaro.in',
                'token'  => $this->auth_key
            ];
            
            // $response = $this->client->request(
            //     'GET',
            //     $this->worldRequestUrl . '?' . http_build_query($queryString),
            //     $this->getCommonGuzzleOptions()
            // );
            
            $response = $this->client->request(
                'GET',
                $this->worldRequestUrlDSU . '?' . http_build_query($queryStringDSU),
                $this->getCommonGuzzleOptions()
            );
            
            $result = json_decode($response->getBody());

            if ($result->type == 'success') {
                $this->logSuccess($number, $message);

                return true;
            }

            $this->set_error($result->message);
        } catch (\Exception $e) {
            $response = json_decode($e->getResponse()->getBody()->getContents(), true);

            $this->set_error($response['message']);
        }

        return false;
    }

    /**
     * Send SMS via the regular API route
     *
     * @param  string $number
     * @param  string $message
     *
     * @return boolean
     */
    public function sendViaApiRoute($number, $message)
    {
        try {
            $response = $this->client->request(
                'POST',
                $this->apiRequestUrl,
                array_merge($this->getCommonGuzzleOptions(), [
                    'body' => json_encode(array_merge($this->getCommonQueryString(), [
                        'sms' => [
                            ['message' => urlencode($message), 'to' => [$number]],
                        ],
                    ])),
                    'headers' => [
                        'authkey' => $this->auth_key,
                    ],
                ])
            );

            $result = json_decode($response->getBody());

            if ($result->type == 'success') {
                $this->logSuccess($number, $message);

                return true;
            }

            $this->set_error($result->message);
        } catch (\Exception $e) {
            $response = json_decode($e->getResponse()->getBody()->getContents(), true);

            $this->set_error($response['message']);
        }

        return false;
    }

    /**
     * Get the sender name
     *
     * @return string
     */
    protected function getSender()
    {
        return empty($this->sender_id) ? get_option('companyname') : $this->sender_id;
    }

    /**
     * Get the API common query string options
     *
     * @return array
     */
    protected function getCommonQueryString()
    {
        return hooks()->apply_filters('msg91_common_options', [
                'route'   => 1,
                'country' => 0,
                'unicode' => 1,
                'sender'  => $this->getSender(),
            ]);
    }

    /**
     * Get the API common query string options
     *
     * @return array
     */
    protected function getCommonGuzzleOptions()
    {
        return [
            'allow_redirects' => [
                'max' => 10,
            ],
            'version'        => CURL_HTTP_VERSION_1_1,
            'decode_content' => [CURLOPT_ENCODING => ''],
            ];
    }
}
 
  • Love
Reactions: planet and NoOoB

maxpayneinfo

Well-known member
Trusted Uploader
Jan 5, 2021
650
1,278
100
Universe

Add-on SMS Manager Module for Perfex CRM​

anyone can help me to search this module discussion on babiato i am not able to find. thank you
 
  • Like
Reactions: lineset1819

About us

  • Our community has been around for many years and pride ourselves on offering unbiased, critical discussion among people of all different backgrounds. We are working every day to make sure our community is one of the best.

Quick Navigation

User Menu