تالار گفتمان nCIS.ir

نسخه‌ی کامل: نمونه کدی برای وصل شدن و کار کرن با پنل های ارسال پیامک
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
نمونه کدی برای وصل شدن  و کار کرن با پنل های ارسال پیامک اگر هست ممنون میشم بزارید
من طبق API سایت SMS.ir توضیح میدم که خودمون هم نماینده‌اش هستیم و درصورت تمایل میتونین ازطریق ایمیل به واحد فروش sales@ncis.ir درخواست بدین تا در اختیارتون قرار بگیره و بتونین ازطریق نشانی newsms.ncis.ir از این پنل استفاده کنید.

ابتدا یک پوشه‌ی components به پروژه‌ی خودتون اضافه کنید و بعد یک فایل جدید به‌اسم SMS.php ایجاد کنید و این کد رو داخلش بنویسید:
<?php

namespace appcomponents;

use yiibaseComponent;

set_time_limit(0);

class SMS extends Component
{
    public $apiKey;
    public $secretKey;
    public $lineNumber;

    public function send($to, $text)
    {
        $token = $this->getToken();
        if ($token != false) {
            $postData = array(
                'Messages' => [$text],
                'MobileNumbers' => is_array($to) ? $to : [$to],
                'LineNumber' => $this->lineNumber,
                'SendDateTime' => '',
                'CanContinueInCaseOfError' => 'false',
            );
            $url = $this->getAPIMessageSendUrl();
            $SendMessage = $this->execute($postData, $url, $token);
            $object = json_decode($SendMessage);
            if (is_object($object)) {
                $array = get_object_vars($object);
                if (is_array($array)) {
                    $result = $array['Message'];
                } else {
                    $result = false;
                }
            } else {
                $result = false;
            }

        } else {
            $result = false;
        }
        return $result;
    }

    private function getToken()
    {
        $postData = array(
            'apiKey' => $this->apiKey,
            'SecretKey' => $this->secretKey,
            'System' => 'php_rest_v_1_1'
        );
        $postString = json_encode($postData);

        $ch = curl_init($this->getApiTokenUrl());
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json'
        ));
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_POST, count($postString));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);

        $result = curl_exec($ch);
        curl_close($ch);

        $response = json_decode($result);

        $resp = false;

        if (is_object($response)) {
            $resultVars = get_object_vars($response);
            if (is_array($resultVars)) {
                @$IsSuccessful = $resultVars['IsSuccessful'];
                if ($IsSuccessful == true) {
                    @$TokenKey = $resultVars['TokenKey'];
                    $resp = $TokenKey;
                }
            }
        }

        return $resp;
    }

    private function getApiTokenUrl()
    {
        return 'http://RestfulSms.com/api/Token';
    }

    private function getAPIMessageSendUrl()
    {
        return 'http://RestfulSms.com/api/MessageSend';
    }

    private function execute($postData, $url, $token)
    {

        $postString = json_encode($postData);

        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json',
            'x-sms-ir-secure-token: ' . $token
        ));
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_POST, count($postString));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);

        $result = curl_exec($ch);
        curl_close($ch);

        return $result;
    }
}

حالا توی فایل تنظیمات config/web.php این کامپوننت رو معرفی کنید:
'components' => [
    'sms' => [
        'class' => 'appcomponentsSMS',
        'apiKey' => '******',
        'secretKey' => '******',
        'lineNumber' => '******',
    ],
    // ...
],

بجای apiKey و secretKey و lineNumber هم باید مقادیر مربوط به پنل خودتون رو که در قسمت «API برنامه‌نویسان» میتونین تعریف کنین، وارد کنید.

حالا هرجای برنامه که خواستین پیام ارسال کنید، میتونین از این روش کمک بگیرین:
Yii::$app->sms->send($targetNumber, $message); // Single target
// or
Yii::$app->sms->send([$number1, $number2, $number3], $message); // Multiple targets

امیدوارم که روش کار رو متوجه شده باشین.
(29-12-1396، 12:26 ب.ظ)ADMIN نوشته: [ -> ]من طبق API سایت SMS.ir توضیح میدم که خودمون هم نماینده‌اش هستیم و درصورت تمایل میتونین ازطریق ایمیل به واحد فروش sales@ncis.ir درخواست بدین تا در اختیارتون قرار بگیره و بتونین ازطریق نشانی newsms.ncis.ir از این پنل استفاده کنید.

ابتدا یک پوشه‌ی components به پروژه‌ی خودتون اضافه کنید و بعد یک فایل جدید به‌اسم SMS.php ایجاد کنید و این کد رو داخلش بنویسید:
<?php

namespace appcomponents;

use yiibaseComponent;

set_time_limit(0);

class SMS extends Component
{
    public $apiKey;
    public $secretKey;
    public $lineNumber;

    public function send($to, $text)
    {
        $token = $this->getToken();
        if ($token != false) {
            $postData = array(
                'Messages' => [$text],
                'MobileNumbers' => is_array($to) ? $to : [$to],
                'LineNumber' => $this->lineNumber,
                'SendDateTime' => '',
                'CanContinueInCaseOfError' => 'false',
            );
            $url = $this->getAPIMessageSendUrl();
            $SendMessage = $this->execute($postData, $url, $token);
            $object = json_decode($SendMessage);
            if (is_object($object)) {
                $array = get_object_vars($object);
                if (is_array($array)) {
                    $result = $array['Message'];
                } else {
                    $result = false;
                }
            } else {
                $result = false;
            }

        } else {
            $result = false;
        }
        return $result;
    }

    private function getToken()
    {
        $postData = array(
            'apiKey' => $this->apiKey,
            'SecretKey' => $this->secretKey,
            'System' => 'php_rest_v_1_1'
        );
        $postString = json_encode($postData);

        $ch = curl_init($this->getApiTokenUrl());
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json'
        ));
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_POST, count($postString));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);

        $result = curl_exec($ch);
        curl_close($ch);

        $response = json_decode($result);

        $resp = false;

        if (is_object($response)) {
            $resultVars = get_object_vars($response);
            if (is_array($resultVars)) {
                @$IsSuccessful = $resultVars['IsSuccessful'];
                if ($IsSuccessful == true) {
                    @$TokenKey = $resultVars['TokenKey'];
                    $resp = $TokenKey;
                }
            }
        }

        return $resp;
    }

    private function getApiTokenUrl()
    {
        return 'http://RestfulSms.com/api/Token';
    }

    private function getAPIMessageSendUrl()
    {
        return 'http://RestfulSms.com/api/MessageSend';
    }

    private function execute($postData, $url, $token)
    {

        $postString = json_encode($postData);

        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json',
            'x-sms-ir-secure-token: ' . $token
        ));
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_POST, count($postString));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);

        $result = curl_exec($ch);
        curl_close($ch);

        return $result;
    }
}

حالا توی فایل تنظیمات config/web.php این کامپوننت رو معرفی کنید:
'components' => [
    'sms' => [
        'class' => 'appcomponentsSMS',
        'apiKey' => '******',
        'secretKey' => '******',
        'lineNumber' => '******',
    ],
    // ...
],

بجای apiKey و secretKey و lineNumber هم باید مقادیر مربوط به پنل خودتون رو که در قسمت «API برنامه‌نویسان» میتونین تعریف کنین، وارد کنید.

حالا هرجای برنامه که خواستین پیام ارسال کنید، میتونین از این روش کمک بگیرین:
Yii::$app->sms->send($targetNumber, $message); // Single target
// or
Yii::$app->sms->send([$number1, $number2, $number3], $message); // Multiple targets

امیدوارم که روش کار رو متوجه شده باشین.


بسیار عالی تشکر