زبان برنامه نویسی Go
پیام رسان بلاگ برنامه نویسی راهنمای کامل ارسال پیامک در Go ( کد تایید ، پیامک تکی و … )

راهنمای کامل ارسال پیامک در Go ( کد تایید ، پیامک تکی و … )

نوشته ای از پیام رسان
انتشار در تاریخ 25 مهر 1403
دسته بندی: برنامه نویسی

Go  یا Golang  یک زبان برنامه نویسی متن بازو کامپایل شده است که توسط شرکت گوگل توسعه داده شده است. این زبان برنامه نویسی ، برای توسعه نرم افزار های بزرگ و پیچیده طراحی شده است.

حال اگر شما برنامه نویس زبان Go  هستید و یا صاحب نرم افزاری هستید که با زبان Golang  توسعه داده شده است و میخواهید با آن پیامک ارسال کنید، این مطلب برای شما مفید است.

در این مقاله دستورالعملی برای استفاده از وبسرویس پیامکی پیام رسان در زبان برنامه نویسی Go  را برایتان ارائه دادیم . همچنین در وبسرویس پیامکی پیام رسان با ارائه متد های ارسال پیامک ، دریافت پیامک ، وضعیت پیامک و … می توانید امکانات مختلفی را در نرم افزار خود پیاده کنید.

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

همانطور که در ویدیو بالا مشاهده می کنید، داکیومنت و Swagger  مربوطه به وب سرویس پیامکی پیام رسان برای شما در پنل پیامکی قرار گرفته است . همچنین تیم پشتیبانی فنی در صورت نیاز می توانند شما را در ارسال پیامک با Golang  راهنمایی کنید.

حال اگر تصمیم خود را گرفته اید، می توانید از طریق فرم زیر ثبت نام کنید . پس از ثبت نام یک خط هدیه و چند صد پیامک تست در اختیار شما قرار می گیرد تا تست های نرم افزاری خود را به عمل بیاورید.

مراحل ارسال پیامک با GO

دریافت api key
  1. قدم اول: انتخاب وب سرویس پیامکی ای که سرعت بالا ، امکانات زیاد ، خطوط خدماتی ، پشتیبانی فنی و .. داشته باشد که پیشنهاد ما سامانه ارسال پیامک پیام رسان است.
  2. قدم اول : ورود به سامانه پیامکی پیام رسان و دریافت APIKEY از وبسرویس پیام رسان
  3. قدم دوم : انتخاب متد پیامکی مورد نظر و استفاده از نمونه کد آماده
  4. قدم چهارم : تست و رفع خطا

نمونه کد های ارسال پیامک با Go

برای ارسال پیامک از طریق زبان Go و با استفاده از API ارسال پیامک پیام رسان، باید اطلاعات اولیه ای از جمله APIKEY و خط ارسال کننده و … داشته باشید. برای اینکار بهترین راهکار تعریف متغیر می باشد .( اطلاعات زیر نمایشی است و باید حتما از اطلاعات اختصاصی پنل اس ام اس خود استفاده نمایید.)

برای استفاده از این متغیرها در زبان Go، می‌توانید به شکل زیر عمل کنید:


package main

import (
	"fmt"
)

func main() {
	// تعریف متغیرها
	apiKey := "YOUR API KEY"       // مقدار API Key شما
	sender := "YOUR SMS SENDER NUMBER" // شماره فرستنده پیامک شما
	baseUrl := "http://api.sms-webservice.com/api/V3/" // آدرس Base URL شما

	// حالا می‌توانید از این متغیرها در سایر بخش‌های کدتان استفاده کنید
	fmt.Println("API Key:", apiKey)
	fmt.Println("Sender:", sender)
	fmt.Println("Base URL:", baseUrl)
}


متد ارسال یک متن به یک یا چند شماره با متد Get (Send )

با این متد و نمونه کد زبان برنامه‌نویسی Go، می‌توانید در یک فراخوانی تا 99 شماره را همزمان پیامک کنید. نیازی به فراخوانی جداگانه برای هر شماره نیست. کافی است شماره‌ها را به گروه‌های 99 تایی تقسیم کرده و هر گروه را به‌صورت آرایه از طریق Go به وب‌سرویس پیامکی ارسال کنید.

package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	url := "https://api.sms-webservice.com/api/V3/Send?ApiKey=YourApiKey&Text=YourSMSText&Sender=5000&Recipients=09123456789"

	// ارسال درخواست GET
	resp, err := http.Get(url)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	defer resp.Body.Close()

	// خواندن و نمایش پاسخ
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Error reading response:", err)
		return
	}

	// بررسی وضعیت پاسخ
	if resp.StatusCode == 200 {
		fmt.Println("Response:", string(body)) // موفقیت: نمایش پاسخ
	} else {
		fmt.Println("Error: Status Code", resp.StatusCode) // خطا: نمایش کد وضعیت
	}
}

متد ارسال یک متن به یک یا چند شماره با متد post (SendBulk )

کاربرد این متد مشابه متد قبلی است، با این تفاوت که نوع درخواست ارسال پیامک با Go متفاوت است. در متد اول، درخواست شما از نوع GET و در دومی از نوع POST است. درخواست‌های POST به دلیل امنیت بالاتر و قابلیت ارسال حجم بیشتری از اطلاعات، انتخاب بهتری برای این منظور هستند.

package main

import (
	"fmt"
	"net/http"
	"strings"
	"io/ioutil"
)

func main() {
	url := "https://api.sms-webservice.com/api/V3/SendBulk"
	payload := "ApiKey=YourApiKey&Text=YourSMSText&Sender=5000&Recipients=09123456789"

	// ساخت درخواست POST
	req, err := http.NewRequest("POST", url, strings.NewReader(payload))
	if err != nil {
		fmt.Println("Error creating request:", err)
		return
	}

	// تنظیم هدر Content-Type
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	// ارسال درخواست
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Println("Error sending request:", err)
		return
	}
	defer resp.Body.Close()

	// خواندن و نمایش پاسخ
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Error reading response:", err)
		return
	}

	// بررسی وضعیت پاسخ
	if resp.StatusCode == 200 {
		fmt.Println("Response:", string(body)) // موفقیت: نمایش پاسخ
	} else {
		fmt.Println("Error: Status Code", resp.StatusCode) // خطا: نمایش کد وضعیت
	}
}

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

متد ارسال چند متن به چند گیرنده (SendMultiple)

اگر می‌خواهید با زبان Go برای هر گیرنده متن جداگانه‌ای ارسال کنید، این متد و نمونه کد مناسب شماست. با استفاده از این متد، نیازی به ارسال درخواست جداگانه برای هر گیرنده نیست و می‌توانید پیامک‌های خود را در گروه‌های 100 تایی با یک درخواست به وب‌سرویس پیامکی ارسال کنید.

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
	"io/ioutil"
)

func main() {
	url := "https://api.sms-webservice.com/api/V3/SendMultiple"

	// ساختار داده‌ها برای بدنه JSON
	payload := map[string]interface{}{
		"ApiKey": "YourApiKey",
		"Recipients": []map[string]interface{}{
			{
				"Sender":      5000,
				"Text":        "YourSMSText",
				"Destination": "09123456789",
				"UserTraceId": 0000,
			},
		},
	}

	// تبدیل داده‌ها به فرمت JSON
	jsonData, err := json.Marshal(payload)
	if err != nil {
		fmt.Println("Error marshalling JSON:", err)
		return
	}

	// ساخت درخواست POST
	req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
	if err != nil {
		fmt.Println("Error creating request:", err)
		return
	}

	// تنظیم هدر Content-Type به application/json
	req.Header.Set("Content-Type", "application/json")

	// ارسال درخواست
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Println("Error sending request:", err)
		return
	}
	defer resp.Body.Close()

	// خواندن و نمایش پاسخ
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Error reading response:", err)
		return
	}

	// بررسی وضعیت پاسخ
	if resp.StatusCode == 200 {
		fmt.Println("Response:", string(body)) // موفقیت: نمایش پاسخ
	} else {
		fmt.Println("Error: Status Code", resp.StatusCode) // خطا: نمایش کد وضعیت
	}
}

متد ارسال به یک شماره با استفاده از الگوی تعریف شده (SendTokenSingle)

اگر برنامه‌نویس حرفه‌ای باشید، احتمالاً با قابلیت ارسال پیامک از طریق پترن آشنا هستید. این امکان به شما اجازه می‌دهد تا پیامک‌ها را از سریع‌ترین خط خدماتی ارسال کنید. این قابلیت مناسب پیامک‌هایی است که باید با سرعت بالا به تمام شماره‌ها، حتی شماره‌های موجود در بلک‌لیست مخابراتی، ارسال شوند.

برای مثال، می‌توانید از این روش برای ارسال پیامک‌های کد تایید و احراز هویت کاربران استفاده کنید. با یک کد Go می‌توانید از قابلیت پترن پیام‌رسان بهره‌برداری کنید. برای آشنایی بیشتر با پترن و قالب آن، به ویدیوی اول مقاله مراجعه کنید.

package main

import (
	"fmt"
	"net/http"
	"io/ioutil"
)

func main() {
	url := "https://api.sms-webservice.com/api/V3/SendTokenSingle"

	// ساخت درخواست GET
	req, err := http.NewRequest("GET", url, nil)
	if err != nil {
		fmt.Println("Error creating request:", err)
		return
	}

	// تنظیم هدرهای سفارشی
	req.Header.Set("ApiKey", "YourApiKey")
	req.Header.Set("TemplateKey", "YourPattern")
	req.Header.Set("Destination", "09123456789")
	req.Header.Set("P1", "Param1")
	req.Header.Set("P2", "Param2")
	req.Header.Set("P3", "Param3")

	// ارسال درخواست
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Println("Error sending request:", err)
		return
	}
	defer resp.Body.Close()

	// خواندن و نمایش پاسخ
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Error reading response:", err)
		return
	}

	// بررسی وضعیت پاسخ
	if resp.StatusCode == 200 {
		fmt.Println("Response:", string(body)) // موفقیت: نمایش پاسخ
	} else {
		fmt.Println("Error: Status Code", resp.StatusCode) // خطا: نمایش کد وضعیت
	}
}

متد ارسال یک الگو با متن های مختلف به چند شماره (SendTokenMulti)

اگر می‌خواهید در برنامه یا وب‌سایت خود که با زبان Go توسعه داده‌اید، از قابلیت پترن برای ارسال پیامک‌های مختلف استفاده کنید، این متد مناسب شماست.

package main

import (
	"fmt"
	"net/http"
	"strings"
	"io/ioutil"
)

func main() {
	url := "https://api.sms-webservice.com/api/V3/SendTokenMulti"

	// داده‌های فرم URL-encoded
	payload := "ApiKey=YourApiKey&TemplateKey=YourPattern&Destination=09123456789&P1=Param1&P2=Param2&P3=Param3"

	// ساخت درخواست POST
	req, err := http.NewRequest("POST", url, strings.NewReader(payload))
	if err != nil {
		fmt.Println("Error creating request:", err)
		return
	}

	// تنظیم هدر Content-Type
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	// ارسال درخواست
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Println("Error sending request:", err)
		return
	}
	defer resp.Body.Close()

	// خواندن و نمایش پاسخ
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Error reading response:", err)
		return
	}

	// بررسی وضعیت پاسخ
	if resp.StatusCode == 200 {
		fmt.Println("Response:", string(body)) // موفقیت: نمایش پاسخ
	} else {
		fmt.Println("Error: Status Code", resp.StatusCode) // خطا: نمایش کد وضعیت
	}
}

می توانید با یکبار درخواست برای چندین شماره از یک قالب، ارسال پیامک داشته باشید.

متد دریافت لیست الگوهای تعریف شده در پنل (TokenList)

در صورتیکه بخواهید لیست الگوهای تعریف شده در پنل را مشاهده نمایید، می توانید ازین متد استفاده نمایید.

package main

import (
	"fmt"
	"net/http"
	"strings"
	"io/ioutil"
)

func main() {
	url := "https://api.sms-webservice.com/api/V3/TokenList"

	// داده‌های فرم URL-encoded
	payload := "ApiKey=YourApiKey"

	// ساخت درخواست POST
	req, err := http.NewRequest("POST", url, strings.NewReader(payload))
	if err != nil {
		fmt.Println("Error creating request:", err)
		return
	}

	// تنظیم هدر Content-Type برای درخواست POST
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	// ارسال درخواست
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Println("Error sending request:", err)
		return
	}
	defer resp.Body.Close()

	// خواندن و نمایش پاسخ
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Error reading response:", err)
		return
	}

	// بررسی وضعیت پاسخ
	if resp.StatusCode == 200 {
		fmt.Println("Response:", string(body)) // موفقیت: نمایش پاسخ
	} else {
		fmt.Println("Error: Status Code", resp.StatusCode) // خطا: نمایش کد وضعیت
	}
}

متد دریافت وضعیت پیام های ارسالی (StatusByTraceId)

زمانیکه بخواهیم پس از ارسال پیام، وضعیت پیام ارسالی را داشته باشیم، و شناسه های پیامک های ارسالی را در اختیار نداشته باشیم، می توانیم ازاین متد استفاده نماییم، در یک درخواست می توان از وضعیت بیش از یک پیام استعلام گرفت.

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
	"io/ioutil"
)

func main() {
	url := "https://api.sms-webservice.com/api/V3/StatusByUserTraceId"

	// داده‌های JSON برای ارسال در درخواست
	payload := map[string]interface{}{
		"ApiKey":      "YourApiKey",
		"UserTraceIds": []int{0},
	}

	// تبدیل payload به JSON
	jsonData, err := json.Marshal(payload)
	if err != nil {
		fmt.Println("Error marshaling JSON:", err)
		return
	}

	// ساخت درخواست POST
	req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
	if err != nil {
		fmt.Println("Error creating request:", err)
		return
	}

	// تنظیم هدر Content-Type برای ارسال JSON
	req.Header.Set("Content-Type", "application/json")

	// ارسال درخواست
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Println("Error sending request:", err)
		return
	}
	defer resp.Body.Close()

	// خواندن و نمایش پاسخ
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Error reading response:", err)
		return
	}

	// بررسی وضعیت پاسخ
	if resp.StatusCode == 200 {
		fmt.Println("Response:", string(body)) // موفقیت: نمایش پاسخ
	} else {
		fmt.Println("Error: Status Code", resp.StatusCode) // خطا: نمایش کد وضعیت
	}
}

متد دریافت مقدار اعتبار و لیست خطوط ارسال کننده فعال در پنل (AccountInfo)

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

package main

import (
	"fmt"
	"net/http"
	"io/ioutil"
)

func main() {
	url := "https://api.sms-webservice.com/api/V3/AccountInfo"

	// ساخت درخواست POST
	req, err := http.NewRequest("POST", url, nil)
	if err != nil {
		fmt.Println("Error creating request:", err)
		return
	}

	// تنظیم هدرهای سفارشی
	req.Header.Set("ApiKey", "YourApiKey")

	// ارسال درخواست
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Println("Error sending request:", err)
		return
	}
	defer resp.Body.Close()

	// خواندن و نمایش پاسخ
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Error reading response:", err)
		return
	}

	// بررسی وضعیت پاسخ
	if resp.StatusCode == 200 {
		fmt.Println("Response:", string(body)) // موفقیت: نمایش پاسخ
	} else {
		fmt.Println("Error: Status Code", resp.StatusCode) // خطا: نمایش کد وضعیت
	}
}

این مقاله مفید بود ؟

به این مقاله امتیاز دهید

میانگین رتبه 5 / 5. تعداد رای : 9

هنوز کسی به این مطلب رای نداده ؛ شما اولین نفر باشید !

تحریریه از پیام رسان

پیام رسان

مشتری همیشگی ما خواهید شد . قول میدهیم ! در سامانه پیامکی پیام رسان می توانید به افراد مورد نظر خود پیامک متنی و پیام صوتی ارسال کنید. با ثبت نام پنل رایگان پیام رسان، انواع امکانات جهت ارسال پیامک در اختیار کاربران قرار می گیرد.

ارسال کامنت

ثبت نام ورود