Go (Golang) पर SMS भेजना: API लाइब्रेरी के साथ एकीकरण
आधुनिक दुनिया में, उपयोगकर्ता सत्यापन, सूचनाओं और विपणन अभियानों के लिए SMS संदेश भेजना एक आवश्यक सुविधा बनी हुई है। Go (Golang) में, HTTP और JSON के साथ काम करने के लिए अंतर्निहित टूल के कारण इसे आसानी से और कुशलता से लागू किया जा सकता है। इस लेख में, हम Go का उपयोग करके REST API के माध्यम से SMS भेजने के लिए अपनी स्वयं की लाइब्रेरी लिखने का तरीका समझेंगे। उदाहरण एक अमूर्त प्रदाता पर आधारित होगा, लेकिन कोड को किसी भी सेवा (Twilio, SMS.ru, Vonage, आदि) के लिए आसानी से अनुकूलित किया जा सकता है।
लाइब्रेरी की संरचना
हमारी लाइब्रेरी में निम्नलिखित घटक होंगे:
- टाइमआउट और पुनः प्रयास के समर्थन के साथ HTTP अनुरोधों के लिए क्लाइंट
- अनुरोध (नंबर, टेक्स्ट, प्रेषक) और प्रतिक्रिया (स्थिति, संदेश ID, त्रुटि) के लिए संरचनाएँ
- API-कुंजी और बेस URL के साथ आरंभीकरण फ़ंक्शन
- एकल संदेश भेजने के लिए
SendSMSविधि
स्थापना और तैयारी
काम करने के लिए केवल मानक Go लाइब्रेरी (net/http, encoding/json) की आवश्यकता है। किसी बाहरी निर्भरता की आवश्यकता नहीं है। sms.go फ़ाइल बनाएँ और पैकेज शामिल करें:
package smsclient
import ( "bytes" "encoding/json" "fmt" "net/http" "time")डेटा संरचनाएँ
अनुरोध और प्रतिक्रिया के लिए प्रकार परिभाषित करें:
// SMSRequest API को भेजे जाने वाले अनुरोध के मुख्य भाग का प्रतिनिधित्व करता हैtype SMSRequest struct { To string `json:"to"` // अंतर्राष्ट्रीय प्रारूप में प्राप्तकर्ता का नंबर Text string `json:"text"` // संदेश का टेक्स्ट Sender string `json:"sender"` // प्रेषक का नाम (अल्फा-नाम)}
// SMSResponse भेजने के परिणाम को संग्रहीत करता हैtype SMSResponse struct { Success bool `json:"success"` MessageID string `json:"message_id,omitempty"` Error string `json:"error,omitempty"`}API के साथ काम करने के लिए क्लाइंट
कॉन्फ़िगरेशन के साथ क्लाइंट संरचना बनाएँ:
// Client API के माध्यम से SMS भेजने का प्रबंधन करता हैtype Client struct { apiKey string baseURL string httpClient *http.Client}
// NewClient क्लाइंट का एक नया उदाहरण बनाता हैfunc NewClient(apiKey, baseURL string) *Client { return &Client{ apiKey: apiKey, baseURL: baseURL, httpClient: &http.Client{ Timeout: 10 * time.Second, }, }}SMS भेजने की विधि
मुख्य तर्क लागू करें — JSON बॉडी के साथ POST अनुरोध भेजना:
// SendSMS SMS भेजता है और API से प्रतिक्रिया लौटाता हैfunc (c *Client) SendSMS(req SMSRequest) (*SMSResponse, error) { // 1. अनुरोध को JSON में क्रमबद्ध करें body, err := json.Marshal(req) if err != nil { return nil, fmt.Errorf("अनुरोध को मार्शल करने में त्रुटि: %w", err) }
// 2. HTTP अनुरोध बनाएँ httpReq, err := http.NewRequest("POST", c.baseURL+"/sms/send", bytes.NewBuffer(body)) if err != nil { return nil, fmt.Errorf("अनुरोध बनाने में त्रुटि: %w", err) }
// 3. हेडर सेट करें httpReq.Header.Set("Content-Type", "application/json") httpReq.Header.Set("Authorization", "Bearer "+c.apiKey)
// 4. अनुरोध निष्पादित करें resp, err := c.httpClient.Do(httpReq) if err != nil { return nil, fmt.Errorf("अनुरोध निष्पादित करने में त्रुटि: %w", err) } defer resp.Body.Close()
// 5. प्रतिक्रिया डिकोड करें var smsResp SMSResponse if err := json.NewDecoder(resp.Body).Decode(&smsResp); err != nil { return nil, fmt.Errorf("प्रतिक्रिया डिकोड करने में त्रुटि: %w", err) }
// 6. HTTP स्थिति कोड जाँचें if resp.StatusCode != http.StatusOK { return &smsResp, fmt.Errorf("API ने कोड %d लौटाया: %s", resp.StatusCode, smsResp.Error) }
return &smsResp, nil}उपयोग का उदाहरण
अब दिखाते हैं कि वास्तविक कोड में लाइब्रेरी का उपयोग कैसे करें:
package main
impo