Go (Golang) में SMS भेजना: golang-sms API लाइब्रेरी गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Go (Golang) में SMS भेजना: SMS गेटवे के लिए API लाइब्रेरी

आधुनिक वेब डेवलपमेंट में SMS भेजना एक ज़रूरी फीचर है: टू-फ़ैक्टर ऑथेंटिकेशन, नोटिफिकेशन, मार्केटिंग कैंपेन। Go (Golang) अपनी परफॉरमेंस और सादगी के कारण मैसेज भेजने वाले माइक्रोसर्विसेज बनाने के लिए परफेक्ट है। इस आर्टिकल में हम सीखेंगे कि स्टैंडर्ड net/http लाइब्रेरी और लोकप्रिय HTTP पैकेज का उपयोग करके SMS गेटवे से कैसे जुड़ें।

सही तरीका चुनें: स्टैंडर्ड लाइब्रेरी बनाम फ्रेमवर्क

Go की स्टैंडर्ड लाइब्रेरी इतनी पावरफुल है कि किसी भी REST API के साथ काम करने के लिए काफी है। SMS भेजने के लिए भारी फ्रेमवर्क इंस्टॉल करने की ज़रूरत नहीं — बिल्ट-इन net/http पैकेज ही काफी है। हालांकि, सुविधा के लिए हम resty लाइब्रेरी का भी उपयोग करेंगे, जो रिक्वेस्ट बनाने को आसान बनाती है।

Go में HTTP रिक्वेस्ट की बेसिक स्ट्रक्चर

कोई भी SMS गेटवे JSON बॉडी के साथ POST रिक्वेस्ट स्वीकार करता है। आइए एक काल्पनिक sms-provider.com सर्विस के माध्यम से मैसेज भेजने का उदाहरण देखें:

package main

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

type SMSRequest struct {
    Phone   string `json:"phone"`
    Message string `json:"message"`
    APIKey  string `json:"api_key"`
}

type SMSResponse struct {
    Status  string `json:"status"`
    Message string `json:"message"`
}

func sendSMS(phone, message, apiKey string) (*SMSResponse, error) {
    url := "https://api.sms-provider.com/v1/send"

    reqBody := SMSRequest{
        Phone:   phone,
        Message: message,
        APIKey:  apiKey,
    }

    jsonData, err := json.Marshal(reqBody)
    if err != nil {
        return nil, fmt.Errorf("JSON सीरियलाइज़ेशन में त्रुटि: %w", err)
    }

    client := &http.Client{Timeout: 10 * time.Second}
    resp, err := client.Post(url, "application/json", bytes.NewBuffer(jsonData))
    if err != nil {
        return nil, fmt.Errorf("HTTP रिक्वेस्ट में त्रुटि: %w", err)
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        return nil, fmt.Errorf("रिस्पॉन्स पढ़ने में त्रुटि: %w", err)
    }

    var smsResp SMSResponse
    if err := json.Unmarshal(body, &smsResp); err != nil {
        return nil, fmt.Errorf("रिस्पॉन्स पार्स करने में त्रुटि: %w", err)
    }

    return &smsResp, nil
}

func main() {
    resp, err := sendSMS("+919123456789", "टेस्ट मैसेज", "your-api-key-123")
    if err != nil {
        fmt.Printf("त्रुटि: %v\n", err)
        return
    }
    fmt.Printf("स्थिति: %s, संदेश: %s\n", resp.Status, resp.Message)
}

resty लाइब्रेरी से कोड को आसान बनाएं

go-resty/resty/v2 लाइब्रेरी boilerplate कोड को काफी कम कर देती है। इंस्टॉलेशन:

go get github.com/go-resty/resty/v2

resty के साथ SMS भेजने का उदाहरण:

package main

import (
    "fmt"
    "github.com/go-resty/resty/v2"
)

type SMSResponse struct {
    Status  string `json:"status"`
    Message string `json:"message"`
}

func sendSMSResty(phone, message, apiKey string) (*SMSResponse, error) {
    client := resty.New()
    resp, err := client.R().
        SetHeader("Content-Type", "application/json").
        SetBody(map[string]interface{}{
            "phone":   phone,
            "message": message,
            "api_key": apiKey,
        }).
        SetResult(&SMSResponse{}).
        Post("https://api.sms-provider.com/v1/send")

    if err != nil {
        return nil, fmt.Errorf("रिक्वेस्ट में त्रुटि: %w", err)
    }

    return resp.Result().(*SMSResponse), nil
}

func main() {
    resp, err := sendSMSResty("+919123456789", "Go से नमस्ते!", "my-secret-key")
    if err != nil {
        fmt.Printf("त्रुटि: %v\n", err)
        return
    }
    fmt.Printf("जवाब: %+v\n", resp)
}

लोकप्रिय SMS गेटवे के साथ काम करना

अनुशंसाएँ