برای راه اندازی پنل پیامکی  در ابتدا باید یکی از سامانه های  پیامکی زیر گرفته شود 

سرویس دهندگان 

 Parsa

پارسا (قاصدك)

در مورد اكانت اين شركت ، بايستي ارسال وب سرويس توسط پشتيباني آنها ابتدا فعال شود تا خروجي مناسب گرفته شود

HostIran

Magfa

RazSms 

WebSms

niazpardaz

FarazSMS  

Asanak (*)

sitesaz

(*)  با توجه به اینکه برای مشتریان جدید از این سرویس  دهنده استفاده شده  اولویت با این سرویس دهنده می باشد

اطلاعات مورد نیاز جهت راه اندازی پنل 

  • شماره خط  SmsNumber
  • اپراتور وب سرویس  SmsOperator
  • یوزر وب سرویس   SmsUsername  
  • پسورد وب سرویس  SmsPassword

نصب برنامه  SMSSender

برنامه SMSSender.rar را دانلود کرده و در سرور مشتري قرار داده

و دسترسی به پوشه را everyone میکنیم و در فایل کانفیگ مشابه زیر مقادیر و کانکشن استرینگ را تنظیم می کنیم

تنظیمات جدول CRM.SmsConfig

 در اين جدول بايستي تنظيمات مربوط به سرويس دهنده وارد شود

معمولا این سه رکورد وجود دارند ، همیشه باید در رکورد آخر اطلاعاتی که از مشتری دریافت کرده ایم ثبت شود - می توان از آپدیت زیر برای این رکورد استفاده کرد :

update [CRM].[SmsConfig] set SmsUsername='Uname',SmsOperator='asanak',SmsPassword='110110110',SmsNumber='123456789' where SmsConfig_ID=3

ایجاد جاب ده دقیقه ای برای ارسال پیامک

در کد زیر باید مسیر فایل اجرایی smssender را در خط 39 مشخص کنیم
همینطور نام دیتابیس در خط بعدی آن باید تنظیم شود

Job SmsSender
USE [msdb]
GO
 
/****** Object:  Job [SmsSender]    Script Date: 27/04/2019 5:37:21 PM ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object:  JobCategory [[Uncategorized (Local)]]    Script Date: 27/04/2019 5:37:21 PM ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
 
END
 
DECLARE @jobId BINARY(16)
EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'SmsSender',
        @enabled=1,
        @notify_level_eventlog=2,
        @notify_level_email=0,
        @notify_level_netsend=0,
        @notify_level_page=0,
        @delete_level=0,
        @description=N'No description available.',
        @category_name=N'[Uncategorized (Local)]',
        @owner_login_name=N'sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object:  Step [Exec FileRecept]    Script Date: 27/04/2019 5:37:21 PM ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Exec FileRecept',
        @step_id=1,
        @cmdexec_success_code=0,
        @on_success_action=1,
        @on_success_step_id=0,
        @on_fail_action=2,
        @on_fail_step_id=0,
        @retry_attempts=0,
        @retry_interval=0,
        @os_run_priority=0, @subsystem=N'TSQL',
		@command=N'EXEC master..xp_CMDShell ''D:\ShareFolder\SMSSender\iMaster.ERP.SmsSender.Console.exe''',									   
        @database_name=N'iMaster_Danlex_SAM',
        @flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'timerq',
        @enabled=1,
        @freq_type=4,
        @freq_interval=1,
        @freq_subday_type=4,
        @freq_subday_interval=10,
        @freq_relative_interval=0,
        @freq_recurrence_factor=0,
        @active_start_date=20120722,
        @active_end_date=99991231,
        @active_start_time=80000,
        @active_end_time=235959,
        @schedule_uid=N'814b1260-0bfb-446e-8776-3909a5adf373'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
    IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
 
GO

اجراي دستور زير (برای اجرای جاب)

EnableWebService
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO

تست نصب و ارسال

رکوردهایی که برای ارسال پیامک در جدول [CRM].[Sms] ثبت می شوند ، در صورت اجرای برنامه سندر  به وب سرویس منتقل می شوند 

در صورتی که پیامک توسط برنامه ارسال شود ، فیلد IsSended مقدار یک می گیرد

در صورتی که با موفقیت ارسال شود ، از طرف وب سرویس کدی را دریافت می کند که در فیلد SendID با مقداری غیر صفر ثبت می شود 

دقت شود كه ستون SmsConfig_ID مشخص مي كند كه بر اساس كدام سرويس دهنده ارسال انجام شود که طبق بندهای قبلی روی 3 باید تنظیم شود

در فیلد SmsText متن مورد نظر و در SmsNumber شماره شخصی که باید پیامک ارسال شود

بنابراین باید پس از ایجاد یک رکورد در این جدول ،یا برنامه را به صورت دستی یک بار اجرا کرد ، یا جاب ایجاد شده را به صورت دستی اجرا کنیم 

پس از اجرا باید متن وارد شده به شماره مورد نظر پیامک شود 

نمونه کد برای تست
INSERT INTO [CRM].[Sms]
    (
        [IsDeleted],
        [CreateUserID],
        [CreateDate],
        [UpdateUserID],
        [Contacts_ID],
        [SmsText],
        [SmsNumber],
        [SendDate],
        [ExpDate],
        [IsSended],
        [IsEditable],
        [SmsKey],
        [SmsConfig_ID],
        [UpdateDate],
        [PosCustomers_ID],
        [DeprowID],
        [DepartmentInfo_ID],
        [WithOutSendTimeLimit],
        [PlanSendDate],
        [DeletedDate]
    )
VALUES
    (
        0, NULL, GETDATE(), NULL, NULL,
        'Test sms Sender 1'
		, '0936915915',GETDATE(), GETDATE()+1, 0, 0, '',3, 
        GETDATE(), NULL, NULL, NULL, 0, GETDATE(),  NULL
    );

تست ارتباط با وب سرویس با نرم افزار Postman

وب سرویس آسانک

POST
https://panel.asanak.com/webservice/v1rest/sendsms

نکته : در تب Body باید از تب x-www-form-urlencoded  استفاده کنید و برای ورود مقادیر نیازی به نقل قول نیست :

Body
username:Uname
password:110110110
Source:123456789
Message:Test For Send Message
destination:0936915915

در صورتی که با موفقیت ارسال شود ، کدی را در ریسپانس برمی گرداند که آیدی ثبت پیامک می باشد ؛ این کد همان کدی هست که در هنگام ارسال با برنامه سندر در فیلد SendID ثبت می شود

نکات

  • سروری که برنامه سندر روی آن اجرا می شود باید دسترسی اینترنت داشته باشد
    • در صورت نیاز به محدودیت بیشتر و مسایل امنیتی می توان تنها دسترسی به آدرس url وب سرویس را آزاد کرد
    • در صورتی که نیاز به اجرای برنامه سندر روی سرور دیگری که اینترنت دارد داشته باشیم ، باید نصب برنامه روی سرور مورد نظر انجام گیرد
      و فایل کانفیک آن برای دیتابیس تنظیم شود
      و بعد هم در جاب مسیر فایل سندر را در سرور دیگر به درستی تعیین کنیم (مسیری که از سرور دیتابیس بتوان فایل سندر را اجرا کرد)
      برای این کار باید فولدر مربوط به برنامه شیر شود
  • No labels