احتمالا شما برنامه نویس سی شارپ هستید و به این مورد فکر کرده اید که بتوان نرم افزار , اپلیکیشن و یا حتی وبسایتی ایجاد نمود که در مواقع لازم به صورت خودکار داخل واتساپ پیام ارسال نمایید . در گذشته تنها راه این عملیات استفاده از وب سرویس واتساپ بوده که البته و متاسفانه ارسال به تمامی شماره های ایرانی ( کد کشور 98 ) غیر فعال و کاملا هم غیر ممکن شد .
اما حتی با بسته شدن این وبسرویس راه های جایگزینی برای این کار به وجود آمده است که میتوان به تنها راه مطمئن آن یعنی استفاده از پنل واتساپ اشاره نمود . پنل واتساپ درواقع یک سامانه تحت وب بوده که امکان ارسال پیام واتساپ از شماره های خود اشخاص را فراهم نموده است .
این پنل پرکاربرد امکانات دیگری مانند ارسال پیام گروهی واتساپ و همچنین تبلیغات داخل واتساپ را مهیا نموده است که میتوانید به منظور تست وبسرویس و سایر امکانات به صورت رایگان استفاده از آن را شروع نمایید .
اطلاعات بیشتر درباره پنل واتساپحال در ادامه به بررسی روش استفاده از این پنل و آموزش ارسال پیام واتساپ در سی شارپ میپردازیم . در ابتدا باید به این نکته توجه نمود که باید یک پنل واتساپ تهیه نموده و پس از آن خط واتساپ خودتان را داخل آن اضافه نمایید .
سپس شماره موبایل پنل , رمز پنل و شماره خط واتساپ اضافه شده را یادداشت نموده و به ادامه مراحل آموزش بپردازید :
برای ارسال پیام واتساپ داخل C Sharp کافیست یک POST Request به آدرس وبسرویس زیر ارسال نمایید :
http://whatspanel.ir/Api/SendMessage.php
همچنین به منظور ارسال پیام باید 4 پارامتر مهم زیر را تنظیم نمایید :
phoneNumber : شماره موبایل پنل خوتان را در این بخش وارد مینمایید .
passWord : رمز عبور پنل خود که برای شما ارسال شده است را در این بخش تنظیم کنید .
destPhoneNumbers : شماره های گیرنده پیام واتساپ را در این بخش وارد نموده و همچنین برای ارسال به چند شماره میتوانید از شماره ها با علامت ; از هم جدا نمایید .
text : در این بخش نیز باید متن پیام خود را وارد کنید . همچنین در صورت تمایل به ارسال عکس و یا تصویر باید ابتدا داخل سامانه یک بسته پیام ایجاد نمود و سپس ابتدا علامت # و سپس کد بسته پیام را در این بخش یعنی به جای متن پیام وارد کنید .
lines : در نهایت در این بخش شماره خط ارسالی را وارد نمایید . این خط درواقع همان فرستنده پیام میباشد که در صورتی که تعداد پیام های زیاد است میتوانید با استفاده از وارد کردن چند شماره و همچنین جدا کردن آن ها با علامت ; ارسالی های خودتان را انجام دهید .
در ادامه میتوانید از نمونه کد زیر برای ارسال پیام واتساپ داخل C# ( سی شارپ ) استفاده نمایید :
static async Task<ResponseMsgSendJson> SendMsg()
{
//Fill body of post request
var values = new Dictionary<string, string>
{
{ "phoneNumber", "09121111111" }, //your user name
{ "passWord", "12345678" }, //your password
{ "destPhoneNumbers", DestinationNumber }, // destination number(s)
{ "text", Message }, //Massege
{ "lines", "09133333333" } // Your registered Whats-App line number(s)
};
var content = new FormUrlEncodedContent(values);
//url for send message
var response = await client.PostAsync("http://whatspanel.ir/Api/SendMessage.php", content);// wait for send request
var responseString = await response.Content.ReadAsStringAsync();//wait for get response
//deserialize json response
ResponseMsgSendJson jsonDes = JsonConvert.DeserializeObject<ResponseMsgSendJson>(responseString);
return jsonDes;
}
همچنین یکی از امکانات جذاب این سامانه امکان خواندن وضعیت پیام ارسالی میباشد .
به این منظور باید یک Request به آدرس زیر ارسال نمود تا در جواب آن وضعیت پیام برای شما ارسال شود .
پارامترهای این Request هم به شرح زیر است :
phoneNumber : شماره موبایل سامانه ثبت نام کرده
passWord : رمز عبور پنل
messageId : شماره پیام ارسال نموده که در جواب وبسرویس ارسال پیام برای شما ارسال شده است .
نمونه کد دریافت وضعیت پیام نیز به شرح زیر است :
static async Task<ResponseMsgStatusJson> GetMsgStatus(string msgId)
{
//fill post request body
var values = new Dictionary<string, string>
{
{ "phoneNumber", "09121111111" }, //your user name
{ "passWord", "12345678" }, // your password
{ "messageId", msgId }, // the message id given by send massage request
};
var content = new FormUrlEncodedContent(values);
//wait for send request
var response = await client.PostAsync("http://whatspanel.ir/Api/MessageStatus.php", content);
//wait for response
var responseString = await response.Content.ReadAsStringAsync();
//some possible resonses
//{"messageStatus":"approve","messageReport":[],"status":100}
//{"messageStatus":"approve","messageReport":[{"DestPhoneNumber":"0913xxxxxxx","Status":"sending"}],"status":100}
try
{
ResponseMsgStatusJson jsonDes = JsonConvert.DeserializeObject<ResponseMsgStatusJson>(responseString);
return jsonDes;
}
catch
{
return null;
}
}
در نهایت کد کامل یک ارسال پیام و پس از آن خواندن وضعیت پیام ارسالی شده به شکل زیر است :
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace jarin_whatsapp_csharp
{
internal class Program
{
private static string DestinationNumber="09122222222"; // Destination Number you want to send to!
private static string Message = "Hello World!"; //Message you want to send
private static readonly HttpClient client = new HttpClient();
static async Task Main(string[] args)
{
ResponseMsgSendJson jsonDes = await SendMsg(); // send message request
Console.WriteLine(string.Format("Status:{0}", jsonDes.status)); // write status to console
if (jsonDes.status == "100") // If the status is 100 it means every thing is ok!
{
int timeout = 120; // About 120 seconds wait for sending message
while (true)
{
ResponseMsgStatusJson jsonDes2 = await GetMsgStatus(jsonDes.code);// Get status of message request
Console.WriteLine(jsonDes2.ToString()); // Write request response to console
if (jsonDes2.status=="100" && jsonDes2.messageReport != null && jsonDes2.messageReport.Count > 0) // If any report is present
{
//If our destination phone number reached!
if (jsonDes2.messageReport.Find(x => x.DestPhoneNumber == DestinationNumber && x.Status == "sent") != null)
{
Console.WriteLine("ALL OK!!!!");
break;
}
}
await Task.Delay(1000);// 1 s delay for next request
timeout--;
if(timeout==0)//Check for timeout
{
Console.WriteLine("Timeout!");
break;
}
}
}
Console.ReadLine();
}
class ResponseMsgSendJson
{
public string code;
public string status;
}
static async Task<ResponseMsgSendJson> SendMsg()
{
//Fill body of post request
var values = new Dictionary<string, string>
{
{ "phoneNumber", "09121111111" }, //your user name
{ "passWord", "12345678" }, //your password
{ "destPhoneNumbers", DestinationNumber }, // destination number(s)
{ "text", Message }, //Massege
{ "lines", "09133333333" } // Your registered Whats-App line number(s)
};
var content = new FormUrlEncodedContent(values);
//url for send message
var response = await client.PostAsync("http://whatspanel.ir/Api/SendMessage.php", content);// wait for send request
var responseString = await response.Content.ReadAsStringAsync();//wait for get response
//deserialize json response
ResponseMsgSendJson jsonDes = JsonConvert.DeserializeObject<ResponseMsgSendJson>(responseString);
return jsonDes;
}
class messageReport
{
public string DestPhoneNumber;
public string Status;
}
class ResponseMsgStatusJson
{
public string messageStatus;
public List<messageReport> messageReport;
public string status;
public override string ToString()
{
string reports = "";
if(messageReport != null && messageReport.Count>0)
{
foreach(var report in messageReport)
{
reports+=string.Format("{0}:{1} | ",report.DestPhoneNumber,report.Status);
}
}
else
{
reports = "No Reports";
}
string str = string.Format("Status:{0} , MsgStatus:{1} , reports:{{{2}}}",status ,messageStatus,reports);
return str;
}
}
static async Task<ResponseMsgStatusJson> GetMsgStatus(string msgId)
{
//fill post request body
var values = new Dictionary<string, string>
{
{ "phoneNumber", "09121111111" }, //your user name
{ "passWord", "12345678" }, // your password
{ "messageId", msgId }, // the message id given by send massage request
};
var content = new FormUrlEncodedContent(values);
//wait for send request
var response = await client.PostAsync("http://whatspanel.ir/Api/MessageStatus.php", content);
//wait for response
var responseString = await response.Content.ReadAsStringAsync();
//some possible resonses
//{"messageStatus":"approve","messageReport":[],"status":100}
//{"messageStatus":"approve","messageReport":[{"DestPhoneNumber":"0913xxxxxxx","Status":"sending"}],"status":100}
try
{
ResponseMsgStatusJson jsonDes = JsonConvert.DeserializeObject<ResponseMsgStatusJson>(responseString);
return jsonDes;
}
catch
{
return null;
}
}
}
}
فقط در انتهای این مقاله , نیاز به بیان این نکته بسیار مهم است که ابتدا باید از بخش NuGet کتابخانههای زیر را حتما نصب نمایید :
حال با خیال راحت بدون توجه به محدودیت های ارسال پیام واتساپ , ارسالی های خودتان داخل واتساپ را انجام دهید .