메시지 발송 예제
해당 페이지에서는 SOLAPI Go SDK를 이용하여 메시지를 발송하는 방법에 대해 가이드하고 있습니다.
Go SDK를 통해 빠르고 쉽게 메시지를 발송해보세요!
- 각 발송 예시에 대한 결과 값 표시 기능은 현재 준비중에 있습니다.
- 해당 예제는 Go SDK v2 버전을 기준으로 작성되었습니다.
- 여러 건 발송이나 더 다양한 예제를 확인해보고 싶으신 경우 SDK 샘플 코드 페이지를 확인해보세요!
- 발송 요청을 하실 때 반드시 발신번호와 수신번호는 01012345678 형식으로 요청하셔야 합니다!
- +, -, * 특수문자 등 삽입 불가
// 예시, 다른 파라미터 생략, json 형식
{
"from": "029302266",
"to": "029302266"
}
🔗 SDK 샘플 코드 페이지
환경설정
터미널에서 연동할 프로젝트의 폴더로 이동하신 다음 아래와 같은 명령어를 입력하여 SDK를 설치해보세요!
go get github.com/solapi/solapi-go/v2
문자 발송
Go로 문자를 발송하는 방법에 대해 안내합니다.
연동하실 코드로 이동하신 다음, 아래의 각 유형별 문자 발송예시를 참고하셔서 원하시는 유형의 문자를 발송해보세요!
SMS(단문 문자) 발송
단문 문자(SMS) 발송
package main
import (
"context"
"fmt"
"os"
"github.com/solapi/solapi-go/v2/client"
"github.com/solapi/solapi-go/v2/messages"
)
func main() {
// API 키와 API Secret을 설정합니다
apiKey := "YOUR_API_KEY"
apiSecret := "YOUR_API_SECRET"
// 발신번호 및 수신번호 입력 형식은 01000000000 형식으로 입력하세요.
to := "수신번호" // 수신번호(01000000000 형식으로 입력해주셔야 합니다! (-)제외)
from := "발신번호" // 발신번호 (등록된 발신번호만 사용 가능, 01000000000 형식으로 입력해주셔야 합니다! (-)제외)
c := client.NewClient(apiKey, apiSecret)
// 단문 메시지 구조체를 생성합니다
msg := messages.Message{
To: to,
From: from,
Text: "안녕하세요! SOLAPI Go SDK를 사용한 SMS 발송 예제입니다.",
}
// 메시지를 발송합니다
res, err := c.Messages.Send(context.Background(), msg)
if err != nil {
fmt.Println("메시지 발송 실패:", err)
os.Exit(1)
}
fmt.Println("메시지 발송 성공!")
fmt.Printf("Group ID: %s\n", res.GroupID)
fmt.Printf("요청한 메시지 개수: %d\n", res.GroupInfo.Count.Total)
fmt.Printf("성공한 메시지 개수: %d\n", res.GroupInfo.Count.RegisteredSuccess)
fmt.Printf("실패한 메시지 개수: %d\n", res.GroupInfo.Count.RegisteredFailed)
}
장문 문자(LMS) 발송
장문 문자(LMS) 발송
package main
import (
"context"
"fmt"
"os"
"github.com/solapi/solapi-go/v2/client"
"github.com/solapi/solapi-go/v2/messages"
)
func main() {
// API 키와 API Secret을 설정합니다
apiKey := "YOUR_API_KEY"
apiSecret := "YOUR_API_SECRET"
// 발신번호 및 수신번호 입력 형식은 01000000000 형식으로 입력하세요.
to := "수신번호" // 수신번호(01000000000 형식으로 입력해주셔야 합니다! (-)제외)
from := "발신번호" // 발신번호 (등록된 발신번호만 사용 가능, 01000000000 형식으로 입력해주셔야 합니다! (-)제외)
c := client.NewClient(apiKey, apiSecret)
// 장문 메시지 구조체를 생성합니다
msg := messages.Message{
To: to,
From: from,
Text: "한글 45자, 영자 90자 이상 입력되면 자동으로 LMS타입의 문자메시지가 발송됩니다. 0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ",
}
// 메시지를 발송합니다
res, err := c.Messages.Send(context.Background(), msg)
if err != nil {
fmt.Println("메시지 발송 실패:", err)
os.Exit(1)
}
fmt.Println("메시지 발송 성공!")
fmt.Printf("Group ID: %s\n", res.GroupID)
fmt.Printf("요청한 메시지 개수: %d\n", res.GroupInfo.Count.Total)
fmt.Printf("성공한 메시지 개수: %d\n", res.GroupInfo.Count.RegisteredSuccess)
fmt.Printf("실패한 메시지 개수: %d\n", res.GroupInfo.Count.RegisteredFailed)
}
사진 문자(MMS) 발송
사진 문자(MMS) 발송
package main
import (
"context"
"encoding/base64"
"fmt"
"os"
"path/filepath"
"github.com/solapi/solapi-go/v2/client"
"github.com/solapi/solapi-go/v2/messages"
"github.com/solapi/solapi-go/v2/storages"
)
func mustReadAndEncode(path string) string {
b, err := os.ReadFile(path)
if err != nil {
fmt.Println("파일 읽기 실패:", err)
os.Exit(1)
}
return base64.StdEncoding.EncodeToString(b)
}
func main() {
// API 키와 API Secret을 설정합니다
apiKey := "YOUR_API_KEY"
apiSecret := "YOUR_API_SECRET"
to := "수신번호" // 수신번호
from := "발신번호" // 발신번호 (등록된 발신번호만 사용 가능)
c := client.NewClient(apiKey, apiSecret)
// 이미지 파일 경로를 설정합니다 (실제 이미지 파일 경로로 변경해주세요)
filePath := "path/to/your/image.jpg"
// 이미지 파일을 Base64로 인코딩합니다
encoded := mustReadAndEncode(filePath)
// 스토리지에 파일을 업로드합니다
upReq := storages.UploadFileRequest{
File: encoded,
Name: filepath.Base(filePath),
Type: "MMS",
}
upRes, err := c.Storages.Upload(context.Background(), upReq)
if err != nil {
fmt.Println("파일 업로드 실패:", err)
os.Exit(1)
}
fmt.Println("파일 업로드 성공!")
fmt.Printf("File ID: %s\n", upRes.FileID)
// MMS 메시지를 생성하고 발송합니다
msg := messages.Message{
To: to,
From: from,
Type: "MMS",
Subject: "MMS 제목", // MMS 제목, 제목을 지정하지 않는다면 필요하지 않습니다.
Text: "MMS 메시지 내용입니다.",
ImageID: upRes.FileID, // 업로드된 파일의 ID를 지정
}
// 메시지를 발송합니다
res, err := c.Messages.Send(context.Background(), msg)
if err != nil {
fmt.Println("MMS 발송 실패:", err)
os.Exit(1)
}
fmt.Println("MMS 발송 성공!")
fmt.Printf("Group ID: %s\n", res.GroupID)
fmt.Printf("요청한 메시지 개수: %d\n", res.GroupInfo.Count.Total)
fmt.Printf("성공한 메시지 개수: %d\n", res.GroupInfo.Count.RegisteredSuccess)
}
해외 문자(SMS 전용) 발송
해외 문자(SMS 전용) 발송
package main
import (
"context"
"fmt"
"os"
"github.com/solapi/solapi-go/v2/client"
"github.com/solapi/solapi-go/v2/messages"
)
func main() {
// API 키와 API Secret을 설정합니다
apiKey := "YOUR_API_KEY"
apiSecret := "YOUR_API_SECRET"
// 발신번호 및 수신번호 입력 형식은 01000000000 형식으로 입력하세요.
to := "수신번호" // 수신번호(01000000000 형식으로 입력해주셔야 합니다! (-)제외)
from := "발신번호" // 발신번호 (등록된 발신번호만 사용 가능, 01000000000 형식으로 입력해주셔야 합니다! (-)제외)
c := client.NewClient(apiKey, apiSecret)
// 해외 문자 메시지 구조체를 생성합니다
msg := messages.Message{
To: to,
From: from,
Text: "안녕하세요! SOLAPI Go SDK를 사용한 SMS 발송 예제입니다.",
Country: "1", // 실제 국가번호 입력, 현재 입력된 값은 미국, 한국은 82 입니다.
}
// 메시지를 발송합니다
res, err := c.Messages.Send(context.Background(), msg)
if err != nil {
fmt.Println("메시지 발송 실패:", err)
os.Exit(1)
}
fmt.Println("메시지 발송 성공!")
fmt.Printf("Group ID: %s\n", res.GroupID)
fmt.Printf("요청한 메시지 개수: %d\n", res.GroupInfo.Count.Total)
fmt.Printf("성공한 메시지 개수: %d\n", res.GroupInfo.Count.RegisteredSuccess)
fmt.Printf("실패한 메시지 개수: %d\n", res.GroupInfo.Count.RegisteredFailed)
}
음성 메시지 발송
- ReplyRange와 CounselorNumber는 동시에 사용할 수 없습니다.
음성 메시지 발송
package main
import (
"context"
"fmt"
"os"
"github.com/solapi/solapi-go/v2/client"
"github.com/solapi/solapi-go/v2/messages"
)
func main() {
// API 키와 API Secret을 설정합니다
apiKey := "YOUR_API_KEY"
apiSecret := "YOUR_API_SECRET"
to := "수신번호" // 수신번호
from := "발신번호" // 발신번호 (등록된 발신번호만 사용 가능)
c := client.NewClient(apiKey, apiSecret)
// 음성 메시지 구조체를 생성합니다
msg := messages.Message{
To: to,
From: from,
Text: "안녕하세요! SOLAPI Go SDK를 사용한 음성 메시지 발송 예제입니다.",
Type: "VOICE",
VoiceOptions: &messages.VoiceOptions{
// VoiceType은 FEMALE이 기본값이며, MALE 값을 사용하실 수 있습니다.
VoiceType: "FEMALE",
// HeaderMessage는 통화 시작 시, TailMessage는 통화 종료 시 안내되는 메시지입니다. (각 최대 135자)
HeaderMessage: "안녕하세요!",
TailMessage: "감사합니다!",
// ReplyRange는 수신자가 누를 수 있는 버튼 범위(1~9)입니다. 예: 1 -> 1번까지 입력 가능
ReplyRange: 1,
// 상담원 연결 번호, ReplyRange와 병행 불가
// CounselorNumber: "01000000000", // ReplyRange와 병행 불가
},
}
// 메시지를 발송합니다
res, err := c.Messages.Send(context.Background(), msg)
if err != nil {
fmt.Println("메시지 발송 실패:", err)
os.Exit(1)
}
fmt.Println("메시지 발송 성공!")
fmt.Printf("Group ID: %s\n", res.GroupID)
fmt.Printf("요청한 메시지 개수: %d\n", res.GroupInfo.Count.Total)
fmt.Printf("성공한 메시지 개수: %d\n", res.GroupInfo.Count.RegisteredSuccess)
fmt.Printf("실패한 메시지 개수: %d\n", res.GroupInfo.Count.RegisteredFailed)
}
참고: 음성 메시지 레퍼런스
카카오 알림톡/브랜드 메시지 발송
Go로 알림톡/브랜드 메시지를 발송하는 방법에 대해 안내합니다.
연동하실 코드로 이동하신 다음, 아래의 각 유형별 문자 발송예시를 참고하셔서 원하시는 유형의 알림톡/브랜드 메시지를 발송해보세요!
알림톡 발송은 Text 파라미터를 기입하면 발송에 실패합니다!
알림톡 발송
알림톡 발송
package main
import (
"context"
"fmt"
"os"
"github.com/solapi/solapi-go/v2/client"
"github.com/solapi/solapi-go/v2/messages"
)
func main() {
// API 키와 API Secret을 설정합니다
apiKey := "YOUR_API_KEY"
apiSecret := "YOUR_API_SECRET"
// 발신번호 및 수신번호 입력 형식은 01000000000 형식으로 입력하세요.
to := "수신번호" // 수신번호
from := "발신번호" // 발신번호 (등록된 발신번호만 사용 가능)
c := client.NewClient(apiKey, apiSecret)
// 카카오 알림톡 메시지를 생성합니다
msg := messages.Message{
To: to,
From: from,
KakaoOptions: &messages.KakaoOptions{
PfID: "계정에 등록된 카카오 비즈니스 채널ID",
TemplateID: "계정에 등록된 카카오 알림톡 템플릿 ID",
// 만약에 템플릿에 변수가 있다면 아래와 같이 설정합니다.
// 값은 반드시 문자열로 넣어주셔야 합니다!
Variables: map[string]string{
// "#{name}": "홍길동",
// "#{age}": "30",
},
},
}
// 메시지를 발송합니다
res, err := c.Messages.Send(context.Background(), msg)
if err != nil {
fmt.Println("메시지 발송 실패:", err)
os.Exit(1)
}
fmt.Println("메시지 발송 성공!")
fmt.Printf("Group ID: %s\n", res.GroupID)
fmt.Printf("요청한 메시지 개수: %d\n", res.GroupInfo.Count.Total)
fmt.Printf("성공한 메시지 개수: %d\n", res.GroupInfo.Count.RegisteredSuccess)
}
카카오톡 해외 번호 가입자에 대한 알림톡 발송방법
package main
import (
"context"
"fmt"
"os"
"github.com/solapi/solapi-go/v2/client"
"github.com/solapi/solapi-go/v2/messages"
)
func main() {
// API 키와 API Secret을 설정합니다
apiKey := "YOUR_API_KEY"
apiSecret := "YOUR_API_SECRET"
// 발신번호 및 수신번호 입력 형식은 01000000000 형식으로 입력하세요.
to := "수신번호" // 수신번호
from := "발신번호" // 발신번호 (등록된 발신번호만 사용 가능)
c := client.NewClient(apiKey, apiSecret)
// 카카오 알림톡 메시지를 생성합니다
msg := messages.Message{
To: to,
From: from,
KakaoOptions: &messages.KakaoOptions{
PfID: "계정에 등록된 카카오 비즈니스 채널ID",
TemplateID: "계정에 등록된 카카오 알림톡 템플릿 ID",
// 만약에 템플릿에 변수가 있다면 아래와 같이 설정합니다.
// 값은 반드시 문자열로 넣어주셔야 합니다!
Variables: map[string]string{
// "#{name}": "홍길동",
// "#{age}": "30",
},
},
Country: "1", // 실제 수신자의 국가번호를 입력해주세요! 미국은 1, 대한민국은 82입니다.
}
// 메시지를 발송합니다
res, err := c.Messages.Send(context.Background(), msg)
if err != nil {
fmt.Println("메시지 발송 실패:", err)
os.Exit(1)
}
fmt.Println("메시지 발송 성공!")
fmt.Printf("Group ID: %s\n", res.GroupID)
fmt.Printf("요청한 메시지 개수: %d\n", res.GroupInfo.Count.Total)
fmt.Printf("성공한 메시지 개수: %d\n", res.GroupInfo.Count.RegisteredSuccess)
}
브랜드 메시지 발송
- 브랜드 메시지는 대체 발송을 지원하지 않습니다.
- 수신번호는 반드시 01012345678 형식으로 입력해주세요.
- N, M 값은 카카오 측에 비즈니스 채널이 인허가 된 경우에만 사용할 수 있습니다!
- 관련 인허가 문의는 채팅상담을 통해 진행 해 주세요!
브랜드 메시지 발송
package main
import (
"context"
"fmt"
"os"
"github.com/solapi/solapi-go/v2/client"
"github.com/solapi/solapi-go/v2/messages"
)
func main() {
// API 키와 API Secret을 설정합니다
apiKey := "YOUR_API_KEY"
apiSecret := "YOUR_API_SECRET"
to := "수신번호" // 수신번호
c := client.NewClient(apiKey, apiSecret)
// 카카오 브랜드 메시지를 생성합니다
msg := messages.Message{
To: to,
KakaoOptions: &messages.KakaoOptions{
PfID: "계정에 등록된 카카오 비즈니스 채널ID",
TemplateID: "계정에 등록된 브랜드 메시지 템플릿 ID",
// 템플릿에 변수가 있다면 아래와 같이 설정합니다. (키/값 모두 문자열만 허용)
Variables: map[string]string{
// "#{name}": "홍길동",
// "#{age}": "30",
},
// 발송 범위 설정: I(채널 친구), N(채널 친구 제외 마케팅 수신 동의 유저), M(마케팅 수신 동의 유저 + 채널 친구)
// N, M 값은 카카오 측에서 비즈니스 채널이 인허가 된 경우에만 사용할 수 있습니다!
// 관련 인허가 문의는 채팅상담(https://solapi.channel.io)을 통해 진행 해 주세요!
BmsOptions: &messages.BmsOptions{
Targeting: "I",
},
},
}
// 메시지를 발송합니다
res, err := c.Messages.Send(context.Background(), msg)
if err != nil {
fmt.Println("메시지 발송 실패:", err)
os.Exit(1)
}
fmt.Println("메시지 발송 성공!")
fmt.Printf("Group ID: %s\n", res.GroupID)
fmt.Printf("요청한 메시지 개수: %d\n", res.GroupInfo.Count.Total)
fmt.Printf("성공한 메시지 개수: %d\n", res.GroupInfo.Count.RegisteredSuccess)
}
예약 발송
예약 발송은 모든 발송 수단(문자, 알림톡 등)에서 사용할 수 있는 기능입니다.
예약 발송은 SendOptions의 ScheduledDate에 RFC3339 형식의 시간을 넣으면 예약발송이 진행됩니다!
발송 예시
발송 예시는 SMS(단문 문자)만 제공되지만, 모든 발송 수단에서 사용할 수 있습니다!
예약 날짜가 현재 시각보다 더 과거의 시간일 경우 즉시 발송 접수가 진행됩니다.
package main
import (
"context"
"fmt"
"os"
"time"
"github.com/solapi/solapi-go/v2/client"
"github.com/solapi/solapi-go/v2/messages"
)
func main() {
// API 키와 API Secret을 설정합니다
apiKey := "YOUR_API_KEY"
apiSecret := "YOUR_API_SECRET"
to := "수신번호" // 수신번호
from := "발신번호" // 발신번호 (등록된 발신번호만 사용 가능)
c := client.NewClient(apiKey, apiSecret)
// 단문 메시지 구조체를 생성합니다
msg := messages.Message{
To: to,
From: from,
Text: "안녕하세요! SOLAPI Go SDK를 사용한 SMS 발송 예제입니다.",
}
// 예약 발송을 위한 시간을 설정합니다 (10분 후 발송)
scheduledAt := time.Now().UTC().Add(10 * time.Minute).Format(time.RFC3339)
// 예약 발송 옵션을 설정합니다
showMessageList := true
sendOptions := messages.SendOptions{
ScheduledDate: scheduledAt,
ShowMessageList: &showMessageList,
}
// 메시지를 예약 발송합니다
res, err := c.Messages.Send(context.Background(), msg, sendOptions)
if err != nil {
fmt.Println("메시지 발송 실패:", err)
os.Exit(1)
}
fmt.Println("메시지 발송 성공!")
fmt.Printf("Group ID: %s\n", res.GroupID)
fmt.Printf("요청한 메시지 개수: %d\n", res.GroupInfo.Count.Total)
fmt.Printf("성공한 메시지 개수: %d\n", res.GroupInfo.Count.RegisteredSuccess)
fmt.Printf("실패한 메시지 개수: %d\n", res.GroupInfo.Count.RegisteredFailed)
}