آموزش به کار بردن وب سرویس سامانه پیامک آوا

همه ی کوشش ما بر این بوده که وب سرویس سامانه کاربند پسند و ساده باشد. چنانچه شما اینگونه نمی اندیشید میتوانید دیدگاه خودتان را با ما در میان بگذارید.

نکته :برون رفت همه ی متد های سامانه از گونه ی Json میباشد.

درباره متد send_voice :

  • username: شناسه کاربری
  • password: گذر واژه
  • uniqid: برای اینکه درخواست تکراری نفرستید
  • title: دیباچه پیامک آوا
  • try: شماره تلاش، برای نمونه ۲ بار
  • try_interval: بازه زمانی تلاش،‌ برای نمونه شماره ی ۵ که نشانگر ۵ دقیقه میباشد
  • numbers: لیست شماره ها که باید array باشد
  • date: زمان که میتواند yyyy/mm/dd HH:ii و یا timestamp باشد
  • calculate: اگر یک باشد هزینه پیام آوا را بر میگرداند و اگر صفر باشد پیام آوا فرستاده میشود.
  • files: پیوست ها که میتواند آدرس پیوست و یا آی دی پیوست باشد ( آی دی پیوست از متد upload )
  • priceid: اگر خالی باشد هزینه با پکیج کمتر پیش انگار گزینش میشود و یا اینکه شما میتوانید خودتان یک پکیج را گزینش کنید. اگر میخواهید خودتان یک پکیج را گزینش کنید متد get_voice_feature را به کار ببرید.
  • callerid: شماره ای که با آن پیام را میفرستید. پیش انگار : 38332140
  • kind: گونه پیام آوا که میتواند پیام آوا باشد و یا دیدگاه سنج ( پیام آوا : ۱ و دیدگاه سنج : ۲ )
  • draftid: میتوانید با متد draft همه ی شماره های خود را یکجا داشته باشید و سپس با آی دی آن درخواست خود را بفرستید.
  • adata: این پارامتر برای سایر شماره های ما میباشد. ( فرستادن به شماره های ثابت اصفهان و یا کد پستی و ... )

نمونه کد php با SoapClient

Copy
<?php
ini_set("display_errors", "On");
ini_set("soap.wsdl_cache_enabled", "0");

$wsdl="http://www.vpayam.ir/webservice/ws.php?wsdl"; 

$client=new soapclient( $wsdl ) or die("Error");

$username = "user";
$password = "pass";

$response = $client->__call("parsip.send_voice", array( $username, $password, "", "تست است", "0", "0", array( "09131111112", "09131111113" ), time(), 0, array( "http://www.../audio.wav" ), 0, "38332140", "1" ) );

$res = json_decode( $response, true );

print_r( $res );

if( $res["status"] === 1 ) {

    $data = $res["data"];

    $response = $client->__call("parsip.get_voice_info", array(  $username, $password, $data["id"] ) );
     
    $result = json_decode( $response, true );

    print_r( $result );


    $response = $client->__call("parsip.get_voice_detail", array(  $username, $password, $data["id"], 1, 100 ) );
     
    $result = json_decode( $response, true );

    print_r( $result );

}

پیام های وبر سرویس


هر پیامی که وب سرویس سامانه بر میگرداند در برگیرنده یک messageid هست. ما اینجا همه ی messageid ها را به همراه پیام آن به شما نشان میدهیم.

نمایش messageid به همراه message آن

Copy
Array
(
    [6] => خواهشمند است یک شماره گیرنده را گزینش کنید
    [7] => هزینه پیامک آوای شما نباید صفر باشد !‌
    [8] => سرپرست شما نرخ پیامک آوا ندارد !
    [9] => هزینه پیامک آوا را گزینش کنید
    [10] => شماره گزینش شده درست نمیباشد 
    [11] => هزینه پیامک گزینش شده درست نمیباشد 
    [13] => زمان باید بیشتر از اکنون باشد
    [14] => دارایی سرپرست نخست شما به اندازه نمیباشد !
    [15] => دارایی شما به اندازه نمیباشد 
    [16] => دارایی سرپرست شما به اندازه نمیباشد 
    [17] => شناسه کاربری و یا گذواژه نادرست است.
    [18] => این uniqid پیش از این بکار رفته است
    [20] => خواهشمند است آی دی یک پیوست را گزینش کنید
    [21] => شما بیش از یک شماره دارید. خواهشمند است یک شماره را گزینش کنید
    [22] => این شماره از آن شما نمیباشد ! 
    [23] => ارزیابی هزینه پیامک آوا
    [100] => درخواست فرستادن پیامک آوا افزوده شد و پس از بررسی فرستاده خواهد شد.
    [201] => پسوند پیوست شما باید wav و یا mp3 باشد. 
    [203] => بارگزاری با پیروزی انجام شد
    [212] => پیوست بارگزاری نشد ! 
    [250] => به بارگزاری پیوست دسترسی ندارید
    [301] => نمایش داده های پیامک آوا
    [501] => نمایش داده های پیامک آوا
    [502] => برای این id داده ای در دست نیست
    [601] => نمایش شناسنامه کاربری
)

بارگزاری پیوست

متد parsip.upload

فرستادن پیامک آوا
پارامتر های این متد را در زیر شفاف سازی کرده ایم :

  • username : شناسه کاربری
  • password : گذرواژه کاربری
  • name : نام پیوست
  • content : داده های پیوست که باید Base64 Encoding باشد.

فرم بارگزاری پیوست

Copy
<form method="post" action="" enctype="multipart/form-data">
<input type="file" name="uploadfiles"><br />
<input type="submit" name="submit" value="فرستادن"><br />
</form>

کد php بارگزای پیوست

در زیر پس از فرستادن فرم با متد post داده های پیوست از مسیر tmp پیوست گرفته میشود و سپس به همراه نا م فایل به متد parsip.upload‌ فرستاده میشود.
Copy
<?php
if( isset( $_POST['submit'] ) ) {
     //upload file
     $tmpfile = $_FILES["uploadfiles"]["tmp_name"]; 
     $filename = $_FILES["uploadfiles"]["name"];  
     
     $uploadid = array();
     if( @$handle = fopen($tmpfile, "r") ) {
          $contents = fread( $handle, filesize( $tmpfile) );
          fclose($handle);     


          if( !empty( $contents ) ) {
               $encodeContent   = base64_encode( $contents ); 
               try {
                    $response = $client->__call( 'parsip.upload', array('09131111111', '123456', $filename, $encodeContent) ); 
                    $result = json_decode( $response);
                    
                    print_r( $result );

                    if( $result->status === 1 ) {
                       $uploadid = array( $result->data->id );
                     }
                       
               } catch( SoapFault $e ) {              
                    var_dump( $e );
               }
          }
     }
}

نمونه برون رفت متد parsip.upload

در زیر همان گونه که میبینید پیوست با پیروزی ( status یک ) بارگزای شد و id پیوست بارگزاری شده عدد 766 میباشد.
Copy
{"message":"\u0628\u0627\u0631\u06af\u0632\u0627\u0631\u06cc \u0628\u0627 \u067e\u06cc\u0631\u0648\u0632\u06cc \u0627\u0646\u062c\u0627\u0645 \u0634\u062f","status":1,"data":{"id":"769"}}

stdClass Object
(
    [message] => بارگزاری با پیروزی انجام شد
    [status] => 1
    [data] => stdClass Object
        (
            [id] => 769
        )

)

داده های پیامک آوا

متد parsip.get_voice_feature

شاید شما برای فرستادن پیامک آوایتان شماره ویژه خودتان را داشته باشید و یا اینکه برای زمان های گوناگون نرخ های گوناگون داشته باشید و یا اینکه پیش از این پیوست هایی را بارگزاری کرده اید که دیگر نیاز به بارگزاری دوباره ندارد، این متد برای این موارد نیازین است. اگر چه، اگر شما دارای یک شماره و یک نرخ و یک پیوست باشید، در متد ارسال پیش انگار برای شما گزینش خواهد شد.
پارامتر های این متد را در زیر شفاف سازی کرده ایم :

  • username : شناسه کاربری
  • password : گذرواژه کاربری

به کار بردن متد parsip.get_voice_feature

این متد در بر گیرنده ۲ پارامتر میباشد. نخست شناسه کاربری و دوم گذرواژه.
Copy
try {
     $response = $client->__call("parsip.get_voice_feature", array( "09131111111", "123456" ) );
     $result = json_decode( $response);
     $feature = $result->data;

     print_r( $feature );
     
} catch( SoapFault $e ) {              
     var_dump( $e );
}

نمونه برون رفت متد parsip.get_voice_feature

همانگونه که در زیر میبینید
Copy
<?php
$response = '{"message":"\u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u067e\u06cc\u0627\u0645\u06a9 \u0622\u0648\u0627","status":1,"data":{"loop_number":[{"id":"3","title":"4533322961"}],"loop_price":[{"id":"43","title":"\u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u067e\u0644\u06a9\u0627\u0646 \u0627\u0648\u0644","duration":"30","price_in":"410","price_out":"450","price_out_n":"520","price_fax":"300"},{"id":"48","title":"\u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u067e\u0644\u06a9\u0627\u0646 \u0627\u0648\u0644 20 \u062b\u0627\u0646\u06cc\u0647 \u0627\u06cc","duration":"20","price_in":"350","price_out":"380","price_out_n":"450","price_fax":"300"},{"id":"53","title":"\u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647 \u0627\u06cc","duration":"60","price_in":"580","price_out":"580","price_out_n":"650","price_fax":"300"}]}}';

$arr = json_decode( $response );
?>
stdClass Object
(
    [message] => نمایش داده های پیامک آوا
    [status] => 1
    [data] => stdClass Object
        (
            [loop_number] => Array
                (
                    [0] => stdClass Object
                        (
                            [id] => 3
                            [title] => 4533322961
                        )

                )

            [loop_price] => Array
                (
                    [0] => stdClass Object
                        (
                            [id] => 43
                            [title] => کاربران پلکان اول
                            [duration] => 30
                            [price_in] => 410
                            [price_out] => 450
                            [price_out_n] => 520
                            [price_fax] => 300
                        )

                    [1] => stdClass Object
                        (
                            [id] => 48
                            [title] => کاربران پلکان اول 20 ثانیه ای
                            [duration] => 20
                            [price_in] => 350
                            [price_out] => 380
                            [price_out_n] => 450
                            [price_fax] => 300
                        )

                    [2] => stdClass Object
                        (
                            [id] => 53
                            [title] => کاربران یک دقیقه ای
                            [duration] => 60
                            [price_in] => 580
                            [price_out] => 580
                            [price_out_n] => 650
                            [price_fax] => 300
                        )

                )

        )

)

فرستادن پیامک آوا

متد parsip.send_voice

فرستادن پیامک آوا
پارامتر های این متد را در زیر شفاف سازی کرده ایم :

  • username : شناسه کاربری
  • password : گذرواژه کاربری
  • uniqid : باید یک شماره باشد. اگر شماره پیش از این به کار گرفته شده باشد به شما پیام داده میشود.
  • title : دیباچه پیامک آوا
  • try : شمار تلاش
  • try_interval : بازه زمانی تلاش
  • numbers : شماره هایی که پیامک آوا باید به آن فرستاده شود
  • date : زمان فرستادن که باید به گونه روبرو باشد : yyyy/mm/dd hh:ii
  • calculate : ارزیابی هزینه پیامک آوا که اگر برابر با یک باشد هزینه ی این پیامک آوا را بر میگرداند و اگر صفر باشد، پیام فرستاده میشود.
  • files : باید آی دی پیوست ها و از گونه آرایه باشد. ( میتوانید چند پیوست را پشت سر هم برای کاربری که به آن زنگ میخورد پخش کنید ) این آی دی ها را میتوانید از متد parsip.upload بگیرید. ( پیش از فرستادن پیامک آوا باید یک پیوست را بارگزاری کنید و آی دی آن را داشته باشید. )
  • priceid : باید آی دی نرخ پیامک آوا باشد که میتوانید از متد parsip.get_voice_feature آنرا بگیرید.
  • callerid : باید شماره فرستنده پیامک آوا باشد که میتوانید از متد parsip.get_voice_feature آنرا بگیرید.
  • kind : گونه ی پیامک آوا میباشد. در نسخه های پسین، فرستادن دیدگاه سنج هم افزوده خواهد شد. اندازه پیش انگار این پارامتر یک میباشد و پس از این برای دیدگاه سنج اندازه ۲ به کار گرفته خواهد شد.

نمونه به کار بردن تمد parsip.send_voice

Copy
<?php
try {
     $response = $client->__call("parsip.send_voice", array( "09131111111", "123456", 1, "تست است", "1", "10", array( "09131111112", "09131111113" ), "1395/03/02 17:50", 1, array( ), 0, 0, "1" ) );
} catch( SoapFault $e ) {              
     var_dump( $e );
}

print_r( json_decode( $response ) );

نمونه برون رفت متد parsip.send_voice

Copy
<?php

$response = '{"message":"\u0634\u0645\u0627 \u0628\u06cc\u0634 \u0627\u0632 \u06cc\u06a9 \u067e\u06cc\u0648\u0633\u062a \u062f\u0627\u0631\u06cc\u062f. \u062e\u0648\u0627\u0647\u0634\u0645\u0646\u062f \u0627\u0633\u062a \u0622\u06cc \u062f\u06cc \u06cc\u06a9 \u067e\u06cc\u0648\u0633\u062a \u0631\u0627 \u06af\u0632\u06cc\u0646\u0634 \u06a9\u0646\u06cc\u062f","status":0,"data":[{"id":"762","title":"test1.wav","file":"1460203648_1.wav"},{"id":"765","title":"test2.wav","file":"1461225373_1.wav"},{"id":"766","title":"test3.wav","file":"1461225430_1.wav"}]}';

print_r( json_decode( $response ) );
?>


stdClass Object
(
    [message] => شما بیش از یک پیوست دارید. خواهشمند است آی دی یک پیوست را گزینش کنید
    [status] => 0
    [data] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 762
                    [title] => test1.wav
                    [file] => 1460203648_1.wav
                )

            [1] => stdClass Object
                (
                    [id] => 765
                    [title] => test1.wav
                    [file] => 1461225373_1.wav
                )

            [2] => stdClass Object
                (
                    [id] => 766
                    [title] => test2.wav
                    [file] => 1461225430_1.wav
                )

        )

)

فرستادن پیامک آوا

متد parsip.send_voice

در زیر نمونه کد فرم فرستادن پیامک آوا را به شما نشان خواهم داد.

فرم فرستادن پیامک آوا و شیوه به کار بردن متد های وب سرویس

Copy
<meta charset="utf-8" />
<?php
ini_set("soap.wsdl_cache_enabled", "0");
$wsdl="http://www.vpayam.ir/webservice/ws.php?wsdl"; 
try {
     $client=new soapclient( $wsdl );
} catch( SoapFault $e ) {              
     var_dump( $e );
     exit();
}

try {
     $response = $client->__call("parsip.get_voice_feature", array( "09131111111", "123456" ) );
     $result = json_decode( $response);
     $feature = $result->data;
} catch( SoapFault $e ) {              
     var_dump( $e );
}

echo '<form action="?send" method="post" enctype="multipart/form-data">
دیباچه ‌: <input type="text" name="title" /> <br />
uniqid ‌: <input type="text" name="uniqid" value="1" /> <br />
تلاش ‌: <input type="text" name="try" value="1" /> <br />
بازه تلاش ‌: <input type="text" name="try_interval" value="10" /> <br />
شماره ها ‌: <textarea name="numbers" placeholder="شماره ها را با اینتر از هم جدا کنید"></textarea> <br />
';
echo 'گزینش شماره : <select name="number">
<option value="">گزینش کنید</option>
';
foreach( $feature->loop_number as $k => $v ) {
     echo '<option value="'.$v->title.'">'.$v->title.'</option>';
}
echo '</select><br />';


echo 'گزینش هزینه : <select name="price">
<option value="">گزینش کنید</option>
';
foreach( $feature->loop_price as $k => $v ) {
     echo '<option value="'.$v->id.'">'.$v->title.'</option>';
}
echo '</select><br />';
echo '<input type="file" name="uploadfiles"><br />';
echo '<input type="submit" value="send" />';
echo '</form>';


if( isset( $_GET['send'] ) ) {

     //upload file
     $tmpfile = $_FILES["uploadfiles"]["tmp_name"]; 
     $filename = $_FILES["uploadfiles"]["name"];  
     
     $uploadid = array();
     if( @$handle = fopen($tmpfile, "r") ) {
          $contents = fread( $handle, filesize( $tmpfile) );
          fclose($handle);     


          if( !empty( $contents ) ) {
               $encodeContent   = base64_encode( $contents ); 
               try {
                    $response = $client->__call( 'parsip.upload', array('09131111111', '123456', $filename, $encodeContent) ); 
                    $result = json_decode( $response);
                    
                    print_r( $result );

                    if( $result->status === 1 ) {
                       $uploadid = array( $result->data->id );
                     }
                       
               } catch( SoapFault $e ) {              
                    var_dump( $e );
               }
          }
     }

     try {
          $response = $client->__call('parsip.send_voice', array( '09131111111', '123456', $_POST['uniqid'], $_POST['title'], $_POST['try'], $_POST['try_interval'], explode( "\r\n", $_POST['numbers'] ), '', 0, $uploadid, $_POST['price'], $_POST['number'], '1' ) );

          $result = json_decode( $response );
          
          print_r( $result );

     } catch( SoapFault $e ) {              
          var_dump( $e );
     }

}

?>

فرستادن پیامک آوا با rest در زبان php

فرستادن درخواست Rest

از این پس شما میتوانید با rest و فرستادن درخواست post به آدرس http://www.vpayam.ir/rest پیامک آوای خود را بفرستید.
در زیر ما به وسیله زبان php به شما چگونگی به کار بردن rest را نشان خواهیم داد.

یک کلاس ساده برای فرستادن درخواست

در زیر من کلاسی را برای شما آماده کردم که به سادگی میتوانید درخواست خود را برای ما بفرستید.
Copy
<meta charset="utf-8" />
<?php

class rest_client {
  var $ch, $url, $data;

  public static $instance;
  public static function get_instance( $url = '', $data = array() ) {
    
    if( ! self::$instance ) {
      self::$instance = new self( $url, $data );
    }

    return self::$instance;
  }

  function rest_client( $url, $data ) {
    $this->url = $url;
    $this->data = $data;
    $this->ch = curl_init();
    curl_setopt($this->ch, CURLOPT_HEADER, false);
    curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, TRUE);
    
    return $this;
  }

  function request( $req, $params = array(), $callback = '' ) {
    curl_setopt($this->ch, CURLOPT_URL,$this->url.$req );

    curl_setopt($this->ch, CURLOPT_POST,1);
    curl_setopt($this->ch, CURLOPT_POSTFIELDS, $this->data + $params );

    $response = curl_exec ($this->ch);

    //echo $response;
    $result = json_decode( $response );

    if( (int)$result->status  === 1 && ! empty( $callback ) ) {
      $callback( $result->data );
    }

    return $result;
  }

  function estruct() {
    curl_close ( $this->ch );
  }

}


function rest( $url = '', $data = array() ) {
  return rest_client::get_instance( $url, $data );
}

//intialize rest client instance
rest( 'http://www.vpayam.ir/rest/', array( 'username' => '09131111111', 'password' => '123456' ) );

بارگزاری پیوست با کلاس بالا

در زیر شیوه بارگزاری پیوست با متد request را میتوانید ببینید :
Copy
<meta charset="utf-8" />
<?php
$res = rest()->request( 'upload/add', array( 'files[]' => '@'.realpath('./test.wav') ), function( $data ) {
  print_r( $data );
  $uploadid = $data->id;
});

print_r( $res );

فرستادن پیامک آوا با کلاس بالا

Copy
$res = rest()->request( 'voice/send', array( 'title' => 'test', 'try' => '1', 'numbers[0]' => '09131111111', 'numbers[1]' => '09131111112', 'uploadids[]' => $uploadid, 'kind' => '1', 'calculate' => 0 ), function( $data ) {

    $voiceid = @$data->id;
    if( $voiceid ) {
      $res = rest()->request( 'voice/info', array( 'voiceid' => $voiceid ), function( $data ) {
        print_r( $data );
      });
    }

  });

  print_r( $res );