سامانه پیامکی
به راحتی با مستندات و قلاب های ارائه شده سامانه پیامکی دلخواه خود را به قالب اضافه کنید.
amzshyar_sms_panels
افزودن اطلاعات و فیلدهای مورد نیاز سامانه پیامکی جدید به کمک این قلاب ممکن شده است :
// Add new panel to settings theme
add_filter( 'amzshyar_sms_panels', function ( $panels ) {
// Add panel
$panels[ 'YOUR_PANEL_NAME' ] = [
'title' => 'پنل پیامک آزمایشی',
// Add fields in settings theme:
'fields' => [
[
'name' => 'number',
'label' => 'شماره خط ارسال کننده',
// optional property:
'placeholder' => '',
'type' => 'text',
'default' => '',
'note' => ''
],
[
'name' => 'username',
'label' => 'نام کاربری'
],
[
'name' => 'password',
'label' => 'رمز عبور'
],
'وبسرویس خدماتی',
[
'name' => 'template_id_otp',
'label' => 'شناسه قالب - ارسال کد فعالسازی',
'desc' => 'درصورتی که خالی باشد بصورت عادی ارسال میشود',
'note' => 'متغیر <code>[code]</code> - کد فعالسازی'
],
'hr',
[
'name' => 'template_id_ticket_new',
'label' => 'شناسه قالب - اطلاع رسانی تیکت جدید',
'desc' => 'درصورتی که خالی باشد بصورت عادی ارسال میشود',
'note' => 'متغیر <code>[name]</code> - نام اپراتور'
],
'hr',
[
'name' => 'template_id_ticket_reply_new',
'label' => 'شناسه قالب - اطلاع رسانی پاسخ جدید تیکت',
'desc' => 'درصورتی که خالی باشد بصورت عادی ارسال میشود',
'note' => 'متغیر <code>[name]</code> - نام اپراتور'
]
]
];
return $panels;
} );
توضیحات:
- متغیر panels$ حاوی اطلاعات تمام پنل های فعال بصورت آرایه است. پس توجه داشته باشید که فقط باید یک آیتم جدید را به این آرایه اضافه کنید و در نهایت این متغیر را return کنید.
- یک شناسه یکتا برای پنل پیامکی خود در نظر بگیرید و در ادامه برای شناسایی باید از آن استفاده کنید. برای نمونه در این کد از عبارت YOUR_PANEL_NAME استفاده شده است.
- درون fields میتوانید اطلاعاتی که نیاز دارید از کاربر دریافت کنید را تعریف کنید. با استفاده از این اطلاعات فرم جدیدی در تنظیمات قالب ساخته میشود که کاربر میتوانید آن را وارد کنید.
- تمام فیلدهایی که تعریف میکنید باید دارای یک name باشند. شما با استفاده از این نامها میتوانید از طریق متغیر config$ در ادامه اطلاعات ورودی کاربر را دریافت کنید.
amzshyar_sms_send
این قلاب به شما کمک میکند در زمانهایی که نیاز است پیامک ارسال شود متوجه آن شوید و درصورتی که پنل فعال برای ارسال پیامک پنل شما باشد، عملیات ارسال پیامک را انجام دهید.
// Add action on send new sms
add_action( 'amzshyar_sms_send', function ( $panel_id, $config, $type, $to, $sms_text, $data )
{
// check panel id
if( 'YOUR_PANEL_NAME' == $panel_id )
your_funcion_for_sms_send( $config, $type, $to, $sms_text, $data );
}, 10, 6 );
توضیحات:
- متغیر panel_id$ : شناسه پنل پیامکی فعال را بر میگرداند. در این قلاب حتما باید بررسی کنید که این متغیر برابر با نام پنل شما باشد. چراکه این قلاب همیشه زمانیکه پیامک قرار است ارسال شود اجرا میشود و باید مطمئن شوید سامانه فعال کاربر، سامانه پیامکی شماست.
- متغیر config$ : فیلدهایی که تعریف کردید درصورتی که توسط کاربر وارد شده باشد توسط این متغیر در دسترس هستند.
- متغیر type$ : بطور کلی هر پیامکی که قرار است ارسال شود یک شناسه منحصربفرد دارد. مثلا زمانی که قرار است کدفعالسازی ارسال شود مقدار متغیر type برابر با otp خواهد بود. به اینصورت میتوانید متوجه شوید دقیقا چه نوع پیامکی قرار است ارسال شود. در ادامه لیست تایپها را خواهید یافت.
- متغیر to$ : شماره موبایلی که باید پیامک به آن ارسال شود را بر میگرداند. ( بصورت: 9123456789 )
- متغیر sms_text$ : متن کامل پیامک برای ارسال را برمیگرداند. توجه داشته باشید که برای ارسال پیامک با الگو کاربردی ندارد و صرفا برای ارسال عادی مورد استفاده قرار میگیرد.
- متغیر data$ : این متغیر، اطلاعات اصلی یک پیامک را بر میگرداند. مثلا زمانی که قرار است کدفعالسازی ارسال شود ما در این آرایه میتوانیم کد فعالسازی را دریافت کنیم ( مثلا بصورت: data[‘code’]$ ) این مورد بیشتر برای ارسال پیامکهای با الگو کاربرد دارد. با استفاده از متغیر type$ نوع پیامک را بررسی میکنید و با استفاده از data$ اطلاعات مورد نیاز را در پارامترهای پنل خود تعریف میکنید و در نهایت با استفاده از شناسه قالب، پیامک را ارسال میکنید. مقادیری که در هر type درون متغیر data$ قرار دارند را در ادامه خواهید یافت.
- میتوانید برای ارسال پیامک، یک تابع تعریف کنید و عملیات ارسال را در این تابع انجام دهید. توجه داشته باشید که نام این تابع باید منحصربفرد باشد برای نمونه از نام your_funcion_for_sms_send استفاده شده است.
ارسال پیامک با الگو ( ارسال سریع )
اخیرا سامانه های پیامکی کشور، سرویسی تحت عنوان خط خدماتی اشتراکی ارائه میدهند که شما با استفاده از تعریف یک الگو میتوانید پیامک های مهم خود را حتی به بلاک لیست اپراتورها هم ارسال کنید. همانطور که پیش تر بیان شد برای ارسال با الگو باید از ۲ متغیر type$ و data$ کمک بگیرید.
ابتدا بررسی کنید نوع پیامک چیست:
( لازم است تمام تایپهای موجود در قالب بررسی شوند. لیست تمام تایپهایی که تا به امروز به قالب اضافه شدهاند را در ادامه در اختیار شما قرار خواهیم داد)
add_action( 'amzshyar_sms_send', function ( $panel_id, $config, $type, $to, $sms_text, $data )
{
// check panel id
if( 'YOUR_PANEL_NAME' == $panel_id ) {
if( 'otp' == $type ) {
$otp_code = $data[ 'code' ];
// your code
}
if( 'ticket_new' == $type ) {
$operator_name = $data[ 'name' ];
// your code
}
if( 'ticket_reply_new' == $type ) {
$operator_name = $data[ 'name' ];
// your code
}
}
}, 10, 6 );
زمانیکه متوجه شوید type این پیامک برابر با otp است میتوانید مقدار code را از متغیر data$ دریافت کنید. حالا فقط کافیست باتوجه به الگوریتم سامانه پیامکی مورد نظر، مقدار code را به همراه شناسه قالب (templateId) دریافت کنید و عملیات ارسال را با توجه به مستندات سامانه انجام دهید. ( میتوانید در فیلدها، موردی را برای شناسه قالب کد فعالسازی otp و type های دیگر در نظر بگیرید تا کاربر شناسه قالب خود را وارد کند سپس از طریق متغیر config$ آن را دریافت کنید به عنوان مثال به اینصورت: config[ ‘template_id_otp’ ]$ )
مقادیر متغیر های type$ و data$
توجه داشته باشید که این لیست با اضافه شدن type های جدیدتر به قالب، بروز میشود.
مقادیری که متغیر type$ برمیگرداند: otp | ticket_new | ticket_reply_new | …
در نمونه کد زیر بررسی شده و در هر type مقادیر درون متغیر data$ مشخص شده است:
// $type: otp
if( 'otp' == $type ) {
$otp_code = $data[ 'code' ];
}
// $type: ticket_new
if( 'ticket_new' == $type ) {
$operator_name = $data[ 'name' ];
}
// $type: ticket_reply_new
if( 'ticket_reply_new' == $type ) {
$operator_name = $data[ 'name' ];
}
نکته: درصورتی که درون آرایه data$ بیشتر از یک مورد باشد، با تعریف چند متغیر در قالب سامانه پیامکی میتوانید اطلاعات مورد نیاز برای ارسال پیامک را جایگزین کنید. ضمن اینکه نیازی نیست حتما چندین متغیر درون پیامک قرار داشته باشد.
نمونه ساختار کلی افزودن یک سامانه پیامکی جدید
ارسال پیامک بصورت عادی:
// Add new panel to settings theme
add_filter( 'amzshyar_sms_panels', function ( $panels ) {
// Add panel
$panels[ 'YOUR_PANEL_NAME' ] = [
'title' => 'پنل پیامک آزمایشی',
// Add fields in settings theme
'fields' => [
[ 'name' => 'number', 'label' => 'شماره خط ارسال کننده' ],
[ 'name' => 'username', 'label' => 'نام کاربری' ],
[ 'name' => 'password', 'label' => 'رمز عبور' ]
]
];
return $panels;
} );
// Add action on send new sms
add_action( 'amzshyar_sms_send', function ( $panel_id, $config, $type, $to, $sms_text, $data )
{
// check panel id
if( 'YOUR_PANEL_NAME' == $panel_id )
your_funcion_for_sms_send( $config, $to, $sms_text );
}, 10, 6 );
// send sms text
function your_funcion_for_sms_send( $config, $to, $sms_text ) {
if( ! empty( $config[ 'username' ] ) && ! empty( $config[ 'password' ] ) && ! empty( $config[ 'number' ] ) ) {
// your code for sms send
}
}
ارسال پیامک همزمان با الگو و عادی:
( در کد زیر درصورتی که کاربر templateId را در تنظیمات سامانه وارد نکرده باشد بصورت عادی ارسال میشود )
// Add action on send new sms
add_action( 'amzshyar_sms_send', function ( $panel_id, $config, $type, $to, $sms_text, $data )
{
// check panel id
if( 'YOUR_PANEL_NAME' == $panel_id )
your_funcion_for_sms_send_fast( $config, $type, $to, $sms_text, $data );
}, 10, 6 );
// send sms fast
function your_funcion_for_sms_send_fast( $config, $type, $to, $sms_text, $data ) {
$templateId = $config[ 'template_id_' . $type ];
$parameters = '';
if( ! empty( $templateId ) ) {
if( 'otp' == $type ) {
$parameters = $data[ 'code' ];
}
if( 'ticket_new' == $type ) {
$parameters = $data[ 'name' ];
}
if( 'ticket_reply_new' == $type ) {
$parameters = $data[ 'name' ];
}
if( ! empty( $parameters ) ) {
// your code for fast sms send
}
} else {
// send sms text
your_funcion_for_sms_send( $config, $to, $sms_text );
}
}
// send sms text
function your_funcion_for_sms_send( $config, $to, $sms_text ) {
if( ! empty( $config[ 'username' ] ) && ! empty( $config[ 'password' ] ) && ! empty( $config[ 'number' ] ) ) {
// your code for sms send
}
}